У меня есть программа, которая успешно работает на полдюжины тестовых устройств и сотни, по-видимому, счастливых пользователей, которые загружают мое приложение из Google Play.Инициализация AudioRecorder на Nexus 7 Marshmallow
Я купил использованный Nexus 7, который был обновлен до Marshmallow, и я не могу записать. Устройство работает с другими приложениями для записи звука просто отлично, но просто не запускает мое приложение.
Вот код:
private static AudioRecord recorder = null;
public static void record() throws IllegalArgumentException
{
int channelConfig = AudioFormat.CHANNEL_IN_MONO;
int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
int sampleRate = 44100;
int minSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat);
int latencySize = 3584;
int inputBufferSize = Math.max(minSize, latencySize);
recorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, sampleRate, channelConfig, audioFormat, inputBufferSize);
int state = recorder.getState();
if (state != AudioRecord.STATE_INITIALIZED)
{
if (recorder != null)
recorder.release();
recorder = null;
throw new IllegalArgumentException("Failed to initialize Audio recorder. State = " + state);
}
recorder.startRecording();
Thread inputThread = new Thread(new Runnable() { public void run() { inputTask(); } }, "Input");
inputThread.setPriority(Thread.MAX_PRIORITY);
inputThread.start();
}
Это терпит неудачу с состоянием 0, который является таким же, как STATE_UNINITIALIZED
.
Мои AndroidManifest.xml включает
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
Как я уже говорил, этот код успешно работает на сотни других машин, он просто не будет работать на моем Nexus 7. Есть ли что-то новое и необычное о Зефир? Должен ли я подозревать некоторый сбой в моем оборудовании? Что происходит?
Почему * piep * не это сказал где-нибудь ... мне потребовалось день^_^ – DipSwitch
@DipSwitch, она есть, но не везде. В Android 6 было много сказано о новой системе разрешений, но не везде. – geNia