2011-08-02 51 views
3

我正在使用GPS数据的应用程序。我有一个外部蓝牙GPS设备,但我找不到如何使用外部GPS蓝牙模块。我将蓝牙许可添加到我的AndroidManifest文件中,但我不知道如何继续...如何在应用程序中使用蓝牙GPS模块?

请帮忙。

回答

6

您应该按照教程Peter pointed中所述创建与设备的连接。

  1. 发现设备并向用户显示列表以选择一个列表。我假设,你已经完成了这一步,现在你的设备已经设置了BluetoothDevice device变量。
  2. 连接的客户端:

    // This is the default UUID you set for connection - it should work 
    private static final UUID DEFAULT_SPP_UUID = UUID 
         .fromString("00001101-0000-1000-8000-00805F9B34FB"); 
    
    // .... 
    
    BluetoothSocket bluetoothSocket = device 
         .createRfcommSocketToServiceRecord(DEFAULT_SPP_UUID); 
    
    // .... 
    
    bluetoothSocket.connect(); // Do this when you want to start data retrieval 
    
  3. 检索信息。您现在可以打开一个InputStream,NMEA消息以纯文本格式显示。所以你可以使用BufferedReader为了方便,并逐行读取消息。 事情是这样的:

    // After successful connect you can open InputStream 
    InputStream in = bluetoothSocket.getInputStream(); 
    InputStreamReader isr = new InputStreamReader(in); 
    BufferedReader br = new BufferedReader(isr); 
    
    while (true) { 
        String nmeaMessage = br.readLine(); 
        Log.d("NMEA", nmeaMessage); 
        // parse NMEA messages 
    } 
    
    // !!!CLOSE Streams!!! 
    

记住:此代码是非常简单的。在实际应用中,每个不需要的网络,设备或文件系统资源连接都应该关闭,错误(异常)能够以可读和可理解的格式正确处理并显示给用户。

+0

谢谢,我已经解决了这个问题,但它是其他人的好手册:) – west44

1

Android仅支持蓝牙RFCOMM(串行仿真)协议。确保你的GPS支持这个协议。

然后从provided bluetooth tutorial开始。

+0

我的GPS模块与来自提供此选项的市场软件很好地协作。我有一个功能连接到模块通过BT,但我不能如何获得经度,纬度,卫星...... – west44