月別アーカイブ: 2011年8月

KarelogChecker

カレログというサービスが始まったらしいのですが、なかなか香ばしいサービスのようです。
とりあえず、カレログアプリというものをカレのスマートフォンにインストールするらしいので、カレログアプリというアプリをインストールされているかどうかだけをチェックするアプリとして作成してみました。
ほとんど練習問題というべきアプリです。

電源オンの時にチェックしたり、一定間隔でチェックしたりすることを考えたのですが、電源オンの時に実行するにはパーミションの取得が必要ですし定期実行にはAlarmサービスの実行が必要です。

そこで、特別なパーミションが必要ない充電ケーブル接続イベントで起動するようにしました。
起動してもやることはアプリケーションリストを取得してカレログアプリを捜すだけです。
捜した結果見つかった場合はノーティフィケーションを表示します。

アプリのランチャーにはアイコンが表示されませんから、他の人には簡単には見つからないでしょう。

カレログのサービスに書いてある説明に従えば、「必ず端末の所有者の許可を取ってから入れること」と書いてあるので勝手に入れられることは無いので、このチェッカーが活躍することはあり得ないので問題はないはずですね。
もしこのアプリで知らない間にインストールされたカレログが発見された場合は、本来カレログの意図しない使われ方をしていることになりますから、そういった不正利用を排除することはカレログ側にとってもメリットであるはずです。

iOSアプリUIWebViewのスクロールを止める

UIWebViewを使ってインタフェースを作りたいとき、ユーザの操作でスクロールされたりするのは困るので、スクロールやバウンスを止めたい時がある。

要するにWebViewのSubViewの中のUIScrollViewのBounceとScrollを止めればいい。

for (id subview in webView.subviews){
if ([[subview class] isSubclassOfClass: [UIScrollView class]]){
((UIScrollView *)subview).bounces = NO;
((UIScrollView *)subview).scrollEnabled = NO;
}
}
これでいける

RebootLogger バージョンアップ

再起動のログの表示が、昇順固定だったので、最新の再起動時刻を見ようとするとスクロールしなければならないのが面倒だというコメントがあったので、昇順・降順を切り替えるボタンを追加しました。
確かに有る程度以上量が増えてくると最新の時刻が表示から溢れてしまうので、見にくくなりますから降順での表示も有るといいですね。

アプリ内のHTMLファイルをWebViewで表示する

本ではWebViewについてほとんど触れてませんが、Google Maps JavaScript API V3を使うコラムで、WebViewを使うと書いてあります。

本文ではサーバを用意してそこから読み出すように書いていますが、サーバを用意するのは面倒なので、リソースとしてHTMLファイルや画像ファイルを用意して読み出したいと思うのは当然でしょう。

そういう場合は、WebViewクラスのloadUrlメソッドにURLとして “file:///android_asset/filename.html” の様に指定することでプロジェクトの中でassetsという名前のフォルダのファイルを参照することができます。

フォルダ名がassetsで参照がandroid_assetとsが無いのは、多分間違いが残ってしまったのでしょう、名前が異なるのが正しいので注意が必要です。

さて、問題はこのassetsフォルダーでは言語などを勝手には識別してくれないことです。

Android 2.2(API Level 8)以上であれば、file:///android_res/raw/filename.htmlという参照が可能で、/res/raw/フォルダなどにHTMLファイルを置くことで、言語やその他のリソース切り替え機構が動きます。

API Level5くらいから使えるのであれば、1.6以下を無視するという手がありますが、さすがにLevel7以下を無視するとXperiaまでが対象外になってしまいます。

そこで、先ほどのassetsフォルダを使う為にプログラム側で言語を切り替えて対応することを考えます。

日本語かどうかでページを分けたい場合、以下のようにすればよい様です。(HT-03A,IS01では旨く動きました)

WebView wv = (WebView)findViewById(R.id.webview);
if(Locale.getDefault().equals(Locale.JAPAN)){
wv.loadUrl(“file:///android_asset/ja-index.html”);
}else{
wv.loadUrl(“file:///android_asset/index.html”);
}
それぞれのファイルではリンク先はそれぞれの言語に応じたファイルにリンクすることになります。
HTMLファイルの中での参照ではすべてフラットな同じディレクトリ内に存在するので、ファイル名だけで参照可能です。逆に通常のページの様にディレクトリで階層を作ることはできません。

「基礎から学ぶAndroidアプリ開発」およびアプリのブログ

「基礎から学ぶAndroidアプリ開発」および私の開発しているアプリの為のブログを開設しました。

今のところ記事はないですが、記事の間違いが見つかったら何か書くかもしれません。

質問が来たら返事を書くかもしれません。

あまり期待しないでください。

本当はこのブログに何も書かずに済むのが一番いいのです。