SDK

クッキーはおあずけ

本日のWeb2.0 SummitでGoogle CEOのエリック・シュミットが話すということで、Gingerbread(Android 2.3)の正式発表とアップデートの配信、SDKの配布が実施されるだろうというのが大方の予想だったのだが、実際には発表だけであり、Gingerbread自体は今後数週…

CalendarView 公開しました

以前公開すると宣言して先延ばしになっていた、CalendarViewの公開を開始しました。 Android Calendarview - Project Hosting on Google Code※CalendarViewはAndroid 1.6以降で動作するシンプルなカレンダービューです。日本の祭日判定を行うK.Tsunoda氏の"k…

MotionableScrollView

ということで、一番の解決策はスクロールが必要な場合はモーションを無視し、必要無い時にはモーションを有効にすることだろうが、それを実現するためには、やはりサブクラスを書く必要があるだろう。長くなったので続きは明日にでも。 [Android][SDK][Calen…

上下のフリックモーションに対応する(ScrollView上のY軸モーションが無効になる)

拙作のカレンダービュー(CalendarView)は元々左右どちらかのフリック・モーションに反応して現在の月を変更する機能を実装している。当初は左右のモーションだけで処理をしていたが、人間の指というものは横にしろ縦にしろ機械のように真っ直ぐに動かすもの…

データバインドの実装(2 イベントハンドラの分離)

AndroidアプリケーションにおいてMVCの扱い、特にActivityの役割をどう考えるかは必ず議論になるが、私はActivityはできるだけビューと考えてロジックは書かず、モデル側もビューとの依存性はもたないように(単独でテストできるように)設計、実装する。 [And…

データバインドの実装(1)

この日記では過去に何度もデータバインドの実装について書いてきた。Androidに関してはそもそもモバイル機器であり、できるだけCPUサイクルやメモリを使いたくないことを考えると、WindowsForms(.NET Framework)やJava BeansBindingのようなモデルとビューの…

そんなスレッドで大丈夫か?

Androidアプリケーションでバックグラウンド処理をスマートに解決することができるAsyncTaskだが、気をつけることがある。 これはテスト用に書いたURLから画像をダウンロードして表示するアプリケーションだが、ボタンを押下されると画像をWWWから読込んでプ…

Samsung GALAXY Tab Eclipse Addon

標題の製品の発売と共に、開発に使用するEclipse向けのアドオンが配布されている。Samsung Mobile Innovator - Samsung Developer program for Symbian, Windows Mobile and Javaインストールは通常のAndroid SDKと同様に Android SDK and AVD Managerから、…

パーミションのチェックを強制する(適切な例外を強制する)

UnknownHostExceptionってのが凄く分かり難い。どこにもセキュリティ違反の情報が無い。 せめてSecurityExceptionかその継承クラスにできなかったんだろうか。: 無論対策はあるのだが、長くなりそうなので明日にでも ということでソースコードを追ってみた。…

例外の意味は重要

Androidの開発者がよくするミスのNo.2位に、INTERNETパーミションの付加忘れがある。(No.1はActivity要素の記述漏れに違いない) 上記のパーミションが無いままインターネットにアクセス(IPアドレス取得やDNSアクセスでも発生)することが原因で発生する例外の…

Logcat Viewにログが表示されない時に試すこと

以下Windowsプラットホーム固有の問題かもしれない話。(又は知らないのは私だけだったのかもしれない話)Eclipse + ADTでの開発でAndroidエミュレータを再起動すると、その後Logcat Viewのログが表示されなくなってしまうことがある。そんな時はEclipseを再起…

Bundleをプロセス間通信で使う場合の注意

以前、AIDLを使ってサービスとアクティビティで通信を行う際に引数にBundleを渡すと原因不明の上記例外が発生したことがあった。 AIDLによるサービスとの通信でBundleにParcelableをセットするとBadParcelableException AIDLによる通信でBundleにParcelable…

分離されたプロセスをデバッグする

前エントリで言及したようにAndroidアプリケーションはその内部に「別プロセスで実行する = android:process」を明示した場合はプロセスを分離することができるが、Eclipseで分離したプロセスをデバッグするにはどうすればよいのだろう。通常Eclipse ADTのデ…

サービスをアプリケーションプロセスから分離する

Androidのサービス(Service)はマニフェストの要素におけるandroid:process属性の記述により、サービスが実行されるプロセスをアプリケーションから分離することができる。 android:process の記述無し (デフォルト) サービスはアプリケーションに割り当てら…

謎すぎるInstrumentationのActivityThread

ActivityInstrumentationTestCase2(長いな)を使ってActivityをテストしていたのだが、独自に拡張したApplicationクラスのonCreateメソッドが呼ばれていない(ブレークポイントに引っかからない)ならばApplicationのインスタンスはどこで生成されているのだろ…

Froyo(Android 2.2)でもANDROID_IDでエミュレータを判定する

先日のコード String android_id = Secure.getString(getContentResolver(), Secure.ANDROID_ID); if (android_id == null) { //エミュレータ } else { //実機 } Froyoのエミュレータはnullを返さなくなったのでエミュレータの判定には使えないと書いたが、…

ANDROID_IDでエミュレータを判定する方法はFroyoからは使えない

Androidアプリケーションにおいてエミュレータで実行しているか否かを検出するために以下のコードがよく使われる。 String android_id = Secure.getString(getContentResolver(), Secure.ANDROID_ID); if (android_id == null) { //エミュレータ } else { //…

こいつのせいか〜

Android 推奨 ADT 0.9.9へのアップデート - タオソフトウェアブログ ADT Plugin for Eclipse 0.9.9 General notes: •Fixes a problem in project import, in which source files were deleted in some cases. •Includes all other ADT 0.9.8 features (see b…

Since API Level 8

Android 2.1に落としてコンパイルすると通らない。1.6なら判るが2.1で通らないなんてとむくれていたら最初はグレーでよく分らなかったのだが、"Since: API Level 8"..... API Level 8 ..... Level 8....8... !!8から追加されたインタフェースなんてあったの…

RoboGuice

先日vvakameさんにコメント頂いたが、AndroidでDIするなら、GuiceのAndroid版でその名も"RoboGuice"というものがあるということ。早速見てみた。roboguice - Project Hosting on Google CodeGuiceActivityにより拡張したActivityは、先日私が書いたのと同様…

様々なリソースをフィールドに注入する

Androidプラットホームであっても特定の分野のアプリケーション以外であればリフレクションは問題にならないだろうという観測を得たので、リフレクションを活用する機能を用意することにした。Javaフレームワークでは依存性の解決に"DI:Dependency Injection…

Monodroid

先日のエントリでAndroidアプリを書ける言語にC#が無いとお叱りを受けた。 自分もC#は好きだし過去にC#でAndroidアプリを書きたいと日記を書いたことがあるというのに、全くもって申し訳ない。monodroid FAQ - ものがたり通常のMono C#に比べるとまだまだ開…

AndroidのデフォルトのログレベルはINFO

同じ理由ではまったことがある人には既出だろうが。デバッグ時だけログを出力しようと思い、 if ( Log.isLoggable(tag, Log.DEBUG)) { 〜ログ出力 } と書いたがいっこうに出力されない。(Log.dメソッドでは普通にLogcatに出力されているのに)一通りログレベ…

Javaに代わる言語を考えてみる

Sunから文句を言われ、Oracleには訴えられたAndroidプラットホーム上のJavaだが、ならば他の言語をメインに使って開発することはできないのだろうか。(c、c++は除くことにしよう※)幸いなことにAndroidは既に様々な言語でプログラミングが可能だ。 Ruby(JRuby…

現在のタブレット型端末の事情

以前に現在のAndroid SDKはタブレット型の端末に最適化されていないというエントリを書いたが、 買うなら来年以降? そんな中正式に発売が発表されたSAMSUNG Galaxy Tabは本来サポートされていない1024*600ピクセルという解像度に対応している。(Landscapeが…

SDKのリソースをリフレクションで取得する

8/27のエントリでは独自のNumberPickerを再作成することに言及した。 NumberPickerを再作成するしかしこの方法はrmiyaさんから指摘頂いた通り、ユーザインタフェース毎にカスタマイズされている可能性があるリソースを決め打ちで指定しなければならず、無駄…

Android SDK Tools, Revision 7

すっかり忘れていたが、先週更新されていたのだった。 SDK Tools Android Developers SDK Tools変更点 他のライブラリィプロジェクトに依存した、ライブラリィプロジェクトのサポートを追加 ライブラリィプロジェクト中のaidlファイルサポートを追加 Andを使…

リフレクションとJITの効果

リフレクションネタも今日のエントリで一区切りだ。 #Android 2.2ではJITが導入されているが、今回はその有無による性能差を計測することができなかった。(エミュレータはJITオフだと思うが、実機と比較はできない)実機でJITを簡単に切替える方法が解れば追…

Androidとリフレクション(HT-03A編)

ちょっと無茶かなと思いながらも、先日のテストをdocomo HT-03A/HTC Magic(Android 1.6)でも実行してみることにした。 しかし、そのままのコードでは一つのテストタスクが終了する前にANR※となってしまい計測にならないので、テストロジックを別スレッドで実…

adb shell am コマンド

adbから起動できるshellコマンドにはインテントを機器(エミュレータ)に送るコマンドがある。 amコマンドの例 adb shell am start -n org.kazzz.android/.HogeActivity これでパッケージ"org.kazzz.android"に定義されている"HogeActivity"を起動することがで…