搜了很久,都是牛头不对马嘴的复制黏贴。
大概感觉就是android 6.0以下要获取权限是否被拒绝了很难。。
最后找到个这个方法,凑活着用。
通过判断录音的分贝来判断是否开启了录音权限
MediaRecorder mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mRecorder.setOutputFile(CommonMap.BASE_PATH+"record"+File.separator+fileName);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mRecorder.prepare();
mRecorder.start();
new Thread(new Runnable() {
@Override
public void run() {
int flag1 = 0;
for (int i = 0; i < 8; i++) {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
int maxAmplitude = mRecorder.getMaxAmplitude();
flag1 += maxAmplitude;
}
if (flag1 == 0) {
handler.post(new Runnable() {
public void run() {
//没有权限的操作
Toast.makeText(AskAnswerActivity.this, "未开启权限或者没有录音", Toast.LENGTH_LONG).show();
}
});
} else {
//有权限的操作
}
}
}).start();