2012-06-29 59 views
0

我是Android开发的新手,并试图开发一个简单的应用程序,其中使用按钮来播放声音。我想使用的Soundpool并发现每个教程提供制作的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);

上述代码之后,蚀说,在类型的Soundpool的方法负载(上下文,INT,INT)是不适用的参数(新View.OnClickListener(){},INT,INT)

此是我的全部代码: public class FirstActivity extends 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); 
     } 

     }); 
} 

}

+0

编译它时编译它? – JMelnik

+0

即使在删除了ovverride表示法之后,它也给了我更多的错误 – tanvi

+0

您的项目在属性中有8个API级别吗? – sandrstar

回答

0

你应该尝试设置项目的合规性水平为Java 1.7或类似这样的东西。

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

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

+0

非常感谢:) – tanvi

+0

但对于soundPool.load,它仍然说在类型SoundPool中的方法load(Context,int,int)不适用于参数(new View.OnClickListener( ){},int,int) – tanvi

+0

没问题。总是欢迎.. –