如何从视图类中定义的用户线程播放音频。这是我想要播放音频的那部分线程。
线程:
if(a.n1==a.rightx&&a.n2>=a.topy&&a.n2<=a.bottomy||a.n2==a.bottomy&&a.n1>=a.leftx&&a.n1<=a.rightx)
{
audio.play(this,a.i);
a.i+=1;
int low=2;
int high=8;
int high1=10;
float xlim=a.parentWidth*0.25f;
int xright=(int)(xlim);
a.n=a.r.nextInt(high-low);
int xpos=a.r.nextInt(high1-low);
a.n1=(xpos*10)+xright;
a.n2=(a.n*60)+90;
a.f1=(float)a.n1;
a.f2=(float)a.n2;
//Log.d("test","n1"+a.n1);
//Log.d("test","n2"+a.n2);
}
这是我的音频课:
public class Audio{
public MediaPlayer mp=null;
public void play(Context context,int i)
{
stop(context);
//int resId=R.raw.button_1;
//int x=i;
mp = MediaPlayer.create(context,i);
mp.setLooping(true);
mp.start();
}
public void stop(Context context)
{
if(mp!=null)
mp.stop();
mp.release();
mp=null;
}
我在这里面临的问题是,当我从线程调用play方法并将其作为参数传递时,它会向我显示一个错误,说明类型Audio中的方法play(Context,int)不适用于参数(DrawThread,int)
您需要更改以下行:
audio.play(this,a.i);
至:
audio.play(getContext(), a.i);
这是假设您的线程是在扩展android.view.view 的自定义视图中创建的
public class DrawThread implements Runnable {
Context context;
public DrawThread (Context context)
{
this.context= context;
}
public void run()
{
if(a.n1==a.rightx&&a.n2>=a.topy&&a.n2<=a.bottomy||a.n2==a.bottomy&&a.n1>=a.leftx&&a.n1<=a.rightx)
{
audio.play(context,a.i);
}
}
从您的View类:
Thread drawThread = new Thread(new DrawThread(getContext()));
drawThread.start();