我是android编程的新手。我的第一个应用是Android媒体播放器。
我建了两个按钮:一个用来播放一首歌,另一个用来阻止它。
我的应用程序运行正常;问题是我可以播放并阻止它,但我不能再播放这首歌了。
我尝试使用setDataSource()
,但会触发错误。
这是代码;该文件位于raw/song.mp3
package com.example.test6;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mp = MediaPlayer.create(this,R.raw.song);
setContentView(R.layout.activity_main);
final Button btnPlay = (Button)this.findViewById(R.id.button1);
final Button btnStop = (Button)this.findViewById(R.id.button2);
btnPlay.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
mp.start();
}
});
btnStop.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
mp.stop();
mp.reset();
if(mp.isPlaying()){
mp.stop();
}else{
mp.setDataSource("res/raw/song.mp3");
mp.prepare();
mp.start();
}
});
}
}
答案 0 :(得分:0)
首先,如果您正在进行如下创建,则无需手动设置数据源:MediaPlayer.create(this, R.raw.song);
此外,在这种情况下,您无需调用{{1}因为prepare()
为你做了这件事。
我会建议采用这种方法(假设您不希望开始按钮在已经播放的情况下执行任何操作):
开始按钮监听器:
MediaPlayer.create()
停止按钮监听器:
if (mp==null) {
mp = MediaPlayer.create(this, R.raw.song);
}
if (!mp.isPlaying()) {
mp.start();
}
我没有对此进行测试,所以我期待您的回复