Tôi đang cố gắng tìm hiểu xem thiết bị của tôi có ghi âm chính xác hay không (Âm lượng của âm thanh được ghi không quá thấp và thực tế tệp đã ghi có âm thanh). Con đường tôi đã cố gắng làm việc đó là:Android - ghi lại âm thanh và kiểm tra âm lượng
ghi âm bắt đầu -> âm thanh chơi -> dừng ghi âm -> có được file ghi tối đa khối lượng
Code tôi sử dụng để ghi lại âm thanh:
public void playSound() {
File myDataPath = new File(getActivity().getFilesDir().getAbsolutePath()
+ File.separator + ".CheckAudio");
if (!myDataPath.exists())
myDataPath.mkdirs();
recordFile = myDataPath + File.separator + "Recording_" + new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date()) + ".mp3";
am.setStreamVolume(AudioManager.STREAM_RING, am.getStreamMaxVolume(AudioManager.STREAM_RING), 0);
am.setStreamVolume(AudioManager.STREAM_NOTIFICATION, am.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION), 0);
Uri defaultRingtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
try {
md = new MediaRecorder();
md.setAudioSource(MediaRecorder.AudioSource.MIC);
md.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
md.setOutputFile(recordFile);
md.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
md.prepare();
md.start();
} catch (IllegalStateException | IOException e) {
recording = false;
removeItem("Unable to record audio, please try again."); // (Show toast)
return;
}
mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setDataSource(getActivity(), defaultRingtoneUri);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
mediaPlayer.prepare();
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
md.stop();
md.release();
mediaPlayer.release();
mediaPlayer = null;
// get recordfile volume
}
});
mediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
removeItem("Unable to play audio");
sound = false;
}
}
Tuy nhiên, tôi không thể tìm hiểu cách phân tích tệp mp3 được tạo và kiểm tra xem tệp đó có trống không (từ âm thanh), có thư viện hay cách khác không?
Tôi hy vọng các bạn hiểu những gì tôi đang cố gắng đạt được vì tiếng Anh của tôi khá tệ, Cảm ơn.
CHỈNH SỬA: (Giải thích thêm) Nếu bạn phát âm thanh (nhạc chuông hoặc thứ gì đó) trong khi ghi âm từ micrô, số decibel được ghi là khoảng 90 decibel. nghĩa là âm thanh phát hoạt động và cả micrô, nhưng nếu decibel ghi lại khoảng 30 nghĩa là chỉ micrô hoạt động và phát âm thanh không, nếu decibel ở khoảng 0 thì micrô không hoạt động.
Trước hết bạn có thể tìm thấy các tập tin được tạo ra? Bạn có thể mở nó bằng một ứng dụng khác với ứng dụng của bạn và xem âm thanh có thực sự được ghi lại không? –
@GeorgeD Tôi muốn làm điều đó trong cùng một ứng dụng, tuy nhiên, làm điều này trong nền trong khi những thứ khác xảy ra là một lựa chọn. Tôi đã thêm một số thông tin về những gì tôi sẵn sàng tìm thấy (ở cuối câu trả lời). cảm ơn. – DAVIDBALAS1
Tôi biết rằng bạn muốn làm điều đó từ cùng một ứng dụng nhưng chỉ để lại điều đó một lúc, hãy thử mở tệp từ một ứng dụng khác tồn tại trên thiết bị của bạn và xem liệu nó có trong thực tế được ghi lại bất kỳ thứ gì không. Cho phép xác minh xem chức năng ghi âm có đang được triển khai chính xác hay không. –