Android не регистрирует действия, отправленные с Bluetooth-гарнитуры

Возникла проблема со способом определить, когда наушники-вкладыши Bluetooth отправили команду на устройство Android для продолжения воспроизведения звука в приложении.

Проверить, отключено ли устройство и подключено ли снова, легко по этому коду:

      @Override
public void onReceive(Context context, Intent intent) {
       String action = intent.getAction();
               if (BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED.equals(action)) {
                    switch (intent.getIntExtra(BluetoothProfile.EXTRA_STATE, -1)) {
                        case BluetoothHeadset.STATE_DISCONNECTED: {
                        }
                        case BluetoothHeadset.STATE_CONNECTED: {
                        }
                    }
                }

Здесь объясняется простая вещь: документация Android

Если вы используете наушники, у вас будут некоторые дополнительные действия (например, Apple приостанавливает источник звука, когда вы удаляете их из уха, Mi приостанавливает источник звука, когда вы нажимаете на них кнопку и так далее ...). Здесь мы слушаем обновления AudioManager, и когда действие выполнено, мы получаем AudioManager.SCO_AUDIO_STATE_DISCONNECTED.

       if (AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED.equals(action)) {
                        switch (intent.getIntExtra(AudioManager.EXTRA_SCO_AUDIO_STATE,-1){
                            case AudioManager.SCO_AUDIO_STATE_DISCONNECTED: {

                            }
                            case AudioManager.SCO_AUDIO_STATE_CONNECTED: {
                                
                            }
                        }
                    }

Проблема начинается, когда вы снова нажимаете кнопку на бутонах / возвращаете их в ухо. Зачем мне искать и какого слушателя искать, чтобы иметь возможность перехватить это событие? Если это событие. В методе onReceive я не получаю никаких действий от намерения.

Мы должны продолжить воспроизведение, вернуть аудиопоток, но я не могу зарегистрировать никакую трансляцию, связанную с этим.

Что я делаю не так?

0 ответов

Другие вопросы по тегам