На самом деле мое устройство не поддерживает MediaPlayer, поэтому я пытаюсь использовать SoundPool для воспроизведения звука .wav, который будет что-то вроде «звука уведомления об ошибке», его вес всего 350 КБ.
Я былпытаюсь использовать следующий код, найденный в stackoverflow
private void playSound() {
audioAttributes = new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.setUsage(AudioAttributes.USAGE_MEDIA)
.build();
sp = new SoundPool.Builder().build();
int soundId = sp.load(getApplicationContext(), R.raw.errorsound, 1);
sp.play(soundId, 1, 1, 1, 1, 1f);
}
Но каждый раз, когда я пытаюсь воспроизвести звук, в Logcat появляется "sample 1 not READY"
Что не так с этим кодом?Как мне это исправить?
ОБНОВЛЕНИЕ:
После изменения кода следующим образом
private void playSound() {
audioAttributes = new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.setUsage(AudioAttributes.USAGE_MEDIA)
.build();
sp = new SoundPool.Builder().build();
final int soundId = sp.load(getApplicationContext(), R.raw.itemexist, 1);
sp.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
sp.play(soundId, 1.0f, 1.0f, 1, 1, 1f);
}
});
}
«Образец 1 не ГОТОВ» больше не появляется, но ядо сих пор не слышу ни звука.В Logcat я получаю следующую ошибку:
Не удалось открыть libwvm.so: ошибка dlopen: "/system/vendor/lib64/libwvm.so" является 32-разрядной вместо 64-разрядной