Android实现检测手机摇晃的监听器

android 检测手机摇晃的监听器,实现代码如下所示:

public class ShakeListener implements SensorEventListener {
  // 速度阈值,当摇晃速度达到这值后产生作用
  private static final int SPEED_SHRESHOLD = 3000;
  // 两次检测的时间间隔
  private static final int UPTATE_INTERVAL_TIME = 70;
  // 传感器管理器
  private SensorManager sensorManager;
  // 传感器
  private Sensor sensor;
  // 重力感应监听器
  private OnShakeListener onShakeListener;
  // 上下文
  private Context mContext;
  // 手机上一个位置时重力感应坐标
  private float lastX;
  private float lastY;
  private float lastZ;
  // 上次检测时间
  private long lastUpdateTime;
  // 构造器
  public ShakeListener(Context c) {
   // 获得监听对象
   mContext = c;
   start();
  }
  // 开始
  public void start() {
   // 获得传感器管理器
   sensorManager = (SensorManager) mContext
      .getSystemService(Context.SENSOR_SERVICE);
   if (sensorManager != null) {
     // 获得重力传感器
     sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
   }
   // 注册
   if (sensor != null) {
     sensorManager.registerListener(this, sensor,
        SensorManager.SENSOR_DELAY_GAME);
   }
  }
  // 停止检测
  public void stop() {
   sensorManager.unregisterListener(this);
  }
  // 设置重力感应监听器
  public void setOnShakeListener(OnShakeListener listener) {
   onShakeListener = listener;
  }
  // 重力感应器感应获得变化数据
  public void onSensorChanged(SensorEvent event) {
   // 现在检测时间
   long currentUpdateTime = System.currentTimeMillis();
   // 两次检测的时间间隔
   long timeInterval = currentUpdateTime - lastUpdateTime;
   // 判断是否达到了检测时间间隔
   if (timeInterval < UPTATE_INTERVAL_TIME)
     return;
   // 现在的时间变成last时间
   lastUpdateTime = currentUpdateTime;
   // 获得x,y,z坐标
   float x = event.values[0];
   float y = event.values[1];
   float z = event.values[2];
   // 获得x,y,z的变化值
   float deltaX = x - lastX;
   float deltaY = y - lastY;
   float deltaZ = z - lastZ;
   // 将现在的坐标变成last坐标
   lastX = x;
   lastY = y;
   lastZ = z;
   //sqrt 返回最近的双近似的平方根
   double speed = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ
      * deltaZ)/ timeInterval * 10000;
//  MyLog.v("thelog", "===========log===================");
   // 达到速度阀值,发出提示
   if (speed >= SPEED_SHRESHOLD) {
     onShakeListener.onShake();
   }
  }
  public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
// 摇晃监听接口
public interface OnShakeListener {
  public void onShake();
}
}

以上所述是小编给大家介绍的Android实现检测手机摇晃的监听器,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Android中ScrollView实现滑动距离监听器的方法

    前言 众所周知ScrollView是我们经常使用的一个UI控件,也许你在使用ScrollView的过程中会发现,当你想监听ScrollView滑动的距离时却没有合适的监听器!当然在API 23中有setOnScrollChangeListener(View.OnScrollChangeListener l)可以使用,但是并不兼容低版本的API.那怎么办呢?只好重写ScrollView来实现对滑动距离的监听了. 话不多说,直接上代码: public class MyScrollView exten

  • Android实现静态广播监听器的方法

    本文实例讲述了Android实现静态广播监听器的方法.分享给大家供大家参考.具体实现方法如下: package lab.sodino.broadcastaction; import lab.sodino.util.DatabaseOpenHelper; import lab.sodino.util.SodinoOut; import android.app.Activity; import android.content.ContentResolver; import android.datab

  • Android控件系列之Button以及Android监听器使用介绍

    学习目的: 1.掌握在Android中如何建立Button 2.掌握Button的常用属性 3.掌握Button按钮的点击事件(监听器) Button是各种UI中最常用的控件之一,它同样也是Android开发中最受欢迎的控件之一,用户可以通过触摸它来触发一系列事件,要知道一个没有点击事件的Button是没有任何意义的,因为使用者的固定思维是见到它就想去点! 先看下Android中普通Button的样子: 以及点中Button后的样子: 我在Android控件系列之XML静态资源中已经强调了布局和

  • android Animation监听器AnimationListener的使用方法)

    AnimationListener听名字就知道是对Animation设置监听器,说简单点就是在Animation动画效果开始执行前,执行完毕和重复执行时可以触发监听器,从而执行对应的函数. 开发环境为android4.1.AnimaitonListener的使用方法主要是在Animation上设置一个监听器,即采用Animation的方法成员setAnimationListener().其参数就是监听器的函数.现在来说说本次实验的功能,主要有2个按钮,一个是增加图片的按钮,一个是删除图片的按钮,

  • Android实现检测手机摇晃的监听器

    android 检测手机摇晃的监听器,实现代码如下所示: public class ShakeListener implements SensorEventListener { // 速度阈值,当摇晃速度达到这值后产生作用 private static final int SPEED_SHRESHOLD = 3000; // 两次检测的时间间隔 private static final int UPTATE_INTERVAL_TIME = 70; // 传感器管理器 private Sensor

  • Android编程检测手机录音权限是否打开的方法

    本文实例讲述了Android编程检测手机录音权限是否打开的方法.分享给大家供大家参考,具体如下: 6.0之前的权限检测只是检测到是否在清单文件中注册 Boolean flag = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.RECORD_AUDIO", "包名")); Boolean flag = PermissionChecker.checkSelfPer

  • Android实现检测手机多点触摸点数

    本文实例为大家分享了Android检测手机多点触摸点数的具体代码,供大家参考,具体内容如下 说明:手指每点击一个地方,在那个地方就画一个圆 第一种方式: 效果图: Java代码: 首先我们要写一个绘圆类 package com.example.myapplication;   /**  * Created by Administrator on 2017/7/9 0009.  */   import android.graphics.Canvas; import android.graphics

  • Android检测手机中存储卡及剩余空间大小的方法(基于Environment,StatFs及DecimalFormat)

    本文实例讲述了Android检测手机中存储卡及剩余空间大小的方法.分享给大家供大家参考,具体如下: Android中Environment可用来检测手机中是否安装有存储卡以及文件存储路径等.StatFs可以获取存储卡的空间大小以及剩余空间大小.DecimalFormat可以实现把数字划分为一定的格式. 具体程序如下: import java.io.File; import java.text.DecimalFormat; import android.app.Activity; import a

  • Android检测手机多点触摸点数的方法

    本文实例为大家分享了Android检测手机多点触摸点数的具体代码,供大家参考,具体内容如下 多点触摸点数效果图 Circle.java package com.zking.administrator.g160628_android19_pointstouch;   import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint;   import java.util.Rand

  • Android实现QQ手机管家悬浮小火箭效果

    今天是2013年的最后一天了,这里首先提前祝大家新年快乐!同时,本篇文章也是我今年的最后一篇文章了,因此我想要让它尽量有点特殊性,比起平时的文章要多一些特色.记得在今年年初的时候,我写的第一篇文章是模仿360手机卫士的桌面悬浮窗效果,那么为了能够首尾呼应,今年的最后一篇文章就同样还是来实现桌面悬浮窗的效果吧,当然效果将会更加高级. 相信用过QQ手机管家的朋友们都会知道它有一个小火箭加速的功能,将小火箭拖动到火箭发射台上发射就会出现一个火箭升空的动画,那么今天我们就来模仿着实现一下这个效果吧. 这

  • Android实现判断手机未接来电及处理方法

    通常来说Android手机没有未接来电的监听器,如果要实现对未接来电的处理,则需要自己编写程序来实现.本文所述程序实例即为Android实现判断手机未接来电及处理方法.主要分为四个步骤来进行: 1.编写CallListener,处理手机状态变更监听,当状态改变时进行处理: package rbase.app.smshelpmate.call.listener; import java.text.MessageFormat; import rbase.app.smshelpmate.Config;

  • Android如何判断手机是否有录音权限的工具类

    作用 判断手机是否有录音权限的工具类,兼容6.0以上以及以下android系统 测试环境 这篇文章是评论中的网友提出质疑后,经过重写修改与重写测试后编写的,我的调试环境是小米note3,Android7.1的系统. 记得在清单文件中配置对应的权限. 思路 检测是否有权限 -->有权限--执行相关操作 -->无权限-- 判断系统版本 --大于等于6.0 --动态申请权限 -->对申请结果的回调处理 --允许 --拒绝 代码 工具类CheckAudioPermission.java pack

  • Android APP检测实体按键事件详解

    本文实例为大家分享了Android APP检测实体按键事件的具体代码,供大家参考,具体内容如下 一.检测点击按键事件一般不对手机上的输入按键进行处理,直接由系统按照默认情况操作.当然有时为了改善用户体验,需要让应用拦截按键事件,并进行额外处理. 要想监控按键事件,首先得知道每个按键的编码,这样才能根据不同的编码值进行相应的处理.监听器OnKeyListener只会检测控制键,不会检测文本键.实际测试发现HOME.SWICH.POWER普通的app是接收不到事件的,这几个事件在framew里面处理

  • android仿华为手机悬浮窗设计

    本文实例为大家分享了android仿华为手机悬浮窗的具体代码,供大家参考,具体内容如下 最近项目中有个需求就是要在android 系统桌面上写一个悬浮球,并使其具有返回,进到主页,打开设置等功能.类似于华为手机的悬浮球.这里主要用到windowManager来实现. 1.先来看看效果图 主页的小圆点 点击小圆点之后展开,然后可以模拟虚拟按键,返回等功能.全局有效. 2.一步步来实现 1.首先这个要常住在桌面,故得写在一个服务里面里面.服务的启动可以通过开机广播,或者在Activity 中启动后直

随机推荐