2013-06-03 46 views
13

我正在做一个Android应用程序,并且我将另一个设备的MAC作为字符串(17个字符长),并且需要使用该设备才能连接到该设备(线程启动蓝牙连接)。 我一直在玩弄它整个下午,无法弄清楚如何做到这一点。问题是它不允许我将BluetoothDevice设置为一个字符串。 有没有一种方法可以/必须完成?连接到具有蓝牙地址字符串的设备

(决定不把任何我尝试这里的代码,看到他们是如何充满了错误)

它与运行完全相同的应用程序的另一个平板电脑进行通信。我早先浏览了this页面,我的大部分应用都基于此。我的主要问题是使用ConnectThread示例时,我有一个带有MAC地址的字符串,如何连接到该MAC?

任何帮助将高度赞赏,

+0

您使用的是哪种蓝牙配置文件? 17个字符的设备名称可能只是设备的MAC地址。 – Ramp

+0

是的,对不起。意思是MAC地址... – Marshall

回答

23

如果我理解正确,你有一个MAC地址作为一个字符串,你想连接到设备,对不对?这应该工作:

BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address); 
BluetoothSocket tmp = null; 
BluetoothSocket mmSocket = null; 

// Get a BluetoothSocket for a connection with the 
// given BluetoothDevice 
try { 
    tmp = device.createRfcommSocketToServiceRecord(MY_UUID); 
    Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class}); 
    tmp = (BluetoothSocket) m.invoke(device, 1); 
} catch (IOException e) { 
    Log.e(TAG, "create() failed", e); 
} 
mmSocket = tmp; 

这是从这个简单的开源Android应用的源代码的摘录: https://github.com/janosgyerik/bluetoothviewer

该应用程序是用于调试蓝牙连接和原始协议数据的简单工具。 (现在只有在ascii中,我打算添加调试十六进制功能。)

3

首先,你将不得不findout什么配置文件的蓝牙设备的支持,例如,它可能是可以使用HDP轮廓的医疗设备,也可能是在使用一个简单的RS232蓝牙。在开始编写代码之前,了解如何为各种配置文件建立蓝牙连接非常重要。

这是一个很好的链接。 Android SDK也提供了一些基本的例子,您可以从头开始。

http://developer.android.com/guide/topics/connectivity/bluetooth.html

编辑:

如果您的设备成功配对,你会看到在配对的设备列表中的MAC地址。例如,你可以这样做来找到与你设备的MAC地址匹配的设备:

Set<BluetoothDevice> pairedDevices = mBluetoothAdapter 
        .getBondedDevices(); 
      if (pairedDevices.isEmpty()) { 
       Log.e(TAG, 
         "No devices paired..."); 
       return ; 
      } 

    for (BluetoothDevice device : pairedDevices) { 
       Log.d(TAG, "Device : address : " + device.getAddress() + " name :" 
         + device.getName()); 
      if (MY_MAC_ADDR.equals(device.getAddress())) { 
       mDevice = device; 
       break; 
      } 
    } 

希望有帮助。

+0

对不起,我没有指定。 它必须与运行完全相同的应用程序的另一台平板电脑进行通信。 我更早地浏览了该页面,并且我的大部分应用都基于此。我的主要问题是使用ConnectThread示例时,我不知道如何放置MAC地址(字符串)= mmDevice 感谢您的回答, – Marshall

+0

编辑我的回答以回答您的问题。 – Ramp

+0

thx哥们#up投票 –