gpt4 book ai didi

Android - 录制声音并检查音量

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:11:18 26 4
gpt4 key购买 nike

我想知道我的设备是否正在正确录制音频(录制的音频音量不是太低,实际上录制的文件有声音)。我尝试这样做的方式是:

start recording --> play sound --> stop recording --> get file recorded max volume

我用来录音的代码:

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;
}
}

但是,我找不到如何分析创建的 mp3 文件并检查它是否不为空(从声音),是否有库或其他方式?

我希望你们能理解我想要达到的目标,因为我的英语很糟糕,谢谢。

编辑:(更多解释)如果您在从麦克风录制声音时播放声音(铃声或其他东西),则录制的分贝应在 90 分贝左右。意味着播放的声音和麦克风都在工作,但如果记录的分贝在 30 左右,则意味着只有麦克风在工作,而播放声音没有,如果分贝在零左右,则麦克风不工作。

最佳答案

如果录制的声音太低或太大,您可以使用可视化工具实时可视化。

我建立了一个项目,通过条形图可视化记录的声音强度。条越高,录制的声音越低,条越低。

这个项目也有应用内播放器,允许用户播放他的所有录音。内置播放器还可视化播放声音数据。

我提出这个建议是因为我认为这就是您想要实现的目标开始录音--> 播放声音--> 停止录音--> 获取文件录制的最大音量。

如果录制文件的录制频率高于可接受的分贝值,您不必每次都获得最大音量,而是可以依靠可视化工具来关注录制器。

你可以在github上找到源代码

https://github.com/hiteshsahu/Android-Audio-Recorder-Visualization-Master

关于Android - 录制声音并检查音量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39210726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com