当用户关闭并打开开关按钮时,我需要启用和禁用手机的振动模式。
我已尝试过以下代码,但它无效:
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);
}
答案 0 :(得分:5)
首先在AndroidManifest.xml中使用此权限
<uses-permission android:name="android.permission.VIBRATE"/>
现在
public void startVibrate(View v) {
long pattern[] = { 0, 100, 200, 300, 400 };
vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(pattern, 0);
}
public void stopVibrate(View v) {
vibrator.cancel();
}
振动模式 public abstract void vibrate(long [] pattern,int repeat) 振动模式只不过是一系列持续时间,可以在几毫秒内打开和关闭振动器。第一个值表示在打开振动器之前等待的毫秒数。下一个值表示在关闭振动器之前保持振动器打开的毫秒数。后续值,在ON和OFF之间交替。
long pattern[]={0,100,200,300,400};
如果你觉得没有重复,只需传递-1即可重复&#39;。要重复模式,只需从您想要开始的位置传递索引。我想从第0个索引开始,因此我将0传递给&#39;重复&#39;。
vibrator.vibrate(pattern, 0);
答案 1 :(得分:5)
我们可以使用AudioManager以编程方式启用和禁用静默模式:
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
用于设置静音模式:
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
对于普通模式:
audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
答案 2 :(得分:3)
myAudioManager.setVibrateSetting();
此方法在API级别16中已弃用。
你可以使用这个:
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT)
RINGER_MODE_SILENT:将音量静音,不会振动。
RINGER_MODE_VIBRATE:将音量静音并振动。
RINGER_MODE_NORMAL:会听到声音,并可能根据用户设置振动。
答案 3 :(得分:0)
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);
}