Вопрос

У меня проблемы с использованием AudioRecord для Android. Я читал так сильно, как я могу найти онлайн об этом, но я не могу получить хорошую инициализацию. Я попробовал эмулятор Android 2.2, эмулятор 1.5 и мой телефон, HTC невероятной бегущей Froyo. Эмуляторы и мой телефон терпят неудачу инициализации.

Я пробовал показатели отбора проб 8000, 11025, а 44100, форматы Channel_in_Mono / Stereo и Channel_Configuration_Mono / Stereo, 8bit и 16bit Choding (8 бит делает Failminbuffersize Fail), а также аудиосигнал MIC и по умолчанию. Все приводят к тому, что в переменном тесте становится 0 после запуска состояния получателя (неудачная инициализация).

Кажется, из всего, что я прочитал, что это должно правильно инициализировать объект. Я играл с множителем на Buflen, чтобы он варьировался от 512 (результат функции) до 102400, потому что я слышал, что устройства HTC требуют что-то выше 8192.

Для тестирования моей проблемы я сделал новый маленький проект, который воссоздает мою проблему как можно просто. Я вытаскиваю константы, необходимые в локальные INT, затем запускают конструктор и получают доступ к методу GUTSTATE для проверки, если оно сработало.

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();
    }
}
Это было полезно?

Решение

--редактировать--

Пожалуйста, смотрите ответ Билла.

- Отправить--

Может быть, вы должны проверить, приобретете ли вы правильное разрешение. Например, вам нужно получить Android.Permission.Вибрате в файле AndroidManifest.xml, если вам нужно вибрировать устройство.

Другие советы

Я думаю, что он означает, что вам нужно разрешение Rechnow_audio в манифесте:

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

Это работало для меня.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top