
1、加速度传感器又叫G-sensor,返回x、y、z三轴的加速度数值。
该数值包含地心引力的影响,单位是m/s^2。
将手机平放在桌面上,x轴默认为0,y轴默认0,z轴默认9.81。
将手机朝下放在桌面上,z轴为-9.81。
将手机向左倾斜,x轴为正值。
将手机向右倾斜,x轴为负值。
将手机向上倾斜,y轴为负值。
将手机向下倾斜,y轴为正值。
加速度传感器可能是最为成熟的一种mems产品,市场上的加速度传感器种类很多。
手机中常用的加速度传感器有BOSCH(博世)的BMA系列,AMK的897X系列,ST的LIS3X系列等。
这些传感器一般提供±2G至±16G的加速度测量范围,采用I2C或SPI接口和MCU相连,数据精度小于16bit。
2、例程:
public class MainActivity extends Activity implements SensorEventListener {
private static final String TAG = MainActivity.class.getSimpleName()
private SensorManager mSensorManager
private Sensor mSensor
private TextView textviewX
private TextView textviewY
private TextView textviewZ
private TextView textviewF
private int mX, mY, mZ
private long lasttimestamp = 0
Calendar mCalendar
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
textviewX = (TextView) findViewById(R.id.textView1)
textviewY = (TextView) findViewById(R.id.textView3)
textviewZ = (TextView) findViewById(R.id.textView4)
textviewF = (TextView) findViewById(R.id.textView2)
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE)
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)// TYPE_GRAVITY
if (null == mSensorManager) {
Log.d(TAG, "deveice not support SensorManager")
}
// 参数三,检测的精准度
mSensorManager.registerListener(this, mSensor,
SensorManager.SENSOR_DELAY_NORMAL)// SENSOR_DELAY_GAME
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor == null) {
return
}
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
int x = (int) event.values[0]
int y = (int) event.values[1]
int z = (int) event.values[2]
mCalendar = Calendar.getInstance()
long stamp = mCalendar.getTimeInMillis() / 1000l// 1393844912
textviewX.setText(String.valueOf(x))
textviewY.setText(String.valueOf(y))
textviewZ.setText(String.valueOf(z))
int second = mCalendar.get(Calendar.SECOND)// 53
int px = Math.abs(mX - x)
int py = Math.abs(mY - y)
int pz = Math.abs(mZ - z)
Log.d(TAG, "pX:" + px + " pY:" + py + " pZ:" + pz + " stamp:"
+ stamp + " second:" + second)
int maxvalue = getMaxValue(px, py, pz)
if (maxvalue > 2 && (stamp - lasttimestamp) > 30) {
lasttimestamp = stamp
Log.d(TAG, " sensor isMoveorchanged....")
textviewF.setText("检测手机在移动..")
}
mX = x
mY = y
mZ = z
}
}
/**
* 获取一个最大值
*
* @param px
* @param py
* @param pz
* @return
*/
public int getMaxValue(int px, int py, int pz) {
int max = 0
if (px > py && px > pz) {
max = px
} else if (py > px && py > pz) {
max = py
} else if (pz > px && pz > py) {
max = pz
}
return max
}
}
一、唤醒源
设备休眠后,通过触发唤醒源使设备恢复正常工作模式。设备唤醒源有多种,对于Android设备常见的就有PowerKey、来电唤醒、Alarm唤醒等。
唤醒源的实现处于内核空间,本文重点讨论下PowerKey作为唤醒源的具体实现。
二、PowerKey唤醒源
PowerKey唤醒设备的原理,本质其实就是中断。
PowerKey连接到CPU的一个输入(Input)引脚(Pin)上,该Pin运行在中断模式上。一旦PowerKey按下,引发Pin中断;而该中断具有唤醒CPU的功能,于是设备得以唤醒。
三、PowerKey对应的Pin
Configuration
和PowerKey相连的Pin的具体配置位于板级dts文件中,比如如下配置:
arch/arm/boot/dts/xxxxx.dts
power-key {
/** 是CPU的哪个Pin */
gpios = <&gpio0 GPIO_A5 GPIO_ACTIVE_LOW>
/** Key code */
linux,code = <116>
/** 起个名字 */
label = "power"
/** 该Pin具有wakeup的功能 */
gpio-key,wakeup
}
着重说下linux,code =
<116>,116怎么来的?
对于键盘,每一个按键都有唯一的编码,在Linux中,编码值位于:
input.h (kernel\include\uapi\linux)
/*
* Keys and buttons
*/
#define KEY_RESERVED 0
#define KEY_ESC 1
#define KEY_BACKSPACE 14
#define KEY_TAB 15
#define KEY_POWER 116 /* SC System Power Down */
可知,PowerKey的编码也在该文件中,且编码值为116;一旦按下PowerKey,该值作为键值传到input_event结构体的code成员变量中:
input.h (kernel\include\uapi\linux)
/*
* The event structure itself
*/
struct input_event {
struct timeval time
__u16 type
__u16 code
__s32 value
}
之后我们会写个Linux应用程序读取code值。
G-sensor中文是重力传感器的意思(英文全称是Gravity-sensor)。
G-sensor能够感知到加速力的变化,加速力就是当物体在加速进程中作用在物体上的力,比如晃动、跌落、上升、降落等各种移动变化都能被G-sensor转化为电信号,然后通过微处理器的计算分析后,就可以够完成程序设计好的功能。
此功能是行车记录仪的传感器检测到车辆紧急制动时,会把那一时间段的录像单独保存,不会自动删除,G-Sensor的高中低是指其传感器的敏感度。
行车记录仪即记录车辆行驶途中的影像及声音等相关资讯的仪器。安装行车记录仪后,能够记录汽车行驶全过程的视频图像和声音,可为交通事故提供证据。喜欢自驾游的人,还可以用它来记录征服艰难险阻的过程。
开车时边走边录像,同时把时间、速度、所在位置都记录在录像里,相当“黑匣子”。也可在家用作DV拍摄生活乐趣,或者做为家用监控使用。平时还可以做停车监控,安装行车记录仪,视频资料不可以裁剪,如果裁剪,在责任事故无法提供帮助。
扩展资料:
G-sensor作用
G-sensor中文是加速度传感器的意思,它能够感知到加速力的变化,加速力就是当物体在加速过程中作用在物体上的力,比如晃动、跌落、上升、下降等各种移动变化都能被G-sensor转化为电信号,然后通过微处理器的计算分析后,就能够完成程序设计好的功能。
比如MP3能根据使用者的甩动方向,前后更换歌曲,放进衣袋的时候也能够计算出使用者的前进步伐。
个别高端笔记本例如IBM高端系列也内置了G-sensor,在感知发生剧烈加速度时(如开始跌落),立即保护硬盘,避免硬盘损害。
简单的说,G-Sensor是智能化重力感应系统,应用在硬盘上可以检测当前硬盘的状态,当发生意外跌落时,会产生加速度,硬盘感应到加速度,磁头就会自动归位,使盘体和磁头分离,防止在读写 *** 作的时候受到意外的冲击,从而有效的保护硬盘。
行车记录仪的功能:
1、维护司机的合法权益,对横穿公路的行人及骑自行车、摩托车的,万一和他们产生了刮碰,有可能会被敲诈勒索,如果有了行车记录仪,司机可为自己提供有效的证据。
2、将监控录像记录回放,事故责任一目了然,交警处理事故快速准确;既可快速撤离现场恢复交通,又可保留事发时的有效证据,营造安全畅通的交通环境。
3、如果每辆车上都安装行车记录仪,司机也不敢随便违章行驶,事故发生率也会大幅度下降,肇事车辆都会被其他车辆的行车记录仪拍摄下来,交通肇事逃逸案将大大减少。
4、法院在审理道路交通事故案件时,在量刑和赔偿上将更加准确和有据可依,也给保险公司的理赔提供了证据。
5、碰到专业碰瓷的和拦路抢劫的,行车记录仪将可以提供破案的决定性的证据:事故发生现场和案犯的外貌特征等。
6、喜欢自驾游的朋友,还可以用它来记录征服艰难险阻的过程。开车时边走边录像,同时把时间、速度、所在位置都记录在录像里,相当于“黑匣子”。
7、可在家用作DV拍摄生活乐趣,或者做为家用监控使用。平时还可以做停车监控。
8、由于新闻记者工作者并非先知者,俄罗斯陨石坠落的新闻,几乎全部是记录仪将画面记录下来。
参考资料来源:百度百科-G-sensor
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)