2014-02-19 154 views
6

我正在使用Android 4.4。我有2個藍牙設備,一個老派藍牙和一個BLE。就傳輸的數據而言,它們在功能上都是相同的。它們都有一個按鈕,可以在按下時連接和傳輸數據。Android BLE ACTION_ACL_CONNECTED未呼叫配對設備

我有藍牙權限和註冊在我的清單中包含廣播接收器,像這樣

... 

<uses-permission android:name="android.permission.BLUETOOTH" /> 
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> 

... 

<receiver 
    android:name=".BluetoothBroadcastReceiver"> 
    <intent-filter> 
     <action android:name="android.bluetooth.device.action.ACL_CONNECTED" /> 
     <action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" /> 
     <action android:name="android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED" /> 
    </intent-filter> 
</receiver> 

爲了測試,我只是記錄到的onReceive呼叫在廣播接收器

@Override 
public void onReceive(Context context, Intent intent) { 
    Log.d(TAG, intent.getAction()); 
} 

這裏是問題:兩個設備都與手機配對,但只有舊藍牙設備在按下藍牙設備按鈕時纔會生成ACTION_ACL_CONNECTED/ACTION_ACL_DISCONNECTED廣播。當BLE設備嘗試連接和傳輸時沒有任何反應。

我能夠成功地從BLE設備連接和接收數據,如果我使用

mBluetoothAdapter.startLeScan(mLeScanCallback); 

我一定要明確掃描BLE裝置,使他們能夠連接主動掃描的BLE連接?在沒有明確掃描BLE設備時,BLE設備是否會生成ACTION_ACL_CONNECTED/ACTION_ACL_DISCONNECTED廣播?還是應該自動連接,如果配對電話?

+0

您是否設法找到答案?卡住在像你一樣的情況 – abhishek

+1

@abhishek不,我從來沒有找到我的問題的答案。我解決的解決方案是在後臺運行一項服務,每30秒進行1秒BLE掃描。這些值是根據我的外設的廣告特徵選擇的,可能對您的特定情況沒有幫助。根據我的測試,這種定期背景掃描對電池壽命的影響非常小(Nexus 4每24小時週期<5%)。 – gyoda

+0

謝謝,我不妨嘗試一下 – abhishek

回答

0

ACTION_ACL_CONNECTED/ACTION_ACL_DISCONNECTED廣播僅適用於BR/EDR(經典藍牙),不適用於BLE。

對於BLE,您必須使用最新Android版本提供的API和回調。

+0

它可以與BLE – HelloSadness

+0

@ bogdan-alexandru一起使用您能否提供此信息的來源?任何Android文檔或東西? –