SDK

AndroidとORM その2

コメントで指摘頂いたものも含めてandroidで使えるORMに関してもう少し集約してみる。 ormlite(http://ormlite.com/) SQLiteを使うオーソドクスなORM。恥ずかしながら知らなかったが、ディスカッションも活発であり期待ができそうだ。 ORMLite Users | Googl…

AndroidとORM

androidでORM(Object-relational mapping(mapper))を使うこと考えた場合、どのような選択があるのだろう。 ContentProvider 正確にはORMではないが、FileやSQLiteデータベースをオブジェクトとしてアプリケーションから操作できるという意味では、ORMと呼ん…

テストの自動化

androidのユニットテストはどこまで自動化できるんだろう。Testing Fundamentals | Android Developers Android Mock - A Mocking Framework for the Dalvik VM Testing on Android - SlideShare時間が出来たらちょっと調べてみたいな。

汎用的なStatusLineを作る - part3

次はタイトル(Title)を使ったステータスラインの実装だ。元々こちらの機能をメインに考えているが、いろいろと仕掛けが必要だ。 Titleとは? 以前にもこの日記でとり上げたことがあるが、androidにおけるActivityはデフォルトで"android.R.id.title"というID…

汎用的なStatusLineを作る - part2

まずは簡単な方、トーストを使ったステータスラインの実装からだ。 といっても何も難しいことは無い。インタフェースでやりたいことをToastを使って実装するだけだ。 ToastStatusLine.java public class ToastStatusLine implements IStatusLine { protected…

汎用的なStatusLineを作る - part1

GUIを用いるOS、アプリケーションでは現在の状態や必要な情報を次々に表示している領域が必要だ。いわゆるステータスバーと呼ぶ領域だが、androidの場合時刻やWi-fi、3G通信の状態やバッテリー消費状況のアイコンを表示したりNotificationと呼ばれる通知領域…

Android 2.3.3 Platform ちょこっとまとめ

この間出た3.0にはまだく触れることができないでいるのに、2.3系も一つ上がって2.3.3。なんか最近ついていけないぞ。以下、私の英語訳は自分の勉強を兼ねており非常に不完全なので必ず原文を読んでいただきたい。 Android 2.3.3 Platform Near Field Communi…

Log.isLoggableの引数 tagは23文字までしか受け付けない。

全てのLog.xメソッドにisLoggable(〜を咬ませるためにユーティリティを作ったんだが、実行したとたん例外吐いて落ちた。 02-07 23:50:23.142: ERROR/AndroidRuntime(327): Caused by: java.lang.IllegalArgumentException: Log tag "AnnotationProcessorAuto…

Bundleの罠

分かっていたはずなのだが、またやっちまった。 final Bundle bundle = new Bundle(); : this.doService(bundle); : : ...ClassNotFoundException ■[Android][SDK] Bundleをプロセス間通信で使う場合の注意 通常であれば問題になることはないはずだが、今回…

nfc-felica アップデート

nfc-felica/android 2.3 nfc access felica command 抽象化をひとつ上げたFeliCa.javaを用いて、巷で使用されている他の言語のライブラリィのような簡易な呼び出しが可能になります。具体的には以下のようなコードでFeliCa側のデータ(認証不要、非暗号化)を…

nfc-felica 公開しました

nfc-felica/android 2.3 nfc access felica command今までのNfc関連エントリの成果として公開を開始しました。 nfc-felicaとは Android 2.3からサポートされたNFC API(一部隠されたAPI)を使ってFeliCaカードにアクセスするためのクラス群を提供します。 Feli…

Nandroid system.imgからファイルを抽出する

ふとパッチを当てたlibnfc.soを元に戻そうとしたんだが、オリジナルのイメージは自宅のPCの中にしかないことに気がついた。Nexus Sの/sdcardにはClockworkMode RecoveryでバックアップしたNandroidイメージはある。なので、この拡張子.imgのNandroidイメージ…

Nexus SのNFCはそのままではFeliCa Liteを読みこめない

らしい。 まあ考慮されていなくても驚かないけど、Androidというプラットホームの良い所はこういうことがあった場合、その方面の方々がきちんとフォローを入れてくれることだ。今回もSONYの方がすぐに対応されていて驚いた。 Nexus S で FeliCa Lite を読め…

Nexus SとNexus oneリフレクション性能比較

Nexus Sは周波数1GHzの Cortex-A8 (Hummingbird)というプロセッサを搭載しており、これはCPUコアだけを見るとApple A4プロセッサ※と同等品だと言われている。(Apple社が買収したIntrinsity社が2009年にSAMSUNGとともに開発したプロセッサがHummingbirdだ)去…

あの画像はここで使われていた(イースターエッグ)

Android SDKのディレクトリを調べてこの画像に気がついた人は結構いると思うが、この画像はGingerbreadのイースターエッグとして使われていることが判明した。Gingerbread easter egg discovered - Android CentralNexus Sの「設定」->「端末情報」から、「A…

APTでテンプレートメソッドパターンを生成する その4

さてDTOのテンプレートから具象クラスを出力するアノテーションプロセッサだが、使っているうちにこんなXMLをマップする要件が出てきた。 <members> <member> <user-cd>001</user-cd> <name>はてなたろう</name> <address>東京都千代田区外神田1</address> </member> <member> <user-cd>002</user-cd> <name>はてなじろう</name> <address>東京都新宿区1</address> </member> </members>構造に他の構造を含むことができるの…

XmlPullSubtreeParser

XMLの特定の要素だけをパースしたい場合がある。他のメソッドやクラスにパース処理を委譲してしまいたいのが主な理由だ。 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <array name="preloaded_drawables"> <item>@drawable/indicator_code_lock_drag_direction_green_up</item> <item>@drawable/indicator_code_lock_drag_direction_red_up</item> </array> <…</resources>

APTでテンプレートメソッドパターンを生成する その3

さて、最後にアノテーションプロセッサのコードを解説して終わろう。 処理の大部分、特にコードをWriterに出力する処理は以前に紹介したActionAnnotationProcessorと同様なため、抽象クラスAbstractBeanAnnotationProcessorクラスにプルアップした。 Abstrac…

APTでテンプレートメソッドパターンを生成する その2

前回はテンプレートメソッドパターンの実装の基となる抽象クラスと、生成するクラスのメタ情報となるアノテーションを用意した。さてここでおさらいだ。前回用意したアノテーションを元になるクラス又はインタフェースに記述することにより、指定された抽象…

APTでテンプレートメソッドパターンを生成する その1

アノテーションプロセシングツール(APT)のまとめとして、テンプレートメソッドパターンの具象クラスを自動生成するアノテーションプロセッサについて書いておこうと思う。 テンプレートメソッドパターンとは? いわずとしれたオブジェクト指向実装設計におけ…

アノテーションプロセッサ(apt)をAndroidプロジェクトに適用する

アノテーションプロセッサを実装するための"Pluggable Annotation Processing API"はJava6から実装された機能であり、残念ながらAndroidプラットホームでは使えない。がしかしEclipse自体はJava6で動作しており、プラグイン、コンパイラ等は全てJava6上で動…

Android 2.3のDalvikはコンカレントGC!!

API Level 9でデバッグしていたら、以下のようなログが目に飛び込んできた。 12-10 12:16:50.623: DEBUG/dalvikvm(949): GC_CONCURRENT freed 479K, 50% free 3144K/6279K, external 1204K/1591K, paused 4ms+5ms 12-10 12:16:50.681: INFO/dalvikvm(949): J…

ADT 8.0.0(8.0.1)の変更点まとめ

少し遅くなってしまったがAndroid SDKの更新に合わせてADT(Android Development Tools)も更新されているので、そのまとめ。 ADT 8.0.0 ADTのバージョン番号について、SDKの新バージョンに伴いスキームが変更された。ADT 8.xはSDK Tools r8に、という風に番号…

Android 2.3 Platform かいつまみ

日本では今朝方アップされた模様。 まだざっと解説を読んでいる所だが、細かい部分の変更がかなり多い感じだ。なお、API Levelは9となった。Android 2.3, Revision 1 (December 2010) API Overview SIP-based VOIP SIPのSDKでの本格的なサポート。これにより…

開発以外でもLogcat重要

先日いきなりNexus oneで特定の通信ができないトラブルが発生した。回線は3Gを使おうがWi-fiからFletsを経由しようが状況変わらず。サービス毎に一通り調べて見ると・Web ○ ・Gmail × ・Market × ・Twitter ×さっぱり解らないので、ADBを起動してLogcatを見…

画面にフィットしないアプリケーション

既にSIMフリー版を購入している人からは報告が上がっていたのだが、GALAXY Tabにおいては一部のアプリケーションにおいて画面の縦横がフィットせずに表示されてしまう現象が発生している。かくいう拙作のカレンダービューを配置したテストアプリケーションも…

バックグラウンドスレッドでダイアログを生成してはいけない

AndroidではUIスレッド上でGUI部品(ウィジェット)にアクセスするのが前提になっているため、他のスレッドでGUIにアクセスするとチェックが入り例外が発生する。 android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that creat…

祝 Androider1周年

今日、自宅のPCでAndroidプロジェクトを実行しようとすると、以下のエラーが発生した。 Error generating final archive: Debug Certificate expired on 10/11/24 16:45 これが噂には聞いていたdebug.keystoreの有効期限切れだ。私がAndroidのSDKを使い始め…

QuickAction

TwitterクライアントのUIが好きだったので、早速QuickActionを使ってみた。 関連クラスのソースコードがあれば、以下のように短いコードですぐに使うことができる。 QuickActionTest.java public class QuickActionTest extends Activity { QuickAction quic…

バンドの実装

バンドといっても演奏するのではない。Band。 この場合「帯」と訳して良いと思うが、画面の上端か下端をアンカーとして一定の高さを持ち、その上に機能と関連づけられたユーザインタフェース(大抵はボタン)を配置するコンテナとして利用するGUIだ。近いのは…