900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > android重力传感器

android重力传感器

时间:2019-07-03 21:33:52

相关推荐

android重力传感器

使用背景:拍照后相机要求把照片摆正,不论手机拍摄时旋转成什么样子,始终能从照片的方向中,选出较合适的方向作为图片方向来存储图片。

1:使用方向判断时用了加速度传感器

假设这个是手机屏幕,红色代表设备上边,黄色下边,蓝左绿右。

若黄边贴在地面把设备与桌面垂直,则y值约为9.8(重力加速度,下同),红边贴地面,把设备与桌面垂直,y约为-9.8,通过这个,可以判断设备是正是倒的,也就是旋转0度还是180。

若蓝边贴在地面把设备与桌面垂直,x值约为9.8,反之,绿边贴桌,x约为-9.8,通过这个我们可以判断设备翻转了90度或270度

屏向上,z值约9.8,屏向下,z值约-9.8.这个,就我做的拍照功能而言,没什么用,现在都两个摄像头了,很少有人把手机横着这样拍,尤其是横着还翻过来,这个可以不调整方向。

2:判断是否进行摇一摇用了加速度传感器

另外,加速度传感器还可用于判断是否进行摇一摇:

这段代码来自:/blog/1243423

public void onSensorChanged(SensorEvent event) { long currentTime = System.currentTimeMillis(); long diffTime = currentTime - mLastUpdateTime; if (diffTime < UPDATE_INTERVAL) return; mLastUpdateTime = currentTime; float x = event.values[0]; float y = event.values[1]; float z = event.values[2]; float deltaX = x - mLastX; float deltaY = y - mLastY; float deltaZ = z - mLastZ; mLastX = x; mLastY = y; mLastZ = z; float delta = FloatMath.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ) / diffTime * 10000; if (delta > shakeThreshold) { // 当加速度的差值大于指定的阈值,认为这是一个摇晃 this.notifyListeners(); } }

我的理解是,x,y,z是三坐标方向上的加速度,deltaX,deltaY,deltaZ是在三坐标方向上变化的加速度,delta是某段时间内的两点距离的加速度变化平均值,如果加速度变化超过某个值,则认为进行了一次静止到加速或加速到静止的过程,及认为进行了摇晃。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。