我们正在为可穿戴应用程序使用TYPE_LINEAR_ACCELERATION TYPE_GRAVITY传感器事件值,但对于sony智能手表3,由于缺少这两个传感器,我们的应用程序无法提供兼容性。
官方医生说
Android开源项目(AOSP)提供了三个基于软件的运动传感器:重力传感器、直线加速度传感器和旋转矢量传感器。这些传感器在Android4.0中进行了更新,现在使用设备的陀螺仪(除了其他传感器)来提高稳定性和性能。如果您想尝试这些传感器,可以使用getVendor()方法和getVersion()方法来识别它们(供应商是Google .;版本号为3)。根据供应商和版本号识别这些传感器是必要的,因为Android系统认为这三个传感器是次要传感器。例如,如果设备制造商提供自己的重力传感器,那么AOSP重力传感器就会显示为第二重力传感器。所有这三个传感器都依赖于陀螺仪:如果设备没有陀螺仪,这些传感器就不会出现,也无法使用。
所以我的问题是,如果OEM没有为这三个基于软的传感器提供主要支持,那么是否有一种使用AOSP的方法。我不知道如何使用它们,就像文档中提到的那样,它只是说要使用getVendor() getversion(),它只检查谁是供应商以及版本是什么。另一种方法是使用过滤器从陀螺仪值中获取这些重力和线性加速度值,但我不知道如何做到这一点,以及使用它的注意事项是什么。
PS。LG G手表和Moto 360确实提供了这些传感器,我还检查了供应商从getVendor方法,它的EM微型索尼和Invensense为G手表。谷歌公司在G手表上也没有
发布于 2016-05-31 23:05:15
请参考这个问题ACCELERATION
由于某些原因,“线性加速度”和“重力”传感器在索尼智能手表3上没有正常工作。你可以使用加速度传感器来获得加速度,使用低通滤波器得到重力值,并减去重力值以得到“线性加速度”。请参考下面的代码示例。
public void onSensorChanged(SensorEvent event){
// In this example, alpha is calculated as t / (t + dT),
// where t is the low-pass filter's time-constant and
// dT is the event delivery rate.
final float alpha = 0.8;
// Isolate the force of gravity with the low-pass filter.
gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];
// Remove the gravity contribution with the high-pass filter.
linear_acceleration[0] = event.values[0] - gravity[0];
linear_acceleration[1] = event.values[1] - gravity[1];
linear_acceleration[2] = event.values[2] - gravity[2];
}https://stackoverflow.com/questions/31989516
复制相似问题