我正在Android中开发一个应用程序,它必须记录声音,并在屏幕上显示一些代表声音频率或强度的vaules。
对于记录内容我使用这段代码:
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setOutputFile(name);
mRecorder.prepare();
mRecorder.start();
然后我最初尝试将存储的文件转换为如下字节:
DataInputStream dis1 = new DataInputStream ( new FileInputStream (name));
byte[] datainBytes1 = new byte[dis1.available()];
dis1.readFully(datainBytes1);
dis1.close();
但我想将这些字节值转换为short或者浮点数,以便使用绘图方法显示它们:
canvas.drawLine(xini,yini,xfinal,yfinal,paint)
你能否推荐我另一种方法将音频文件转换为我可以绘制的短值?
非常感谢你的帮助!!
答案 0 :(得分:0)
我认为您尝试显示录制声音的方式不正确。作为起点,您需要学习音频编码格式,并查看以下android类:http://developer.android.com/reference/android/media/AudioTrack.html
答案 1 :(得分:0)
Here你会发现一个Library类,用于在浮点数和字节之间进行转换,同时考虑有符号/无符号,大/小端和样本大小。