【发布时间】:2016-09-26 14:23:47
【问题描述】:
我两天前在 Google Play Store 上发布了一款使用运动传感器的游戏。该游戏是一款拳击手游戏,允许用户在摇晃智能手机时自动评估得分。为了评估分数,它使用 TYPE_LINEAR_ACCELERATION 传感器。
但问题是在我发布游戏后,一些用户发送了他们的分数。我看到,对于某些智能手机,很容易获得 900 分,而对于某些智能手机,很难获得 500 分。我的意思是,如果同一个用户在这个游戏中摇动(用同样的力量)不同的手机;对于 X 智能手机,他获得(例如)400 分,对于 Y 智能手机,他获得(例如)850 分。
为什么会出现这种不等式?
我理解(猜想)有些智能手机的评分较低,而有些智能手机的评分较高。
我的实现(大致)
sensorManager = (SensorManager) getActivity().getSystemService(Context.SENSOR_SERVICE);
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION), SensorManager.SENSOR_DELAY_FASTEST);
-
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_LINEAR_ACCELERATION) {
float[] values = event.values;
float x = values[0];//to get X - axis acceleration
//.......
//........
}
}
我可以分享我的申请链接,但是否允许?如果是,请说。我可以分享我的申请链接。
注意:我想解释我的算法,为了获得分数,我从传感器获得最大加速度并将最大值保存在变量中。用户点击显示分数按钮后,我乘以 40 得到分数。
【问题讨论】:
-
所有这些手机都使用不同的传感器,所以它们当然会有不同的延迟、振铃行为、灵敏度等。特别是它们会有不同的最大值——你可以加速的只有这么多加速度计在达到最大值之前,可能是你用较低的值限制了传感器。
-
这个问题的最佳方法。
-
规格表。不同的手机使用不同制造商的不同加速度计。即使在同一模型的两个实例之间也会有微小的差异,但在加速度计的两个不同模型之间,它们的最大值和灵敏度也会大不相同,因为它们的设计不同。
-
BTW
标签: android accelerometer sensors android-sensors