我正在Android中开发一个应用程序,该应用程序必须记录声音并在屏幕上显示一些表示声音频率或强度的变量。
为了记录,我使用以下代码:
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或float以显示它们:
canvas.drawLine(xini,yini,xfinal,yfinal,paint)
您能推荐我另一种将音频文件转换为可以绘制的短值的方法吗?
非常感谢您的帮助!!
最佳答案
我认为您尝试显示录制的声音的方式不正确。首先,您需要学习音频编码格式,并查看以下android类:http://developer.android.com/reference/android/media/AudioTrack.html
关于android - Android:将音频转换为float [],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13273755/