Приемник вещания внутри объекта или внутри службы? - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть приложение для Android, которое использует Bluetooth.Чтобы всегда иметь блютуз, я уже внедрил Сервис, чтобы он всегда был включен, даже если приложение находится в фоновом режиме.Поскольку для Bluetooth будет много кода, я решил создать ListActivity для всех методов и так далее, связанных с Bluetooth.Каждый раз, когда я запускаю службу, создается новый объект этого класса Bluetooth.

Теперь, имея в виду эту деталь, мой вопрос: если я делаю адаптер. Обнаружение в этом объекте, как мне поступитьс приемником вещания?Для получателя у меня есть:

   private final BroadcastReceiver BEReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        int a = 1;
        a++;
};

Я положил это в сервис и в объект, чтобы сделать различные тесты.Для добавления получателя у меня есть:

            IntentFilter BEFilter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
            mycontext.registerReceiver(BEReceiver, BEFilter);

Я добавил эти строки в начале службы, чтобы вызывать ее локально, но она не работает.Затем я создал BEFilter внутри объекта для Bluetooth, и здесь я поместил BEFilter объекта Bluetooth.Ни то, ни другое не сработало.Я также добавил эти строки в конструктор объекта bluetooth, чтобы сделать это локально, но это тоже не сработало.Что я должен делать?Мне нужно добавить устройства при обнаружении адаптера.

В манифесте у меня есть:

   <intent-filter>
                <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
            <action android:name="android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED" />
            <action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
            <action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" />
     </intent-filter>

для объекта bluetooth, службы и основной деятельности, где создается служба.

Моя проблема в том, что BEReceiver никогда не вызывается, и у меня нет ошибок в отладке.

В манифесте у меня также есть:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>  <!-- BLE needs this! -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/><!-- BLE needs this! -->
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

1 Ответ

0 голосов
/ 10 февраля 2019

Android-приемник Broadcast Receiver перехватывает события

Похоже, что я искал это:

IntentFilter filter2 = new IntentFilter();
filter2.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
filter2.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
filter2.addAction(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED);
registerReceiver(mBroadcastReceiver2, filter2);

при этом, когда адаптер сканируетtrigered.

...