私は最初のライブ壁紙を作成中です。サンプル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 を呼び出すのを忘れていました。