Android 手机震动功能实现

    xiaoxiao2021-03-25  110

    1、首先在AndroidManifest.xml中添加震动权限

    [html]  view plain  copy  print ? <uses-permission android:name="android.permission.VIBRATE" />  

    2、创建震动工具类 VibratorUtil.Java

    [java]  view plain  copy  print ? package com.techrare.util;      import android.app.Activity;   import android.app.Service;   import android.os.Vibrator;      /**   * 手机震动工具类   * @author Administrator   *   */   public class VibratorUtil {              /**       * final Activity activity  :调用该方法的Activity实例       * long milliseconds :震动的时长,单位是毫秒       * long[] pattern  :自定义震动模式 。数组中数字的含义依次是[静止时长,震动时长,静止时长,震动时长。。。]时长的单位是毫秒       * boolean isRepeat : 是否反复震动,如果是true,反复震动,如果是false,只震动一次       */               public static void Vibrate(final Activity activity, long milliseconds) {                Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);                vib.vibrate(milliseconds);         }         public static void Vibrate(final Activity activity, long[] pattern,boolean isRepeat) {                Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);                vib.vibrate(pattern, isRepeat ? 1 : -1);         }       }  

    3、实例工具类调用类中的静态方法

    [java]  view plain  copy  print ? VibratorUtil.Vibrate(StartGameActivity.sgay, 100);   //震动100ms  

    总结

    private Vibrator vibrator;

    取得震动服务的句柄

     vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);

     或者 vibrator = (Vibrator)getApplication().getSystemService(Service.VIBRATOR_SERVICE);

    开始震动有两个接口

      1 .   vibrator.vibrate(2000);//震动指定时间 ,数据类型long,单位为毫秒,一毫秒为1/1000秒

      2.    vibrator.vibrate(new long[]{100,10,100,1000}, -1);//按照指定的模式去震动。

    数组参数意义:第一个参数为等待指定时间后开始震动,震动时间为第二个参数。后边的参数依次为等待震动和震动的时间

    第二个参数为重复次数,-1为不重复,0为一直震动    

    取消震动

       vibrator.cancel();//取消震动,立即停止震动

    震动为一直震动的话,如果不取消震动,就算退出,也会一直震动

    最重要的,增加权限,否则运行时出错

    <uses-permission android:name="android.permission.VIBRATE"/> 顶 1 踩
    转载请注明原文地址: https://ju.6miu.com/read-16845.html

    最新回复(0)