2011-04-09 151 views
4

我受到教授的挑战,在Android上开发一个蓝牙小应用程序。直到2周前,我对Android的发展一无所知,当时他给了我这个挑战。我在Java编程方面也很新,所以我从远到远。但无论如何...Android中的不安全蓝牙连接

所以我做了大部分教程,并且我在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

不错的斗争,你的问题帮了我解决我的问题关于蓝牙的问题, – 2011-07-26 13:59:05

回答

3
listenUsingInsecureRfcommWithServiceRecord() 

这仅适用于API Level 10及更高版本,即Android v2.3.3及更高版本。

如果您正在为之前的版本构建,则可能会出现问题。

见灰色栏右侧的docs

编辑:在事实上是不可能延长BluetoothAdapter光,listenUsingInsecureRfcommWithServiceRecord()只需做到这一点...

return createNewRfcommSocketAndRecord(name, uuid, false, false); 

为createNewRfcommSocketAndRecord()(这是BluetoothAdapter的私有方法),可以在这里找到源... createNewRfcommSocketAndRecord

不知道如果有帮助,但你可能能够重现其功能。

+0

玉儿你对,我正在使用API​​ lvl 7。有没有办法通过安全连接连接到我的鼠标?我可以向该方法发送'UUID.randomUUID()'并希望它能够工作吗? – AntoineG 2011-04-09 19:52:04

+0

@AntoineG:恐怕我从来没有试过用蓝牙编程,所以我不知道在这种情况下可以做什么。我建议看看v2.3.3 BlutoothAdapter源代码。您可以随时尝试定义自己的类,以扩展BluetoothAdapter并自行添加必要的方法。 – Squonk 2011-04-09 19:56:22

+0

@AntoineG:对不起 - 我刚刚意识到BluetoothAdapter是'最终',不能从。不知道还有什么建议。 – Squonk 2011-04-09 20:09:20

0

如果您试图与商用鼠标交谈 - 那么在android中使用SPP套接字API将无济于事,鼠标使用HID蓝牙配置文件,并且它需要手机具有HID配置文件主机角色。 标准的Android版本目前不支持HID - 所以你必须自己添加它,并建立从BlueZ集成HID的android并将它连接到你的应用程序。

-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