2013-02-16 1 views
1

Мне нравится делать аудиозапись в моем приложении. Петля работает нормально, но когда метод On Destroy вызывается, чтобы остановить зацикленный звук, он дает мне сообщение об ошибке «К сожалению, приложение перестало работать». Я попытался также нажать кнопку остановки, то же сообщение об ошибке появится. Это мой код для медиа-плеерОстановка звука с петлями в Media Player дает ошибку

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_quote); 
    final MediaPlayer mp1=MediaPlayer.create(QuoteActivity.this,R.raw.ohm2); 
    mp1.setLooping(true); 
    mp1.start();   
    } 

Это метод, который я дал в On Уничтожить

@Override 
public void onDestroy() {  
    super.onDestroy();{    
     if(mp1.isPlaying()) 
      mp1.stop(); 
      mp1.release(); 
      mp1 = null; 
     } 

} 

Я пытался искать решение в течение длительного времени, но не использовать. Может ли кто-нибудь мне помочь?

ответ

2

Вы определяете свой медиаплеер внутри своего метода onCreate(...), что означает, что mp1 недействителен в методе onDestroy(). Также вам необходимо проверить mp1 не null перед вызовом isPlaying().

Изменить код, чтобы иметь mp1 следующим образом (пример кода) ...

public class MyActivity extends Activity { 

    MediaPlayer mp1; 

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

     mp1 = MediaPlayer.create(this, R.raw.ohm2); 
     mp1.setLooping(true); 
     mp1.start(); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     if(mp1 != null && mp1.isPlaying()) { 
      mp1.stop(); 
      mp1.release(); 
      mp1 = null; 
     } 
    } 

} 
+0

То, что я сделал уже, но мой цикл перестал работать. Он просто воспроизводит звук только один раз. Я хочу, чтобы звук воспроизводился неоднократно! – user1995307

+0

Также, несмотря на ошибку, звук перестает работать в моем старом коде. Я хочу избавиться от ошибки, пожалуйста! Спасибо – user1995307

+0

@ user1995307: В вашем исходном коде у вас 'setLooping (false)' - он должен быть 'setLooping (true)' – Squonk