Android 中不安全的蓝牙连接

2024-02-27

一位教授向我提出挑战,要求我在 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(使用前将#替换为@)

Android 中不安全的蓝牙连接 的相关文章

随机推荐