2014-03-13 109 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

您测试过多少个设备? –

相关问题