0

我想創建一個圖像按鈕的方法,當它點擊背景音樂停止和圖像按鈕改變另一個圖像,當再次按下它將返回,因爲它是在第一次和重播音樂,我試圖布爾時這是真的,音樂開始,當它是錯誤的音樂,但它不工作! 另外我怎麼可以讓另一個活動播放或停止音樂取決於主要活動?如何在ImageButton上點擊另一個活動中的聲音?

public class MainActivity extends AppCompatActivity { 
MediaPlayer mp ; 
ImageButton SoundButton; 
ImageButton NoSoundButton; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    SoundButton = new ImageButton(this); 
    NoSoundButton = new ImageButton(this); 
    /*---------Image Buttons--------*/ 

    SoundButton=(ImageButton) findViewById(R.id.sound); 
    SoundButton.setVisibility(View.GONE); 
    NoSoundButton=(ImageButton) findViewById(R.id.nosound); 
    NoSoundButton.setVisibility(View.VISIBLE); 

    /*---------Media Player--------*/ 

    mp = new MediaPlayer(); 
    mp = MediaPlayer.create(this, R.raw.aud); 
    mp.setLooping(true); 
    mp.start(); 
} 

public void nosound(View view) { 
    SoundButton.setVisibility(View.VISIBLE); 
    NoSoundButton.setVisibility(View.INVISIBLE); 
    mp.stop(); 
    mp.prepareAsync(); 
} 

public void sound(View view) { 
    SoundButton.setVisibility(View.INVISIBLE); 
    NoSoundButton.setVisibility(View.VISIBLE); 
    mp.start(); 
} 

}

+0

莫非你提供給我們你到目前爲止使用的代碼嗎? –

+1

我們必須知道:您使用什麼來播放音樂?你如何改變你的照片?你是否設置了一個onclicklistener等。 –

+0

編輯你的問題,並插入代碼 –

回答

1

1)你必須改變你的MediaPlayer的初始化的位置。

MediaPlayer mp = new MediaPlayer(); 

public class MainActivity extends AppCompatActivity { 

     boolean SoundStatus; 
     MediaPlayer mp; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      mp = new MediaPlayer(); 
      mp = MediaPlayer.create(this, R.raw.aud); 
      mp.setLooping(true); 
      mp.start(); 
     } 
      public void sound(View view) { 
      SoundStatus = true; 
      if (SoundStatus) { 
       mp.stop(); 
       SoundStatus = false; 
      } 
      else { 
       mp.start(); 
       SoundStatus = true; 
      } 
     }} 

當然,確保音頻文件存在。


2)如何通過一個按鈕狀態

你可以通過活動之間使用捆綁的按鈕狀態就像下面

開始活動2

Intent intent = new Intent(this, Activity2.class); 
intent.putExtra(EXTRA_NAME, VALUE); 
startActivity(intent); 

獲取該值在活動2中就像

@Override 
protected void onCreate(Bundle savedInstanceState) { 
.... 
boolean value = getIntent().getExtras().getBoolean(EXTRA_VALUE); 
} 

,然後做同樣類似上面,將它傳遞給活動3

或者

你可以做一個靜態變量在你活動1然後訪問該活動從3

+0

mp只是'onCreate'內部已知的!在方法'聲音'它是未知的 –

+0

那麼,然後把mediaplayer mp全局或通過mediaplayer作爲參數 –

+0

更新我的代碼..現在試試吧,順便說一句,你注意到你從來沒有調用方法'聲音'? –

相關問題