編輯:Android開發教程
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方向則沒有上述限制。
本文上半部出處:http://blog.csdn.net/henry000/archive/2010/11/02/5980867.aspx
另外,G-sensor工作流程是什麼樣的呢?
1.使G-sensor正常工作需要做的事:
G-sensor driver文件包括:
driver/i2c/chips/lis331dl.c
driver/i2c/chips/sensorioctl.h
include/linux/lis331dl.h
並在/kernel/arch/arm/mach-s3c6410/mach-ur6410.c文件中i2c chanel1的結構變量i2c_devs1[] __initdata中需要添加G-sensor的設備信息,
查找時會根據harware.c中定義好的sensor.*.so的擴展名的順序查找,找到第一個匹配的時候即停止,並將該sensor.so中定義好的一個全局變量HAL_MODULE_INFO_SYM帶回。該變量包含的一個
重要信息是它的一個成員結構變量中包含的一個函數指針open,該指針所指函數會對一個device結構變量賦值,從而帶出sensorService.cpp 和sensorManager.cpp與sensor通信所需要的全部信息。
device結構變量有兩種變體分別供sensorService.cpp和sensorManaer.cpp使用。其中主要是一些函數指針指向與sensor通信的函數。
sensorService.cpp和sensorManager.cpp在得到HAL_MODULE_INFO_SYM結構後都會調用 sensors.h的inline函數open()通過HAL_MODULE_INFO_SYM的open函數指針將所需的device信息取回。
系統在啟動activityManager.java時,它會啟動sensorManager.java,它也會調用hardware.c中的方法hw_get_module()帶回HAL_MODULE_INFO_SYM。
 
不得不承認,這是個高效率的時代!從刷機精靈微博了解到,上周五,Google發布了Android4.4的源碼,這不,剛過了一天,Nexus 4機型的4.4 ROM就已經率先
一 相關下載(1) java JDK下載:進入該網頁: http://java.sun.com/javase/downloads/index.jsp 如下圖:選擇 Dow
Android 程序調試工具 Google為我們提供的代碼調試工具的亮點:traceview和 dmtracedump 。有了這兩個工具,我們調試程序分析bug
Android app性能測試總結(持續更新中)1.性能測試的幾個指標: