2014-03-13 111 views
0

我想播放一個音頻文件,從左揚聲器開始,然後切換到右揚聲器。讓媒體播放器首先在右揚聲器上播放,然後在左揚聲器上播放

我試圖做這樣的事情:

MediaPlayer mp = new MediaPlayer(); 

// Setup audio file 

mp.start(); 

mp.setVolume(1.0F, 0F); 

// Delay a second or two (I actually use a Handler and the postDelayed method) 

mp.setVolume(0F, 1.0F); 

但聲音是通過對兩個揚聲器的全部時間。

如何在左側或右側揚聲器靜音(或縮小音量)的情況下播放Android中的音頻?

編輯

我得到了一會兒正確的行爲,而我在測試我的應用程序,但隨後恢復到什麼完全相同的代碼庫上述我。基於此,還有什麼我可以檢查以瞭解發生了什麼?

+0

您可以更改音頻文件,包括這種效果呢? –

+0

@TristanBurnside我試圖讓用戶可以在我的應用程序中使用他們自己的媒體文件,否則這可能是最好的答案... – dg123

+0

我以前有過與本機實現MediaPlayer有關的(不同)問題,在此期間我發現這些年來有所改變。你正在運行哪個版本的Android?最好。 – Tom

回答

3

一種選擇是

  1. 啓動媒體播放器與setVolume(1.0F,0F);
  2. 當您想切換到其他揚聲器時,使用getCurrentPosition()方法獲取媒體播放器的當前位置。
  3. 然後停止媒體播放器。
  4. 然後再次以setVolume(0F,1.0F)開頭;
  5. 尋到positin你在第2步使用seekTo()方法

完成了。

開銷:此方法可能會導致你一些延遲

0

它看起來像你準確地根據Android的API http://developer.android.com/reference/android/media/MediaPlayer.html

public void setVolume (float leftVolume, float rightVolume) 

Sets the volume on this player. This API is recommended for balancing the output of 
audio streams within an application. Unless you are writing an application to control 
user settings, this API should be used in preference to setStreamVolume(int, int, int) 
which sets the volume of ALL streams of a particular type. Note that the passed volume 
values are raw scalars in range 0.0 to 1.0. UI controls should be scaled logarithmically. 

Parameters 
leftVolume left volume scalar 
rightVolume right volume scalar 

我最好的建議是嘗試,而不是僅僅0F 0.0F,然後也許你試圖開始播放前設定音量做跟蹤然後在播放時進行轉換。

+0

不幸的是,在曲目播放之前設置音量並沒有幫助。 – dg123

+0

您測試過多少個設備? –

相關問題