从动态壁纸读取倾斜传感器

时间:2012-05-10 12:07:42

标签: java android eclipse

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

1 个答案:

答案 0 :(得分:0)

(根据Ogre的建议......)

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