android10版本中使用MediaRecorder通話程序中錄音時無聲音,掛斷電話后錄制的聲音正常,在低版本都正常,使用不同品牌手機測驗都是一樣問題,哪位大神知道原因的話說下,謝謝!
錄音代碼如下:
MediaRecorder mMediaRecorder;
File mRecorderFile;
long startRecorderTime,stopRecorderTime;
Handler mHander;
public boolean doStart() {
try {
//創建MediaRecorder
mMediaRecorder = new MediaRecorder();
//創建錄音檔案
mRecorderFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath()
+ "/recorderdemo/" + System.currentTimeMillis() + ".mp4");
if (!mRecorderFile.getParentFile().exists()) mRecorderFile.getParentFile().mkdirs();
mRecorderFile.createNewFile();
//配置MediaRecorder
//從麥克風采集
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//保存檔案為MP4格式
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
//所有android系統都支持的適中采樣的頻率
mMediaRecorder.setAudioSamplingRate(44100);
//通用的AAC編碼格式
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
//設定音質頻率
mMediaRecorder.setAudioEncodingBitRate(96000);
//設定檔案錄音的位置
mMediaRecorder.setOutputFile(mRecorderFile.getAbsolutePath());
//開始錄音
mMediaRecorder.prepare();
mMediaRecorder.start();
startRecorderTime = System.currentTimeMillis();
} catch (Exception e) {
//Toast.makeText(MediaRecordActivity.this, "錄音失敗,請重試", Toast.LENGTH_SHORT).show();
return false;
}
//記錄開始錄音時間,用于統計時長,小于3秒中,錄音不發送
return true;
}
/**
* 關閉錄音
*
* @return
*/
public boolean doStop() {
try {
mMediaRecorder.stop();
stopRecorderTime = System.currentTimeMillis();
final int second = (int) (stopRecorderTime - startRecorderTime) / 1000;
//按住時間小于3秒鐘,算作錄取失敗,不進行發送
if (second < 3) return false;
mHander.post(new Runnable() {
@Override
public void run() {
//tv_sendmsg.setText("錄制成功:" + second + "秒");
}
});
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
uj5u.com熱心網友回復:
哪位大神給個思路。轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/172697.html
標籤:Android
