作ったライブ壁紙(livewallpaper)は、ひとまず動くことになりました。
キャラクターデザインができていないのでまだお見せできるような代物でないんですが・・・
(画面キャプチャを撮るのもめんどくさい。WindowsPCならASM使ってすぐなんですけど・・・Ubuntuなら素直にddms使えばいいのか)

一番最初に動いた時からどこを変えたかというと、背景色をプログラムで塗っていたんですが、やっぱり好きで設定している壁紙を表示してその上にライブ壁紙を表示したいと思って、設定している壁紙を取得して再描画する方法に変更しました。

【変更前】
『キャンバス描画の処理(キャラクタ描画前)』
Canvas c = null;

c.drawColor(Color.rgb(220, 255, 0));

【変更後】
『コンストラクタ内の処理に追加』
private Bitmap img0;
//壁紙を取得
BitmapDrawable wallpaper = (BitmapDrawable) getWallpaper();
img0 = wallpaper.getBitmap();

『キャンバス描画内の処理(キャラクタ描画前)』
//壁紙描画
c.drawBitmap(img0, 0, 0,null);


あと課題として残っているのは、
1.画面をタップしたときの処理の追加
 (onToucheventに書けばいいのかなぁ)
2.Window表示時のアニメーションの停止処理の追加
 (onVisibilityChangedメソッドでアニメーション停止したらバッテリ長持ちするのかな。)

今すぐ思いつくのはこの辺かなぁ








前回の記事のthread exiting with uncaught exceptionについて調べました。
原因は、Androidmanifest.xmlのserviceタグのandroid:nameにプロジェクト名を記入していることが原因でした。
正しくクラス名に変更したところ正常に起動し、解決しました。



もうちょっと詳しく書くと。。。

メニューバーの「ウィンドウ」→「ビューの表示」→「その他」→「Android」→「LogCat」を選択し、OKボタン押下。LogCatを表示していました。
thread exiting with uncaught exceptionがWarningで表示されており、その後、ClassNotFoundのErrorメッセージが表示されていたことが解決の糸口となりました。

LiveWallpaperを作ったのでエミュレータにインストールし、ライブ壁紙を設定したところ
「WARN/dalvikvm(219): threadid=3: thread exiting with uncaught exception (group=0x4001b188)」
って出ました。


FXer太郎のブログ

FXer太郎のブログ

FXer太郎のブログ


何これ?食えるの?
ハンドラーにNullでも渡しているのか?
ぐぐってみたところ、マニフェストファイルに間違いがあるのかも?

今日のところはこれぐらいで勘弁しておいてやろうかな