Android 2.3.3 用のライブ壁紙を作成していますが、Visualizer クラスを使用しています。スタンドアロンとして動作するビジュアライザー プログラムの動作バージョンを既に取得していますが、コードをライブ壁紙サービスに配置すると、問題が発生します。次のコードは、エラーが存在する場所です。
// Called in my Engine extension's constructor
public void setupVisualizer()
{
mBytes = null;
mVisualizer = new Visualizer(0);
// EDIT
mVisualizer.setEnabled(false); // This fixes the issue
// END EDIT
mVisualizer.setCaptureSize(
Visualizer.getCaptureSizeRange()[1]); // IllegalStateException Thrown
mVisualizer.setDataCaptureListener() {
public void onWaveFormDataCapture(Visualizer visualizer,
byte[] bytes, int samplingRate) {
updateVisualizer(bytes);
}
public void onFftDataCapture(Visualizer visualizer,
bytes[] bytes, int samplingRate) {}
}, Visualizer.getMaxCaptureRate() / 2, true, false);
mVisualizer.setEnabled(true);
}
ここが奇妙な部分です。ライブ壁紙のリストを調べているときに、それをタップしてプレビューを表示すると、問題なく動作します。アクティブな壁紙として設定せずに、戻るボタンを押してからもう一度選択すると、クラッシュします。このプロセスを繰り返すことができますが、1 回おきにクラッシュするだけで、それ以外の場合は機能します。アクティブな壁紙として設定すると、毎回クラッシュします。