2

嘿我试图通过我的耳机,而不是我的应用程序的主要手机扬声器播放R.raw文件,但everyshting我扔在它不工作。我目前的代码......它只是通过耳机播放非常轻的静音,而不是我想要的R.raw。让MediaPlayer和AudioManager通过耳机而不是扬声器播放?

这里是我的代码下面,我把它在清单:<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>

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

     MediaPlayer tellSecret = MediaPlayer.create(this, R.raw.secret); 
    tellSecret.setAudioStreamType(AudioManager.STREAM_VOICE_CALL); 
    tellSecret.start(); 

有什么想法?

+0

你是否得到这个工作?我注意到你没有接受给出的答案,而且我很想知道你做了什么,因为我正在尝试做,事实恰恰相反! - 我想让声音始终使用扬声器:) – noelicus

+0

@noelicus:你最终找到了解决方案吗?我正在尝试做你所做的,但无法找到解决方案。我问了一大堆关于解决方法的问题(http://stackoverflow.com/questions/20965530/how-to-mute-audio-in-headset-but-let-it-play-on-speaker-programmatically) ,但我无法找到它。请告诉我。 – SoulRayder

+0

嗨@Gautham,是的,我做过了 - 我已经从你的链接中回答了你的问题。祝你好运! – noelicus

回答

1

试着将Audio Manager和Media Player模式设置为AudioManager.STREAM_MUSIC。

+0

或者只是确保您的AudioManager和MediaPlayer都处于相同的模式。 – BC2

0

不要为媒体播放器使用'创建'api,而应该使用'setDataSource'和'准备'apis。在调用'setDataSource'之前,还需要在STREAM_VOICE_CALL上调用mediaplayer实例上的'setAudioStreamType'api。

最后在启动媒体播放器之后, 在音频管理器上调用setSpeakerphoneOn(false)。

相关问题