在搭载英特尔® 凌动™ 处理器的 Android* 手机和平板电脑上开发传感器应用

本文为开发者介绍了在搭载英特尔凌动处理器的Android设备上开发传感器应用的指南,涵盖了运动、位置和环境传感器的使用,包括加速计、陀螺仪、磁力计等,并探讨了GPS和位置服务。同时,文中提供了传感器性能优化和位置服务的最佳实践。
摘要由CSDN通过智能技术生成

作者:杜伟 (Intel)

下载文章

在搭载英特尔® 凌动™ 处理器的 Android* 手机和平板电脑上开发传感器应用 [PDF 607KB]

在搭载英特尔® 凌动™ 处理器的 Android* 手机和平板电脑上开发传感器应用


本指南将为应用开发人员介绍 Android 传感器框架和讨论如何使用一些通常在搭载英特尔® 凌动™ 处理器的手机和平板电脑上提供的传感器。 包含在本讨论之列的有运动、位置和环境传感器。 按照 Android 框架的规定, GPS 未被严格视为一种传感器,尽管如此,本指南也会讨论基于 GPS 的位置服务。 本指南中的讨论以 Android 4.2 — Jelly Bean 为基础。

搭载英特尔® 凌动™ 处理器的 Android* 手机和平板电脑上的传感器


搭载英特尔凌动处理器的 Android 手机和平板电脑可以支持各种不同的硬件传感器。 这些传感器被用于检测运动和位置改变,以及报告周围环境参数。 图 1 中的方块图显示了在一个搭载英特尔凌动处理器的标准 Android 设备上可能会用到的传感器配置。


图 1. 搭载英特尔® 凌动™ 处理器的 Android 系统上的传感器

根据它们报告的数据,我们可以将 Android 传感器分成表 1 中所示的类和类型。

运动传感器 加速计
(TYPE_ACCELEROMETER)
测量一台设备的加速度,按 m/s2 运动检测
陀螺仪
(TYPE_GYROSCOPE)
测量一台设备的旋转速度 旋转检测
位置传感器 磁力计
(TYPE_MAGNETIC_FIELD)
测量地球的地磁场强度,按 µT 罗盘
距离
(TYPE_PROXIMITY)
测量一个物体的距离,按 cm 附近物体检测
GPS
(不属于
android.hardware.Sensor 的类型)
获得设备准确的地理位置 准确的地理位置检测
环境传感器 ALS
(TYPE_LIGHT)
测量环境光线等级,按 lx 自动屏幕亮度控制
气压计 测量周围空气压力,按 mbar 高度检测

表 1. Android 平台支持的传感器类型
 

Android 传感器框架


Android 传感器框架提供了可以访问传感器和传感器数据的机制,而作为例外的 GPS 则可以通过 Android 位置服务进行访问。 我们稍后将在本文中讨论该问题。 本传感器框架是 android 硬件包的一部分。 表 2 列出了传感器框架的主类和接口。

姓名 类型 描述
SensorManager 用于创建一个传感器服务的实例。 提供各种方法访问传感器、注册和注销传感器事件侦听器等等。
传感器 用于创建一个特定传感器的实例。
SensorEvent 系统在公布传感器数据时会用到该类。 包含原始传感器数据值、传感器类型、数据精度和一个时间戳。
SensorEventListener 接口 提供回调方法,在传感器数据或传感器精度改变的情况下从 SensorManager 接收通知。

表 2. Android 平台传感器框架

获取传感器配置

设备制造商决定设备上提供什么传感器。 您必须使用一个参数“Sensor.TYPE_ALL”调用传感器框架的 SensorManager getSensorList() 方法查看有哪些传感器在运行时可用。 代码示例 1 显示了一列可用的传感器,以及每个传感器的厂商、功耗和精度信息。

    
    
    
001 package com.intel.deviceinfo;
002      
003 import java.util.ArrayList;
004 import java.util.HashMap;
005 import java.util.List;
006 import java.util.Map;
007  
008 import android.app.Fragment;
009 import android.content.Context;
010 import android.hardware.Sensor;
011 import android.hardware.SensorManager;
012 import android.os.Bundle;
013 import android.view.LayoutInflater;
014 import android.view.View;
015 import android.view.ViewGroup;
016 import android.widget.AdapterView;
017 import android.widget.AdapterView.OnItemClickListener;
018 import android.widget.ListView;
019 import android.widget.SimpleAdapter;
020      
021 public class SensorInfoFragment extends Fragment {
022      
023     private View mContentView;
024      
025     private ListView mSensorInfoList;  
026     SimpleAdapter mSensorInfoListAdapter;
027      
028     private List<Sensor> mSensorList;
029  
030     private SensorManager mSensorManager;
031      
032     @Override
033     public void onActivityCreated(Bundle savedInstanceState) {
034         super.onActivityCreated(savedInstanceState);
035     }
036      
037     @Override
038     public void onPause()
039     {
040         super.onPause();
041     }
042      
043     @Override
044     public void onResume()
045     {
046         super.onResume();
047     }
048      
049     @Override
050     public View onCreateView(LayoutInflater inflater, ViewGroup container,
051             Bundle savedInstanceState) {
052         mContentView = inflater.inflate(R.layout.content_sensorinfo_main, null);
053         mContentView.setDrawingCacheEnabled(false);
054      
055         mSensorManager = (SensorManager)getActivity().getSystemService(Context.SENSOR_SERVICE);
056      
057         mSensorInfoList = (ListView)mContentView.findViewById(R.id.listSensorInfo);
058          
059         mSensorInfoList.setOnItemClickListener( new OnItemClickListener() {
060              
061             @Override
062             public void onItemClick(AdapterView<?> arg0, View view, int index, long arg3) {
063                  
064                 // with the index, figure out what sensor was pressed
065                 Sensor sensor = mSensorList.get(index);
066                  
067                 // pass the sensor to the dialog.
068                 SensorDialog dialog = new SensorDialog(getActivity(), sensor);
069  
070                 dialog.setContentView(R.layout.sensor_display);
071
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值