0

Я пытаюсь создать метод кнопки изображения, когда он щелкнет фоновой музыкой, и кнопка изображения изменит другое изображение, при нажатии снова оно вернется, как было в первый раз, и воспроизвести музыку, я пытаюсь использовать Boolean, когда это правда, когда музыка начинается, и когда это ложь, но она не работает! Кроме того, как я могу сделать еще одну игру или остановить музыку, зависящую от основной деятельности?Как воспроизвести звук на 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) Как передать состояние кнопки

Вы можете передать состояние кнопки, используя Bundle между различными видами деятельности, как следующие

Начало деятельности 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 глобально или передайте медиаплеер в качестве параметра –

+0

обновил мой код .. попробуйте сейчас, кстати, вы заметили, что вы никогда не называете метод «звуком»? –

 Смежные вопросы

  • Нет связанных вопросов^_^