私はアンドロイド開発の初心者で、ボタンを使用してサウンドを再生する簡単なアプリケーションを開発しようとしています。私は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) には適用されません。
これは私のコード全体です: 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);
}
});
}
}