我是android开发的新手。我正在创建一个简单的应用程序,只要更改传感器,该应用程序就会移动位图。我正在使用传感器TYPE_ACCELEROMETER
但是问题是位图移动得太快,即使传感器略有变化,位图也会在一处晃动。我想要的只是延迟onSensorChange返回值
所以请帮我
这是我的SensorManager代码
public Can(Context context) {
// TODO Auto-generated constructor stub
super(context);
ourHolder = getHolder();
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "hi");
sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
if (sm.getSensorList(Sensor.TYPE_ACCELEROMETER).size() != 0) {
Sensor s = sm.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0);
sm.registerListener(this, s, SensorManager.SENSOR_DELAY_GAME);
}
ball = BitmapFactory
.decodeResource(getResources(), R.drawable.ball);
test = BitmapFactory.decodeResource(getResources(),
R.drawable.ic_launcher);
ClockStart = (float) System.currentTimeMillis();
ballwidth = ball.getWidth();
ballheight = ball.getHeight();
}
这是onSensorChange的作用
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
try {
Thread.sleep(16);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sensorY = event.values[0];
sensorX = event.values[1];
}
任何帮助将不胜感激
最佳答案
那绝对不是你想做的。实际上,这会引起重大问题。如果绘图过于频繁,您想要做的就是跳过对onSensorChanged的调用。如果您对微小的晃动有反应,则仅在变化大于一定量时才设置sensorY和sensorX。
顺便说一下,加速度计很吵。即使放置在平坦,稳定的表面上,它也会略微跳动。您需要期待这种情况的发生。
关于android - 如何在Android中延迟onSensorChange,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22496489/