android录音播放问题

本文详细介绍了在Android平台上实现录音和播放功能的实践经验。首先尝试使用MediaRecorder,然后转而采用AudioRecord结合系统AEC和BS进行回音和噪声消除,但效果不理想。最终决定继续使用MediaRecorder,因为它简洁易用。在播放过程中,涉及扬声器与听筒切换、耳机插拔状态判断、音频流类型设置、资源释放、息屏状态判断以及音量键管理等多个细节问题。
摘要由CSDN通过智能技术生成
最近要做一个录音并且播放的功能,开始用的系统自带的 MediaRecorder,效果一般。
尝试用AudioRecord,在用系统AEC,BS去回音去噪,结果发现效果也是 差不多
尝试用WebRtc,结果发现效果也是差不多。
可能跟4.1之后的系统就已经把WebRtc带上了,所以最终还是  MediaRecorder,毕竟它最简单。

播放的时候:
1,需要扬声器和听筒切换,就需要监听距离感应器SensorManager;
2,需要判断耳机插拔状态;
需要注意:
1,mediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL); 
     audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
    始终用这个,因为不用通话模式,听筒的时候声音会很小;
2,需要去注册耳机插拔的广播,因为只是有些机子会插上耳机后会默认耳机播放;
3,最好播放完毕就mediaPlayer.release(); mediaPlayer=null;释放资源;
4,部分机型息屏会调Activity的OnPause,所以可能要用到  isScreenOff()判断;
5,音量键调节,是根据 audioManager.setMode()方法控制调哪种音量的。所以Activity的OnPause里面要释放到AudioManager.MODE_NORMAL;
     
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.AssetFileDescriptor;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.PowerManager;

import com.qihoo.litegame.BaseApplication;
import com.qihoo.utils.ToastUtil;

import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.IOException;

public class PlayerManager implements SensorEventListener {
    public static final int MODE_SPEAKER = 0;
    public static final int MODE_HEADSET = 1;
    public static final int MODE_EARPIECE = 2;

    private static PlayerManager playerManager;

    private Context context;
    private AudioManager audioManager;
    private MediaPlayer mediaPlayer;
    private PlayCallback callback;

    private PowerManager powerMan
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值