Я учусь нубу, создавая простую игру:
Есть несколько кнопок, которые пользователь может нажать
Я показываю некоторые вопросы на экране, и он должен нажать одну из кнопок в качестве ответа
когда он нажимает кнопку, я издаю звук.
3 неправильных ответа и игра окончена.
Просто верно?
Все работает, и я многому научился, за исключением одного исключения "#% #"% "#, которое продолжает сбой моего приложения: (
Это действительно странно, вкл.3 неправильных ответа: игра окончена, поэтому я запускаю этот код:
soundPool.release();
this.finish();
, который возвращает пользователя к последнему действию, и он может начать игру снова. Проблема возникает каждые 3-5 раз после перезапускаигра ... Я получаю силу близко, и это в logcat: http://imageshack.us/photo/my-images/90/91939698.png/
Кажется, здесь ошибка:
public void playSound(int sound) {
AudioManager mgr = (AudioManager)GameScreen.this.getSystemService(Context.AUDIO_SERVICE);
float streamVolumeCurrent = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);
float streamVolumeMax = mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = streamVolumeCurrent / streamVolumeMax;
/** The below line is line 117 that is crashing the program */
soundPool.play(soundPoolMap.get(sound), volume, volume, 1, 0, 1f);
}
Пожалуйста, посоветуйте, как я могу раздавить эту надоедливую "ошибка ".
Спасибо!
Райан
===============================================================================
РЕДАКТИРОВАТЬ:
в onCreate Я делаю это:
new LoadMusicInBackground().execute();
иLoadMusicInBackground это:
/** Helper class to load all the music in the background. */
class LoadMusicInBackground extends AsyncTask<Void, String, Void>
{
@Override
protected Void doInBackground(Void... unused) {
soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 100);
soundPoolMap = new HashMap<Integer, Integer>();
soundPoolMap.put(A1, soundPool.load(GameScreen.this, R.raw.a, 1));
soundPoolMap.put(A3, soundPool.load(GameScreen.this, R.raw.b, 1));
soundPoolMap.put(A5, soundPool.load(GameScreen.this, R.raw.c_s, 1));
soundPoolMap.put(A6, soundPool.load(GameScreen.this, R.raw.d, 1));
soundPoolMap.put(A8, soundPool.load(GameScreen.this, R.raw.e, 1));
soundPoolMap.put(A10, soundPool.load(GameScreen.this, R.raw.f_s, 1));
soundPoolMap.put(A12, soundPool.load(GameScreen.this, R.raw.g_s, 1));
soundPoolMap.put(wrong, soundPool.load(GameScreen.this, R.raw.wrong2, 1));
publishProgress("");
Log.v("SOUNDPOOL",""+soundPoolMap);
return(null);
}
@Override
protected void onProgressUpdate(String... item)
{
//text1.setText(item[0]);
}
@Override
protected void onPostExecute(Void unused) {
//Toast .makeText(GameScreen.this, "Done!", Toast.LENGTH_SHORT).show();
}
}