2016-09-23 68 views
0

我在实现媒体播放器时遇到了一些问题。我不知道如何重置音频。我应该执行什么操作来使音频停止并在点击播放按钮时再次播放。请告诉我。谢谢。Android:重置音频

下面的代码:

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


Button btnPlay = (Button) findViewById(R.id.btnPlay); 
Button btnPause = (Button) findViewById(R.id.btnPause); 
Button btnStop = (Button) findViewById(R.id.btnStop); 

final MediaPlayer sound = MediaPlayer.create(MainActivity.this, R.raw.doa); 

btnPlay.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) 
    { 
     sound.start(); 
     Toast.makeText(getBaseContext(), "Play Audio", Toast.LENGTH_SHORT).show(); 
    } 

}); 

btnPause.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     sound.pause(); 
     Toast.makeText(getBaseContext(), "Pause Audio", Toast.LENGTH_SHORT).show(); 

    } 
}); 

btnStop.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     sound.reset(); 
     if (null!=sound){ 
      sound.stop(); 
      sound.reset(); 
      sound.release(); 
      sound=null; 

      } 
     } 
    }); 
} 
} 
+0

你的代码没有问题。你似乎不清楚'.stop()'的作用。它**停止**媒体播放。也许你想停下来呢?如果要再次播放该文件,则需要在调用stop()后再次加载该文件。 – 323go

+0

@ 323go是这样吗?如果我想在单击停止按钮后播放音频,该怎么办?我怎样才能加载它? –

+0

与第一次加载它相同的方式;) – 323go

回答

0

当你停止媒体,你需要在开始之前,再次准备。

mediaPlayer.prepare(); mediaPlayer.start();

你可以看到的MediaPlayer的状态图在这里https://developer.android.com/reference/android/media/MediaPlayer.html

+0

我应该如何准备它?我需要在执行start时添加'mediaPlayer.prepare();'吗? –

+0

你正在调用mediaPlayer.stop(),这意味着你显然想要从头开始播放它。这是你需要维护的旗帜。如果用户点击停止,请将该标志设置为true。现在,在开始执行时,您需要检查该标志。如果它是假的,只要播放媒体,如果它是真的,那么你需要再次准备媒体。 – Karan

0

媒体录像机类不支持暂停和恢复,看到第二个链接类概述尝试使用停止和重新启动..

在新API级别24已经给予暂停链接的methord:https://developer.android.com/reference/android/media/MediaRecorder.html#pause()在简历链接:https://developer.android.com/reference/android/media/MediaRecorder.html#resume()

尝试一下本作停止代码:

if (null != sound) { 
      sound.stop(); 
      sound.reset(); 
      sound.release(); 
      sound= null; 
     } 
+0

'最终的局部变量投票无法分配,因为它是在一个封闭类型中定义的'我得到了这个结果。 –

+0

@Mint你可以添加代码吗?和你正在使用的投票变量在哪里? –

+0

更新了代码。错误是从'sound = null;' –