一位教授向我提出挑战,要求我在 Android 上开发一个小型蓝牙演示应用程序。直到两周前他向我提出这个挑战之前,我对 Android 开发一无所知。一般来说,我对 Java 编程也很陌生,所以我的起点还很远。但不管怎么说...
所以我完成了大部分教程,我阅读了 Android 中的蓝牙,查看了蓝牙聊天示例代码,现在我正在尝试制作我的小应用程序。因此,在我的演示中,我将尝试在我的真实手机和蓝牙鼠标之间建立连接。我想根据鼠标的移动来移动手机屏幕上的形状。
我遇到了很多问题,但到目前为止我的主要问题是用不安全的鼠标打开套接字。当我尝试使用该方法时listenUsingRfcommWithServiceRecord
,它要求 UUID 作为参数。但我的鼠标很可能没有 UUID 来响应,所以我想这种方法不是一个好的方法。
当我阅读有关此方法的文档时,它说要使用鼠标等设备打开不安全的服务器套接字,我必须使用listenUsingInsecureRfcommWithServiceRecord
方法。但当我调用该方法时,该方法不可用,它会以红色下划线显示,并且 Eclipse 表示该方法对于 BluetoothAdapter 类型未定义。
private BluetoothServerSocket connectDevice(BluetoothAdapter adapter, BluetoothDevice device){
BluetoothServerSocket socket = null;
try{
socket = adapter.listenUsingInsecureRfcommWithServiceRecord(device.getName(), UUID.randomUUID());
}
catch(IOException e){
Toast.makeText(this, "Connection failed.\n" + e.getMessage(), Toast.LENGTH_SHORT);
}
return socket;
}
如果我做错了,请不要责怪我,这是我的第一个问题,我将从 Java 编程开始。
listenUsingInsecureRfcommWithServiceRecord()
这仅适用于 API Level 10 及更高版本,即 Android v2.3.3 及更高版本。
如果您正在构建之前的版本,这可能就是问题所在。
请参阅灰色条的右侧docs http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html#listenUsingInsecureRfcommWithServiceRecord%28java.lang.String,%20java.util.UUID%29
EDIT:鉴于不可能扩展蓝牙适配器,listenUsingInsecureRfcommWithServiceRecord()
只是这样做...
return createNewRfcommSocketAndRecord(name, uuid, false, false);
createNewRfcommSocketAndRecord() 的源代码(这是BluetoothAdapter 的私有方法),可以在这里找到...创建新的RfcommSocketAndRecord http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3.3_r1/android/bluetooth/BluetoothAdapter.java#BluetoothAdapter.createNewRfcommSocketAndRecord%28java.lang.String,java.util.UUID,boolean,boolean%29
不确定是否有帮助,但您也许能够重现其功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)