插入耳机时扬声器音量(警报)降低
Posted
技术标签:
【中文标题】插入耳机时扬声器音量(警报)降低【英文标题】:Speaker Volume (Alarm) decreases when Headphones are plugged in 【发布时间】:2017-08-24 03:57:22 【问题描述】:我正在尝试通过扬声器通过警报通道以最大音量播放警报声音。为此,我使用了 AudioManager 和 MediaPlayer。如果我插入耳机,警报仍然会通过扬声器播放,但是通过扬声器播放的警报音量会急剧下降,这对我来说毫无用处。
有没有办法防止这种音量下降?
我使用的代码是这样的:
public void startAlarmSound()
audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.setSpeakerphoneOn(false);
audioManager.setStreamVolume(AudioManager.STREAM_ALARM, audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM), 0);
if (!alreadyPlaying)
playAlarmSound();
alreadyPlaying = true;
private void playAlarmSound()
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudiostreamType(AudioManager.STREAM_ALARM);
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
@Override
public void onPrepared(MediaPlayer mp)
mediaPlayer.start();
);
try
mediaPlayer.setDataSource(this, Uri.parse("android.resource://com.mystuff.mine/" + R.raw.alarm_sound));
mediaPlayer.prepare();
catch (IOException e)
e.printStackTrace();
为了确保音量没有被降低,我每 5 秒调用一次。
audioManager.setStreamVolume(AudioManager.STREAM_ALARM, audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM), 0);
我位于欧盟境内,因此这可能是由处理插入耳机时的最大音量的规定引起的。由于我只关心扬声器输出,即使是这种情况,我也需要一种解决方法。
编辑:
我的应用和系统应用(如闹钟)以及 Nexus 5 和 6 都会出现此问题。因为我还阅读了其他手机制造商关于该问题的报告,所以我没有t 认为这个问题是 nexus 系列手机独有的。我需要一个解决方法。
我刚刚检查了 getStreamMaxVolume(AudioManager.STREAM_ALARM) 和 getStreamVolume(AudioManager.STREAM_ALARM) 的结果。无论耳机是否插入,两者都显示 7。
我确实注意到在插入耳机的情况下,当音量指示器设置为最大时,如果我降低它并再次快速增加它,它将增加到没有耳机时的音量。但是,由于这需要用户交互,所以这不是我正在寻找的解决方案。
【问题讨论】:
试试看这里android.googlesource.com/platform/packages/apps/DeskClock/+/… 您指的是哪个具体部分?唯一看起来有帮助的是 mediaPlayer.setVolume(1,1)。我试过了,但没有解决问题。 问题是不能只增加扬声器的音量。但无论如何尝试 audioManager.requestAudioFocus(null, AudioManager.STREAM_ALARM, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT); 如果耳机音量也增加,这不是问题,但在这种情况下,欧盟法规可能会造成问题。我今天晚些时候会检查 requestAudioFocus ,但我很确定这是我已经尝试过的事情之一 - 至少从文档来看它似乎无济于事(尽管这个问题听起来很像那里描述的音量闪避。 ) 这是设备自带的功能,你不能把音量调的这么高,除非用户自己不允许,否则会伤耳朵,问题是扬声器和耳机音量没有分开跨度> 【参考方案1】:按照约翰的说法,
这是设备的内置功能,你不能把音量调得太高,除非用户自己不允许,否则会伤耳朵,问题是扬声器和耳机的音量没有分开
我认为您可能无法将音量调满。我建议您尝试查看是否可以禁用耳机(即使已插入)然后播放闹钟(因为耳机被禁用,所以要全音量),然后在闹钟关闭后重新启用耳机。
查看this 或this 以禁用耳机。
【讨论】:
以上是关于插入耳机时扬声器音量(警报)降低的主要内容,如果未能解决你的问题,请参考以下文章