我正在制作我的第一张动态壁纸。我从示例CubeWallpaper中的代码开始并修改它。到目前为止,情况一直很好,我现在正在绘制我自己的,完全不同的动画图形。
我现在希望我的图形能够响应手机的倾斜程度。我之前在非壁纸应用程序中实现了倾斜传感器。但是当我尝试将我的倾斜代码包含在壁纸中时,onSensorChanged()
方法似乎不会被调用 - 至少我的日志消息永远不会出现在logcat中。
我不确定的一件事是在哪里附加implements SensorEventListener
。是扩展WallpaperService
还是扩展Engine
的子类?我的班级应该是这样吗?实际上我已经尝试了两种方式 - 而且似乎都不起作用。是否还需要一些额外的工作才能使倾斜工作?
编辑:目前我猜测implements SensorEventListener
附加到扩展Engine
的类,因此我的代码的要点如下:
编辑:这可能与运行SensorEventListener的线程有关吗?我在某处读到它需要在UI线程上。
public class MicksWallPaper extends WallpaperService
{
// blah blah
class MyWallPaper extends Engine implements SharedPreferences.OnSharedPreferenceChangeListener , SensorEventListener
{
SensorManager sensorManager = null;
onCreate()
{
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
}
public void onSensorChanged(SensorEvent event)
{
Log.i("wp:","onSensorChanged"); // I never see this message
synchronized (this)
{
switch (event.sensor.getType())
{
case Sensor.TYPE_ORIENTATION:
pitch = event.values[1];
Log.i("pitch=",""+pitch);
break;
}
}
}
}
}
编辑:问题已解决。多么尴尬 - 我只是忘记为我的sensorManager调用registerListener。
答案 0 :(得分:0)
(根据Ogre的建议......)
问题解决了。多么尴尬 - 我只是忘记为我的sensorManager调用registerListener。