#android #coding-style #media-player
#Android #стиль кодирования #медиаплеер
Вопрос:
Недавно я пытался создать простой проект для Android. Он будет воспроизводить звук, когда пользователь нажимает кнопку. Когда он был успешно скомпилирован, звук не отключался. Я думаю, что это исходный код, но я не знаю, где ошибки
Вот мой исходный код :
package com.jason.shootemup;
import java.util.Random;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;
public class game extends Activity implements OnClickListener {
View shoot, reload;
int bullet = 5;
public static final Random r = new Random();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gun);
shoot = findViewById (R.id.shoot);
reload = findViewById (R.id.reload);
reload.setVisibility(2);
shoot.setOnClickListener (this);
shoot.setOnClickListener (this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.shoot :
shoot_sequence ();
break;
case R.id.reload :
Toast.makeText(this, "Reload !!", 10);
reload_sequence();
break;
}
// TODO Auto-generated method stub
}
private void shoot_sequence() {
if (bullet > 0) {
play_shoot_sound ();
Toast.makeText(this, bullet " left !!", 10);
bullet = bullet - 1;
}
else {
reload.setVisibility(0);
shoot.setVisibility(2);
}
// TODO Auto-generated method stub
}
private void play_shoot_sound() {
MediaPlayer mp = MediaPlayer.create(this, R.raw.shoot);
mp.start();
mp.stop();
mp.release();
// TODO Auto-generated method stub
}
private void reload_sequence() {
play_reload_sound();
bullet = r.nextInt(4) 1;
reload.setVisibility(2);
shoot.setVisibility(0);
// TODO Auto-generated method stub
}
private void play_reload_sound() {
MediaPlayer mp = MediaPlayer.create(this, R.raw.reload);
mp.start();
mp.stop();
mp.release();
// TODO Auto-generated method stub
}
}
Дайте мне знать об ошибках… Спасибо за помощь
Комментарии:
1. Добавили ли вы функцию воспроизведения звука в эмулятор (если вы ее используете)?
Ответ №1:
привет, Джейсон, ты останавливаешь и отпускаешь сразу после запуска проигрывателя. Поэтому остановите это, как только оно будет завершено. надеюсь, этот код поможет вам
final MediaPlayer mPlayer=MediaPlayer.create(getBaseContext(), R.raw.reload);
mPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
//new Toast(getBaseContext());
mPlayer.release();
mPlayer = null;
}
});
Комментарии:
1. ах да, спасибо за помощь. Я попробую это как можно скорее