私は最初のライブ壁紙を制作中です。私はサンプルCubeWallpaperのコードから始めて、変更しています。今のところはうまくいっていますが、私は今では全く別のアニメーショングラフィックを描いています。ライブ壁紙から傾斜センサーを読み取る
これで、私のグラフィックスが電話機の傾きの程度に応じることを望みます。私は壁紙アプリではない前に傾斜センサーを実装しています。しかし、壁紙にチルティングコードを含めると、onSensorChanged()
メソッドが呼び出されるようには見えません。少なくとも、ログメッセージはlogcatには表示されません。
私がよく分からないことは、implements SensorEventListener
をどこに追加するかです。 WallpaperService
またはその子クラスであるEngine
を拡張するのは私のクラスにすべきでしょうか?実際、私はそれを両方の方法で試してみましたが、どちらもうまくいきませんでした。チルトを稼働させるために必要な余分なことはありますか?
EDIT:は現在、私はimplements SensorEventListener
がEngine
を拡張するクラスに追加されていることを推測していますので、次のように私のコードの要旨は次のとおりです。
EDIT:は、どのスレッドとは何かだろう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;
}
}
}
}
}
EDIT:問題を解決しました。どのように恥ずかしい - 私は単に私のsensorManagerのregisterListenerを呼び出すことを忘れてしまった。
あなたの最終的な編集をあなた自身の質問への回答として追加してください。あなたはもっとブラウジングポイントを得ることができます! –