我正在尝试制作一个媒体播放器应用程序,我创建了一个自定义类及其构造函数,我也在这里使用线程概念。但我不能在这个方法中使用MediaPlayer.create()
我该怎么做呢请有人帮我解决这个问题......
码
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
public class CustomPlayerActivity implements Runnable{
int song_id;
long time;
int button_id;
MediaPlayer myStereo;
public CustomPlayerActivity(int s_id, long Time, int b_id){
song_id = s_id;
time = Time;
button_id = b_id;
}
public void run(){
long start = System.currentTimeMillis();
long end = start + time;
while (System.currentTimeMillis() < end){
myStereo = MediaPlayer.create(this, R.raw.chuva);
myStereo.setLooping(true);
myStereo.start();
myStereo.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
myStereo.setLooping(true);
myStereo.start();
}
});
}
}
}
答案 0 :(得分:2)
MediaPlayer.create()
将Context
作为其第一个参数。
你传递的是CustomPlayerActivity
的这个实例,这就是为什么它不起作用。
要修复,您应该向其传递Context
的实例,例如,对您调用它的活动的引用。您可以在构造函数中传递它,然后在.create()
中使用它。
作为旁注,我注意到CustomPlayerActivity
没有扩展Activity
...我不确定你的架构,但这可能是问题的一部分。