I have a problem like this: My sensor works normally mostly. But sometimes sensor don't work on Samsung Galaxy Gio. May be this is about device specifications. In runtime I got this error but no crash produced. Just sensor does not work, my ball does not move via gravity which is created by sensor.
01-04 01:40:56.924: E/SensorManager(30236): registerListener :: handle = 0 name= BMA220 delay= 60 Listener= com.serefakyuz.com.utils.Engine@4a507950
01-04 01:40:56.924: E/SensorManager(30236): =======>>>Sensor Thread RUNNING <<<========
01-04 01:40:56.934: E/SensorHAL(30236): __data_data_open 31 32
01-04 01:43:03.376: E/SensorManager(30326): registerListener :: handle = 0 name= BMA220 delay= 60 Listener= com.serefakyuz.com.utils.Engine@4a507930
And it is the code which i refresh gravity:
@Override
public void onAccelerometerChanged(AccelerometerData pAccelerometerData)
{
float k = 10f;
Vector2 gravity = null;
if(mLevelScene.isWaterExist)
{
if((mLevelScene.ballPlayer.oAnimatedSprite.getX() > mLevelScene.waterCoordinates[0] && mLevelScene.ballPlayer.oAnimatedSprite.getX() < mLevelScene.waterCoordinates[0] + mLevelScene.water.oTextureWidth) &&
(mLevelScene.ballPlayer.oAnimatedSprite.getY() + 32 > mLevelScene.waterCoordinates[1] && mLevelScene.ballPlayer.oAnimatedSprite.getY() < mLevelScene.waterCoordinates[1] + mLevelScene.water.oTextureHeight))
{
gravity = Vector2Pool.obtain(pAccelerometerData.getX()*k, pAccelerometerData.getY()*k - ( (mLevelScene.ballPlayer.oAnimatedSprite.getY() - mLevelScene.water.oSprite.getY())*3/4 + 20));
mDampingCount = 2.0f;
}
else
{
gravity = Vector2Pool.obtain(pAccelerometerData.getX()*k, pAccelerometerData.getY()*k);
mDampingCount = 1.5f;
}
}
else
{
gravity = Vector2Pool.obtain(pAccelerometerData.getX()*k, pAccelerometerData.getY()*k);
mDampingCount = 1.5f;
}
mPhysicsWorld.setGravity(gravity);
Vector2Pool.recycle(gravity);
}