按键添加震动功能:
/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
比如Home键:
case KeyEvent.KEYCODE_HOME: {
if (down) {
Vibrator vibrator= (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(30);
}
break;
}
导包
import android.os.Vibrator;
vibrator.vibrate(30);
参数是震动时间ms毫秒
因为这里是frameworks层不需要加权限,如果是在应用内需要加震动权限
<uses-permission android:name="android.permission.VIBRATE" />
这个vibrator.vibrate(30);是轻微的震动,可能震感不明显,如果要震感明显,可以时间延长一些比如50
下面这个震动那就全力震动了。类似来电震动,太夸张了强度,还伴有声音
那就用
Vibrator vibrator= (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE);
long [] pattern={100,500};
vibrator.vibrate(pattern,-1);
意思是在程序起动后等待0.1秒后,振动0.5秒,震动这一组不循环,如果要好几组也可以多加
比如long[] pattern = {3000, 1000, 2000, 5000, 3000, 1000}
要循环的话
vibrator.vibrate(pattern,1); 1不重复,非-1为从pattern的指定下标开始重复
设置-》应用和通知-》通知-》高级-》勿扰模式立即开启按钮放置界面首行:
override/vendor/mediatek/proprietary/packages/apps/MtkSettings/res/xml/zen_mode_settings.xml
把这个按钮button的布局放到一开始的位置就好
<!-- Turn on DND button -->
<com.android.settingslib.widget.LayoutPreference
android:key="zen_mode_toggle"
android:title="@string/zen_mode_settings_title"
android:selectable="false"
android:layout="@layout/zen_mode_settings_button"
settings:allowDividerAbove="true"
settings:allowDividerBelow="true"
settings:keywords="@string/keywords_zen_mode_settings"/>
<!-- Footer that shows if user is put into alarms only or total silence mode by an app -->
<com.android.settingslib.widget.FooterPreference/>