我正在使用Android传感器. < sensor.h>拥有:
enum { ASENSOR_TYPE_ACCELEROMETER = 1, ASENSOR_TYPE_MAGNETIC_FIELD = 2, ASENSOR_TYPE_gyroscope = 4, ASENSOR_TYPE_liGHT = 5, ASENSOR_TYPE_PROXIMITY = 8};
当我在HTC Evo上使用ASensorManager_getSensorList转储传感器时,我得到:
SensorList: BMA150 3-axis Accelerometer (Bosh), 1SensorList: AK8973 3-axis Magnetic fIEld sensor (Asahi Kasei), 2SensorList: AK8973 OrIEntation sensor (Asahi Kasei), 3SensorList: CM3602 Proximity sensor (Capella Microsystems), 8SensorList: CM3602 light sensor (Capella Microsystems), 5
当我将枚举交叉到列表时,似乎传感器类型3是方向.
问题:方向传感器将始终为3型传感器吗?还是会根据制造商而改变?
编辑:这是华硕TF-101平板电脑的转储:
SensorList: MPL rotation vector (Invensense), 11SensorList: MPL linear accel (Invensense), 10SensorList: MPL gravity (Invensense), 9SensorList: MPL Gyro (Invensense), 4SensorList: MPL accel (Invensense), 1SensorList: MPL magnetic fIEld (Invensense), 2SensorList: MPL OrIEntation (Invensense), 3SensorList: lite-On al3000a AmbIEnt light Sensor (lite-On), 5
方向再次为3,但还有一些其他传感器.
编辑:这是Zeki TBQG 1084B平板电脑的转储:
SensorList: STK831x accelerometer (Sensortek) 1 10000 1.000000
没有方向性(只有1个传感器便宜,我猜它对于游戏而言).
解决方法:
枚举用于设备可以具有的传感器类型,并且每种类型在整个平台上应始终具有相同的数值.因此,无论设备类型或供应商是什么,如果它装有陀螺仪,则应始终将其报告为ASENSOR_TYPE_gyroscope,最后等于4.设备,很可能会在下一次固件更新左右修复.
这些值在每台设备上必须保持不变,否则您的应用将无法真正运行.如果类型不能统一,因为可执行二进制文件对数字值(而不是ENUM / defines)进行 *** 作,那么开发传感器将是一个巨大的痛苦.拥有ENUM的主要目的是使用它们而不是最终值,以使您的代码更具可读性.更清楚的是看到什么代码即
if( sensor == ASENSOR_TYPE_gyroscope )
比
if( sensor == 4 )
至于方向传感器及其缺少的ENUM条目-该传感器was deprecated in API8,现在建议您使用磁场传感器和加速度计来获得等效的功能(see example implementation),因此这很可能是它从ENUM中消失的原因.
总结以上是内存溢出为你收集整理的Android传感器类型3?全部内容,希望文章能够帮你解决Android传感器类型3?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)