2013-10-15 4 views
0

Я разрабатываю приложение для Android, где в я проверяю, если два устройства подключаются через BluetoothBluetooth Устройство проблема подключения

Я Регистрация широковещательного Ресивер используя код ниже.

IntentFilter filter1 = new IntentFilter(BluetoothDevice.ACTION_ACL_CONNECTED); 
    IntentFilter filter2 = new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECTED); 

    this.registerReceiver(mReceiver, filter1); 
    this.registerReceiver(mReceiver, filter2); 

BroadcastReceiver выглядит следующим образом.

private final BroadcastReceiver mReceiver = new BroadcastReceiver() { 
    public void onReceive(Context context, Intent intent) { 
     String action = intent.getAction(); 
     // When discovery finds a device 

     if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) 
     { 
      Log.e("bluetooth connected","bluetooth connected"); 
     } 
     else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) 
     { 
      Log.e("bluetooth not connected","bluetooth not connected"); 
     }  
    } 
}; 

Как никогда это не работает. Не уверен Где я ошибаюсь. Пожалуйста помоги! Благодаря!

ответ

2

У вас есть разрешение BLUETOOTH в вашем манифесте?

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

также вместо регистрации приемника в два раза и с помощью двух фильтров можно сделать

IntentFilter filter = new IntentFilter(); 
filter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED); 
filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);  

this.registerReceiver(mReceiver, filter); 
+0

Я добавил данные разрешения и использовал тот же код, что и выше. Не работает. Это не вызов BroadcastReceiver! – sanjana

0

сделал и попробовать разрешение Bluetooth-администратора?

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

Да. Я добавил это разрешение. – sanjana

0

В документации на Android говорится, что «ACL-соединения управляются автоматически через стек Bluetooth Android». Вероятно, они не должны управляться на уровне приложений; BluetoothDevice.ACTION_ACL_CONNECTED и BluetoothDevice.ACTION_ACL_DISCONNECTED Отправка зависит от версии устройства и прошивки (например, я испытал, что Nexus S отправляет их правильно, в то время как у старого GT-I5800 нет).

Смежные вопросы