Make an audio start/stop toggle on Android
-
21-04-2021 - |
Domanda
I have looked everywhere about music on Android development. I have looked at the API but I didn't understand it. This is my code:
Button b = (Button) findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
MediaPlayer mp = MediaPlayer.create(Main.this, R.raw.track1);
mp.start();
}
});
How I can change it so that when I press the same button again it stops it?
Soluzione
package com.my.testing;
import android.R;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class TestAndActivity extends Activity {
public MediaPlayer mp = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button b = (Button) findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mp == null) {
mp = MediaPlayer.create(TestAndActivity.this, R.raw.track1);
mp.start();
} else {
mp.stop();
mp = null;
}
}
});
}
}
Altri suggerimenti
For fun you can define two identical buttons on the same place in your layout and make such trick...
<ImageView
android:id="@+id/media_player12"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/media_player" />
<ImageView
android:id="@+id/mute12"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:visibility="gone"
android:clickable="false"
android:src="@drawable/mute" />
and code...
final ImageView s_on12 = (ImageView) findViewById(R.id.media_player12);
s_on12.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mp.release();
MediaPlayer mp = MediaPlayer.create(Main.this, R.raw.track1);
mp.start();
final ImageView s_off12 = (ImageView) findViewById(R.id.mute12);
s_on12.setVisibility(View.GONE);
s_on12.setClickable(false);
s_off12.setVisibility(1);
s_off12.setClickable(true);
s_off12.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mp.stop();
s_on12.setVisibility(1);
s_on12.setClickable(true);
s_off12.setVisibility(View.GONE);
s_off12.setClickable(false);
}
});
}
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow