我有大约 20-30 个按钮,每个按钮都会在点击时播放特定的声音。当我单击多个按钮时,由于内存已满,它会崩溃。我认为解决方案是让系统休眠,这样在声音剪辑结束之前不能按下其他按钮。然后我调用释放媒体播放器的条件。有没有另一种方法可以在媒体播放器完成后准确地释放它?
这是我的代码:
package com.example.buttonsdemo;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.app.Activity;
import android.support.v4.widget.SimpleCursorAdapter.ViewBinder;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener{
//Creating Sound arrays
//int i=0;
MediaPlayer mediaplayer = new MediaPlayer();
Button button[] = new Button [120];
int viewer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//first button
final Button button_0 = (Button) findViewById(R.id.akali);
button_0.setOnClickListener(this);
//Second button
final Button button_1 = (Button) findViewById(R.id.alistar);
button_1.setOnClickListener(this);
final Button button_2 =(Button) findViewById(R.id.ahri);
button_2.setOnClickListener(this);
final Button button_3 =(Button) findViewById(R.id.amumu);
button_3.setOnClickListener(this);
final Button button_4 =(Button) findViewById(R.id.anivia);
button_4.setOnClickListener(this);
final Button button_5 =(Button) findViewById(R.id.annie);
button_5.setOnClickListener(this);
final Button button_6 =(Button) findViewById(R.id.ashe);
button_6.setOnClickListener(this);
final Button button_7 =(Button) findViewById(R.id.blitz);
button_7.setOnClickListener(this);
final Button button_8 =(Button) findViewById(R.id.thresh);
button_8.setOnClickListener(this);
final Button button_9 =(Button) findViewById(R.id.brand);
button_9.setOnClickListener(this);
final Button button_10 =(Button) findViewById(R.id.Caitlyn);
button_10.setOnClickListener(this);
final Button button_11 =(Button) findViewById(R.id.Cass);
button_11.setOnClickListener(this);
final Button button_12 =(Button) findViewById(R.id.chogath);
button_12.setOnClickListener(this);
final Button button_13 =(Button) findViewById(R.id.Corki);
button_13.setOnClickListener(this);
final Button button_14 =(Button) findViewById(R.id.darius);
button_14.setOnClickListener(this);
final Button button_15 =(Button) findViewById(R.id.diana);
button_15.setOnClickListener(this);
final Button button_16 =(Button) findViewById(R.id.draven);
button_16.setOnClickListener(this);
final Button button_17 =(Button) findViewById(R.id.elise);
button_17.setOnClickListener(this);
final Button button_18 =(Button) findViewById(R.id.eve);
button_18.setOnClickListener(this);
final Button button_19 =(Button) findViewById(R.id.ezrael);
button_19.setOnClickListener(this);
final Button button_20 =(Button) findViewById(R.id.fiddle);
button_20.setOnClickListener(this);
final Button button_21 =(Button) findViewById(R.id.fiora);
button_21.setOnClickListener(this);
final Button button_22 =(Button) findViewById(R.id.fizz);
button_22.setOnClickListener(this);
final Button button_23 =(Button) findViewById(R.id.galio);
button_23.setOnClickListener(this);
final Button button_24 =(Button) findViewById(R.id.garen);
button_24.setOnClickListener(this);
final Button button_25 =(Button) findViewById(R.id.gp);
button_25.setOnClickListener(this);
final Button button_26 =(Button) findViewById(R.id.gragas);
button_26.setOnClickListener(this);
final Button button_27 =(Button) findViewById(R.id.graves);
button_27.setOnClickListener(this);
final Button button_28 =(Button) findViewById(R.id.hecarim);
button_28.setOnClickListener(this);
final Button button_29 =(Button) findViewById(R.id.heimer);
button_29.setOnClickListener(this);
//onclicklistner
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId())
{
case R.id.akali:
mediaplayer = MediaPlayer.create(this, R.raw.akali);
//viewer = R.layout.alistar;
break;
case R.id.alistar:
mediaplayer= MediaPlayer.create(this, R.raw.alistar);
break;
case R.id.ahri:
mediaplayer= MediaPlayer.create(this,R.raw.ahri);
break;
case R.id.amumu:
mediaplayer= MediaPlayer.create(this,R.raw.amumu);
break;
case R.id.anivia:
mediaplayer= MediaPlayer.create(this,R.raw.anivia);
break;
case R.id.annie:
mediaplayer= MediaPlayer.create(this,R.raw.annie);
break;
case R.id.ashe:
mediaplayer= MediaPlayer.create(this,R.raw.ashe);
break;
case R.id.blitz:
mediaplayer= MediaPlayer.create(this,R.raw.blitzcrank);
break;
case R.id.brand:
mediaplayer= MediaPlayer.create(this,R.raw.brand);
break;
case R.id.Caitlyn:
mediaplayer= MediaPlayer.create(this,R.raw.caitlyn);
break;
case R.id.Cass:
mediaplayer= MediaPlayer.create(this,R.raw.cassiopeia);
break;
case R.id.chogath:
mediaplayer= MediaPlayer.create(this,R.raw.chogath);
break;
case R.id.Corki:
mediaplayer= MediaPlayer.create(this,R.raw.corki);
break;
case R.id.darius:
mediaplayer= MediaPlayer.create(this,R.raw.darius);
break;
case R.id.diana:
mediaplayer= MediaPlayer.create(this,R.raw.diana);
break;
case R.id.draven:
mediaplayer= MediaPlayer.create(this,R.raw.draven);
break;
case R.id.elise:
mediaplayer= MediaPlayer.create(this,R.raw.elise);
break;
case R.id.eve:
mediaplayer= MediaPlayer.create(this,R.raw.evelynn);
break;
case R.id.ezrael:
mediaplayer= MediaPlayer.create(this,R.raw.ezreal);
break;
case R.id.fiddle:
mediaplayer= MediaPlayer.create(this,R.raw.fiddlesticks);
break;
case R.id.fiora:
mediaplayer= MediaPlayer.create(this,R.raw.fiora);
break;
case R.id.fizz:
mediaplayer= MediaPlayer.create(this,R.raw.fizz);
break;
case R.id.galio:
mediaplayer= MediaPlayer.create(this,R.raw.galio);
break;
case R.id.garen:
mediaplayer= MediaPlayer.create(this,R.raw.garen);
break;
case R.id.gp:
mediaplayer= MediaPlayer.create(this,R.raw.gangplank);
break;
case R.id.gragas:
mediaplayer= MediaPlayer.create(this,R.raw.gragas);
break;
case R.id.graves:
mediaplayer= MediaPlayer.create(this,R.raw.graves);
break;
case R.id.hecarim:
mediaplayer= MediaPlayer.create(this,R.raw.hecarim);
break;
case R.id.heimer:
mediaplayer= MediaPlayer.create(this,R.raw.heimerdinger);
break;
case R.id.thresh:
mediaplayer= MediaPlayer.create(this,R.raw.thresh);
break;
}
mediaplayer.start();
//setContentView(viewer);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(mediaplayer.isPlaying())
{
mediaplayer.release();
}
}
@Override
protected void onDestroy() {
mediaplayer.release();
super.onDestroy();
}
}