4

私は最初のライブ壁紙を作成中です。サンプルCubeWallpaperのコードから始めて、それを変更しています。これまでのところ順調に進んでおり、現在はまったく別の独自のアニメーション グラフィックを描いています。

グラフィックが携帯電話の傾きに反応するようになりました。壁紙以外のアプリで以前に傾斜センサーを実装しました。しかし、傾斜コードを壁紙に含めようとすると、onSensorChanged()メソッドが呼び出されないように見えます.少なくともログメッセージはlogcatに表示されません.

よくわからないことの 1 つは、. をどこに追加するかimplements SensorEventListenerです。拡張するクラスまたは拡張WallpaperServiceするその子クラスにする必要がありEngineますか?..実際、私は両方の方法で試しましたが、どちらも機能していないようです。チルトを機能させるために必要な追加の操作はありますか?

編集:implements SensorEventListener現在、が extends に追加されていると推測している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 に答える