Android传感器概述(六)

监视传感器事件

要监视原始的传感器数据,你须要实现两个通过SensorEventListener接口暴露的回调方法:onAccuracyChanged()和onSensorChanged()。Android系统在不论什么发生下列事情的时候都会调用这两个方法:

1. 传感器精度的改变:

这样的情况中,系统会调用onAccuracyChanged()方法,它提供了你要引用的发生精度变化的Sensor对象。精度使用下面四个状态常量之中的一个来代表的:

SENSOR_STATUS_ACCURACY_LOW

SENSOR_STATUS_ACCURACY_MEDIUM

SENSOR_STATUS_ACCURACY_HIGH

SENSOR_STATUS_UNRELIABLE

2. 传感器报告新的值:

这样的情况中,系统会调用onSensorChanged()方法,它提供了一个SensorEvent对象。SensorEvent对象包括了有关新的传感器数据的信息,包括:数据的精度、产生数据的传感器、产生数据时的时间戳、以及传感器记录的新的数据。

下列代码显示了怎样使用onSensorChanged()方法来监视来自亮度传感器的数据。这个样例在一个TextView中显示原始的传感器数据:

publicclassSensorActivityextendsActivityimplementsSensorEventListener{
  privateSensorManager mSensorManager;
  privateSensor mLight;
 
  @Override
  publicfinalvoid onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
 
    mSensorManager =(SensorManager) getSystemService(Context.SENSOR_SERVICE);
    mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
  }
 
  @Override
  publicfinalvoid onAccuracyChanged(Sensor sensor,int accuracy){
    // Do something here if sensor accuracy changes.
  }
 
  @Override
  publicfinalvoid onSensorChanged(SensorEventevent){
    // The light sensor returns a single value.
    // Many sensors return 3 values, one for each axis.
    float lux =event.values[0];
    // Do something with this sensor value.
  }
 

@Override

protected void onResume() {

super.onResume();

mSensorManager.registerListener(this, mLight, SensorManager.SENSOR_DELAY_NORMAL);

}

@Override

protected void onPause() {

super.onPause();

mSensorManager.unregisterListener(this);

}

}

在这个样例中,在调用registerListener()方法时,指定了默认的数据延迟(SENSOR_DELAY_NORMAL)。数据延迟(或採样率)控制着传感器事件通过onSensorChanged()回调方法发送给你的应用程序的时间间隔。默认的数据延迟适用于监视典型的屏幕方向的变化,它所使用的时间延迟是200,000毫秒。你可以指定其它的数据延迟类型,如SENSOR_DELAY_GAME(20,000毫秒延迟)、SENSOR_DELAY_UI(60,000毫秒延迟)、或者是SENSOR_DELAY_FASTEST(0毫秒延迟)。Android3.0(API
Level 11)以后,你也可以使用一个绝对值(以毫秒的形式)来指定延迟。

你所指定的延迟仅仅是建议性的延迟。Android系统和其它应用程序都可以改动这个延迟。作为最好的实践,你应该指定你所须要的最大延迟,由于系统一般会使用比你指定的要小的延迟(也就是说,你应该选择你的应用所须要的最低的採样率)。使用较大的延迟会减少处理器的负载,同一时候也因此减少了电量的损耗。

有没有公开的方法用于推断传感器框架把传感器事件发送给你的应用程序的频率;可是,你可以使用前后两个传感器事件的时间戳来计算採样率。一旦你设置了採样率(延迟)就不要改变。假设由于某些原因须要改变,那么就必须先注销然后在又一次注冊传感器监听器。

在这个样例中还要重点关注的是:使用onResume()和onPause()回调方法来注冊和注销传感器监听事件。作为最好的实践,你始终应该在不须要的时候禁用传感器,尤其是在Activity被挂起的时候。假设不这样做,由于有些传感器有非常大的电量需求,因此会非常快的消耗掉电池电量。在屏幕关闭的时候,系统不会自己主动的禁用传感器。

时间: 2024-10-06 00:02:18

Android传感器概述(六)的相关文章

Android传感器概述-android学习之旅(七)

传感器概述 传感器是第二代智能手机的重要标志之一.现在许多的手机和平板都内置了传感器(tv除外).android的SDK支持许多的传感器有十几种,但是手机只是支持一部分.例如方向传感器(电子罗盘)和重力传感器(屏幕翻转). 大概分为三类 动作传感器 环境传感器' 位置传感器 动作传感器 这类传感器在三个轴(x,y,z)上测量加速度和旋转角度.包括如下几个传感器. - 加速传感器 - 重力传感器 - 陀螺仪传感器 - 旋转向量传感器 环境传感器 湿度传感器' 光线传感器 温度传感器 位置传感器 方

Android For JNI(六)——交叉编译,NDK概述以及文件结构,编写自己的第一个JNI工程

Android For JNI(六)--交叉编译,NDK概述以及文件结构,编写自己的第一个JNI工程 终于回到我们的android了,我们先要配置这个NDK的环境,但是之前,我们还要了解一下基本的术语 一.交叉编译 在一个平台下编译出另一个平台可以执行的二进制程序 CPU平台:ARM X86 MIPS(指令集) 系统平台:windows linux mac 原理:模拟另一个平台的特性去编译程序 源代码-->预编译-->编译-->链接-->可执行程序 工具链:一个工具使用自动调用下一

Android传感器-开发指南

大部分Android平台的设备都带有多个传感器,使你能监视其方位和运动状态的变化.很多设备还有其它类型的传感器,让你能感知周围的环境条件,比如温度.压力.湿度和光线.你可以利用Android的传感器框架访问这些传感器,并获取原始的传感器数据. 传感器框架提供了丰富的类和接口,能帮助你完成很多与传感器有关的工作.比如,你可以用传感器框架来进行: 确定设备上可用的传感器 确定某个传感器的性能,比如量程.制造商.能耗.分辨率等. 读取传感器的原始数据并指定最小读取频率 注册及注销监听传感器变化的传感器

1、传感器概述

传感器种类 传感器是第二代智能手机的重要标志之一.可以毫不客气地说,现在市面上的Android手机和平板电脑(TV除外)都内置了传感器.否则很多游戏和应用就无法使用了.Android SDK支持的传感器并不是每一部Android设备都支持所有的传感器.大多数Android设备只支持一部分传感器.例如,方向传感器(电子罗盘).重力传感器(屏幕翻转.赛车游戏等). 动作(Motion)传感器 这类传感器在三个轴(X.Y.Z)上测量加速度和旋转角度.包括如下几个传感器. 加速(acceleromete

[Android]传感器-加速度计-3[转]

首先介绍加速度传感器.该传感器的作用主要是感应手机的运动.该传感器捕获三个参数,分别表示空间坐标系中X.Y.Z轴方向上的加速度减去重力加速度在相应轴上的分量,其单位均为m/s2. 如图14-1所示,传感器的坐标系与手机屏幕中的坐标系不同,传感器坐标系是以屏幕的左下角为原点,X轴沿着屏幕向右,Y轴沿着屏幕向上,Z轴垂直手机屏幕向上. 图14-1  手机传感器坐标系 接下来通过一个简单的例子来介绍如何获取加速度的值,同时讲解如何在模拟器中调试传感器的应用,开发步骤如下. 下载SensorSimula

[Android]传感器-加速度计-1[转]

/* * Copyright (C) 2011 The Rexsee Open Source Project * * Licensed under the Rexsee License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://ww

[Android]传感器-加速度计-2[转]

android传感器的坐标系统和其2D设计并不相同,坐标系如下图: 使用SensorManager对象注册传感器监听器后,在onSensorChanged方法内可以得到SensorEvent的一个对象. 而SensorEvent对象有一个重要的成员变量public final float[] values,其定义如下: public final float[] values The length and contents of the values array depends on which 

android视图概述

android视图概述 一.简介 数据和控件分开的作用: 便于引用 便于修改:修改的时候直接改一次数据就可以了

Android数据加密概述及多种加密方式 聊天记录及账户加密 提供高质量的数据保护

Android数据加密概述及多种加密方式 聊天记录及账户加密 提供高质量的数据保护 数据加密又称密码学,它是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文.数据加密目前仍是计算机系统对信息进行保护的一种最可靠的办法.它利用密码技术对信息进行加密,实现信息隐蔽,从而起到保护信息的安全的作用. 一.概述 数据加密是指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文.它产生的历史相当久远,它是起源于