AudioTrack в MODE_STREAM не имеет звука

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

Мой вопрос основан на этом примере. Я включил источник (и решение) в свой собственный код и вижу, что в буфер записывается, но с устройства не поступает звук. Я изо всех сил пытаюсь определить, как отладить это дальше.

package com.example.audio;
import com.example.R;
import java.io.IOException;
import java.io.InputStream;
import android.content.Context;
import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioTrack;
import android.util.Log;

public class Synth {
    private static final String TAG = Synth.class.getSimpleName();
    private AudioTrack audioTrack;
    private Context context;

    public Synth(Context context) {
        this.context = context;
        int minBufferSize = AudioTrack.getMinBufferSize(22050, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);
        audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 22050, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, minBufferSize, AudioTrack.MODE_STREAM); 
    }
    public void playSound() {
        audioTrack.play();
        int i = 0;
        int bufferSize = 512;
        byte [] buffer = new byte[bufferSize];
        InputStream inputStream = context.getResources().openRawResource(R.raw.mysample);
        try {
            int writes = 0;
            while((i = inputStream.read(buffer)) != -1) {
                writes++; audioTrack.write(buffer, 0, i);
            }
            Log.d(TAG, "Wrote " + writes + " times." );
        } catch (IOException e) {e.printStackTrace();}
        try {inputStream.close();} catch (IOException e) {e.printStackTrace();}
    }
}

(Чтобы воспроизвести проект: создайте новый проект, включите этот класс, добавьте звук, упомянутый ниже, создайте экземпляр Synthзатем уволить playSound публичная функция)

Очевидно, что я не могу загрузить аудио или гарантировать его постоянство в веб-папке, но этот инструмент будет генерировать WAV-файл точно так же, как я использую (измените частоту дискретизации до 22,05 кГц и нажмите "скачать.wav-файл")

Я понимаю, что STREAM_MUSIC а также MODE_STREAM кажется неуместным в этом примере. Я использую эти флаги / режим, потому что я знаю, что мне понадобится использовать AudioTrack с этими режимами позже в процессе разработки, и на самом деле я просто сейчас пытаюсь получить звук, выходящий из устройства.

Кто-нибудь может порекомендовать шаги отладки или посмотреть, в чем проблема с воспроизведением? Любая помощь приветствуется.

1 ответ

Решение

Я определил проблему, с которой столкнулся изначально, когда впервые поднял этот вопрос. Надеюсь, это поможет другим людям...

Громкость телефона Android

Как оказалось, в то время, когда я настраивал громкость, приложение не воспроизводило звук, поэтому на самом деле максимальная громкость составляла громкость системы / мелодии звонка, а не громкость музыки, видеоигр и других медиафайлов., который был приглушен.

Другие вопросы по тегам