我有一个有很多声音的MediaPlayer。这是我在Google Play商店中的应用:https://play.google.com/store/apps/details?id=de.logtainment.ungesoundboard。注意:该应用程序是德语。当您单击两个按钮时,您会听到两个声音。如何停止第一个声音并播放第二个声音,或者当我播放第一个声音时,第二个声音会停止?我该如何创建呢?这是我的媒体播放器代码:
public class SoundsZweiActivity extends ActionBarActivity {
Toolbar toolbar;
MediaPlayer runtergeholt;
//This is When I click on The button
public void runtergeholt(View paramView) {
this.runtergeholt.start();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sounds_zwei);
//MediaPlayer
this.runtergeholt = MediaPlayer.create(this, R.raw.runtergeholt);
//Toolbar
toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
我希望社区帮助我!
答案 0 :(得分:1)
我已经下载了你的应用程序,快速实现了我如何使用3个按钮,因为我注意到你的英文不好我也评论了德语中的重要部分:
编辑:感谢@Trinimon只有一个MediaPlayer,这是一个更清晰的解决方案:// implement View.OnClickListener :
public class SoundZweiActivity extends ActionBarActivity implements View.OnClickListener {
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sounds_zwei);
createButtons();
}
private void createButtons() {
// put your Buttons in an Array and set OnClickListener on all
Button[] buttons = new Button[]{
(Button) findViewById(R.id.btn_runtergeholt),
(Button) findViewById(R.id.btn_kranke_lache),
(Button) findViewById(R.id.btn_missgeburt),
// etc ...
};
for (Button button : buttons)
button.setOnClickListener(this);
}
private void createMediaPlayer(int id) {
// Here the MediaPlayer is killed and a new one created, I dont call .stop() and then
// .start() again because it often crashes when the mediaPlayer is not prepared yet,
// for example when clicking different Buttons really fast
// Hier wird der MediaPlayer zerstört
// und ein neuer erschaffen, wenn man .stop() und wieder .start() ruft kommt es vor dass
// der MediaPlayer noch nicht bereit ist, falls man z.B. ganz schnell
// hintereinander verschiedene Tasten drückt stürzt er oft ab
if (mediaPlayer != null)
mediaPlayer.release();
mediaPlayer = MediaPlayer.create(this, id);
mediaPlayer.start();
}
@Override
public void onClick(View v) {
// Determine which button is clicked and play its sound
// Hier wird gecheckt welcher Knopf gedrückt wurde und der dazugehörige Sound gespielt
switch (v.getId()) {
case R.id.btn_runtergeholt:
createMediaPlayer(R.raw.runtergeholt); // plays first sound (runtergeholt)
break;
case R.id.btn_kranke_lache:
createMediaPlayer(R.raw.kranke_lache); // plays second sound (kranke_lache)
break;
case R.id.btn_missgeburt:
createMediaPlayer(R.raw.missgeburt);// plays third sound (missgeburt)
break;
// etc ...
}
}
@Override
protected void onDestroy() {
super.onDestroy();
// kill mediaPlayer
if (mediaPlayer != null)
mediaPlayer.release();
}
}
答案 1 :(得分:0)
您可以在启动Mediaplayer runtergeholt之后执行此操作firstmediaplayer.stop();
。
答案 2 :(得分:0)
我添加OnCompletionListener
,停止并释放播放器:
runtergeholt.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer player) {
player.stop();
player.release();
...
}
注意:释放播放器非常重要,来自documentation:" ...应该调用此方法来释放MediaPlayer对象,除非应用程序特别需要保持对象。 ...,如果不再需要MediaPlayer对象,则无法立即调用此方法也可能导致移动设备的电池持续消耗,并且如果设备上不支持相同编解码器的多个实例,则其他应用程序将无法播放。 #34;