soundPool.load上下文的问题

时间:2016-10-21 21:32:49

标签: android audio android-context soundpool

我的应用中有一个调用异步任务的按钮。 此Async任务应在每个ProgressUpdate上播放音频文件。 到目前为止,我想了很多,但我坚持这个:

我打电话

        this.strengthSound[0] = this.soundPool.load(this, R.raw.strength0,1);
        this.strengthSound[1] = this.soundPool.load(this, R.raw.strength1,1);
        this.strengthSound[2] = this.soundPool.load(this, R.raw.strength2,1);
        this.strengthSound[3] = this.soundPool.load(this, R.raw.strength3,1);
        this.strengthSound[4] = this.soundPool.load(this, R.raw.strength4,1);

使用strengthx.mp3 s填充数组。

无论如何:我在load语句中遇到“this”错误:

Error:(165, 57) error: incompatible types: AIM_start.start_AIM cannot be converted to Context

这个soundPool.load(Context,ResourceID,..)需要使用什么上下文?

感谢您提前帮助......:)

1 个答案:

答案 0 :(得分:1)

private Context mContext;

onCreate(...) {
    mContext = this;
}


// inside your AsyncTask 
...

    onProgressUpdate(int progress) {
      this.strengthSound[0] = this.soundPool.load(mContext, R.raw.strength0,1);
      ...
    }

我忘记了AsyncTasks的实际方法签名,但这是基本的纲要。你在滥用this

您活动中的

this和AsyncTask中的this不同。 AsyncTask中的this引用自身,即AsyncTask,但onCreate中的this引用(再次)本身,即Activity本身。

不确定这是否有帮助,但随时可以详细说明评论:)