Android 如何以编程方式启用和禁用振动模式
我需要在用户关闭和打开开关按钮时启用和禁用手机的振动模式 我尝试了下面的代码,但不起作用:Android 如何以编程方式启用和禁用振动模式,android,performance,android-layout,android-intent,android-activity,Android,Performance,Android Layout,Android Intent,Android Activity,我需要在用户关闭和打开开关按钮时启用和禁用手机的振动模式 我尝试了下面的代码,但不起作用: AudioManager myAudioManager; myAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); Toast.makeText(this, "in setting "+(myAudioManager.getMode()==AudioManager.RINGER_MODE_VIBRATE),1).sho
AudioManager myAudioManager;
myAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
Toast.makeText(this, "in setting "+(myAudioManager.getMode()==AudioManager.RINGER_MODE_VIBRATE),1).show();
if(myAudioManager.getMode()==AudioManager.RINGER_MODE_VIBRATE) {
//myAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
myAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);
}
else
{
//myAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
myAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON);
}
首先,在AndroidManifest.xml中使用此权限
<uses-permission android:name="android.permission.VIBRATE"/>
振动模式
公共抽象空振动(长[]模式,整数重复)
振动模式只不过是一组持续时间,以毫秒为单位打开和关闭可控震源。第一个值指示打开可控震源之前要等待的毫秒数。下一个值指示在关闭可控震源之前保持可控震源打开的毫秒数。后续值在打开和关闭之间交替
long pattern[]={0,100,200,300,400};
如果你觉得没有重复,只需通过-1表示“重复”。要重复模式,只需从你想要开始的地方传递索引。我想从第0个索引开始,因此我将0传递给“repeat”
vibrator.vibrate(pattern, 0);
我们可以使用AudioManager以编程方式启用和禁用静默模式:
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
对于设置静默模式:
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
对于正常模式:
audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
此方法在API级别16中被弃用
您可以使用这个:
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT)
振铃器\模式\静音:将使音量静音且不会振动
振铃器\模式\振动:将使音量静音并振动
RINGER_MODE_NORMAL(振铃器模式)\正常:可听到声音,并可根据用户设置进行振动。Hi Richard的可能副本,我不想讨论启动振动,我想启用和禁用它。在链接“android中启用/禁用振动功能?”中,他们回答了启动振动的问题。不用于启用和禁用它。这只是启动振动,我们不需要启动振动,只需要启用和禁用它。
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
// Vibrate for 500 milliseconds
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
v.vibrate(VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE));
} else {
//deprecated in API 26
v.vibrate(500);
}
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT)
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
// Vibrate for 500 milliseconds
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
v.vibrate(VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE));
} else {
//deprecated in API 26
v.vibrate(500);
}