2

Android用のAudioRecordの使用に問題があります。私はそれについてオンラインで見つけることができる限り多くを読みました、しかし私は良い初期化を得ることができないようです。私はAndroid2.2エミュレーター、1.5エミュレーター、そして私の電話、Froyoを実行しているHTCIncredibleを試しました。エミュレーターと私の電話は初期化に失敗します。

8000、11025、44100のサンプリングレート、CHANNEL_IN_MONO/STEREOとCHANNEL_CONFIGURATION_MONO/STEREOのフォーマット、8ビットと16ビットのエンコーディング(8ビットでgetMinBufferSizeが失敗する)、MICとDEFAULTのAudioSourceを試しました。get状態(初期化に失敗)を実行した後、すべての結果、変数テストは0になります。

私が読んだすべてのことから、これはオブジェクトを正しく初期化するはずだと思われます。HTCデバイスには8192を超えるものが必要だと聞いていたので、buflenの乗数を試して512(関数の結果)から102400の範囲にしました。

問題をテストするために、問題をできるだけ簡単に再現する新しい小さなプロジェクトを作成しました。必要な定数をローカルintに引き出し、コンストラクターを実行してgetStateメソッドにアクセスし、機能するかどうかを確認します。

package com.example.audiorecordtest;

import android.app.Activity;
import android.os.Bundle;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;

public class audioRecordTest extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        int freq =8000;
        int chan = AudioFormat.CHANNEL_IN_MONO;
        int enc  = AudioFormat.ENCODING_PCM_16BIT;
        int src  = MediaRecorder.AudioSource.MIC;
        int buflen = AudioRecord.getMinBufferSize(freq, chan, enc);
        AudioRecord ar = new AudioRecord(src,freq,chan,enc,20*buflen);
        int test = ar.getState();
    }
}
4

2 に答える 2

14

彼は、マニフェストにRECORD_AUDIO権限が必要であることを意味していると思います。

<uses-permission android:name="android.permission.RECORD_AUDIO" />

それは私のために働いた。

于 2011-04-10T01:30:37.223 に答える
2

- 編集 -

ビルの答えを見てください。

-編集終了-

正しい許可を取得したかどうかを確認する必要があるかもしれません。たとえば、デバイスを振動させる必要がある場合は、AndroidManifest.xmlファイルでandroid.permission.VIBRATEを取得する必要があります。

于 2010-11-12T06:19:10.653 に答える