2015 年 9 月 1 日

アンドロイドアプリのログ出力にTimber+Log4Jを使う

アンドロイドアプリのログ出力にTimber+Log4Jを使う

アンドロイドでログ出力するにはLogクラスを利用します。ログはAndroidロギングシステムへ出力され、logcatコマンドで内容を見ることができます。

ほとんどの場合、このLogクラスで十分なのですが、業務アプリでは操作ログをファイルで保存することが必要な場合もあります。

また、Logクラスではメッセージをフォーマットする機能がないので、詳細な操作ログを出力するには適していません。

続きを読む »

2014 年 12 月 5 日

アンドロイドアプリからGoogle Cloud Messagingを使う方法(第1回)第2版

アンドロイドアプリからGoogle Cloud Messagingを使う方法(第1回)第2版

Google Cloud Messagingを利用するには、サーバキーとSenderIDが必要です。

これらの情報は以前はGoogle API consoleへログインして、生成していましたが、現在ではGoogle Developers Consoleという名前でGoogleの様々なサービスの設定ができるようになりました。

いつまでサポートされるかわかりませんが、古いGoogle API consoleのインタフェースも利用できるようになっています。

続きを読む »

2014 年 12 月 1 日

アンドロイドアプリからGoogle Cloud Messagingを使う方法(第2回)第2版

アンドロイドアプリからGoogle Cloud Messagingを使う方法(第2回)第2版

com.google.android.gcmパッケージがdeprecatedされて、現在、Google Cloud Messagingを利用するには、com.google.android.gms.gcmパッケージを利用する必要があります。
旧APIも当面は運用され続けているようですが、今後の開発はcom.google.android.gms.gcmパッケージを利用した方がよいでしょう。

このパッケージを利用するには、Google Play Services SDKが必要です。

続きを読む »

2014 年 11 月 22 日

アンドロイドアプリのHandlerがリークするとき

アンドロイドアプリのHandlerがリークするとき

前回は、スレッドがリークする様子をMAT(Memory Analyzer Tool)を使って説明しました。今回は、スレッドとともによく利用されるハンドラがどのようにリークするかを調べてみます。

ハンドラは異なるスレッドから受け取ったメッセージを処理するものです。たとえば、GUIスレッドとは別のスレッドから表示データを受け取って、そのデータを表示するといった使い方をします。

続きを読む »

2014 年 11 月 16 日

アンドロイドアプリのThreadがリークするとき

アンドロイドアプリのThreadがリークするとき

スマホアプリは、ユーザーの操作反応をよくするために非同期の処理が多く必要です。アンドロイドでもメインスレッドで時間が掛かる処理をシリアルに行うことは避けなければいけません。

アンドロイドOSには、非同期処理を扱うクラスやメソッドが多く存在しますし、Javaのスレッドを扱うなら、Executorsフレームワーク(SE5以上)の利用を検討すべきでしょう。

続きを読む »

2013 年 12 月 1 日

アンドロイドアプリにGoolge Analytics SDKを組み込む

ウェブサイトのアクセス計測と同様にアプリ内のアクティビティやイベントの計測をGoogle Analyticsで行うことができます。また、どこからアプリが認知されてインストールされたかも設定次第で計測可能です(Google Play Campaign Measurement)。

この記事では、アクティビティの表示回数やボタンのタップされた回数などの計測方法ご紹介します。簡単な計測なら、すぐに組み込むことができます。

アプリ内でのユーザーの行動を把握すれば、今後の機能改善や機能追加に役立ちます。アプリを公開するなら、Google Analytics SDKは、是非とも組み込んでおきたいSDKのひとつです。

続きを読む »

2013 年 12 月 1 日

apkファイルアップローダーを作る(第2回)

apkファイルアップローダーを作る(第2回)

[jQuery File Upload]

前回からかなり時間が過ぎてしまいましたが、サーバーサイドでapktoolを使ってapkファイルを解凍して、アプリのバージョンやパッケージ名apkファイルの内容を返すところを実装します。jQuery File Uploadも前回は6.4.2だったのが、7.0.1にまで上がっています。今回は、最新の7.0.1を利用します。

Webページからのapkファイルアップロードではなく、直接curlコマンドからも実行できるように実装しています。こうしておけば、WebページのUIは、jQUery File Uploadで実装してもよいし、他のUIライブラリで実装も可能です。

続きを読む »

2013 年 11 月 20 日

モバイルブラウザからアプリを呼び出す方法

3140-logo

アプリに連動したウェブサイトから、アプリを呼び出したいと思ったことはありませんか。アクティビティのインテントフィルタをURIスキームで定義すると、他のアプリとの連携がURIで利用できるようになります。もちろん、引き渡せる情報はURIパラメータなので、インテントによる起動ほど柔軟ではありません。

最近、ディープリンクが注目されだして、ブラウザからアプリの詳細ページへ直接リンクをつくること(ディープリンク)で、ユーザビリティを向上させることが求められています。Androidブラウザのグーグルの検索結果から直接アプリの詳細ページへジャンプできるようにするという方法があります(Google 検索用 App Indexing)。

続きを読む »

2013 年 11 月 9 日

Percelでアプリの状態を保存・復元

9999-logo

アンドロイドのアクティビティは、バックグラウンドにまわされると、OSからいつ終了(onDestoryを呼出)させられてもおかしくない状態になります。

たとえば、アプリから異なるアプリのアクティビティをインテントで呼び出した後、このアクティビティからの応答を待っているときに、一旦終了させられて、応答が返ったとき再生成されonCreateが呼出させることがあります。

このとき、アプリのアクティビティの状態(たとえば、選択されたタブとか、リストのチェックなど)を復元してやる必要があります。アクティビティが新たに起動しonCreateが呼出されるので、こういった情報は残りません。

これはアンドロイドのアクティビティのライフサイクルの特徴で、アプリケーションプログラマは、これを想定してアプリを開発する必要があります。

続きを読む »

2013 年 11 月 8 日

ウィジェットのセル数が異なってしまうとき

3087-logo

今のところ、iphoneにはなくてandroidに存在する機能の一つであるウィジェットは便利なものです。ホーム画面が散らかるとはいえ、利用次第で操作性が向上します。

ウィジェットを配置するとき、1×1,4×1などの表記がありますが、ウィジェットの幅や高さはセル単位で示されています。開発時はセル数ではなく、決められた計算式でdipという単位で指定します。

しかし、API Level14からこの計算式が大きく変更されたことで、想定したウィジェットセル数が正しく認識されないという問題があるようです。アプリが動作するOSのバージョンにより、セル数が変わってしまい、ウィジェットが配置できない場合もあります。こんなときの対処方法をまとめておきたいと思います。

続きを読む »