Android audiorecordは初期化に失敗します
-
08-10-2019 - |
質問
AndroidにAudiorEcordを使用することに問題があります。私はそれについてオンラインで見つけることができる限り読んでいますが、私は良い初期化を得ることができないようです。 Android 2.2エミュレーター、1.5エミュレータ、私の電話、HTC信じられないほどのランニングフロヨを試しました。エミュレーターと私の電話は初期化に失敗します。
8000、11025、および44100のサンプリングレートを試しました。Channel_in_mono/stereoおよびChannel_configuration_mono/stereo、8ビットおよび16ビットエンコード(8ビットはgetMinBufferSizeが失敗する)、およびデフォルトのAudiOSOURCEを試しました。すべての結果、GET状態を実行した後に変数テストが0になります(初期化の失敗)。
私が読んだことすべてから、これによりオブジェクトを正しく初期化する必要があるようです。 HTCデバイスには8192を超えるものが必要だと聞いたため、512(関数の結果)から102400までの範囲であるため、Buflenの乗数を使用して遊んでいます。
問題をテストするために、可能な限り問題を再現する新しい小さなプロジェクトを作成しました。必要な定数をローカル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();
}
}
解決
- 編集 -
ビルの答えをご覧ください。
-END編集 -
たぶん、正しい許可を取得したかどうかを確認する必要があります。たとえば、デバイスを振動する必要がある場合は、androidmanifest.xmlファイルでandroid.permiss.vibrateを取得する必要があります。
他のヒント
彼は、あなたがマニフェストでRecord_Audioの許可を必要とすることを意味すると思います:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
それは私のために働いた。