插入耳机时,请勿通过扬声器播放通知声音

时间:2016-02-09 10:21:51

标签: android audio notifications

我正在为我的应用中的某些通知添加声音,如下所示:

Notification notification = ...
...
notification.sound = Uri.parse(...);

当播放通知声音时,即使将耳机插入手机,也会通过扬声器播放声音,因此声音会在扬声器和耳机中播放。

如果插入耳机,有没有办法只通过耳机播放声音?

2 个答案:

答案 0 :(得分:4)

  

有没有办法只通过耳机播放声音

     

插上?

目前无法通过耳机强力播放声音

请参阅此Google问题跟踪器Notifications are played through external speaker when headphones are plugged in和讨论。

用于检查耳机插入

注册接收器

ReceiveBroadcast receiver=new ReceiveBroadcast();       
registerReceiver(receiver, new IntentFilter(Intent.ACTION_HEADSET_PLUG));
  

onReceive()代码

public void onReceive(Context context, Intent intent) {
     if (intent.hasExtra("state")){
         if (headsetConnected && intent.getIntExtra("state", 0) == 0){
             headsetConnected = false;

         } else if (!headsetConnected && intent.getIntExtra("state", 0) == 1){
            headsetConnected = true;
         }
     }
 }

答案 1 :(得分:0)

您可以使用AudioManager.isWiredHeadsetOn()检查是否已插入耳机。

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

示例:

AudioManager am1 = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
am1.isWiredHeadsetOn();