使用soundpool获取声音

时间:2012-06-29 12:10:02

标签: android

我是Android开发的新手,我正在尝试开发一个简单的应用程序,其中一个按钮用于播放声音。我正在尝试使用SoundPool并发现每个教程都会在制作一个soundpool对象后添加这样的代码:

soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
            @Override
            public void onLoadComplete(SoundPool soundPool, int sampleId,
                    int status) {
                loaded = true;
            }
        });

但是当我尝试在eclipse中使用这段代码时,它会说

new SoundPool.OnLoadCompleteListener(){}类型的onLoadComplete(SoundPool,int,int)方法必须覆盖超类方法。 并建议删除@override表示法。如果没有这样的方法会发生这种情况?为什么我会收到此错误?

当我把soundID = soundPool.load(这个,R.raw.mysound,1);

在上面的代码之后,eclipse说SoundPool类型中的方法load(Context,int,int)不适用于参数(new View.OnClickListener(){},int,int)

这是我的整个代码: public class FirstActivity扩展Activity {     /** 在第一次创建活动时调用。 * /

private SoundPool soundPool;
int soundID;
boolean loaded = false;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button bPlay = (Button) findViewById(R.id.bPlay);
    final TextView aRing = (TextView)findViewById(R.id.tAlarmRinging);

    bPlay.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            aRing.setVisibility(View.VISIBLE);

            soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
                @Override
                public void onLoadComplete(SoundPool soundPool, int sampleId,
                        int status) {
                    loaded = true;
                }
            });
            soundID = soundPool.load(this, R.raw.mysound, 1);
        }

        });
}

}

1 个答案:

答案 0 :(得分:0)

您应该尝试将项目合规性级别设置为java 1.7或类似的东西。

右键单击项目,转到Properties-> Java Compiler->选中Enable project specific settings->然后选择最高的编译器合规级别。

如果这不起作用,请右键单击项目,AndroidTools->修复项目属性。