我正在使用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廣播?還是應該自動連接,如果配對電話?
您是否設法找到答案?卡住在像你一樣的情況 – abhishek
@abhishek不,我從來沒有找到我的問題的答案。我解決的解決方案是在後臺運行一項服務,每30秒進行1秒BLE掃描。這些值是根據我的外設的廣告特徵選擇的,可能對您的特定情況沒有幫助。根據我的測試,這種定期背景掃描對電池壽命的影響非常小(Nexus 4每24小時週期<5%)。 – gyoda
謝謝,我不妨嘗試一下 – abhishek