2017-02-14 14 views
1

После примерно 10-15 снимков шум затвора перестает работать и не возвращается, пока вы не перезапустите приложение. Эта ошибка в Android Studio:Остановка затвора

02-10 10:20:03.626 491-13501/? E/AudioFlinger: no more track names 
available 02-10 10:20:03.626 491-13501/? E/AudioFlinger: 
createTrack_l() initCheck failed -12; no control block? 02-10 
10:20:03.626 31837-31837/ E/AudioTrack: AudioFlinger could not create 
track, status: -12 02-10 10:20:03.627 31837-31837/ E/SoundPool: Error 
creating AudioTrack 

Вот код:

Thread myThread = new Thread(new Runnable() { 
    @Override 
    public void run() { 
     MediaActionSound sound = new MediaActionSound(); 
     sound.play(MediaActionSound.SHUTTER_CLICK); 
    } 
} 
+0

может у обеспечить полный фрагмент кода – bakriOnFire

+0

темы MyThread = новый тему (новый Runnable() { @Override общественности недействительным запуска() { MediaActionSound звук = новый MediaActionSound(); sound.play (MediaActionSound.SHUTTER_CLICK); } }); myThread.start(); –

+0

вы открываете несколько объектов, не вызывая освобождение .., если это помогает http://stackoverflow.com/questions/11964623/audioflinger-could-not-create-track-status-12 – bakriOnFire

ответ

0

В моем приложении я использую этот код. У меня также была аналогичная проблема (звук не был воспроизведен до конца после нескольких игр). Но после повторного использования (вместо воссоздания) проблема MediaActionSound исчезла.

PS: звуковая игра асинхронно, поэтому вам не нужно создавать нить.

static private MediaActionSound sound = null; 

static public void playShutterSound(){ 
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) { 
     if(sound == null) { 
      sound = new MediaActionSound(); 
     } 
     sound.play(MediaActionSound.SHUTTER_CLICK); 
    } 
}