/**
 * 用于检测权限管理状态的类
 * @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,找到我问答探讨


更多相关文章

  1. Android 隐藏状态栏 和 标题栏
  2. android动态申请拍照获取照片权限
  3. Android判断是否有拍照权限
  4. androidの4.4版本沉浸式透明状态栏与导航栏案例

随机推荐

  1. KeyPress或KeyDown事件没有得到html元素
  2. 在h:inputTextarea中阻止Html标记
  3. jquery入门-$.each 数组操作与表单操作代
  4. 穹顶之下-善恶是非谁来负责
  5. HTML设置的横跨3列
  6. .fadeToggle()使我的子列表不可访问
  7. 如果字符串包含html代码,如何用python检测
  8. 去除Chrome浏览器文本框边缘的黄线
  9. 【竞价网站绝技】根据访客ip,页面显示访客
  10. Html css缩放会将大小改变几个像素