从视图类中定义的线程播放音频



如何从视图类中定义的用户线程播放音频。这是我想要播放音频的那部分线程。

线程:

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();

最新更新