2016-03-03 36 views
1

我做了一個示例應用程序,其中只有兩個按鈕 1.開始(開始音樂) 2.停止(停止音樂)。MediaPlayer.pause()不適用於Moto G Turbo Edition Android 6.0

這裏是我的代碼:

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 

    MediaPlayer mp; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     Button b1 = (Button) findViewById(R.id.button_start); 
     b1.setOnClickListener(this); 
     Button b2 = (Button) findViewById(R.id.button_stop); 
     b2.setOnClickListener(this); 
     mp = MediaPlayer 
       .create(getApplicationContext(), R.raw.alarm); 
     try { 
      mp.prepare(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } 
     mp.setLooping(true); 
     mp.setVolume(0.5f,0.5f); 

    } 

    @Override 
    public void onClick(View v) { 
     int id = v.getId(); 
     switch (id) { 
      case R.id.button_start: 
       startAlarm(); 
       break; 
      case R.id.button_stop: 
       stopAlarm(); 
     } 
    } 

    private void stopAlarm() { 
     if(mp.isPlaying()) { 
      Log.e("XXX","Tone Paused"); 
      mp.pause(); 
     } 
     new Thread(new Runnable() { 
      @Override 
      public void run() { 
       while(mp.isPlaying()){ 
        Log.e("XXX", "tone still playing ..."); 
       } 
       Log.e("XXX", "Thread stopped"); 
      } 
     }).start(); 
    } 

    private void startAlarm() { 
     mp.start(); 
    } 
} 

現在我看到mp.pause()被調用和mp.isPlaying()的返回後假。但是,音樂不斷播放,直到我關閉設備才停止。

我不確定這是否是Android操作系統或硬件的錯誤。我檢查了其他的Android 6.0設備,但它工作正常。

有人能告訴我這可能的根本原因嗎?

在此先感謝!

回答

0

更改stopAlarm()方法

private void stopAlarm() { 
    if(mp.isPlaying()) { 
     mp.stop(); 
     mp.reset(); 
     mp.release(); 
    }  
    } 
+0

請檢查日誌: STOP按鈕按下: ---------------------- --------- 03-03 15:41:59.746 14518-14518/com.example.testmarshmallow E/XXX:Tone Patensed ---------------- -------------------- 但實際上仍在播放音調。 再次按下STOP按鈕: ----------------------------------- 03-03 15:42: 02.010 14518-14518/com.example.testmarshmallow E/XXX:線程啓動 03-03 15:42:02.012 14518-18325/com.example.testmarshmallow E/XXX:線程已停止 – Dharsam1990

+0

檢查更新回答 – sasikumar

+0

其作爲資源本身正在被釋放。但我的問題是爲什麼pause()不起作用。請幫我找出答案。 – Dharsam1990

相關問題