2016-03-03 1 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() возвращает ложь после этого. Но музыка постоянно играет, она никогда не останавливается, пока я не выключу устройство.

Я не уверен, является ли это ошибкой orroid os или hardware. Я проверил с другими устройствами Android 6.0, но он работал нормально.

Может кто-нибудь, пожалуйста, предложите мне возможную причину этого?

Заранее благодарен!

ответ

0

Изменение stopAlarm() метод

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

Пожалуйста, проверьте журналы: Кнопка СТОП Прессованные: ---------------------- --------- 03-03 15: 41: 59.746 14518-14518/com.example.testmarshmallow E/XXX: Тон приостановлен ---------------- -------------------- Но в реальном тоне все еще играет. Снова нажмите кнопку 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