AndroidのTextViewをスクロール可能にする

かなりハマったので今後のために覚書。

TextViewをスクロール可能にするにはScrollViewの入れ子にすれば良い。しかし、それだけだとテキストが短くて画面の途中までしかない場合、たとえ"fill_parent"と指定していてもTextViewの領域はその分しか確保されない。(赤い部分はScrollView)

 

見た目だけなら背景色を合わせれば良いだけなのだが、コンテキストメニューを使いたい場合に問題となる。
この場合、ScrollViewのプロパティで"Fill viewport"をtrueに設定すればTextViewのサイズがScrollViewと同じになり問題は解決する。

 

今のところ、TextViewをScrollViewより小さくする必要性が考えられないので、とにかくTextViewをスクロール可能にするにはScrollViewの入れ子にして、かつScrollViewのプロパティで"Fill viewport"をtrueに設定すること。

| | コメント (2) | トラックバック (0)

Androidで航空気象情報

WindowsとWindows Mobile向けに作ってあった航空気象情報(METARとTAF)を表示するソフト。その名もほぼまんまのMetarTaf。使用頻度は低かったけど、一応Android版も作ることにした。

TAFは短期予報を表示するようにしていたのだが、どの空港も2008年11月からまったく更新されていない。おかしいと思って調べたら、以前は短期予報と長期予報に分かれていたものが統一されたらしい。3年半もの間気づいていなかった。(^_^;

それ程に使用頻度が低いのだが、今回は風用のページを設けてグラフィカルに表示するようにしてみた。ついでに風速によって矢印の色が変わるようにも。

さーて、Windows版の方にもフィードバックして修正せねば。

このアプリはAndroidマーケットには登録しておりません。使ってみたいという方は左のリンクからホームページに行って、SOFTWAREのページからどうぞ。

| | コメント (0) | トラックバック (0)

天気予報ウィジェット

docomoのAndroidスマートフォンSH-12Cで表示する天気予報ウィジェットを作ってみた。3時間毎の予報と週間予報を表示できる。

天気予報のRSSを配信しているところはいくつかあるが、ウェザーマップというところのが3時間毎の予報や週間予報に降水確率まであって内容が充実している。いや充実していると言うよりは不要なデータまで入っていて天気予報RSSとしてはデータサイズがかなり大きい。
携帯端末で利用するにはこのデータの大きさは難点なのだが、降水確率が載っているのは他に無さそうだったのでここのデータを使うことにした。必要なデータだけならそれ程でもないんだけどなぁ。

このアプリはAndroidマーケットには登録しておりません。使ってみたいという方は左のリンクからホームページに行って、SOFTWAREのページからどうぞ。

| | コメント (0) | トラックバック (0)

UI部品の汎用部品化

AndroidでViewから派生して作った独自UI部品をWindowsのActiveXのような感じで複数のアプリから利用出来るようにするするにはどうすれば良いのか?
公式ドキュメントは英語だし、和訳しているサイトを参照しても詳しい記述が見つけることができなかったが、ネットで探し回ってやっと方法がわかった。

以下がその方法で、今後のための備忘録。


汎用部品とする側

・使わないアイコンやレイアウトといったリソースをすべて削除する。
・AndroidManifestからapplication以下を削除する。

・プロジェクトを右クリックしてエクスポート → JAR File → 下記のように設定して適当なフォルダにエクスポートする。


使う側

・プロジェクトのプロパティを開いて、Java Build Pathノード、LibrariesタブでAdd External JARsをクリックして使用するJAR Fileを選択する。

・クラスをインポートする。


別々のアプリで利用した状態

 

| | コメント (0) | トラックバック (0)

ACTION_DATE_CHANGEDは使えない?

WindowsとWindowsMobile用に作った日CAL之助をAndroidに移植する作業をしている。
このアプリはホーム画面上のアプリウィジェットで日付を表示し、これをタッチするとカレンダーが起動するようになっている。当然だが、日付が変わったタイミングでウィジェットの表示を更新する必要がある。

幸いなことにAndroidには日付が変わったらACTION_DATE_CHANGEDというメッセージを飛ばしてくれる仕組みがあるので、それを受信したタイミングで表示を更新すれば良い。と普通は考える。

移植作業に取り掛かった当初、当然のようにこのACTION_DATE_CHANGEDで更新するようにした。
エミュレーターのホーム画面にウィジェットを貼っておいて、時刻を23時58分にセットすれば約2分後には更新されるはず。そう思っていた。しかし0時になって日付が変わってもウィジェットの表示が更新されない。何度やってもう駄目だった。
仕方が無いのでAlarmManagerを使って更新する方法をとっていた。

しかし、どうも釈然としない。何処か間違えていたのではないかとも思えてきた。
そこで再度ACTION_DATE_CHANGEDで更新するように変えてエミュレーターで動かしてみたところ今度は正常に動作した。次に実機に入れて、時刻を弄ったりはせず実運用の形態で様子を見る。すると深夜0時になるとちゃんと更新された。だが1回だけでは安心できない。翌日も深夜0時になるとちゃんと更新された。
やはり最初のは何処か間違えていたのだろうと思った。しかし念のためもう1日様子を見ることにした。そして翌日の深夜。なんと0時を過ぎても更新されない。数分待ってもいっこうに変わらない。勿論この間は連続運用であってコードに一切変更はない。

エミュレーターに戻ってログを見るとACTION_DATE_CHANGEDが来なくなっていた。と言うか時刻を23時58分とかにセットして設定ボタンをクリックしたタイミングでACTION_DATE_CHANGEDが来ていた。
どうもAndroidのバグのような気がしてならない。もっともAndroidアプリの開発は始めて間もないので確かなことは言えないが、何れにせよ来るべき時に来たり来なかったりでは使えない。結局AlarmManagerで対処することに落ち着いた。

| | コメント (0) | トラックバック (0)

Wi-Fiと3Gを切り替える

WILLCOMのW-ZERO3[es]からdocomoのandroidスマホに切り替えてからもうじき7ヶ月。
W-ZERO3[es]ではデータ通信速度があまりにも遅すぎて、外でNOTAMを見るのにイライラさせられたためでした。とは言え、今ではそのNOTAMを見る機会もまったく無いのですが・・・

データ通信を頻繁に使うわけではないのでパケ・ホーダイ フラットは契約しておらず、家にいる時はWi-Fiにして外出時には3Gに切り替えるということをしています。
しかし、この切り替えにいちいち設定画面を開いて操作するのが面倒なので簡単にWi-Fiと3Gを切り替えられるアプリをandroidマーケットで探してみたのですがなかなか希望のものが見つかりませんでした。

なので、無いものは作ってしまえ。と、ワンタッチでWi-Fiと3Gを切り替えるアプリ・ウィジェットを作ってみました。

 

このアプリはホームページに置いてありますがandroidマーケットには登録しておりません。androidマーケットに登録するには$25払わなければなりませんから。今の為替レートで\2000位でしょうか。アプリを提供する側がお金を払う必要があるなんてどうかしてるぜ!です。
巷ではandroidマーケット以外で公開されているものを『野良アプリ』と呼んでるようですが、野良でも良いから使ってみたと言う方は左のリンクからホームページに行って、SOFTWAREページからどうぞ。


2013/03/06 追記
バージョンアップして、アイコンをタッチした時にデータ通信モードが切り替わるまでの間、別のイメージを表示するようになりました。

| | コメント (40) | トラックバック (0)