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 я не получаю никаких действий от намерения.
Мы должны продолжить воспроизведение, вернуть аудиопоток, но я не могу зарегистрировать никакую трансляцию, связанную с этим.
Что я делаю не так?