4

我正在制作我的第一张动态壁纸。我从示例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。

4

1 回答 1

0

(在食人魔的建议下……)

问题解决了。多么尴尬 - 我只是忘记为我的 sensorManager 调用 registerListener。

于 2012-05-10T23:27:12.647 回答