车载碰撞和侧翻算法实现
来源:互联网 发布:php字符串截取 substr 编辑:程序博客网 时间:2024/05/16 09:47
车载的侧翻算法根据上面的公式实现,而碰撞时根据三个方向的加速度的值。主要利用了传感器的onSensorChanged来实现。
package com.leadcore.edr.packet;import java.util.*;import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import java.lang.Math;import android.util.Log;public class GSensorService { private static final String TAG = "GSensorService"; private Context mContext = null; private boolean mIsRolloverWarning = false; private boolean mIsCrashWarning = false; public GSensorService(Context context) { mContext = context; } private final SensorEventListener mSensorListener = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { if (Sensor.TYPE_ACCELEROMETER == event.sensor.getType()) { float xAxis = event.values[0]; float yAxis = event.values[1]; float zAxis = event.values[2]; float max_accelerometer = GlobalData.getCrashacceleration() * SensorManager.STANDARD_GRAVITY / 10; boolean isOverAccelerometer = Math.abs(xAxis) > max_accelerometer || Math.abs(yAxis) > max_accelerometer || Math.abs(zAxis) > max_accelerometer; if (isOverAccelerometer && !mIsCrashWarning) { mIsCrashWarning = true; GlobalData.setWarningFlag(JTT808.MSG_WARN_CRASH_WARN); Log.i(TAG, "crash warning."); } else if (!isOverAccelerometer && mIsCrashWarning) { mIsCrashWarning = false; GlobalData.ClearWarningFlag(JTT808.MSG_WARN_CRASH_WARN); } double rad2 = Math.atan(xAxis / Math.sqrt(yAxis * yAxis + zAxis * zAxis)); double degree2 = Math.toDegrees(rad2); int max_degree = GlobalData.getCrashDegree(); if (Math.abs(degree2) >= max_degree && !mIsRolloverWarning) { mIsRolloverWarning = true; GlobalData.setWarningFlag(JTT808.MSG_WARN_ROLLOVER); Log.i(TAG, "Roll over warning."); } else if (Math.abs(degree2) < max_degree && mIsRolloverWarning) { GlobalData.ClearWarningFlag(JTT808.MSG_WARN_ROLLOVER); mIsRolloverWarning = false; } } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // Not used. } }; private void registerListener() { SensorManager sm = (SensorManager)mContext.getSystemService(Context.SENSOR_SERVICE); sm.registerListener(mSensorListener, sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL); } public void start() { registerListener(); }}
1 0
- 车载碰撞和侧翻算法实现
- 翻手算法--php实现
- 碰撞检测算法:点和矩形碰撞、点和圆形碰撞、矩形碰撞、圆形碰撞
- 碰撞检测算法:点和矩形碰撞、点和圆形碰撞、矩形碰撞、圆形碰撞
- 碰撞检测算法:点和矩形碰撞、点和圆形碰撞、矩形碰撞、圆形碰撞
- 碰撞检测算法:点和矩形碰撞、点和圆形碰撞、矩形碰撞、圆形碰撞
- 碰撞检测算法:点和矩形碰撞、点和圆形碰撞、矩形碰撞、圆形碰撞
- 碰撞检测算法:点和矩形碰撞、矩形碰撞
- 基于读取车载RFID标签自动开关车库门c#算法实现
- as3炮弹飞行和碰撞算法
- PHP+jQuery实现翻板抽奖(中奖概率算法)
- 游戏碰撞之OBB算法实现(java代码实现)
- 翻手算法
- 贪心算法-翻硬币
- 矩形旋转碰撞,OBB方向包围盒算法实现
- 矩形旋转碰撞,OBB方向包围盒算法实现
- 矩形旋转碰撞,OBB方向包围盒算法实现
- 矩形旋转碰撞,OBB方向包围盒算法实现
- ReactiveCocoa基本组件:理解和使用RACCommand
- cerr与cout的区别
- TeamForge学习笔记2-流程管理
- 黑马程序员 Java中什么是接口回调?
- 要有足够的耐心
- 车载碰撞和侧翻算法实现
- 【SDUTOJ 3323】 园艺问题 (离散化+线段树+离线数据处理)
- 黑马程序员 java反射详解
- Android0917<二十一>(自定义的View、绘制简单图形、Bitmap)(二)
- 黑马程序员 java枚举使用详解
- LeetCode——Two Sum
- Android-ListActivity单击事件的响应
- Android 自定义View——Path的使用
- JSON与XML的区别比较