如何以编程方式启用和禁用振动模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何以编程方式启用和禁用振动模式相关的知识,希望对你有一定的参考价值。

当用户关闭并打开开关按钮时,我需要启用和禁用手机的振动模式。

我已经尝试了下面的代码,但它不起作用:

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"/>

现在

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代表'重复'。要重复模式,只需从您想要开始的位置传递索引。我想从第0个索引开始,因此我将0传递给'重复'。

vibrator.vibrate(pattern, 0);
另一答案

我们可以使用AudioManager以编程方式启用和禁用静默模式:

 AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);

用于设置静音模式:

audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);

对于正常模式:

audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
另一答案
 myAudioManager.setVibrateSetting();

此方法在API级别16中已弃用。

你可以用这个:

audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT)

RINGER_MODE_SILENT:将音量静音,不会振动。

RINGER_MODE_VIBRATE:将音量静音并振动。

RINGER_MODE_NORMAL:将听到声音,并可能根据用户设置振动。

另一答案
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);
}

以上是关于如何以编程方式启用和禁用振动模式的主要内容,如果未能解决你的问题,请参考以下文章

根据活动(即可见)片段以编程方式启用或禁用按钮

如何在 iOS 中以编程方式禁用/启用睡眠模式?

如何以编程方式禁用 Apple Watch 的睡眠模式

如何以编程方式检查设备是不是在 iOS 中设置振动模式?

如何以编程方式禁用“省电”模式。 (安卓)

从代码启用/禁用 VR