2013-02-10 5 views
0

Привет, там я построил звуковую плату для персонажа, которого я назвал Aussie Bloke, - дека содержит 30 кнопок и 30 медиапланеров. Первоначально я использовал один медиаплеер для всех кнопок, но в конце концов звуки перестали играть после 20 случайных нажатий. Поэтому я решил использовать отдельные объекты медиапланера для каждого звука, используемые в исходном шаблоне деки, который я использовал. Это отлично работало, вы могли нажимать кнопки весь день и получать звуки, работающие правильно .. но проблема у меня в том, что когда активность отправляется на задний план и возвращается снова, даже через несколько секунд приложение падает, когда вы нажимаете кнопку. Я попытался создать метод onResume для подготовки всех игроков, но это только что привело к сбою приложения с самого начала. Извините, я очень новичок в создании кода и создании приложений, поэтому может быть очевидное решение, которое я упустил или полностью не осознавал.Android SoundBoard Crash при возобновлении активности

package com.zammacat.aussiebloke1; 

import java.io.IOException; 

import android.app.Activity; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class AUSSIEBLOKE1 extends Activity { 

private static final String BASE64_PUBLIC_KEY = "key here"; 

    MediaPlayer beer1; 
    MediaPlayer beer2; 
    MediaPlayer beer3; 
    MediaPlayer beauty; 
    MediaPlayer boner; 
    MediaPlayer death; 
    MediaPlayer dingo; 
    MediaPlayer dogupya; 
    MediaPlayer donotpress; 
    MediaPlayer enough; 
    MediaPlayer heaven; 
    MediaPlayer help; 
    MediaPlayer hungry; 
    MediaPlayer kebab; 
    MediaPlayer kids; 
    MediaPlayer knees; 
    MediaPlayer later; 
    MediaPlayer meatpie; 
    MediaPlayer medal; 
    MediaPlayer oath; 
    MediaPlayer poem; 
    MediaPlayer politics; 
    MediaPlayer pub; 
    MediaPlayer sex; 
    MediaPlayer sport; 
    MediaPlayer strewth; 
    MediaPlayer tango; 
    MediaPlayer v8; 
    MediaPlayer what; 
    MediaPlayer yoursister; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_aussiebloke1); 




    beer1 = MediaPlayer.create(this, R.raw.beer1); 
    beer2 = MediaPlayer.create(this, R.raw.beer2); 
    beer3 = MediaPlayer.create(this, R.raw.beer3); 
    beauty = MediaPlayer.create(this, R.raw.beauty); 
    boner = MediaPlayer.create(this, R.raw.boner); 
    death = MediaPlayer.create(this, R.raw.death); 
    dingo = MediaPlayer.create(this, R.raw.dingo); 
    dogupya = MediaPlayer.create(this, R.raw.dogupya); 
    donotpress = MediaPlayer.create(this, R.raw.donotpress); 
    enough = MediaPlayer.create(this, R.raw.enough); 
    heaven = MediaPlayer.create(this, R.raw.heaven); 
    help = MediaPlayer.create(this, R.raw.help); 
    hungry = MediaPlayer.create(this, R.raw.hungry); 
    kebab = MediaPlayer.create(this, R.raw.kebab); 
    kids = MediaPlayer.create(this, R.raw.kids); 
    knees = MediaPlayer.create(this, R.raw.knees); 
    later = MediaPlayer.create(this, R.raw.later); 
    meatpie = MediaPlayer.create(this, R.raw.meatpie); 
    medal = MediaPlayer.create(this, R.raw.medal); 
    oath = MediaPlayer.create(this, R.raw.oath); 
    poem = MediaPlayer.create(this, R.raw.poem); 
    politics = MediaPlayer.create(this, R.raw.politics); 
    pub = MediaPlayer.create(this, R.raw.pub); 
    sex = MediaPlayer.create(this, R.raw.sex); 
    sport = MediaPlayer.create(this, R.raw.sport); 
    strewth = MediaPlayer.create(this, R.raw.strewth); 
    tango = MediaPlayer.create(this, R.raw.tango); 
    v8 = MediaPlayer.create(this, R.raw.v8); 
    what = MediaPlayer.create(this, R.raw.what); 
    yoursister = MediaPlayer.create(this, R.raw.yoursister); 



    Button b01 = (Button) findViewById(R.id.beer1); 
    b01.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       beer1.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      beer1.start();    
      } 
    }); 

    Button b02 = (Button) findViewById(R.id.beer2); 
    b02.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       beer2.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      beer2.start();    
      } 
    }); 

    Button b03 = (Button) findViewById(R.id.beer3); 
    b03.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       beer3.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      beer3.start();    
      } 
    }); 

    Button b04 = (Button) findViewById(R.id.beauty); 
    b04.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       beauty.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      beauty.start();    
      } 
    }); 

    Button b05 = (Button) findViewById(R.id.boner); 
    b05.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       boner.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      boner.start();    
      } 
    }); 

    Button b06 = (Button) findViewById(R.id.death); 
    b06.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       death.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      death.start();    
      } 
    }); 

    Button b07 = (Button) findViewById(R.id.dingo); 
    b07.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       dingo.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      dingo.start();    
      } 
    }); 

    Button b08 = (Button) findViewById(R.id.dogupya); 
    b08.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       dogupya.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      dogupya.start();     
      } 
    }); 

    Button b09 = (Button) findViewById(R.id.donotpress); 
    b09.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       donotpress.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      donotpress.start();    
      } 
    }); 

    Button b10 = (Button) findViewById(R.id.enough); 
    b10.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       enough.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      enough.start();    
      } 
    }); 

    Button b11 = (Button) findViewById(R.id.heaven); 
    b11.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       heaven.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      heaven.start();    
      } 
    }); 

    Button b12 = (Button) findViewById(R.id.help); 
    b12.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       help.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      help.start();    
      } 
    }); 

    Button b13 = (Button) findViewById(R.id.hungry); 
    b13.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       hungry.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      hungry.start();    
      } 
    }); 

    Button b14 = (Button) findViewById(R.id.kebab); 
    b14.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       kebab.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      kebab.start();    
      } 
    }); 

    Button b15 = (Button) findViewById(R.id.kids); 
    b15.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       kids.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      kids.start();    
      } 
    }); 

    Button b16 = (Button) findViewById(R.id.knees); 
    b16.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       knees.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      knees.start();    
      } 
    }); 

    Button b17 = (Button) findViewById(R.id.later); 
    b17.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       later.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      later.start();    
      } 
    }); 

    Button b18 = (Button) findViewById(R.id.meatpie); 
    b18.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       meatpie.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      meatpie.start();     
      } 
    }); 

    Button b19 = (Button) findViewById(R.id.medal); 
    b19.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       medal.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      medal.start();    
      } 
    }); 

    Button b20 = (Button) findViewById(R.id.oath); 
    b20.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       oath.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      oath.start();    
      } 
    }); 

    Button b21 = (Button) findViewById(R.id.poem); 
    b21.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       poem.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      poem.start();    
      } 
    }); 

    Button b22 = (Button) findViewById(R.id.politics); 
    b22.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       politics.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      politics.start();    
      } 
    }); 

    Button b23 = (Button) findViewById(R.id.pub); 
    b23.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       pub.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      pub.start();     
      } 
    }); 

    Button b24 = (Button) findViewById(R.id.sex); 
    b24.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       sex.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      sex.start();     
      } 
    }); 

    Button b25 = (Button) findViewById(R.id.sport); 
    b25.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       sport.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      sport.start();    
      } 
    }); 

    Button b26 = (Button) findViewById(R.id.strewth); 
    b26.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       strewth.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      strewth.start();     
      } 
    }); 

    Button b27 = (Button) findViewById(R.id.tango); 
    b27.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       tango.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      tango.start();    
      } 
    }); 

    Button b28 = (Button) findViewById(R.id.v8); 
    b28.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       v8.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      v8.start();    
      } 
    }); 

    Button b29 = (Button) findViewById(R.id.what); 
    b29.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       what.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      what.start();    
      } 
    }); 

    Button b30 = (Button) findViewById(R.id.yoursister); 
    b30.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      try { 
       yoursister.prepare(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      yoursister.start();    
      } 
    }); 



} 


protected void onStop() { 

    super.onStop(); 
    beer1.release(); 
    beer2.release(); 
    beer3.release(); 
    beauty.release(); 
    boner.release(); 
    death.release(); 
    dingo.release(); 
    dogupya.release(); 
    donotpress.release(); 
    enough.release(); 
    heaven.release(); 
    help.release(); 
    hungry.release(); 
    kebab.release(); 
    kids.release(); 
    knees.release(); 
    later.release(); 
    meatpie.release(); 
    medal.release(); 
    oath.release(); 
    poem.release(); 
    politics.release(); 
    pub.release(); 
    sex.release(); 
    sport.release(); 
    strewth.release(); 
    tango.release(); 
    v8.release(); 
    what.release(); 
    yoursister.release(); 




} 

}

ответ

0

Вы должны реализовать onResume() метод в вашей деятельности и воссоздать там свои MediaPlayer объектов:

public void onResume() { 
    super.onResume(); 

// ... 

beer1 = MediaPlayer.create(this, R.raw.beer1); 
beer2 = MediaPlayer.create(this, R.raw.beer2); 
beer3 = MediaPlayer.create(this, R.raw.beer3); 

// ... 
} 

Вы можете прочитать больше о жизненном цикле активности здесь: http://developer.android.com/training/basics/activity-lifecycle/index.html

+0

Thanx SoulReaver ... поэтому мне нужно создать медиаплеер в oncreate и в методах onresume ... должен ли я также добавить метод onPause с beer1.pause() и т. д. Было бы замечательно, если бы кто-то из экспертов мог сделать учебник по разумной практике или что-то, с чем я запутался всеми различными подходами там – Beefdude

+0

только что реализовал код и протестировал его на моем телефоне ... он работает при вызове назад сейчас .. да .. вы заслуживаете популярного напитка на ваш выбор soulreaver – Beefdude

+0

Рад слышать. Если бы мой ответ был полезным, пожалуйста, примите его. – Kristopher

Смежные вопросы