`

android 利用重力感应监测手机摇晃,做出相应反应

阅读更多
这个是利用手机摇晃,做出一定反应。具体功能自己开发
package com.ray.test;

import android.R.integer;
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorListener;
import android.hardware.SensorManager;
import android.os.Bundle;

public class SensorTest extends Activity implements SensorListener{
// private SensorManager sensorMgr;  

//     Sensor sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 

      private float x, y, z,last_x,last_y,last_z;  
      private long lastUpdate;

     protected void onCreate(Bundle savedInstanceState) {  

           super.onCreate(savedInstanceState);  
           setContentView(R.layout.main);

           SensorManager sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);  
           Sensor sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
           sensorMgr.registerListener(this, SensorManager.SENSOR_ACCELEROMETER,
           SensorManager.SENSOR_DELAY_GAME);
     }

public void onAccuracyChanged(int sensor, int accuracy) {
// TODO Auto-generated method stub

}

private static final int SHAKE_THRESHOLD = 5000;
//这个控制精度,越小表示反应越灵敏

public void onSensorChanged(int sensor, float[] values) {
// TODO Auto-generated method stub
if(sensor == SensorManager.SENSOR_ACCELEROMETER){
long curTime = System.currentTimeMillis();
//每100毫秒检测一次
if((curTime-lastUpdate)>100){
long diffTime = (curTime-lastUpdate);
lastUpdate = curTime;

x = values[SensorManager.DATA_X];  

                y = values[SensorManager.DATA_Y];  

                z = values[SensorManager.DATA_Z]; 
                float speed = Math.abs(x+y+z-last_x-last_y-last_z)/diffTime*10000;
                if(speed>SHAKE_THRESHOLD){
                        //这里写上自己的功能代码
                setTitle("x="+(int)x+","+"y="+(int)y+","+"z="+(int)z); 
                }
                last_x = x;
                last_y = y;
                last_z = z;
}
}  
}
}
分享到:
评论

相关推荐

    Android有意思的重力感应控件

    WSGEmptyView控件可能就是利用了这样的重力感应数据,将用户的物理动作(如摇晃手机)与视图状态的切换相结合。例如,用户可能可以通过摇晃手机来触发错误视图转为空视图,或者在无数据时通过特定的动作来触发加载...

    重力传感器

    重力传感器是现代智能手机和其他移动设备中的重要组件,它能够实时监测设备在三维空间中的重力分布,从而为各种应用提供关键数据。这种技术在游戏、健康管理、虚拟现实(VR)、增强现实(AR)以及日常应用程序中都有...

    android Vibrator 仿微信摇一摇

    在Android开发中,实现“微信摇一摇”功能是一个相当有趣的互动体验,它结合了设备的传感器技术,尤其是重力感应器(Gravity Sensor),以及Vibrator服务来模拟真实世界中的摇晃动作。这个功能通常用于游戏、抽奖...

    Android传感器

    在Android系统中,传感器...总的来说,这个项目为Android开发者提供了一个学习和实践传感器的平台,通过查看和运行代码,你可以更好地理解和利用Android设备的传感器功能,创建出更加智能和交互性强的应用程序。

    6-4(加速度传感器).7z

    总的来说,“6-4(加速度传感器)”的Android程序可能是一个教学示例,让开发者或学生了解如何在Android平台上获取和利用加速度传感器的数据。通过深入理解和实践,可以创建出更多创新的应用,提升用户体验。

    Android操作系统介绍之11种传感器

    在Android操作系统中,传感器起着至关重要的作用,它们允许设备感知和响应周围环境的变化,从而为用户提供丰富的交互体验。在Android 2.3 Gingerbread版本中,系统支持11种不同类型的传感器,每种都有其特定的应用...

Global site tag (gtag.js) - Google Analytics