android Sensor一些手机感应效果

1.Sensor Type
      重力感应/加速度传感器 (G-Sensor)
       光感应   (Light-Sensor) 
      温度感应
      方向感应
      磁场、
      临近性

2.如何实现Sensor编程
     a.获取系统服务(SENSOR_SERVICE)返回一个SensorManager 对象
           sensormanager = (SensorManager)getSystemSeriver(SENSOR_SERVICE);
     b.通过SensorManager对象获取相应的Sensor类型的对象
           sensorObject = sensormanager.getDefaultSensor(sensor Type);
     c.声明一个SensorEventListener 对象用于侦听Sensor 事件,并重载onSensorChanged方法
            SensorEventListener sensorListener = new SensorEventListener(){
             };
     d.注册相应的SensorService
             sensormanager.registerListener(sensorListener, sensorObject, Sensor TYPE);
    e.销毁相应的SensorService
            sensormanager.unregisterListener(sensorListener, sensorObject);
 
    f: SensorListener 接口是传感器应用程序的中心。它包括两个必需方法:
          onSensorChanged(int sensor,float values[]) 方法在传感器值更改时调用。
          该方法只对受此应用程序监视的传感器调用(更多内容见下文)。该方法的参数包括:一个整数,指示更改的传感器;一个浮点值数组,表示传感器数据本身。有些传感器只提供一个数据值,另一些则提供三个浮点值。方向和加速表传感器都提供三个数据值。
      当传感器的准确性更改时,将调用 onAccuracyChanged(int sensor,int accuracy) 方法。参数包括两个整数:一个表示传感器,另一个表示该传感器新的准确值。

3.关于G-Sensor
  Android 加速度传感器的类型是 Sensor.TYPE_ACCELEROMETER
  通过 android.hardware.SensorEvent 返回加速度传感器值。
  加速度传感器返回值的单位是加速度的单位 m/s^2(米每二次方秒),有三个方向的值分别是
  values[0]: x-axis 方向加速度
  values[1]: y-axis 方向加速度
  values[2]: z-axis 方向加速度
  其中x,y,z方向的定义是以水平放置在的手机的右下脚为参照系坐标原点

  x 方向就是手机的水平方向,右为正
  y 方向就是手机的水平垂直方向,前为正
  y 方向就是手机的空间垂直方向,天空的方向为正,地球的方向为负
需要注意的是,由于地球固有的重力加速度g (值为9.8 m/s^2),
  因此现实中实际加速度值应该是 z方向返回值 - 9.8 m/s^2.
  比如你以 2 m/s^2 的加速度将手机抛起,这时z方向的返回值应该是 11.8 m/s^2.
  反之若以手机以2 m/s^2 的加速度坠落,则z方向的返回值应该是 7.8 m/s^2.
  x,y方向则没有上述限制。

我自己写了一个类似于微信的摇一摇的效果,代码如下,

import android.app.Activity;
import android.app.Service;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Vibrator;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Sensor extends Activity implements SensorEventListener{
	private TextView tv =null;
	private Button button = null;
	private SensorManager sensorManager =null;
	private Vibrator vibrator = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_sensor);
		tv = (TextView) findViewById(R.id.textview1);
		button = (Button) findViewById(R.id.button1);
		button.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				tv.setText("文本复原");
			}
		});
		sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
		vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);
	}
	@Override
	protected void onResume() {
		super.onResume();
		sensorManager.registerListener(this, sensorManager.getDefaultSensor(android.hardware.Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
	}
	@Override
	protected void onPause() {
		super.onPause();
		sensorManager.unregisterListener(this);
	}
	@Override
	public void onSensorChanged(SensorEvent event) {
		int sensorType = event.sensor.getType();
        //values[0]:X轴,values[1]:Y轴,values[2]:Z轴
        float[] values = event.values;
        if(sensorType == android.hardware.Sensor.TYPE_ACCELEROMETER){
            if((Math.abs(values[0])>17||Math.abs(values[1])>17||Math.abs(values[2])>17)){
                Log.d("sensor ", "============ values[0] = " + values[0]);
                Log.d("sensor ", "============ values[1] = " + values[1]);
                Log.d("sensor ", "============ values[2] = " + values[2]);
                tv.setText("摇一摇"+"\n"+values[0]+"\n"+values[1]+"\n"+values[2]);
                //摇动手机后,再伴随震动提示~~
                vibrator.vibrate(500);
            }
        }
	}
	@Override
	public void onAccuracyChanged(android.hardware.Sensor sensor, int accuracy) {
		// TODO Auto-generated method stub

	}

}
时间: 2024-08-13 04:33:42

android Sensor一些手机感应效果的相关文章

Android Sensor Development

Android Sensor Development 本文我们说一下Android中的传感器,这对于我们有时候做一些特殊的应用的时候还是需要的,这里我用小米手机下载了一个安兔兔,我们来看下大致的传感器 安兔兔上面,有很多的传感器对吧,但是他们大致的其实是分三类,在我们的官方文档上,是这样说的 sensors_overview 一.传感器概述 大多数Android设备都具有测量运动,方向和各种环境条件的内置传感器.这些传感器能够以高精度和精确度提供原始数据,如果要监视三维设备移动或定位,或者想要监

50个Android开发人员必备UI效果源码[转载]

50个Android开发人员必备UI效果源码[转载] http://blog.csdn.net/qq1059458376/article/details/8145497 Android 仿微信之主页面实现篇Android 仿微信之界面导航篇Android 高仿QQ 好友分组列表Android 高仿QQ 界面滑动效果Android 高仿QQ 登陆界面Android 对Path的旋转效果的拓展Android高仿360安全卫士布局源码Android SlidingDrawer 滑动抽屉效果Androi

【Android】Android中不同手机分辨率适配问题

在项目开发的过程中,同一个布局对应不同的手机会显示出不同的效果.导致这个现象产生的原因是不同手机的分辨率不同.在android sdk提供的帮助文档中,我们可以看到各种手机的分辨率和对应的屏大小.QVGA (240x320),WQVGA400(240x400),WQVGA432 (240x432),HVGA (320x480),WVGA800 (480x800),WVGA854 (480x854). 目前android手机的分辨率大致就是帮助文档中描述的几种,我们可以用两种方式进行不同手机的适配

精美的 ( Android, iPhone, iPad ) 手机界面设计素材和线框图设计工具

在制作界面原型的时候,如果有现成的界面基础元素可以使用的话,设计师就可以非常快速的完成原型的制作,能够节省大量的时间和精力.在这篇文章, 我向大家分享45套非常有用的 UI 和 Wireframe 套件素材包,帮助设计们用于 Web 和 Mobile 项目的界面原型设计. Android 2.2 GUI 整套 Android 2.2 手机界面 UI 组件素材,非常精美! Big Block UI 下拉列表,开关切换按钮,搜索框以及单选,多选按钮等. Stencil kit 滑块控制,开关按钮等组

Android核心基础(手机卫士的一个知识点总结)

注意:有些功能是需要权限的,在这里并没有写出来,在程序运行中,根据程序报的错误,添加相应的权限即可,里面的具体里面可能有一些小细节,没有明确的写出来,具体的需要在程序中自己调试,解决. 这个总结涵盖了Android的一些核心的内容,如四大组建Service.ContentProvider.BroadCastReceiver.Activity,而且四大组建都必须在清单文件中注册. 还涉及了Android手机底层的一些功能,如读取联系人.短信等.还有一些看似牛别点技术,什么短息拦截,电话拦截,黑名单

CSS3实现的圆形遮罩手机应用效果实例

<html> <head> <title>CSS3实现的圆形遮罩手机应用效果实例丨芯晴网页特效丨CsrCode.CN</title> <style> .trans { -webkit-transition: 0.3s ease; -moz-transition: 0.3s ease; -ms-transition: 0.3s ease; -o-transition: 0.3s ease; transition: 0.3s ease; } .tes

手动为Android 4.x 手机添加自己的根证书(CA 证书)

首先看Android 4.x 系统的证书存放位置: AOSP Android系统中CA证书文件的位置在:/ system/etc/security/cacerts/一系列的以数字命名的.0文件 方法一: Android 4.0 已经支持用户安装根证书了,只需要将根证书放到sdcard根目录,然后到设置(Settings) – 安全(Security) – 从存储设备安装(Install from storage)就可以了,但是这样安装需要设置锁屏PIN或密码才可以. 但是,该操作需要每次打开手机

iPhone手机解锁效果&amp;&amp;自定义滚动条&amp;&amp;拖拽--Clone&amp;&amp;窗口拖拽(改变大小/最小化/最大化/还原/关闭)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

android shape图形优化Button效果

android shape可以让我们通过定义xml文件的方式创建图形,当然只能实现一些比较简单的图形(圆形,矩形,椭圆,线段),但是已经相当不错了,通过shape创建的图形作为控件的背景已经基本可以满足我的简单需求了,而且通过shape创建的图形可以适配各种屏幕. 下面就用shape定义的图形来优化Button的整体效果. 定义主布局文件activity_main.xml: 1 <RelativeLayout xmlns:android="http://schemas.android.co