我有以下要求 - 当我将手机向右倾斜时,A队得1分,当我将手机向左倾斜时,B队获得1分,我使用给定的代码:
public class MainActivity extends Activity {
private SensorManager mSensorManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
}
private final SensorEventListener mSensorListener = new SensorEventListener() {
public void onSensorChanged(SensorEvent se) {
float x = se.values[0];
float y = se.values[1];
float z = se.values[2];
if((double)Math.round(x * 100000) / 100000>8.00000){
Log.d("sensor", "=====LEFT====");
}
else if((double)Math.round(x * 100000) / 100000 <-8.00000){
Log.d("sensor", "=====RIGHT====");
}
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(mSensorListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onPause() {
mSensorManager.unregisterListener(mSensorListener);
super.onPause();
}
}
使用此代码,当我将手机向右倾斜时,&#34; ===== RIGHT ====&#34;由于onSensorChanged的连续发射是连续打印的,这是显而易见的;左边也是如此。我需要以某种方式使用一种方法,通过该方法我只考虑两个方向上的第一个onSensorChanged并增加A队和B队的相应得分变量。这将帮助我使计算正确,这样对于一个方向的给定倾斜,该值仅增加一次。
感谢任何帮助。
答案 0 :(得分:1)
你可能想要一台小型状态机。一开始,你处于直立状态。如果您检测到足够的倾斜,则给出正确的团队1点并移动到倾斜状态。当你处于倾斜状态时,任何团队都不会获得积分,但你会寻找直接返回的设备。如果你看到了,你将它移回直立状态。重复。