如何将Android Media Player配置为从不播放扬声器

时间:2019-02-22 05:46:35

标签: android android-mediaplayer media-player

我正在创建Media Player,但绝对不能在Speaker上播放。如果没有耳机插孔或蓝牙,仍然不能通过扬声器播放音频。

我在Android API以下使用,但仍可以在扬声器上播放

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

2 个答案:

答案 0 :(得分:0)

您可以使用广播接收器使用此链接http://blog.urvatechlabs.com/detect-programatically-if-headphone-or-bluetooth-headsets-attached-with-android-phone/来检查是否已连接蓝牙和耳机。如果未连接/删除,请暂停/停止Android Media Player。

答案 1 :(得分:0)

摘自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");

  }