カテゴリー
Android

空タグを置換する条件

Javaで空タグを置換する条件をメモ。

String str = "testvalue";
		String regex = "<([a-z]*?)\\s/>";
		Pattern p = Pattern.compile(regex);
		Matcher m = p.matcher(str);
		System.out.println(m.matches());
		String result = m.replaceAll("<$1></$1>");

今日はこれだけ!

カテゴリー
Android

AndroidのXMLPullParserで問題発生

こんばんは!rmascoです

Androidの開発やっていて、xmlをパースしたい時にみなさんはどんなモジュールを使用しますか?
今回は使用するのに簡単そうなXMLPullParserを選択してみました。

ただ、XMLPullParserを使っていて、一つだけハマったことがありました。

それは空タグ(空要素: <value />)が入っていると、そこでパースエラーになることです。

xmlrpcで通信して、xmlをパースしてなんてことをやっていて、
今までは普通にxmlをパースできていたので、すごく楽だななんて思っていたんです。

で、追加でMetaWeblog.getCategoriesを読んでみたら、エラーで落ちました。

E/ERRLOG(279): message: org.xmlpull.v1.XmlPullParserException: expected: START_TAG {null}value (position:END_TAG </value>@1:407 in java.io.InputStreamReader@43e6a5a8) 

最初はXMLが原因かと思い、返って来たXMLをバリデーションとかにかけてみたけどどう見ても正常。人間が見ても正常。

もうダメだと思った時に、@1:407って文字が気になりました。
これってXMLの行:列じゃないか・・・

さっそく407行目をみると、

<value />

これかーーーーーーーーーーー!

ネットでも同じようなことで悩んでる人もいるみたい。
わかりづらいです。

問題はここから。

サーバ側の処理は変更できない

どうしたものか。。。

やっぱり置換するしかないかあ〜 

カテゴリー
Android

Androidでライブ壁紙を作る時に気をつけること

おはようございます。rmascoです。

今日はAndroidでライブ壁紙という、動く壁紙を作る時につまずいた点があったので、
書き留めておきたいと思います。

さて、簡単に今回アプリの仕様を。
指定された時間ごとにサーバに画像を取りにいって、
取得した画像を背景に入れるというものです。

簡単に言ってしまえば、美人時計のようなものです。

りくどけい

今はきっちり画面に収まりますが、最初は画像の上が切れてしまっていました。
そこで、canvasのdrawBitmapの際に、topを100にしてみました。

canvas.drawBitmap(bitmap, 0, statusBarHeight, null);

そうすると少し上に余白ができて表示されました。
canvasはステータスバーの高さを加味してくれない。。。

というわけで、canvasにステータスバーの高さ分を余白として設定してやる必要があります。
さらにさらに。

なんとこのステータスバーは、機種(解像度)によって、大きさが変わってしまうということみたいです。
どうにかして取得できないかと探していると、こんな記事を見つけました。

ステータスバーのサイズを取得したい!: 迂闊な備忘録
StatusBarの高さを取得する | Android Wiki for Developers

これでステータスバーの高さがわかるので、それをdrawBitmapにセットしてやればOK。
わかっていれば確かにって思うけど、、、

お悩みの皆様の参考になれば。。。