我受到一位教授的挑战,在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编程。
答案 0 :(得分:4)
listenUsingInsecureRfcommWithServiceRecord()
仅适用于API级别10及更高版本,即Android v2.3.3及更高版本。
如果您正在构建之前的版本,那么这可能是问题。
请参阅docs
中灰色栏的右侧 编辑:鉴于无法扩展BluetoothAdapter这一事实,listenUsingInsecureRfcommWithServiceRecord()
只是这样做......
return createNewRfcommSocketAndRecord(name, uuid, false, false);
createNewRfcommSocketAndRecord()(这是BluetoothAdapter的私有方法)的源代码可以在这里找到...... createNewRfcommSocketAndRecord
不确定是否有帮助,但您可以重现其功能。
答案 1 :(得分:0)
如果你试图与商业鼠标交谈 - 那么在Android中使用SPP套接字API将无济于事,鼠标使用HID蓝牙配置文件,它要求手机具有HID配置文件主机角色。 标准的Android版本目前不支持HID - 所以你必须自己添加它并构建android集成BlueZ的HID并将其连接到你的应用程序。
答案 2 :(得分:-1)
要在Android上实施蓝牙配置文件支持,有一个名为“Sybase-iAnywhere-Blue-SDK-for-Android”的项目,它取代了Android的版本,并提供了所有接口到底层蓝牙配置文件和协议。使用此功能,可以使用此SDK提供的BPP配置文件,使用您的Android手机通过蓝牙进行打印。
有关详情,请参阅以下链接: 链接1: http://www.sybase.com/detail?id=1064424
链接2: http://www.sybase.com/products/allproductsa-z/mobiledevicesdks/bluetoothsdks