`

Android 传感器(Sensor)API教程 (一) 常用方法简介

 
阅读更多

分享地址:http://www.androidegg.com/portal.php?mod=view&aid=578

1.1 序言  
 【Android蛋蛋网】在这一章我们主要针对Android的传感器(Sensor)进行说明。如果说Java的程序和硬件有些远的感觉,那么可以说传感器距离硬件很近。传感器(Sensor)听起来似乎感觉很难,其实它并不是很难。做起来并很有意思的,我相信,通过我对传感器的介绍你会对它感兴趣的,应为你可以切身体会到它的存在。

1.2 传感器(Sensor)是什么?
    传感器是能标识温度,加速度等等物理现象的转换电子信号的机器。Android SDK,在移动设备中提供了各种各样的传感器的API。那么,本章的例程,在模拟器中不能使用,这点请大家注意。需要在实际的手机上测试才能体现。这里我就不进行详细进行说明如何连接手机进行运行程序了,在本网站 【Android蛋蛋网】有对应的介绍,请读者自己参照。

1.3  传感器(Sensor)关联的类(Class)和接口(Interface)
     首先,我们对Android SDK提供的传感器关联的类和接口进行介绍。
1.3.1  android.hardware.Sensor类
  
Sensor类,是管理各种传感器的共同属性(名字,版本等等)的类。
●主要的常量
    
在Sensor类,能使用的传感器的种类通过常量来定义的(表1-1)。但是根据硬件,传感器搭载是任意的。比如现在市场销售的(Dev Phone,HTC Dream)实际确认有
TYPE_ACCELEROMETER,
TYPE_ORIENTATION,
TYPE_MAGNETIC_FIELD,
TYPE_TEMPERATURE
四种类别。

表1-1 传感器的种类

常量名
说明
实际的值
TYPE_ACCELEROMETER
加速度
1
TYPE_GYROSCOPE
陀螺仪
4
TYPE_LIGHT
光照
5
TYPE_MAGNETIC_FIELD
磁力计
2
TYPE_ORIENTATION
方位传感器
3
TYPE_PRESSURE
压力传感器
6
TYPE_PROXIMITY
距离传感器
8
TYPE_TEMPERATURE
温度传感器
7
TYPE_ALL
全部的传感器
-1


●主要的方法
     Sensor类的主要的方法参照下面的表1-2

方法
处理内容
public float getMaximumRange()
返回传感器的最大值
public String getName()
返回传感器的名字
public float getPower()
f返回传感器的功率(mA毫安)
public float getResolution()
返回传感器的精度
public int getType()
返回传感器的类型
public String getVentor()
返回Vendor名
public int getVersion()
返回传感器的版本号

 

1.3.2  android.hardware.SensorManager类
 
SensorManager类是对搭载的移动设备的传感器进行访问的类,用这个类的借口能取得事件监听器的登录/删除、传感器的信息。

●主要的常量
   
在SensorManager有很多个常量被定义,但是这些中最重要的是关于传感器的反应速度的,如(表1-3)。Android,在监听器进行登录的时候通过4个阶段对传感器进行设定的。
表1-3 关于传感器的反映速度的常量

常量名
说明
实际的值
SENSOR_DELAY_FASTEST
在游戏想特别快的反应速度的时候使用
0
SENSOR_DELAY_GAME
游戏用
1
SENSOR_DELAY_UI
用户接口用
2
SENSOR_DELAY_NORMAL
取得倾斜度的时候使用(缺省)
3

●主要的方法
    
SensorManager类的主要方法如表1-4所示
表1-4 SensorManager类的主要方法 
方法
处理内容
public boolean registerListener(
      SensorEventListener listener,
      Sensor sensor,
      int rate)
登录被指定反应速度的监听器。反应速度的指定,使用前面的(表1-3)SENSOR_DELAY系列常量
public void unregisterListener(SensorEventListener listener)
解除全部的传感器的监听器的登录
public void unregisterListener(SensorEventListener listener,
         Sensor sensor)
解除在sensor被指定的监听器的登录
public List getSensorLIst(int type)
用list形式取得能使用的传感器的接口

1.3.3  SensorManager类的Instance取得例程
  
SensorManager不能直接生成Instance。SensorManager的Instance是通过Context类定义的getSystemService方法取得的。在图1-1的Activity,SensorManager的Instance取得,传感器的名字取得,具体代码如下。

图1-1  传感器的信息取得例程

AndroidEggSensorActivity.java

package androidegg.stu.sensor;

import java.util.List;

import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;

public class AndroidEggSensorActivity extends Activity implements SensorEventListener{
    /** Called when the activity is first created. */
    //SensorManager instance
    private SensorManager sensorManager;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //get SensorManager instance
        sensorManager = (SensorManager)this.getSystemService(SENSOR_SERVICE);
        setContentView(R.layout.main);
    }
   
    @Override
    protected void onResume(){
        super.onResume();
        List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);
        TextView tv;
        for (Sensor s:sensors){
            tv = new TextView(this);
            tv.setText(s.getName());
            layout.addView(tv,new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.FILL_PARENT,
                    LinearLayout.LayoutParams.WRAP_CONTENT));
        }
        setContentView(layout);
    }

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

    @Override
    public void onSensorChanged(SensorEvent event) {
        // TODO Auto-generated method stub
       
    }
}

重要点如下所示
1 在onCreate 方法中取得
SensorManager的Instance
2 在onResume 方法中取得传感器的名字

分享到:
评论

相关推荐

    Android 传感器(Sensor)API教程 (六) 加速度传感器运用实例

    本教程将深入探讨如何使用Android的Sensor API来处理加速度传感器数据,并通过一个具体的“摇一摇”(Shake)实例来展示其实现过程。 首先,我们需要了解加速度传感器的基本概念。加速度传感器能够测量设备在三维...

    Android 传感器 Sensor 编程

    本章节将深入探讨Android传感器编程的相关知识点。 #### 二、Android传感器的基础概念 Android SDK 提供了一系列与硬件交互的功能,其中包括传感器管理。这些功能使得开发者能够创建出更加智能和响应式的应用。...

    Android重力感应传感器Sensor.TYPE_ACCELEROMETER

    在Android平台上,Sensor.TYPE_ACCELEROMETER是用于访问设备内置的加速度传感器的关键常量。这个传感器能够检测到设备在三维空间中的线性加速度,包括由于地球引力引起的加速度和用户对设备施加的动态加速度。在移动...

    Android-Orientation-Sensor,android传感器定向库使用所有可用的设备传感器,帮助您获得更精确的定向矢量值。.zip

    Android-Orientation-Sensor是一个专为Android平台设计的开源库,其主要目的是利用设备上所有可用的传感器来提供更准确的定向矢量值。在Android系统中,传感器是获取设备环境变化的重要工具,如设备的旋转、倾斜、加...

    Android传感器高级编程

    《Android传感器高级编程》是专为开发者深入理解并掌握Android平台上的传感器技术而编写的一本专业书籍。在Android系统中,传感器是设备与环境交互的关键组件,它们收集各种物理和环境数据,如加速度、陀螺仪、磁力...

    传感器Sensor

    一、Android传感器基础 1. SensorManager:这是Android SDK中的核心类,用于管理和访问设备上的传感器。通过`Context.getSystemService(Context.SENSOR_SERVICE)`可以获取到SensorManager实例。 2. Sensor:Sensor...

    Android实例之OrientationSensor方向传感器

    本实例,"Android实例之OrientationSensor方向传感器",将深入讲解如何在Delphi环境下利用Android的传感器API来实现这一功能。朱建强作为作者,他的作品通常以实用性和易用性为特点,你可以放心下载并根据自己的需求...

    Android获取手机所有Sensor(传感器)并测试数据源码

    在项目"ALLSensor"中,开发者可能已经包含了完整的实现,包括对各种传感器的测试和数据展示,这为学习和实践Android传感器API提供了一个很好的起点。通过分析和运行这个项目,你可以更深入地了解如何在实际应用中...

    Android_Sensor传感器系统架构初探

    Android传感器系统架构主要由四个层次构成: - **底层驱动层**:这是最基础的部分,包含标准Linux内核、Android核心驱动、特定设备驱动,其中G-sensor的驱动程序就位于这一层。这些驱动程序与硬件直接交互,为...

    Android传感器应用实例

    "Android传感器应用实例"是一个专为学习Android传感器开发而设计的项目,通过两个具体的Activity,深入浅出地展示了如何利用Android的传感器API。 第一个Activity的主要目标是展示手机中的传感器数量和类型。在...

    android传感器_android_

    在Android中,我们可以通过`SensorManager`的`getDefaultSensor(Sensor.TYPE_ACCELEROMETER)`方法获取加速度传感器,并注册监听器来接收实时的加速度数据。 **方位传感器** 方位传感器,通常称为陀螺仪或磁力计,...

    Android sensor校准、命令实现传感器校准

    Android传感器校准是一个重要的过程,对于确保设备提供准确、可靠的环境感知至关重要。开发者可以利用Android SDK提供的工具和API,结合适当的校准算法,创建自己的校准解决方案。同时,用户也可以通过执行特定的...

    android传感器高级编程源码+apk

    总的来说,这份“android传感器高级编程源码+apk”涵盖了Android传感器API的使用、数据处理和应用开发等多个方面,对于希望提升Android传感器编程能力的开发者来说,是一份宝贵的参考资料。通过研究源码,我们可以...

    Android传感器的分析

    一、Android传感器框架 Android提供了一个强大的传感器框架,它允许开发者访问设备上的各种传感器,通过`SensorManager`服务进行管理。首先,你需要在应用程序中获取`SensorManager`实例: ```java SensorManager ...

    Android利用Sensor(传感器)实现水平仪功能

    在Android平台上,我们可以利用内置的Sensor服务来创建各种有趣的应用,比如本文提到的水平仪功能。...这个过程不仅展示了Android的传感器API的强大,也体现了Android应用程序开发的灵活性和可扩展性。

    android传感器之指南针开发

    在Android平台上,开发一...总结,开发Android指南针应用涉及了Android传感器API的使用、传感器数据处理、坐标变换以及UI设计等多个方面。通过理解这些知识点并实践,开发者可以构建出一个准确、响应迅速的指南针应用。

Global site tag (gtag.js) - Google Analytics