Android基礎

androidの本を読んだのでメモ

3章.Activityを理解しよう
activityのライフサイクルについて理解する http://www.javadrive.jp/android/activity/index2.html

ログで動作を確認する
Logクラスにより動作確認時に以下のログを出力できる
Log.d:デバッグレベルのログを出力する
Log.e:エラーレベルのログを出力する
Log.i:情報レベルのログを出力する
Log.w:警告レベルのログを出力する
Log.v:上記に当てはまらないログを出力する

マニフェストファイルにActivityを登録しよう
使用するActivity及び、初期起動するActivityの情報など付加情報はAndroidManifest.xmlに記述する

画面遷移を調整する
Intentを利用することでアクティビティを起動することにより画面遷移ができる
Intentでは画面遷移時にアクティビティ間でデータを渡すことができる
また、遷移元に戻ってきたときに結果のデータを受け取ることができる

他のアプリケーションと連携する Intentでは「~を処理できるActivityを起動」という呼び出しにより他アプリケーションの呼び出しができる
例えば電話帳機能を呼び出すと、暗黙的Intentにより該当する機能を持ったアプリの呼び出しができる
ブラウザとか、マップとかでよくあるやつ

パーミッション(許可権限)を設定する
マイクや通話の機能を使う場合、AndroidManifest.xmlに記述する
インストール時にユーザーに権限を確認させるのに必要

他のアプリケーションのIntentから起動する
他のアプリケーションから起動されるようにするにはAndroidManifest.xmlandroid:mimeType等を設定する

4章.ActivityとThread
スレッドの概念を理解する
アプリケーション実行時の処理はメインスレッドというスレッド上で実行されている。
メインスレッドはUIも管理している。
→時間のかかる処理をメインスレッドで行うと画面自体が停止してしまう。

Javaでのスレッド処理を理解する
メインスレッドとは別で並行処理を行う場合、以下二つの方法がある
・Threadクラスを継承しrun()メソッドをオーバーライドする
・Runnableインターフェースを実装する。

別スレッドからUIを操作する
androidはシングルUIモデルを採用している
別スレッドからUIを操作する場合Handlerを利用する
Handlerを利用することでメインスレッドのLooperにpostリクエストを飛ばすことができる

android sdkによる別スレッド処理
android sdkによる別スレッドの処理として以下2つのクラスがある
android sdkによるクラスではhandlerを操作しなくても別スレッドからUIを操作できる
・AsyncTask
http://developer.android.com/reference/android/os/AsyncTask.html
・AsyncTaskLoader
非同期での処理をAsyncTaskよりもスマートに記述できる
Android 3.0以降でサポート

5章.独自のViewとSurfaceViewによるアニメーション
独自のViewを作成する
Viewクラスを継承させる
viewクラスのコンストラクタの引数にはコンテキストとAttribute(画面レイアウトのxml)がある

独自のViewに画像を表示する
androidでは画像をBitmapオブジェクトで扱う
Bitmapオブジェクトではpng,jpgを使える
画像はresフォルダのdrawableフォルダに格納しR.drawable.ファイル名でアクセスする

画像を動かす
bitmapオブジェクトを表示するにはcanvasクラスを使う
canvasクラスのdrawBitmapメソッドにbitmapオブジェクトと表示位置を指定する

SurfaceViewでスムーズに動くように修正する
canvas.drawBitmapで画像を動かすと画面がちらつく
SurafaceViewを使ってダブルバッファリングの処理を行うとちらつきが防げる

6章.ライブ壁紙の作成
ライブ壁紙について理解する
通常のAndroidアプリケーションと同じようなものを壁紙に設定できる
通常のAndroidアプリケーションとはActivityが異なっている

バックグラウンドで動き続けるサービスで、WallpaperServiceを継承する
ライブ壁紙の表示はWallpaperServiceの内部クラスのEngineで行う

ライブ壁紙の基本構造を作成する
WallpaperServiceを継承したクラスを作成する
内部クラスとしてEngineクラスを作成する

ライブ壁紙一覧に表示するように設定する
ホーム画面での長押しで表示されるライブ壁紙一覧に表示される情報は、rex/xmlフォルダ内に任意の名前でxmlファイルを作って設定する
AndroidManifest.xmlにサービスタグを記述する


7章.サービスの作成と利用

スレッド処理とはまた別の非同期処理
AsyncTaskではUIの変更を前提とした部分があったが、サービスではUIとの関連が乏しくActivityとは無関係に動作させたい大きなタスクに向いている

サービスの雛形を作成する
Serviceクラスを継承する
Serviceは起動時に以下のメソッドが呼ばれる
onCreate()
onStartCommand()
終了時に以下のメソッドが呼ばれる
onDestory()
http://www.atmarkit.co.jp/ait/articles/1204/20/news140.html

作成したServiceをActivityから利用する
Serviceの起動にはIntentを使う
作成したServiceクラスはAndroidMainifext.xmlに記述する
Serviceを定期的に呼び出すにはAlarmManagerを使う

8章.Widgetアプリケーション
Widgetの雛形を作成する
WidgetはappWidgetProviderを継承して作成する

Widgetで定期処理を行う
ServiceをAlarmManagerで定期的に呼び出す

OSの通知を受け取る
AndroidManifest.xmlタグでosからのステータスを受け取れるように設定できる
ACTION_BATTERY_CHANGED:バッテリー残量に変化があったとき
ACTION_DATE_CHANGED:日付が変更されたとき
ACTION_LOCATE_CHANGED:ロケーるが変更された時

9章.ユーザーへの通知

トーストを利用する
簡易な通知であればトーストが利用できる

ダイアログを作成し表示する
AlertDialog.Builderを利用する

Notificationの利用
Notificationを利用するとステータスバーにアプリケーションから通知を行うことができる

10章.データの永続化(保存)
SharedPreferencesを利用してデータをかんたんに保存する
データをキーと値の組み合わせで保存する
アプリ内の設定情報などをかんたんに保存できる

ファイルを保存する
スマホ本単に保存する場合ActivityのopenFileOutput()メソッドを利用する
SDカードに保存する場合以下のパーミッションを追加する
WRITE_EXTERNAL_STORAGE

データベース(SQLite)を利用する
DBの実体は/data/data/<アプリのパッケージ名>/database/に保存される
SQLiteOpenHelpeクラスを利用する
ContentProviderを利用すると他のアプリケーションで使用しているデータベースにアクセスすることができる

11章.サーバーの利用(クラウド)
サーバーのデータを読み込む
URIオブジェクトを作成する
URIオブジェクトを引数にHttpGetオブジェクトを作成する
INTERNETパーミッションを追加する
XMLのデータ解析にはXmlPullParserを利用する
JSONデータを読み込むにはJSONObjectを利用する