0

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

线:

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 , 整数)

4

1 回答 1

0

您需要更改以下行:

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();
于 2013-07-26T18:45:59.543 回答