关于android录音权限被用户禁用的问题解决方案

来源:互联网 发布:淘宝网宝贝分类怎么弄 编辑:程序博客网 时间:2024/05/01 02:41
/**
 * 用于检测权限管理状态的类
 * @author Administrator
 *
 */
public class CheckAudioPermission {
public static final int STATE_RECORDING=-1;
    public static final int STATE_NO_PERMISSION=-2;
    public static final int STATE_SUCCESS=1;
    
    /**
     * 用于检测录音权限是禁用还是允许状态
     * @return 返回1表示权限是允许状态,返回-2表示权限是禁用状态
     * @author ZhuJian
     */
public static int getRecordState(){
int minBuffer=AudioRecord.getMinBufferSize(44100, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, 44100, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, (minBuffer*100));
short[] point = new short[minBuffer];
int readSize=0;
try {
audioRecord.startRecording();//检测是否可以进入初始化状态
} catch (Exception e) {
if(audioRecord != null){
audioRecord.release();
audioRecord=null;
Log.i("TAGS","无法进入录音初始状态");
}
return STATE_NO_PERMISSION;
}
if(audioRecord.getRecordingState() != AudioRecord.RECORDSTATE_RECORDING){
//6.0以下机型都会返回状态,故使用时需要判断bulid版本
//检测是否在录音中
if(audioRecord != null){
audioRecord.stop();
audioRecord.release();
audioRecord=null;
Log.i("TAGS","录音机被占用");
}
return STATE_RECORDING;
}else{//检测是否可以获取录音结果
readSize = audioRecord.read(point, 0, point.length);
if(readSize <= 0){
if(audioRecord != null){
audioRecord.stop();
audioRecord.release();
audioRecord = null;
}
Log.i("TAGS", "录音的结果为空");
return STATE_NO_PERMISSION;
}else{
if(audioRecord != null){
audioRecord.stop();
audioRecord.release();
audioRecord = null;
}
return STATE_SUCCESS;
}
}
}

}


          我的微博http://weibo.com/laokuzai  ,加关注

          微信:zhuj8989,找到我问答探讨


0 0
原创粉丝点击