让媒体播放器首先在右扬声器上播放,然后在左扬声器上播放

时间:2014-03-13 01:59:59

标签: android audio media-player

我想播放一个从左扬声器开始然后切换到右扬声器的音频文件。

我尝试过这样的事情:

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中播放音频?

修改

在我测试我的应用程序时,我得到了正确的行为一段时间,但后来它返回到我上面描述的完全相同的代码库。基于此,还有什么我可以检查以找出发生了什么?

2 个答案:

答案 0 :(得分:3)

一个选项是

  1. 使用setVolume(1.0F,0F)启动mediaplayer;
  2. 当您想切换到其他发言人时,请使用getCurrentPosition()方法获取媒体播放器的当前位置。
  3. 然后停止媒体播放器。
  4. 然后再从setVolume(0F,1.0F)开始;
  5. 使用seekTo()方法寻找你在第二步中获得的位置
  6. 完成。

    开销:此方法可能会导致延迟

答案 1 :(得分: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

我最好的建议是尝试0.0F而不是0F,然后尝试在开始播放音乐之前设置音量,然后在播放时进行过渡。