【问题标题】:getting sound using soundpool使用 soundpool 获取声音
【发布时间】:2012-06-29 12:10:02
【问题描述】:

我是 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(this, R.raw.mysound, 1);

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

这是我的全部代码: 公共类 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);
        }

        });
}

}

【问题讨论】:

  • 构建时是否编译??
  • 它也给了我更多的错误,即使我删除了 ovverride 符号
  • 您的项目是否在属性中有 8 个 API 级别?

标签: android


【解决方案1】:

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

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

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

【讨论】:

  • 但是对于soundPool.load,还是说SoundPool类型中的方法load(Context, int, int)不适用于参数(new View.OnClickListener(){}, int , int)
  • 问题出在此处,您正在尝试为 Click Listener 传递一个对象,而不是一个上下文对象。您在使用错误的参数调用方法时犯了错误
  • 将此soundPool.load(this, R.raw.mysound, 1); 更改为 soundPool.load(YourActivityName.this, R.raw.mysound, 1);
猜你喜欢
  • 1970-01-01
  • 2013-06-08
  • 1970-01-01
  • 2016-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多