Как определить лучшую частоту дискретизации звука на устройстве Android?

Запустив Android 5.1 на моем Nexus 5, я столкнулся с задержкой звука из-за этого проблема. Проблема в том, что мои файлы 44,1 кГц OGG передискретизируются (до 48 кГц?) при воспроизведении с использованием SoundPool, вызывающий задержку.

Теперь я полагаю, что разные устройства оптимизированы для разной частоты дискретизации. Как я могу убедиться, что мой звук хорошо воспроизводится на всех устройствах? Можно ли определить оптимальную частоту дискретизации, а затем выбрать лучший файл из нескольких аудиоресурсов?


person l33t    schedule 12.04.2015    source источник


Ответы (1)


Вам потребуется PROPERTY_OUTPUT_SAMPLE_RATE AudioManager.

public int getBestSampleRate()
{
    if (Build.VERSION.SDK_INT >= 17) {
        AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
        String sampleRateString = am.getProperty(AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE);
        int sampleRate = sampleRateString == null ? 44100 : Integer.parseInt(sampleRateString);

        return sampleRate;
    } else {
        return 44100;
    }
}
person Pavel Alexeev    schedule 11.10.2015
comment
Если вы провели несколько тестов, прокомментируйте, действительно ли использование собственной частоты дискретизации помогает с задержками звука. - person Pavel Alexeev; 11.10.2015