Android实在在app内部控制按键震动

本文介绍了如何在Android应用中实现按键震动功能。首先在Manifest中申请震动权限,然后创建一个帮助类`VibrateHelp`来获取系统震动权限并设定震动效果。接着自定义View并重写`OnClickListener`,在点击事件中实现震动。为了存储用户设定的震动开关状态,使用了`SharedPreferencesUtils`工具类来保存和读取数据。
摘要由CSDN通过智能技术生成

1.获取手机震动权限

  • 在Mainfext中申请震动权限 : android:name=“android.permission.VIBRATE”
  • 帮助类,获取系统震动权限并设置震动样式
    import android.os.Vibrator;
    import android.app.Activity;
    import android.app.Service;
    import android.content.Context;

public class VibrateHelp {
private static Vibrator vibrator;

/**
 * 简单震动
 * @param context     调用震动的Context
 * @param millisecond 震动的时间,毫秒
 */
@SuppressWarnings("static-access")
public static void vSimple(Context context, int millisecond) {
    vibrator = (Vibrator) context.getSystemService(context.VIBRATOR_SERVICE);
    vibrator.vibrate(millisecond);
}

/**
 * 复杂的震动
 * @param context 调用震动的Context
 * @param pattern 震动形式
 * @param repeate 震动的次数,-1不重复,非-1为从pattern的指定下标开始重复
 */
@SuppressWarnings("static-access")
public static void vComplicated(Context context, long[] pattern, int repeate) {
    vibrator = (Vibrator) context.getSystemService(context.VIBRATOR_SERVICE);
    vibrator.vibrate(pattern, repeate);
}

/**
 * 停止震动
 */
public static void stop() {
    if (vibrator != null) {
        vibrator.cancel();
    }
}

-自定义View重写OnClickListener

import android.view.View;
import android.view.View.OnClickListener;

import com.hision.controllight.activity.SystemSettingActivity;

public class ViewClickVibrate implements OnClickListener {
private final int VIBRATE_TIME = 100;

@Override
public void onClick(View v) {
    // TODO 根据设置中的标记判断是否执行震动
    if ((int)SystemSettingActivity.sp.get("flag",0) == 1) {
        VibrateHelp.vSimple(v.getContext(), VIBRATE_TIME);
    }
}

}

  • 标志位的存储我采用的是SharedPreferences的一个工具类具体实现如下
    import android.content.Context;
    import android.content.ContextWrapper;
    import android.content.SharedPreferences;
    import android.os.Environment;

import com.blankj.utilcode.util.Utils;

import java.io.File;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Map;

/**

  1. https://www.jianshu.com/p/64ef6eb7406f
  2. https://github.com/grandcentrix/tray
  3. SharedPreferences的一个工具类,调用setParam就能保存String, Integer, Boolean, Float, Long类型的参数
  4. 同样调用getParam就能获取到保存在手机里面的数据
    1. @author xiaanming
  5.     <defaultAlpha>
    
  6.     保存数据:
    
  7.     SharedPreferencesUtils.setParam(this, "String", "xiaanming");
    
  8.     SharedPreferencesUtils.setParam(this, "int", 10);
    
  9.     SharedPreferencesUtils.setParam(this, "boolean", true);
    
  10. <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值