Android 媒体播放器不会停在复选框上
Android mediaplayer does not stop on checkbox
我构建了一个小应用程序,它基本上是在选中复选框时振动并播放 mp3 文件,但不知何故,取消选中复选框后音乐不会停止:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Vibrator vibrator = (Vibrator) MainActivity.this.getSystemService(Context.VIBRATOR_SERVICE);
final CheckBox vibrateBoxStrong = (CheckBox) findViewById(R.id.checkPowerStrong);
final Handler handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
vibrator.vibrate(1000);
handler.postDelayed(this, 1000);
}
};
vibrateBoxStrong.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.fansound1);
if(vibrateBoxStrong.isChecked()) {
handler.postDelayed(r, 100);
mediaPlayer.start();
} else {
mediaPlayer.stop();
handler.removeCallbacks(r);
vibrator.cancel();
}
}
}
);
}
}
用于播放 mp3
MediaPlayer mPlayer = MediaPlayer.create(context, R.raw.aaanicholas);
开始
mPlayer.start();
停止
mPlayer.stop();
在你的情况下使用
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Vibrator vibrator = (Vibrator) MainActivity.this.getSystemService(Context.VIBRATOR_SERVICE);
MediaPlayer mPlayer = MediaPlayer.create(context, R.raw.aaanicholas);
Vibrator v = (Vibrator) this.context.getSystemService(Context.VIBRATOR_SERVICE);
final CheckBox vibrateBoxStrong = (CheckBox) findViewById(R.id.checkPowerStrong);
vibrateBoxStrong.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.fansound1);
if(vibrateBoxStrong.isChecked()) {
v.vibrate(1000); // it will vibrate for 1000 milliseconds
mPlayer.start();
} else {
mPlayer.stop();
vibrator.cancel();
}
}
}
);
}
}
我构建了一个小应用程序,它基本上是在选中复选框时振动并播放 mp3 文件,但不知何故,取消选中复选框后音乐不会停止:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Vibrator vibrator = (Vibrator) MainActivity.this.getSystemService(Context.VIBRATOR_SERVICE);
final CheckBox vibrateBoxStrong = (CheckBox) findViewById(R.id.checkPowerStrong);
final Handler handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
vibrator.vibrate(1000);
handler.postDelayed(this, 1000);
}
};
vibrateBoxStrong.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.fansound1);
if(vibrateBoxStrong.isChecked()) {
handler.postDelayed(r, 100);
mediaPlayer.start();
} else {
mediaPlayer.stop();
handler.removeCallbacks(r);
vibrator.cancel();
}
}
}
);
}
}
用于播放 mp3
MediaPlayer mPlayer = MediaPlayer.create(context, R.raw.aaanicholas);
开始
mPlayer.start();
停止
mPlayer.stop();
在你的情况下使用
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Vibrator vibrator = (Vibrator) MainActivity.this.getSystemService(Context.VIBRATOR_SERVICE);
MediaPlayer mPlayer = MediaPlayer.create(context, R.raw.aaanicholas);
Vibrator v = (Vibrator) this.context.getSystemService(Context.VIBRATOR_SERVICE);
final CheckBox vibrateBoxStrong = (CheckBox) findViewById(R.id.checkPowerStrong);
vibrateBoxStrong.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.fansound1);
if(vibrateBoxStrong.isChecked()) {
v.vibrate(1000); // it will vibrate for 1000 milliseconds
mPlayer.start();
} else {
mPlayer.stop();
vibrator.cancel();
}
}
}
);
}
}