Android – воспроизведение звука при нажатии кнопки – исключение Null pointer

Я пытаюсь воспроизвести звуковой файл одним нажатием кнопки. Звук длится всего 1 секунду. Он хорошо воспроизводит первые несколько раз, когда я нажимаю кнопку, но через некоторое время он дает NullPointerException . Вот код:

 button[i].setOnClickListener(new OnClickListener() { public void onClick(View view) { mp = MediaPlayer.create(Test.this, R.raw.mysound); mp.start(); } }); 

И вот исключение:

 07-29 23:07:27.690: ERROR/AndroidRuntime(10542): Uncaught handler: thread main exiting due to uncaught exception 07-29 23:07:27.710: ERROR/AndroidRuntime(10542): java.lang.NullPointerException 07-29 23:07:27.710: ERROR/AndroidRuntime(10542): at com.example.mypackage.Test$3.onClick(Test.java:270) 

Спасибо вам за ответы! Ценить это!

Вот как мне наконец удалось заставить его работать:

  button[i].setOnClickListener(new OnClickListener() { public void onClick(View view) { mp = MediaPlayer.create(Test.this, R.raw.mysound); mp.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { // TODO Auto-generated method stub mp.release(); } }); mp.start(); } }); 

Вы также можете попробовать:

 final soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0); final sound = soundPool.load(this, R.raw.mysound, 1); button[i].setOnClickListener(new OnClickListener() { public void onClick(View view) { soundPool.play(sound, 1.0f, 1.0f, 0, 0, 1.0f); } }); 

Это может решить вашу проблему,

 button[i].setOnClickListener(new OnClickListener() { public void onClick(View view) { new Thread(){ public void run(){ mp = MediaPlayer.create(Test.this, R.raw.mysound); mp.start(); }.start(); } }); 

Вы должны поймать Исключение.

попробуйте этот код:

  try{ MediaPlayer mplayer = MediaPlayer.create(contextTop, R.raw.); mplayer.start(); }catch(Exception e){ Log.d("" , "error: " + e); } 

Если все еще ваша проблема не решена, попробуйте это, поскольку она мне поможет.

  public void playSound(int resources){ try{ boolean mStartPlaying = true; MediaPlayer mPlayer=null; if (mStartPlaying==true){ mPlayer = new MediaPlayer(); Uri uri = Uri.parse("android.resource://YOUR_PACKAGENAME/" + resources); mPlayer.setDataSource(getApplicationContext(),uri); mPlayer.prepare(); mPlayer.start(); } else{ mPlayer.release(); mPlayer = null; } mStartPlaying = !mStartPlaying; } catch (IOException e){ Log.e(LOG_TAG, "prepare() failed"); } // MediaPlayer mp = MediaPlayer.create(SpyMainActivity.this, resources); // mp.start(); } 

Наслаждаться. 🙂

Давайте будем гением компьютера.