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

Android 让媒体播放器先在右扬声器上播放,然后在左扬声器上播放,android,audio,media-player,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); 但声音始终通过两个扬声

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

我试过这样做:

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 API做得很正确


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

看起来您是根据Android API正确操作的

我最好的建议是尝试0.0F,而不是只尝试0F,然后在开始播放曲目之前尝试设置音量,然后在播放曲目时转换音量。

一个选项是

  • 使用设置音量(1.0F,0F)启动mediaplayer
  • 当您想切换到其他扬声器时,请使用getCurrentPosition()方法获取媒体播放器的当前位置
  • 然后停止媒体播放器
  • 然后再次从设置音量(0F,1.0F)开始
  • 使用seekTo()方法查找第二步中得到的位置
  • 完成了

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

    一个选项是

  • 使用设置音量(1.0F,0F)启动mediaplayer
  • 当您想切换到其他扬声器时,请使用getCurrentPosition()方法获取媒体播放器的当前位置
  • 然后停止媒体播放器
  • 然后再次从设置音量(0F,1.0F)开始
  • 使用seekTo()方法查找第二步中得到的位置
  • 完成了


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

    您可以更改音频文件以包含此效果吗?@TristanBurnside我正在尝试允许用户在我的应用程序中使用自己的媒体文件,否则这可能是最好的答案…我以前对MediaPlayer的本机实现有(不同)问题,在这期间,我发现这些年来它发生了一些变化。你正在运行哪个版本的Android?Best.can您可以更改音频文件以包含此效果吗?@TristanBurnside我正在尝试允许用户在我的应用程序中使用自己的媒体文件,否则这可能是最好的答案…我以前在MediaPlayer的本机实现中遇到过(不同)问题,在这期间,我发现这些年来它发生了一些变化。你正在运行哪个版本的Android?最好。不幸的是,在播放曲目之前设置音量没有帮助。不幸的是,在播放曲目之前设置音量没有帮助。
    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