Ara*_*n S 2 audio android onclick android-mediaplayer android-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();
}
}
Run Code Online (Sandbox Code Playgroud)
1)您必须更改 MediaPlayer 的初始化位置。
MediaPlayer mp = new MediaPlayer();
Run Code Online (Sandbox Code Playgroud)
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;
}
}}
Run Code Online (Sandbox Code Playgroud)
当然还要确保音频文件存在。
2)如何传递按钮状态
您可以在如下活动之间使用 Bundle 传递按钮状态
开始活动 2
Intent intent = new Intent(this, Activity2.class);
intent.putExtra(EXTRA_NAME, VALUE);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
在活动 2 中获取该值,例如
@Override
protected void onCreate(Bundle savedInstanceState) {
....
boolean value = getIntent().getExtras().getBoolean(EXTRA_VALUE);
}
Run Code Online (Sandbox Code Playgroud)
然后像上面一样做同样的事情,把它传递给活动 3。
或者
您可以在活动 1 中创建一个静态变量,然后从活动 3 访问它。
| 归档时间: |
|
| 查看次数: |
802 次 |
| 最近记录: |