Android【控制音频左右声道不同音量播放】

上一节讲的是音频文件如何分离出左右声道,这节顺便把如何不分离声道直接控制左右声道播放这个知识点分享了。

  • MediaPlayer
  • 系统提供了非常方便的播放器,不用单独去找第三方的。
    核心方法就是setVolume

    直接上代码,首先是播放:

这是Mediaplayer的最基础用法

//"R.raw.example"
    public static void play(Context context, int resId, Surface surface, Callback callback) {
        release();
        mMediaPlayer = MediaPlayer.create(context, resId);// no need to call prepare(); create() does that for you
        mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        if (surface != null) {
            try {
                mMediaPlayer.setSurface(surface);
            } catch (Exception e) {
                e.printStackTrace();
                Log.e(TAG, "setSurface error = " + e.toString());
            }
        }
        mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mediaPlayer) {
                mediaPlayer.release();
                if (callback != null) {
                    callback.onCompletion();
                }
            }
        });
        mMediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
            @Override
            public boolean onError(MediaPlayer mediaPlayer, int what, int extra) {
                mediaPlayer.release();
                return false;
            }
        });
        mMediaPlayer.start();
        if (callback != null) {
            callback.onStart();
        }
    }

重点就是这里:

public static void setVolume(float left,float right){
        if(mMediaPlayer != null){
            mMediaPlayer.setVolume(left,right);
        }
    }

setVolume里面的两个参数是音量,取值都是0.0~1.0区间,0表示静音;第一个参数是左声道音量,第二个参数是右声道音量

OK,本篇完。

在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐