首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Android Media player配置为从不通过扬声器播放

如何将Android Media player配置为从不通过扬声器播放
EN

Stack Overflow用户
提问于 2019-02-22 13:46:35
回答 2查看 1.8K关注 0票数 2

我正在创建媒体播放器,但它永远不会在扬声器上播放。如果头戴式耳机插孔或蓝牙不可用,则不应通过扬声器播放静止音频。

我使用了下面的Android API,但它仍然可以通过扬声器播放:

代码语言:javascript
复制
    AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    am.setSpeakerphoneOn(false);
EN

回答 2

Stack Overflow用户

发布于 2019-02-22 14:14:31

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

票数 1
EN

Stack Overflow用户

发布于 2019-02-22 14:40:42

来自AudioManager官方文档

代码语言:javascript
复制
audioManager.setSpeakerphoneOn(boolean)

将打开或关闭免持话筒。

这意味着如果您设置为false,它将禁用扬声器的声音,即从扬声器播放,如果您设置为true,它将从扬声器播放。

在您的例子中,您不想从外部扬声器播放音乐,但仍在使用am.setSpeakerphoneOn(true);,它实际上启用了外部扬声器。

这样set am.setSpeakerphoneOn(false);就不会播放来自外部扬声器的音乐了

您还可以设置AudioManager的模式(呼叫/语音通信/音乐等

代码语言:javascript
复制
audioManager.setMode(AudioManager.STREAM_MUSIC);

注意::用于更改您需要在清单中设置Permission: MODIFY_AUDIO_SETTINGS的音频管理器设置

在清单中添加此行

代码语言:javascript
复制
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

此外,这是检查哪种类型的音频连接的代码

代码语言:javascript
复制
   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");

  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54820781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档