Android
AndroidSDK
android開発

Androidアプリケーション技術者認定試験ベーシックの試験範囲の知識をまとめた(5)

リソースファイル

AndroidManifestファイル

AndroidMnifestファイルはすべてのアプリケーションに必要なファイルで、XML形式で作成する。

AndroidManifest.xmlが持つアプリケーションの情報

  • パッケージ名
  • コンポーネントの構成
  • セキュリティがかけられた部品へアクセスするためのリクエスト
  • 自身の部品へアクセスするためにかけるセキュリティ
  • テスト時に利用する情報
  • 動作させる最小のAPIレベル
  • 必要とするライブラリ

AndroidManifest.xmlのファイル内容

<manifest> ルートタグ
<application> アプリケーション全体の設定
<activity> アプリケーションに含まれるアクティビティ
<service> アプリケーションに含まれるサービス
<reciver> アプリケーションに含まれるブロードキャストレシーバ
<provider> アプリケーションに含まれるコンテントプロバイダ
<intent-filter> アクティビティ、サービス、ブロードキャストレシーバが起動するためのインテントの指定
<action> intent-filterへ設定するアクション
<category> intent-filterへ設定するカテゴリ
<data> intent-filterへ設定するデータ
<users-permission> セキュリティがかけられた部品へアクセスするために指定|
<permission> 自身のアプリケーションにかけるセキュリティ定義
<instrumentation> テスト時に利用するクラスやテストの対象を設定
<uses-sdk> アプリケーションが動作するAPIレベルを指定
<uses-configuration> アプリケーションで必要とするハードウェアなど
<uses-feature> アプリケーションが利用するハードウェアなど
<uses-library> アプリケーションが利用するライブラリ

<manifest>タグ

AndroidManifest.xmlのルートタグ

タグの属性

xml:android Androidの名前空間の設定
package Javaのパッケージ名を指定、他のアプリと重複しない名前にする必要がある
android:versionCode 内部で扱われるバージョン番号
android:versionName ユーザに表示されるバージョン名
android:installLocation アプリケーションの初期インストール場所
android:sharedUserId 他のアプリと連携する際に用いる共有ユーザID
android:shardUserLabel 共有ユーザIDに対するラベル
アプリケーションのインストール場所

APIレベル8で追加された、android:installLocation属性で指定できる

|internalOnly|内部ストレージにのみインストール|
|auto|基本内部だが、容量不足の場合は外部ストレージ|
|preferExternal|外部ストレージが基本で、できない場合は内部ストレージ|

<application>タグ

アプリケーション全体の構成を記述する

android:icon アイコンの設定
android:label アプリケーション名
android:process プロセス名を明示的に指定する場合
android:theme テーマ
android:debuggable アプリケーションのデバック可否
android:description アプリケーションの説明文

アイコンとアプリケーション名の設定の仕方

     <application
         android:icon="@drawable/ic_launcher"
         android:label="@string/app_name" >

@drawableはres/drawableに格納されているic_launcherファイル
@stringはres/valuesフォルダに格納されているファイルたちの中で定義されているapp_name

アプリケーションランチャーに表示されるアイコンと文字列

<application>タグによって指定されたアイコンとラベルはアプリケーションのデフォルト値として利用される。

XMLの書式

Androidで利用される主なリソースタイプ

Androidで利用されるリソースの種類

アニメーション ビューに対するアニメーションの設定
状態に応じた色 ビューの状態毎に適用される独自の色設定
画像 アプリケーションで利用する画像
レイアウト アプリで利用する画面レイアウト
メニュー アプリケーションで利用するメニュー
文字列 アプリケーションで利用する文字列
スタイル 画面レイアウトで利用する共通的な設定
その他の値 色、整数、サイズといった定数の定義
任意のXML 上記以外の設定ファイルなど
その他 任意のファイル

文字列リソース

静的な文字手列を定義する場合に使用するリソース
res/valuesフォルダに任意のファイル名で作成する。
ルートタグは<resouces>タグ、子タグとして<string>タグを利用して定義する。

文字列リソース(配列)

複数文字列を配列のように定義することが出来る。
<string-array>タグを利用し、各項目を<item>タグで記述する

文字列リソース(複数形)

文字列の対象物が、単一と複数とで呼び方が異なるものがある。
その時に、各数に応じて表示文字列を変化させる仕組みがある。
<plurals>タグを利用する。子タグとして<item>タグで記述し、quantity属性でそれぞれどの数の場合かを記述する
ResourcesクラスのgetQuantityStringメソッドにリソースIDと数値を指定することで該当する文字列を取得できる

リソース参照の仕方

XMLでは@{type}/{name}
JavaコードではR.{type}.{name}

レイアウトリソース

静的に画面レイアウトを定義するためのリソース。
res/layoutフォルダへ任意のファイル名で作成。
タグにはViewクラスあるいはViewクラスのサブクラスを指定する
android:layout_widthとandroid:layout_heightは必ず指定する必要がある

スタイルリソース

画面で利用する共通的な設定を定義できる
res/valuesフォルダに作成する
タグは<resources>タグで記述し、子タグに<style>タグを記述して設定する
<style>タグの子タグは<item>タグ

アニメーションリソース

ButtonやTextViewなどのビューにアニメーションを定義するためのファイル。
res/animフォルダに作成する。

メニューリソース

各種メニューを定義するファイル。
res/menuフォルダに作成する

整数リソース

静的に整数を定義するリソース
res/valuesフォルダに作成する
<resources>タグを利用し、<integer>タグを使って設定する。

整数リソース(配列)

文字列と同様に<integer-array>タグを利用することで配列リストを作成できる

Android標準で提供されるリソース

標準で様々なリソースが提供されている。利用する場合は
XMLの場合@android:{type}/{name}、Javaの場合はandroid.R.{type}.{name}で指定する。

リソースの代替設定と国際化

リソースの代替え設定

デバイスの構成や設定に応じて最適なリソースを使用する設定。

画面サイズ デバイスの対角線上の長さ(inch)
ピクセル密度 1インチ当たりのドットの数(dpi)
アスペクト比 画面のアスペクト比
デバイスの向き ユーザが表示している向き(縦、横)
APIレベル デバイスがサポートしているAPIレベル

代替え設定するには、res配下のフォルダ名に「-」で修飾する

画面サイズによる代替設定

small, normal, large, xlargeそれぞれのリソースを定義することで可能となる

ピクセル密度による代替設定

ldpi(12dpi), mdpi(160dpi), hdpi(240dpi), xhdpi(320dpi)で定義する。

アスペクト比による代替設定

long, notlongで定義する。longはWQVGA, WVGAの時に適用される

デバイスの向きによる代替設定

port(縦向き), land(横向き)で定義する

APIレベルによる代替設定

APIレベルによる代替も可能。APIレベル番号の前にvを付加してフォルダを作成する。

代替え設定を複数利用

代替設定は複数設定可能。
ただし、複数する場合は設定する順番が指定されている

(http://developer.android.com/intl/ja/guide/topics/resources/providing-resources.html#QualiferRules)

リソースの国際化

異なる言語における表示をサポートするための機能が用意されている。
代替設定と同様に-と各言語コードで定義する

ISO639-1で定義されている

日本語 ja
英語 en
中国語 zh
スペイン語 es
フランス語 fr
韓国語 ko

地域ごとのリソースの切り替え

同一の言語を利用していても地域ごとに表現が異なる場合も対応可能
地域コードを付与することで切り替えられる
ISO3166-1-alpha2で定義されており、頭にrをつけることで定義できる

日本 JP
アメリカ合衆国 US
イギリス GB
スペイン ES
メキシコ MX
フランス FR
カナダ CA

英語(イギリス)の場合 values-en-rGB/strings.xml
英語(アメリカ)の場合 values-en-rUS/strings.xml

セキュリティとパーミッション

Androidで制限される主な機能

以下のような機能はデフォルトで禁止されている

  • ユーザ情報の取得
  • ユーザが管理している連絡先情報の取得
  • デバイスが起動したことを検知する
  • カメラの利用
  • GPSを利用した位置情報の取得
  • インターネット接続
  • SDカードなどの外部記憶装置へのアクセス

制限されている機能の利用方法

ユーザーに許可を求めることで利用できる。
そのためにはAndroidManifest.xmlファイルに記述する。
<manifest>タグの子タグとして<uses-permission>タグで記述する

ユーザ情報の取得 android.permission.GET_ACCOUNTS
ユーザが管理している連絡先情報の取得 android.permission.READ_CONTACTS
デバイスが起動したことを検知する android.permission.RECEIVE_BOOT_COMPLETED
カメラの利用 android.permission.CAMERA
GPSを利用した位置情報の取得 android.permission.ACCESS_FINE_LOCATION
インターネット接続 android.permission.INTERNET
SDカードなどの外部記憶装置へのアクセス android.permission.WRITE_EXTERNAL_STORAGE

制限された機能についてのユーザへの確認

マニフェストで定義されたパーミッションはインストールするときにユーザーが許可している。