概要
普及が進むスマートフォンで注目されるAndroid OSですが,組込みシステムの宿命とも言うべき「リソースの制限,バッテリー駆動」といった,プログラミングに関わる制限事項が多数存在します。また「新しい情報をリアルタイムで追随しにくい」といった問題,さらには「従来型のC/C++の組込み開発をしてきた人や会社はJavaに不慣れ」「Javaに慣れた人や会社は低レベルの理解が足りず参入に苦労」という問題もあります。こういったノウハウ不足の問題に対し,本書は徹底的にチューニングの方法を解説することでも寄与します。
こんな方におすすめ
- Androidスマートフォンでの開発に従事しているプログラマー
- Androidを組込みに応用することを考えている開発者
目次
はじめに
Chapter1 Android SDKの必修知識
1.1 アクティビティ
1.2 サービス
1.3 インテント
1.4 コンテントプロバイダー
1.5 アプウィジェット
1.6 Handler/Looper
Chapter2 Android 3.0,4.0の機能
2.1 Android 3.0,4.0での追加機能
2.2 フラグメント
2.3 ViewPager
2.4 GridLayout
2.5 ドラッグ&ドロップ
2.6 ActionBar
2.7 ステータスバー通知
2.8 ローダ
Chapter3 実戦のコーディング
3.1 画面
- 01 動的に画面のViewを構成したい
- 02 画面レイアウトを共通化したい
- 03 ユーザー操作に追従するアニメーションを簡単に実装したい
- 04 縦/横で異なる画面を作りたい
- 05 大きな画像を読み込みたい
- 06 画面のキャプチャを撮りたい
- 07 画像を手軽に縮小拡大/回転させたい
- 08 常に最前面にViewを表示したい
- 09 透明なアクティビティを作りたい
- 10 Viewに表示する文字を縁取りしたい
- 11 カテゴリー付きのスピナーを作成したい
- 12 ジェスチャーで画像を縮小拡大/回転させたい
- 13 画像ビューアーを簡単に実現したい
3.2 デバイス制御
- 01 スクリーンの点灯/消灯を検知してバッテリの持ちを良くしたい
- 02 位置情報の偽装対策をしたい
- 03 センサを使って端末の向きに応じた方位を計算したい
- 04 通信可能な状態をチェック/監視したい
3.3 バックグラウンド処理
- 01 データ生成処理に時間がかかることをバックグラウンドで行いたい
- 02 バックグラウンドでイベントに応じた処理を行いたい
- 03 終了されないサービスを生成したい
3.4 Web連携
- 01 JSONでWebサービスと連携したい
- 02 RESTでWebサービスと連携したい
- 03 JavaScript(HTML)とAndroid(Java)を連携させたい
- 04 特定のWebページ専用のアプリケーションにしたい
3.5 マルチメディア
- 01 アプリケーション間で音声の排他制御を行いたい
- 02 インタラクティブに音を鳴らしたい
3.6 データ永続化
- 01 SerializableとParcelableの使い分けを知りたい
- 02 SQLiteの処理を高速化したい
3.7 その他
- 01 アプリケーションのインストール,アンインストールを検知したい
- 02 アンインストール時にSDカードに保存したデータも削除したい
- 03 アプリケーション内でブロードキャストしたい
- 04 一時的にアプリケーション一覧に表示しないようにしたい
- 05 OutOfMemoryErrorをなんとか回避したい
- 06 ANRの発生を抑えたい
- 07 リフレクションを利用して非公開のAPIを使いたい
- 08 ダミーのライブラリを利用して非公開のAPIを使いたい
- 09 ベストプラクティスの実際の効果を知りたい
Chapter4 実戦の設計/テスト/運用
4.1 設計
- 01 アクティビティ1つで画面数の多いアプリケーションを設計する際の注意点を知りたい
- 02 アクティビティ間でデータを共有する方法を知りたい
- 03 複数のアクティビティで共通の処理を,Template Methodパターンで実装したい
- 04 複数のアクティビティで共通の処理を,委譲で実装したい
- 05 複数のアクティビティで共通の処理を,Strategyパターンで実装したい
- 06 複雑な画面遷移を構成する際のポイントを知りたい
- 07 サーバーと通信するアプリケーションの非同期処理の方法を知りたい
- 08 サーバーと通信するアプリケーションで遅延処理/一括処理を行いたい
- 09 サーバーに端末を識別させる際の注意点を知りたい
- 10 複数のプロダクトで共通の処理を,JARを活用して実装したい
- 11 複数のプロダクトで共通の処理を,ライブラリプロジェクトを活用して実装したい
- 12 プロジェクト分割での留意点を知りたい
- 13 関連するアプリケーションのインストール状況をチェックしたい
- 14 複数のアプリケーションパッケージでデータを共有したい
- 15 アプリケーション間でリソースの固有化を実現したい
- 16 端末ごとの差分を吸収したい
- 17 定期処理の機能はどれを選べばよいか知りたい
- 18 システムの情報としてどんなものが取得できるのか知りたい
- 19 Androidの標準リソースを活用したい
- 20 既存のJavaライブラリを活用できるか簡単に調査したい
- 21 パスワードデータを扱う際の注意点を知りたい
4.2 テスト/デバッグ
- 01 ユニットテストを実施したい
- 02 GUIのテストを自動化したい
- 03 GUIのランダムテスト(モンキーテスト)を実施したい
- 04 テスト漏れを見つけたい/網羅率を証明したい
- 05 位置情報を用いるアプリケーションをテストしたい
- 06 Android SDKの中までデバッグしたい
- 07 JNIをデバッグしたい
- 08 処理のボトルネックを解析したい
- 09 レスポンス低下の要因,UIスレッドでの実行を検出したい
4.3 運用/保守
- 01 アプリケーションの利用状況を知りたい
- 02 Google Analyticsを利用してアプリケーションのインストール経路を特定したい
- 03 Google Analytics以外の方法でアプリケーションのインストール経路を特定したい
- 04 クラッシュレポートを取得したい
- 05 ソースコードを難読化したい
- 06 アプリケーションのリバースエンジニアリングによる危険性を知りたい
- 07 静的検査でアンチパターンを見つけたい
- 08 動的なHTMLをWebViewに表示したい
- 09 ソースコードの記述量を少なくしたい
サポート
正誤表
『現場で使える[逆引き+実践]Androidプログラミングテクニック』(2012年8月25日 初版 第1刷発行)におきまして,下記の誤りがございました。謹んでお詫び申し上げますとともに,当該箇所につきましては訂正内容に読み替えてくださいますよう,お願い申し上げます。
(2014年10月8日更新)
P.41 上から8~10行目
誤 |
Service#onUnbindメソッドは,Context#bindServiceメソッドを実行したアプリケーションコンポーネントからのContext#bindServiceメソッドの実行により呼び出されます. |
正 |
Service#onUnbindメソッドは,Context#bindServiceメソッドを実行したアプリケーションコンポーネントからのContext#unbindServiceメソッドの実行により呼び出されます. |
P.303 図1 左下の説明
誤 |
SubActivityX1,SubActivityX3では,LoginDelegateを利用し…… |
正 |
SubActivityX1,SubActivityX3では,LoginDelegateImplを利用し…… |
ダウンロード
電子版用の収録コンテンツのダウンロードについて
電子版用に,付録CD-ROM収録コンテンツを以下から入手できます。ダウンロードには電子版本紙に掲載されているIDとパスワードが必要です。