Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用声音池获取声音_Android - Fatal编程技术网

Android 使用声音池获取声音

Android 使用声音池获取声音,android,Android,我是android开发的新手,正在尝试开发一个简单的应用程序,其中一个按钮用于播放声音。我尝试使用SoundPool,发现每个教程都给出了这样一个代码,在制作SoundPool对象后添加: soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() { @Override public void onLoadComplete(SoundPool soundPool, int sa

我是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)

这是我的全部代码: 公共类活动扩展了活动{ /**在首次创建活动时调用*/

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

        });
}

}

您应该尝试将项目符合性级别设置为java 1.7或类似的内容

右键单击项目,转到属性->Java编译器->检查启用项目特定设置->然后选择最高的编译器符合性级别


如果这不起作用,那么右键单击项目,AndroidTools->Fix project properties

当你构建它时它会编译吗?它也给了我更多的错误,即使我删除了ovverride符号,你的项目在属性中有8个API级别吗?但是对于soundPool.load,它仍然说soundPool类型中的方法load(Context,int,int)不适用于参数(new View.OnClickListener(){},int,int)这里的问题是,您试图为Click Listener传递一个对象,而不是上下文对象。使用错误的参数调用方法时出错更改this
soundPool.load(this,R.raw.mysound,1)
到soundPool.load(YourActivityName.this,R.raw.mysound,1);