2

私は、音を録音し、音の周波数または強度を表す値を画面に表示する必要があるアプリを 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)

音声ファイルを描画可能な短い値に変換する別の方法を教えてください。

ご助力ありがとうございます!!

4

2 に答える 2

0

ここでは、符号付き/符号なし、ビッグ/リトル エンディアン、およびサンプル サイズを考慮して、float とバイトの間で変換を行うための Library クラスを見つけることができます。

https://java.net/projects/gervill/sources/Mercurial/content/src/com/sun/media/sound/AudioFloatConverter.java

于 2014-03-12T03:09:34.823 に答える
0

録音した音を表示しようとしている方法が正しくないと思います。出発点として、オーディオ エンコーディング形式を学習し、次の Android クラスを確認する必要があります: http://developer.android.com/reference/android/media/AudioTrack.html

于 2012-11-08T08:00:05.157 に答える