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)。

相關問題