Как настроить Android Media Player, чтобы он никогда не воспроизводился через динамик - PullRequest
0 голосов
/ 22 февраля 2019

Я создаю Media Player, но он никогда не должен воспроизводиться на Speaker.Если разъем для наушников или Bluetooth недоступны, аудио по-прежнему не должно воспроизводиться через динамик.

Я использовал Android API ниже, но он по-прежнему воспроизводится через динамик:

    AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    am.setSpeakerphoneOn(false);

Ответы [ 2 ]

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

С AudioManager Официальная документация

audioManager.setSpeakerphoneOn(boolean)

Включение или выключение громкой связи.

Это означает, что если вы установите false,отключите звук динамика, т. е. воспроизводите его через динамик, и если вы установите значение true, он будет воспроизводиться через динамик.

В вашем случае вы не хотите воспроизводить музыку с внешнего динамика, но при этом используетеam.setSpeakerphoneOn(true);, который фактически включает внешний динамик.

То есть set am.setSpeakerphoneOn(false);, чтобы не воспроизводить музыку с внешнего динамика

Вы также можете установить режим (вызов / голосовая связь / музыка и т. Д.) Для AudioManager

audioManager.setMode(AudioManager.STREAM_MUSIC);

Примечание :: Для изменения настроек аудио-менеджера необходимо установить Permission: MODIFY_AUDIO_SETTINGS в манифесте

добавить эту строку в манифест

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

Вдополнительно, это код для проверки, какой тип аудиосоединения

   AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
  PackageManager packageManager = getPackageManager();

  if (audioManager.isBluetoothA2dpOn()) {
    // Adjust output for Bluetooth.
    Log.d("debug","BluetoothA2dpOn");
  } else if (audioManager.isBluetoothScoOn()) {
    // Adjust output for Bluetooth of sco.
           Log.d("debug","BluetoothScoOn");
  } else if (audioManager.isWiredHeadsetOn()) {
    // Adjust output for headsets
       Log.d("debug","WiredHeadsetOn");
  } else if (audioManager.isSpeakerphoneOn()) {
    // Adjust output for Speakerphone.
    Log.d("debug","SpeakerphoneOn");

  } else if (packageManager.hasSystemFeature(PackageManager.FEATURE_AUDIO_OUTPUT)) {
    // Has internal speaker or other form of audio output.
               Log.d("debug","Internal Speaker On");

  } else {
    // No device for audio output.
    Log.d("debug","No Audio Device");

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

Вы можете проверить, подключены Bluetooth и наушники или нет, используя Broadcast приемник, используя эту ссылку http://blog.urvatechlabs.com/detect-programatically-if-headphone-or-bluetooth-headsets-attached-with-android-phone/.Если он не подключен / удален, приостановите / остановите Android Media Player.

...