0

我试图为此创建一个媒体播放器应用程序,我创建了一个自定义类及其构造函数,并且我在这里也使用了线程概念。但我不能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();
                        }
                    });
                    }
                    }

                    }
4

1 回答 1

2

MediaPlayer.create()将 aContext作为第一个参数。

http://developer.android.com/reference/android/media/MediaPlayer.html#create(android.content.Context, android.net.Uri, android.view.SurfaceHolder)

您正在向它传递一个 this 的实例CustomPlayerActivity,这就是它不起作用的原因。

要修复它,您应该向它传递一个实例Context,例如,对您从中调用它的活动的引用。您可以在构造函数中传递它,然后在.create().

作为旁注,我注意到CustomPlayerActivity没有扩展Activity......我不确定你的架构,但这可能是问题的一部分。

于 2013-07-05T11:48:16.680 回答