私はTic-Tac-Toeを作っています。Android Media Playerダブルプレイの問題
私は音楽を管理するMusicManagerクラスと6つのテーマに基づいて音楽を開始するThemesActivityクラスを持っています。ボタンをクリックするたびに、他のmediaPlayersが期待どおりに停止します。しかし、テーマをダブルタップすると、2回の演奏が行われます。私はisPlaying()を使用して停止しようとしましたが、うまくいきませんでした。ここで
がMusicManagerの次のコードです:
//Mediaplayer -- For All 6 themes
private MediaPlayer mp;
public static MediaPlayer normalMP;
public static MediaPlayer loveMP;
public static MediaPlayer tomAndJerryMP;
public static MediaPlayer clashOfClansMP;
public static MediaPlayer cricketMP;
public static MediaPlayer iceAgeMP;
public static void playMusic(Context context) {
int chosenTheme = Utils.loadPreferences(context, "theme", 0);
if(chosenTheme == 0){
normalMP = MediaPlayer.create(context, R.raw.darude_sandstorm);
normalMP.setLooping(true);
normalMP.start();
if(loveMP != null) {
loveMP.release();
}
if(tomAndJerryMP != null) {
tomAndJerryMP.release();
}
if(clashOfClansMP != null) {
clashOfClansMP.release();
}
if(cricketMP != null) {
cricketMP.release();
}
if(iceAgeMP != null) {
iceAgeMP.release();
}
}
if(chosenTheme == 1){
loveMP = MediaPlayer.create(context, R.raw.love);
loveMP.setLooping(true);
loveMP.start();
if(normalMP != null) {
normalMP.release();
}
if(tomAndJerryMP != null) {
tomAndJerryMP.release();
}
if(clashOfClansMP != null) {
clashOfClansMP.release();
}
if(cricketMP != null) {
cricketMP.release();
}
if(iceAgeMP != null) {
iceAgeMP.release();
}
}
if(chosenTheme == 2){
tomAndJerryMP = MediaPlayer.create(context, R.raw.tommy);
tomAndJerryMP.setLooping(true);
tomAndJerryMP.start();
if(normalMP != null) {
normalMP.release();
}
if(loveMP != null) {
loveMP.release();
}
if(clashOfClansMP != null) {
clashOfClansMP.release();
}
if(cricketMP != null) {
cricketMP.release();
}
if(iceAgeMP != null) {
iceAgeMP.release();
}
}
if(chosenTheme == 3){
clashOfClansMP = MediaPlayer.create(context, R.raw.pinkpanther);
clashOfClansMP.setLooping(true);
clashOfClansMP.start();
if(normalMP != null) {
normalMP.release();
}
if(loveMP != null) {
loveMP.release();
}
if(tomAndJerryMP != null) {
tomAndJerryMP.release();
}
if(cricketMP != null) {
cricketMP.release();
}
if(iceAgeMP != null) {
iceAgeMP.release();
}
}
if(chosenTheme == 4){
cricketMP = MediaPlayer.create(context, R.raw.cricket);
cricketMP.setLooping(true);
cricketMP.start();
if(normalMP != null) {
normalMP.release();
}
if(loveMP != null) {
loveMP.release();
}
if(tomAndJerryMP != null) {
tomAndJerryMP.release();
}
if(clashOfClansMP != null) {
clashOfClansMP.release();
}
if(iceAgeMP != null) {
iceAgeMP.release();
}
}
if(chosenTheme == 5) {
iceAgeMP = MediaPlayer.create(context, R.raw.ice_age);
iceAgeMP.setLooping(true);
iceAgeMP.start();
if (normalMP != null) {
normalMP.release();
}
if (loveMP != null) {
loveMP.release();
}
if (tomAndJerryMP != null) {
tomAndJerryMP.release();
}
if (clashOfClansMP != null) {
clashOfClansMP.release();
}
if (cricketMP != null) {
cricketMP.release();
}
}
}
public static void stopMusic(Context context) {
int chosenTheme = Utils.loadPreferences(context, "theme", 0);
if(chosenTheme == 0){
normalMP.stop();
}
if(chosenTheme == 1){
loveMP.stop();
}
if(chosenTheme == 2){
tomAndJerryMP.stop();
}
if(chosenTheme == 3){
clashOfClansMP.stop();
}
if(chosenTheme == 4){
cricketMP.stop();
}
if(chosenTheme == 5){
iceAgeMP.stop();
}
}
そして、ここでは私のThemesActivityある - 音楽演奏パート
//Layout Global Variables
RelativeLayout normalLayout;
RelativeLayout loveLayout;
RelativeLayout tomAndJerryLayout;
RelativeLayout clashOfClansLayout;
RelativeLayout cricketLayout;
RelativeLayout iceAgeLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_themes);
//Referencing Views with IDs
normalLayout = (RelativeLayout) findViewById(R.id.normalLayout);
loveLayout = (RelativeLayout) findViewById(R.id.loveLayout);
tomAndJerryLayout = (RelativeLayout) findViewById(R.id.tom_and_jerry_layout);
clashOfClansLayout = (RelativeLayout) findViewById(R.id.clashLayout);
cricketLayout = (RelativeLayout) findViewById(R.id.cricketLayout);
iceAgeLayout = (RelativeLayout) findViewById(R.id.ice_age_layout);
normalLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MusicManager.playMusic(getBaseContext());
}
loveLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MusicManager.playMusic(getBaseContext());
}
tomAndJerryLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MusicManager.playMusic(getBaseContext());
}
clashOfClansLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MusicManager.playMusic(getBaseContext());
}
cricketLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MusicManager.playMusic(getBaseContext());
}
iceAgeLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MusicManager.playMusic(getBaseContext());
}
}
コードでは、ボタンクリックで音楽を再生し、これを克服するために、playmusicメソッドのフラグ静的変数を設定することができます。フラグをオンまたはオフに設定します。あなたが**再生する**または**リリース/停止**音楽を選択するフラグの値に応じて。これが役に立ったら –
あなたは説明してコードスニペットを与えることができますか?もしもあなたができるのであれば、ちょっとでもフラグを使って作業していました.... –
最初のテーマの答えは下記を参照してください。個々のテーマにプライベートブールフラグを使い、/stop ** –