【问题标题】:how to play sound file in single headphone side如何在单耳机端播放声音文件
【发布时间】:2015-08-23 09:40:06
【问题描述】:

我目前正在开发应用程序,我想控制在不同耳机侧播放声音文件,例如第一次在左侧,第二次在右侧,有什么方法可以实现吗?

【问题讨论】:

  • 我的回答解决了你的问题吗?如果是,请将其标记为已接受。

标签: android android-audiomanager


【解决方案1】:

是的,有办法。 MediaPlayer.setVolume(float leftVolume,float rightVolume).

在下面的 sn-p 中,我们正在播放包含在 assets 文件夹中的 .mp3 文件(请注意,如果文件夹中有多个文件,则应检查 answer)。通过按下Button 对象之一,歌曲仅在左侧或右侧耳机中播放:

MediaPlayer AudioObj = new MediaPlayer();
    AudioObj.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(final MediaPlayer mediaPlayer) {
            findViewById(R.id.progressBar).setVisibility(View.INVISIBLE);
            Button btnl = (Button) findViewById(R.id.btnPlayleft);
            Button btnr = (Button) findViewById(R.id.btnPlayright);
            btnl.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    mediaPlayer.setVolume(1, 0);
                    mediaPlayer.start();
                }
            });
            btnr.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    mediaPlayer.setVolume(0, 1);
                    mediaPlayer.start();
                }
            });
        }
    });
    AudioObj.setAudioStreamType(AudioManager.STREAM_MUSIC);
    try {
        AssetFileDescriptor afd = getAssets().openFd("audio.mp3");
        AudioObj.setDataSource(afd.getFileDescriptor());
    }catch (IOException e){}
    AudioObj.prepareAsync(); 

附:

音频文件必须是立体声的。

您是否想在播放音频之前检查耳机是否已插入,以便提示消息或执行其他操作:

AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
if(!audioManager.isSpeakerphoneOn()){
//prompt a message or do something else
} 

【讨论】:

  • +1 适用于 2 台设备。体内和OPPO。但在 Redmi Note 5 Pro 上,它不起作用。它在两个(左和右)上均等地播放声音。这意味着代码没有生效。 Redmi note 5 pro 和其他 2 之间的 1 区别是 Android 版本。 Redmi 有 Android 9,其他 2 有 Android 8 和 5。所以也许是 Android 9 的问题?如果您有解决方案,请更新答案。谢谢:)
猜你喜欢
  • 2015-11-21
  • 2014-04-06
  • 1970-01-01
  • 1970-01-01
  • 2018-06-18
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多