Есть ли способ узнать, подключено ли устройство Bluetooth, отличное от Android, к моему устройству Android? - PullRequest
0 голосов
/ 04 декабря 2011

У меня есть телефон Android и устройство, не являющееся андроидом, например звонилка Bluetooth.

Насколько я знаю

С такими слушателями, как ACL_CONNECTED, мы можем отловить подключениеустройство Bluetooth, если оно подключается во время работы приложения.

Но есть ли способ узнать, подключено ли устройство к телефону до запуска приложения, и мое приложение может подключиться через него?

Другими словами

Получу ли я ACL_CONNECTED или другие приемники, если устройство уже подключено до запуска приложения?

Спасибо.

1 Ответ

1 голос
/ 04 декабря 2011

Используйте BroadcastReceiver для получения широковещательной рассылки, когда устройство подключено, и SharedPreference для сохранения значения, такого как логическое значение.

Это может быть код для Получателя:

@Override
public void onReceive(Context context, Intent intent) {

    if (intent.getAction().contentEquals("android.bluetooth.device.action.ACL_CONNECTED")) {
         //DO SOMETHING, like using a SharedPreference
    } else {
        if (intent.getAction().contentEquals("android.bluetooth.device.action.ACL_DISCONNECT")) {
         //DO SOMETHING
        }
    }

Вы также должны запустить службу после подключения устройства, которая отслеживает, если Bluetooth выключен, а затем устанавливает для SharedPreference значение false, поскольку вы не получите ACL_DISCONNECT трансляцию.

Это может выглядеть так:

public class BTService extends Service {

@Override
public void onStart(Intent intent, int startId) {
    super.onStart(intent, startId);
        IntentFilter filter2 = new IntentFilter();
        filter2.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
     registerReceiver(rec_bt_change, filter2);
}




private final BroadcastReceiver rec_bt_change = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1) == BluetoothAdapter.STATE_OFF) {
            //SettingsClass.log_me(tag, "BT turned off, stopping");
            //DO SOMETHING
            stopSelf();
        }
    }
};
}
...