簡體   English   中英

Android中不安全的藍牙連接

[英]Unsecured Bluetooth connection in Android

我被一位教授挑戰在Android上開發一個小型藍牙演示應用程序。 直到兩周前,當他給我這個挑戰時,我對Android的開發一無所知。 我對Java編程也很陌生,所以我從遠處開始。 但無論如何...

所以我做了大部分的教程,我讀到了Android中的藍牙,查看了藍牙聊天示例代碼,我現在正在嘗試做我的小應用程序。 因此,對於我的演示,我將嘗試在我的真實手機和藍牙鼠標之間建立連接。 我想在我的手機屏幕上移動一個形狀以響應我的鼠標移動。

我遇到很多問題,但到目前為止我的主要問題是用不安全的鼠標打開一個插座。 當我嘗試使用listenUsingRfcommWithServiceRecord方法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級別10及更高版本,即Android v2.3.3及更高版本。

如果您正在構建之前的版本,那么這可能是問題所在。

請參閱文檔中灰色欄的右側

編輯:鑒於無法擴展BluetoothAdapter的事實, listenUsingInsecureRfcommWithServiceRecord()只是這樣做...

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

createNewRfcommSocketAndRecord()(這是BluetoothAdapter的私有方法)的源代碼可以在這里找到... createNewRfcommSocketAndRecord

不確定是否會有所幫助,但您可以重現其功能。

如果你試圖與商業鼠標交談 - 那么在Android中使用SPP套接字API將無濟於事,鼠標使用HID藍牙配置文件,它要求手機具有HID配置文件主機角色。 標准的Android版本目前不支持HID - 所以你必須自己添加它並構建android集成來自BlueZ的HID並將其連接到你的應用程序。

要在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM