旧Android覚書
■■■□□□■■■□□□「Android SDK 逆引きハンドバック」の学習
■C-01 基礎
◇001
AndroidはLinuxベースである。
Ver4.0からスマートフォンとタブレットのユーザーインターフェースが結合
VMではなくDalvik仮想マシンである。
フレームワークAPIのすべてを、アプリ開発に利用できる。
クラスはdexフォーマットに変換される。
WebkitはApple製のHMTLレンダリングエンジンを使用
HTMLをアプリに表示できる。
OpenGLを搭載
データベースはSQLite。mdbと同様な単一ファイル型。メモリ上に一時的に生成することもできる。
データベースで使用できるデータ型はINTEGER,REAL(浮動小数点),TEXT,BLOB(バイナリ),NULL
使用できる画像フォーマット(Jpeg,gif,png,bmp,webp(ver4.0)
使用できる動画フォーマット(mpeg系のいくつか、3gpp,flac,mp3,ogg,wav)
◇002
アプリケーションフレームワークはLibとAPIから構成される。
主な、アプリケーションフレームワークは以下の通り
・アクティビティマネージャ。 アプリのライフサイクルを管理
・ウィンドウマネージャ。 画面状態を制御
・コンテントプロバイダ。 アプリ間で共有するデータを管理。アプリ間でデータのやり取りが可。
・ビューマネージャ。 アプリケーション基礎
・パッケージマネージャ。 端末内のアプリを管理。
・テレフォニーマネージャ。 電話機能へのアクセス
・リソースマネージャ。 ローカライズされた、文字、画像、レイアウトファイルへアクセス。
・ロケーションマネージャ。 GPS系の制御。
主なライブラリ
libc
メディアライブラリ。 静止画、動画など
SGL。2Dグラフィックス。
3Dライブラリ。
FreeTypeフォントのレンダリング
SQLite。DB.
SSL
Linuxカーネル
◇003
アプリの拡張子は「apk」
SDKとNDKがある。NDKはランタイムやライブラリを開発するC/C++用。
ADTはEclipse用のプラグイン
バージョンは「1.0,1.6,2.3」といった表記のほかにAPI LEVELによる表記方法もある。2012年現在はAPI LEVEL 15。
◇004
Androidは他のアプリの機能を利用できるのが特徴(許可されている場合)
外部アプリケーションや、下部プラットフォームへのアクセスは制限されている。
代表的なコンポーネントは、アクティビティ、サービス、コンテントプロバイダ、インテントの4つである。
◇005 アクティビティについて
アクティビティはユーザーインターフェースのこと。
画面ごとに独立したアクティビティが存在する。VBでいうFormの概念に近い。
Activityのサブクラスとすることで、モーダルダイアログして表示させることも可能である。
ビューとは、テキストボックスやチェックボックスなどのコンポーネント。
グループ化を利用して、ビュー同士で親子関係を持たせることができる。
アクティビティには状態があり、以下に代表的な状態を示す。
アクティブ状態。 アクティビティスタックで最上位の位置にあるアクティビティ。または、現在操作中の状態である。
一時停止状態。 他のアクティビティに隠れた状態にあるが、完全動作中。
停止状態 メンバの値は保持されている。ただしメモリ不足になれば強制的にメモリは開放される。
バックグランド型アプリでは、onCreateで実行され、onDestroyで停止する。
onStartとonStopは、アクティビティが見え隠れするたびに実行される。
onPause,onResumeは、一時スリープ状態や、他のアクティビティが表示されるときに実行される。
OnStartやOnStopよりも、ひんぱんに実行されるため、軽めの処理を記述する必要がある。
onCerateは才女に実行されるイベント。このイベント後、onStartが実行される。
onRestartは停止状態にあるアクティビティが、再度起動すると実行される。このイベント後、onStartが実行される。
onSaveInstanceStateメソッドは強制終了されても、メモリ情報等を保護できる。ただし毎回呼び出されるとはかぎらないため、永続保存に用いるべきではない。
◇006サービス
バックグラウンド用コンポーネント。音楽プレイヤーなどがある。
Context.StartSeviceタイプは単一タイプのスレッドに向く。
onStartはContext.StartSeviceの場合に呼び出される。
Context.vindServiceタイプはマルチスレッド向きと思われる。他のクライアントにも接続可能。
他のバインドのためのコールバック機能を備える。
マニフェストでサービスの属性をいろいろ設定できる。
自動起動、他のアプリでの使用許可、サービス用のアイコン、サービスラベル、サービスを実装しているクラス名
◇007インテント
他のアプリを起動させたり、他のアプリの機能を利用したりする場合に使用する。
明示的と暗黙的の2種類が存在する。
明示的はコンポーネントのパッケージとして、アプリ名等を直接指定して使用する。
暗黙的は、条件に一致するコンポーネントを適当に選んで生成する。
例:メールアプリを指定すればgmailアプリ,emailアプリなどメール系アプリが対象となる。
◇008コンテントプロバイダ
アプリのデータを他のアプリに公開するためのコンポーネント
ファイルシステムやSQLiteを公開する。
他には、通話ログ、コンタクトリスト、ブラウザ、メディアストアなど共用データの利用
◇009ブロードバンドキャストレシーバ
タイムゾーンの変更や充電池の変化、写真撮影などを通知するコンポーネント
◇010パーミッション
ユーザーが許可しないとインストールできないしくみ
◇011マニフェスト( AndroidManifest.xml)について
アプリケーションコンポーネントの宣言
他のライブラリを参照
パーミッションを指定
ターゲットとなるAndroidのバージョンを指定
<application>タグ内に、アクティビティ、プロバイダ、サービス、レシーバーを記述
<intent-filter>タグ内ではアプリの起動条件を指定できる。
Android起動直後にアプリ起動などが可能。
<uses-sdk>タグ内ではSDKのバージョンが記述される。
◇012メイン.xml
レイアウトを定義
string.xmlでは文字リソースを管理。多言語にも対応している。
013フォルダ構成
src ソースコード
res リソース
valuses strings.xmlなど
gen リソースをコンパイルしたR.javaが存在する。
assets バイナリファイルを設置
014配列でできること
配列を定義、スタイルを定義、色の名称を定義
ソースで使用する場合、「@ファイル名/nameの値」のようにして利用
◇015ログ出力
ログは、エラー、警告、情報、デバック、その他の6種類
出力はLogCatウィンドウで行う。
◇016電子署名
電子署名をしないとgoogle playストアや端末が許可設定していないとインストールできない。
電子署名には有効期限があるが、期限が切れてもアプリ動作には影響しない。
電子署名には2種類あり、「デバッグ証明モード」と「リリース署名モード」がある。
デバッグ署名の有効期限は365日。期限が過ぎるとコンパイルエラーになるが、「debug.keystore」を削除すれば大丈夫。
◇017 トースト
トーストとはメッセージボックスのようなもの。ちょっとしたアニメーション表示も可能。
◇018 ノーフィケーション
ノーフィケーションとは画面の一番左上にあるアイコンとラベルのこと。
URLなどを設定できる。
◇019 処理中を示すダイアログ
処理中であることを示すアイコンのアニメーション付のダイアログ
◇コールバックメソッドをJSと同様な方法で実装できる。
例えば3秒後に実行など。
◇020 メニューボタン
ウィンドウの下部にメニューボタンを表示させることができる。
端末にメニューボタンイベントを実装できる。
アクティブティクラス内で、onCreateOptionsMenuをオーバーライドで実装する。
023 アクションバー
アクションバーにメニューボタンを追加できる。
アクションバーは上段メニューのこと
アクションバーに、検索用の検索ビューコンポーネント配置したり、その他の共用コンポーネントを配置できる。
独自のビューや、カスタムレイアウトを適用できる。
タブを追加することもできる。
◇029 ロングクリックイベント
長押しのこと
◇030
レイアウトXMLファイル(main.xml)でクリックイベントとメソッドを関連づけられる。
android:onclick="メソッド名"
◇031
レイアウト上で定義したビューのほかに、動的に生成したビューを追加することができる。
◇032
ビュー上に描画できる。オリジナルデザインボタンが作成できる。onDrawを使う。
ビューをアニメーションさせることができる。
ビューに表示されたURLやメールアドレスをリンクに変換できる。電話番号も可能。
テキストボックスに自動保管機能を付加できる。
テキストボックスのキャレットを移動できる。部分選択や、全選択も可能。
ボタンのデザインを丸くデザイン変更できる。
ビューにはおなじみのチェックボックス、ラジオボタン、セレクトボックスが存在する。
トグルボタンはON・OFFを切り替えるのにぴったりである。またON,OFFごとに表示画像を変更できる。
スライド型スイッチボタンが存在する。
レーティングバーは、星評価する場合にぴったし。星以外の画像に変更できる。
シークバーは、スライド式のアナログ値入力用に便利である。背景やツマミの部分の画像を変更できる。
アナログ時計ビューが存在する。アナログ時計を簡単に実装できる。デジタル時計もある。
日付や時刻入力用のビューが存在する。
カレンダービューの各日付にイベントを実装することも可能。
グリッドビューを使い、画像を並べて表示できる。GridViewクラスを用いる。
ギャラリー型の画像表示ができる。(スライド式の連続画像表示)
ポップアップウィンドウを表示できる。
タブも作成できる。タブごとにレイアウト用のxmlをセットできる。
フリック画面を実装できる。フリック画面は、引き出すように開くサブ画面。何種類か存在する。
オーバースクロールとは右端の空白をタップしてスクロールすること。onOverScrolledメソッドをしよう
フルスクリーン(タスクバー非表示)にすることができる。
タスクバーは色の変更などカスタマイズが可能。
タイトルバーにプログレスバーを表示することができる。長い処理には便利。画面の節約にもなる。
スプラッシュスクリーンをフェードアウト処理することができる。
スプラッシュスクリーンとは、アプリ起動後の暗い画面。
コールバックと併用して使う。
マルチスクリーンはタブレットなど大きい画面用
データを非同期で処理できる。
◇068 リストビュー
配列をリストビューで表示できる。
リストビューはカスタマイズ可能。
文字の大きさ、色をXMLで定義して行う。
複数列にすることも可能。
アイコンも表示できる。
ゼブラカラーにすることもできる。
リストを自動で、アニメーションさせながら下部までスクロールさせることができる。
スムーススクロールのタブを表示できる。(右側のスクロール用つまみ。便利。)
リストビューのスクロールイベントをキャッチできる。
リストビューの長押しされた場所を取得できる。
複数選択が可能。(チェックボックス付のリストになる)
行列に区切りをいれ、デザイン性を高めることができる。
■HTMLファイルを表示できる。 WebView
JavaScriptを実行できる。
SDカードに保存されたHTMLを表示することができる。
外部ストレージ(SDカード上)のファイルは、ネット経由でアクセス可能
ソースコード中に記述したHTMLを表示できる。
指定したURLページを表示させることができる。
JavaScriptを利用するには、有効設定が必要
Jqueryが使用可能である。
Webビューの設定が可能
Webビューに拡大、縮小を行うズームボタンを表示できる。デフォルト設定も可能
Webビューで表示しているサイトのURLを取得できる。
ダウンロード開始イベントを取得できる。
Webビュー上のクリックイベントを取得できる。
JavaScriptでタッチイベントを検知し、Javaへ渡すことができる。
Webビュー上で起きたエラー情報を取得できる。
Webビューにユーザーエージェントを送ることができる。
ユーザーエージェントは、サーバーに送る文字列のことで、HTTPヘッダーを利用している可能性がある。
ユーザーエージェントは端末ごとに異なるサイトを作成する際に便利
使用の際にはマニフェストでandroid.permission.INTERNETを有効にしておくこと。
Webページをキャッシュできる。
JavaScriptのアラートイベントをキャッチできる。
Webビューを通して、Geolocationを使用できる。google mapの利用
JavaのコードをJavaScript上で実行できる。
JavaScriptの値をJavaへ渡すことができる。
HTTP認証が必要なページを作成することができる。
■094ウィジェット
ウィジェットはホームに配置できるミニチュアアプリケーション
ウィジェットのサイズには基準がある。縦横を16分割したサイズが1単位。
ミリ秒単位で指定したタイミングでイベントを実行できる。ただし正確にあらず。正確にしたい場合はAlermManegerを利用。
Androidのサイズ単位にはピクセルの他にも幾つか存在する。
ウィジェットはAppWigetProviderクラスを継承して使う。
Widget.xmlでサイズなどを指定する。
ウィジェットをホームに登録する場合、ホーム画面を長押すと表示されるリストから選択
ウィジェットのクリックイベントを取得できる。
ウィジェットが削除されたことを検知できる。
ウィジェットからアクティビティを起動できる。
ウィジェットからノーフィケーション、ダイアログ、リストを表示できる。
ウィジェットでバックグランド処理をすることが可能
■Geolocation MapViewクラス
google mapを利用するためには、Maps APIの取得が必要。取得には幾つかの手順を踏まねばならず。
画面に地図を表示できる。APIレベル4以上
XMLで定義する方法と、ソースコードで定義する方法がある。
縮尺や緯度経度を調べることができる。
緯度経度を指定して地図表示。
衛星写真を表示できる。
ストリートビューを表示できる。
指定道路に色を付けることができる。
画面がストーリーとビューを表示している状態になっているかどうか、調べることができる。
地図上に別の画像を重ねることができる。オーバーレイ。
最後に取得した位置情報を取得できる。
位置情報が変わるたびに実行できる処理を作成できる。
位置情報を任意で更新できる。
特定範囲の位置情報を検出した場合に、インテントを起動できる。
位置情報から住所や地名を調べることができる。
住所と地名から位置情報を取得できる。
2点間の距離を取得できる。直線距離
■壁紙
SDカード上の画像を壁紙にできる。
端末に最適な壁紙の画像サイズを調べることができる。
「壁紙を選択」を表示したときに、アプリケーションを表示できる。
■ライブ壁紙
ライブ壁紙は動く壁紙のことである。バッテリーの消費がやや多くなる。API LEVEL7以上対応
ライブ壁紙に画像をもちろん表示可能
タッチした場所に画像を表示できる。
壁紙画像をスクロールに合わせて移動させることができる。
■C-03 グラフィック
画像ファイルをリソース用に変換してから画像表示できる。
assetsフォルダ中の画像を表示することができる。
フォルダ中の画像を表示できる。
インターネット上の画像を表示できる。
リサイズできる。
bitmapの作成が可能?
画像サイズを取得できる。
指定位置の色を取得できる。
画像ファイルを読み込む際、画像の一部だけを切り出して読み込むことができる。
画像をドラッグできる。
■キャンバス
キャンバスに画像を張り付けられる。
ライン、円、図形、文字列を描ける。
キャンバスを回転できる。
キャンバスを左右反転できる。
■Open GL ゲーム用高速描画
ライン、図形を描ける。
テクスチャーを生成できる。
テクスチャーにエフェクトをかけることができる。色合いの変更など。
■通信
電話発信を検知できる。
発信先の電話番号を取得できる。
特定の発信先を検知して取得できる。
指定した電話番号へ電話をかけることができる。(インテントを通してダイアラアプリ起動)
SIMカードの有無を調べることができる。
SIMカードからキャリア名を取得できる。キャリア名とはNTTなどを指す。
キャリアの国コードを取得できる。
SIMカードのシリアル番号を取得できる。
端末の電話番号を表示できる。
SIMカードにアドレス張のデータを保存できる。
端末の電話番号を調べることができる。
SIMカードからアドレス張のデータを取得できる。
端末の電話帳からデータを取得できる。
端末の電話帳に登録してある写真を取得できる。
端末の電話帳にデータを追加できる。Ver2.1以上。インテントを起動して行う。
端末の識別番号(IMEI)を調べられる。
IMEIは端末ごとの識別番号であり、認証などに使用できる。
WiFi接続のON-OFFが可能。ただしエミュレータではできない。
WiFiネットワーク設定の一覧を取得できる。
ネットワーク設定の追加および削除ができる。
アクセスポイントの一覧を取得できる。
MACアドレスを取得できる。ただしエミュレータでは不可能。
信号レベルを取得できる。
電波強度を取得できる。
ネットワーク名を取得できる。
機内モードのON-OFFを切り替えられる。
GPSの有無を切り替えられる。ダイアログの確認画面が表示される。
位置情報を取得時にインテントを発行できる。
一時的に位置情報を取得する。(リアルタイムで位置情報を取得しない)Ver2.3
GPSステータスを取得できる。
■Bluetooth ver2.1以上 APIレベル5以上
Bluetoothは無線データの転送技術。10m以内。
有無の切り替えが可能
自由に使用可能な、2.45GHz帯の電波を使っている。赤外線と違い、遮蔽物があっても問題ない。
Bluetoothデバイスを探し出すことができる。
ペアリング済みのデバイスリストを探し出すことができる。
端末自身を他のデバイスから検出可能にすることができる。
サービスへ接続に行ったり、逆にサーバーとして待ち受けることができる。
API LEVEL2.33からセキュリティレベルが向上。パスキーが必要になり、パスキーがないデバイスは接続できなくできる。
Bluetoothヘッドセット(頭につけるイヤホンやマイク)の接続状態を確認できる。Ver3.0以上
Bluetooth間でデータの送受信ができる。
BlueHeadDevice接続して、通信を行える。血圧計脈拍計デバイスと連動できる。Ver4.0以上
■WiFi Direct ver4.0以上
WiFiDirectは無線技術を使い各種デバイスと接続する。ゲームやプリンターなど
WiFiDirectで接続可能な端末の一覧を取得できる。
WiFiDirectでP2P接続し、メッセージデータの送受信が可能。
ネットワークデータの通信量を確認できる。
データ通信量をグラフで確認できる。
■入力センサー
ソフトキーボードを自作することができ、キーボードイベントも作成可能。文字補完機能も利用できる。
クリップボードを操作できる。テキストをクリップボードに保持するという使い方ができる。
端末の傾き、加速度を取得できる。(純粋な加速度がほしい場合は重力加速度の影響を差し引くこと)
X,Y,Z方向の値を取得する。
端末周囲の照度(明るさ)を取得できる。
磁気センサーから値を取得可能
温度センサーから値を取得可能
近接センサーから値を取得できる。センサーからの距離をcm単位で測定する。
ジャイロスコープの値から、角速度の値を取得できる。
重力センサーからX,Y,Zの値を取得できる。ver2.3以上。
直線加速度センサーから値を取得できる。
気圧センサーの値を取得可能
ジェスチャーの内容を取得できる。ジェスチャーとは、端末画面に指で記号や文字を描くこと。
連動してイベントを起こすなどが可能
ジェスチャー定義データがあり、そこへジェスチャに関するデータを登録できる。
ジェスチャーによる軌跡をBitmapで取得可能。
認識したジェスチャーを判定し、類似度を表示することができる。これにより微調整が可能である。
■メディア・スピーチ
オーディオファイルを再生できる。
リソース化してオーディオを再生できる。
JETファイル(midi,dls)を再生できる。
音量調整ができる。
音声を記録することができる。
ムービーファイルを再生できる。
映像を記録することができる。恩背記録と併用できる。
動画からサムネイルを取得できる。
JPEGがExif情報を抜き出すことができる。
DTMFトーン(電話ボアtんを押したときの音)鳴らすことができる。
ビジュアライザーを表示できる。ビジュアライザーは音声にあわせて動く画像のこと
メディアプレイヤー用のイコライザー(音質調整)を実装できる。
ボイスデータ(合成音声機能)の存在をチェックできる。(日本語非対応)
テキスト朗読が可能。
テキストからサウンドファイルを作成できる。
メディアファイルからメタ情報を取得できる。アルバム名や、アーティスト名など
メディアファイルからサムネイル画像を取得できる。
メディアプレイヤーをロック画面で操作可能。
■カメラ
標準カメラを起動し、写真を撮れる。
プレビュー画像を表示できる。
フラッシュONの設定ができる。
オートフォーカスが可能
画像に位置情報を付加できる。
写真サイズを指定できる。
JPEG画像のクオリティを指定できる。
端末の内向きカメラを起動できる。
コンティニュアスAF(連続オートフォーカス)が使用可能。ver4.0
カメラで顔認識ができる。
動画画像撮影中に、静止画像を撮影できる。
■データ
プリファレンスを利用したデータ保存ができる。
プリファレンス保存はキーと値を組み合わせたデータ。iniファイルやdefファイルと似ている。
プリファレンスのアクセスモードを設定できる。read onlyなど
他のアプリケーションからプリファレンスへのアクセスを許可できる。
他のアプリケーションのプリファレンスへアクセスできる。(許可がある場合)
端末の内部ストレージにファイルを作成したり、読み込んだりできる。
内部ストレージのファイルにアクセスできる。
バイナリ形式のファイルにアクセスできる。
JSONの読み込みができる。
SDカードなどの外部ストレージにあるファイルへの入出力が可能。
コンテントプロバイダにはいかのものがある。コンテントプロバイダとは別のアプリケーションと連動するデータ。
通話ログ、電話帳、ブラウザのブックアーク、googleカレンダー
インテントにイベントを追加できる。
内部ストレージ領域に、データベースを作成できる。
メモリ上に一時的なデータベースを作成できる。
データベースにはトランザクション機能もある。
vacumでデータベースの問い合わせのパフォーマンスを向上させることができる。速度と容量節約が期待できる。
レコードを大量に削除したあと、インデックスの再構築を行うとパフォーマンスを向上できる。
ListViewとの連携も可能?
■サービス
サービスとは、バックグランド系のアプリで、他のアプリを監視するものや、音楽プレイヤーなどがある。
インテントを利用してサービスを起動できる。
サービスを別プロセスで起動できる。
バインドを利用してサービスを起動できる。(インテントを使わず)
コールバック。 サービスからアクティビティに通知できる。
端末の電源起動時に、サービスを起動できる。
サービスを停止できる。
ウィジェットからサービスを起動できる。
サービスからアクティビティを起動できる。(ブロードキャストレシーバを起動)
サービスからノーフィケーションを作成できる。
■端末設定
画面サイズを取得できる。
端末画面の明るさを変更できる。
アプリケーション画面の明るさを変更できる。
画面の縦横切替機能の設定を調べたり変更できる。
端末の固有識別番号(ANDROID_ID)を調べられる。
端末のモデル番号を調べられる。
ベースバンドバージョンを調べられる。
日時の自動同期設定を調べたり、変更できる。
現在の年月日と時刻を調べられる。
時刻の表示形式(12h、24h)の切替と調査ができる。
日時の表示形式の調査と変更ができる。
アラームセットができる。
サイレントモードの設定を調査したり変更できる。
データ同期モードの設定を調査したり変更できる。
地域言語設定を調べられる。
バッテリの残量を調べられる。(何%)
充電中かどうかや、現在の充電方法を調べられる。
バッテリーの温度を調べる機能がある。
バッテリーの状態を調べられる。
ビッケをたたくことができる。ティモをなでることができる。
バッテリの種類を調べられる。
機能別にバッテリーの消費量を調べられる。
外部電源の接続を検知できる。また外れたときも検知できる。
■システム運用
パッケージからパーミッションのイランを取得できる。
パッケージから起動可能なインテントを調べられる。
インストール済みのアプリケーション一覧を取得できる。
パッケージからバージョン情報を取得できる。
パッケージの署名をチェックできる。
パッケージがインストール済みかチェックできる。
インテントが呼び出し可能か調べることができる。
パッケージがインストールされた日時を調べることができる。
端末に登録済みのメールアドレスを調べられる。
端末に登録済みのアカウントを削除できる。
AuthTokenを調べられる。AuthTokenを使うとさまざまなgoogleサービスが利用できる。
端末に設定しているパスワードをクリアできる。
アプリケーションから端末パスワードを設定できる。
アプリケーションから端末画面をロックできる。
アプリケーションを初期化できる。
スクリーンアウトができる。
アプリケーションのデータをクラウドへバックアップしたり、リストアができる。
アプリケーションからカメラを無効化できる。Ver4.0 デバイスポリシー。
インテントに値を渡すことができる。
各種設定画面を直接呼び出すことができる。
端末の状態を取得できる。
アプリケーションを外部ストレージに移動できる。
インターネットに接続しているか確認できる。
デバッグ時にのみ実行できる処理をコーティングできる。
スレッド上で時間のかかる処理を実行できる。
プロセス上で時間のかかる処理を実行できる。
時間のかかるダウンロードの処理ができる。
C2DMでサーバからアプリケーションのデータを転送できる。
サーバーからAndroid端末へデータを送信する機能。
googleへの申請が必要
NFCを利用できる。NFCは無線通信規格。日本ではEdy,WAON,住基カードなど
端末が必要なハードウェアを実装しているか確認できる。
NFCが有効化どうか確認できる。
Androidビームでテキストを送信できる。AndroidビームとはNFC対応デバイス間でデータを共有する機能のこと。
SIPサーバーと接続できる。SIPサーバは、IP電話やインターネット会議に利用される。
SIPコールで受信して通話できる。
SIPコールを発信して、通話する。
VPN接続できる。
Voicemailを利用できる。
ソーシャルネットワークに招待できる。
有料アプリを保護できる。ライセンスチェックを行える。
アプリ内で課金を実装できる。
Admob広告を表示できる。表示されるたびに報酬が手に入る。
google Analysiceでアプリ内の行動を解析できる。画面ごとの起動回数など利用状況を確認できる。
旧覚書2
■プロジェクトの複製方法
EclipseのPackage Explolerからコピー元のプロジェクトを選択
あとは右クリックからのコピー&ペーストで新しいプロジェクト名を入力するのみ。
■DBのトランザクション
db.beginTransaction();
try {
// SQLの処理
db.setTransactionSuccessful();
} finally {
db.endTransaction() ;
}
beginTransactionでトランザクションを開始し、 エラーが発生しなければsetTransactionSuccessfulでコミットして、 endTransactionでトランザクションを終了します。
エラーが発生した場合は、setTransactionSuccessfulが実行されないまま、 endTransactionでトランザクションが終了してしまいますので、 処理はロールバックされコミットされません。
■HashMapのループ
for(HashMap.Entry<String, String> e : ent.entrySet()) {
System.out.println(e.getKey() + " : " + e.getValue());
}
■ビルドできなくなったときの対処法
◇コンパイラーが変わっていないか?
ウィンドウ⇒設定⇒Java⇒コンパイラー
コンパイラ準拠レベルを設定しなおして適用ボタン。
◇ソフトウェア更新
ヘルプ更新の確認。
しばらく待つ。
Android関連にチェックを入れて実行。
■時刻を取得する
int m=Calendar.MINUTE;//分を取得
int s=Calendar.SECOND;//秒を取得
■レイアウトの注意。
「○○ビューの横に配置」と言う感じで、他のビューと関連付けた配置方法があるので注意。
■テキストビューに文字を表示する。
TextView tv1=(TextView)findViewById(R.id.textView1);
tv1.setText("大きな猫");
■実行やデバッグボタンを押してエラーがでるとき。
activity_main_out.xmlを削除する。
■基本用語
アクティビティ
C#,VBにおいてFormに該当するもの
ビュー
C#,VBにおいてコントロールオブジェクトに該当する。
ラベル、テキストなど
■プロジェクトの作成
①
ファイル→新規→その他→Android→Android アプリケーション・プロジェクト→次へ
②
Application Nameにプロジェクト名を入力
Build SDKはデフォルト選択でも良い。(例:Android 4.1(API16)】
Minimum Reauired SDKは API4:Android 1.6(Donut)を選択
③
あとは次に進むボタンを押すだけ
④
テスト実行は通常のJava実行アイコンをクリックする。
選択肢が出た場合、Androidアプリケーションを選択する。
■ビュー配置の基本的操作
① パッケージエクスプローラ→開発中のプロジェクト→res→layout→activity_main.xmlをクリック。
※activety_main.xmlはアクティビティクラス名よって異なる。
② 左側のPaletteウィンドウにあるボタンをドラッグして、アクティビティに配置する。
③レイアウトしたボタンを右クリックする。
④ その他のプロパティ→Inherited from view→onClick...
⑤ ①で手入力したクリックイベント名を入力してOKボタンを押す。引数名などは不要。
例:onClickButtonA
■ビューに値をセットする。
テキストビューに文字列をセットする例。
TextView text1=(TextView)findViewById(R.id.editText1);
text1.setText("ニャンコ先生");
※ビュークラス名や、ID名は、レイアウトXMLをXMLエディタで開くと見れる。
■プロジェクトの作成でコンパイルエラーが出る場合。
R.Javaでのエラー対策
一度プロジェクトを作成し、Eclipseを再起動する。
■gmap利用の下準備
Google APIsが必要
ウィンドウのAndroid SDKマネージャから追加できる。
■リソース画像を表示する。
①resフォルダ内の以下の3つのフォルダにサイズの異なる画像を配置する。(一箇所でも良い)
drawable-hdpi 480×800
drawable-ldpi 240×320
drawable-mdpi 320×480
※ファイル名は半角英数字であること。(jpg,png)
②一回デバッグ実行する。
genフォルダ内にあるR.javaが再生される。
③コーティングする。
例)
public void showImage(View view){
ImageView imageView1=(ImageView)findViewById(R.id.imageView1);
imageView1.setImageResource(R.drawable.batu);
}
■URL上の画像を表示する。
①AndroidManifest.xmlに以下のコードを追加する。(インターネット接続の許可
<uses-permission android:name="android.permission.INTERNET"/>
②コーティング
例)
public void showImageA(View view){
String url="http://amaraimusi.sakura.ne.jp/demo/design01/images/contents/photo01.jpg";
//String url="http://www.ikachi.org/graphic/military/sky/m001a.jpg";
try{
Drawable sample=Drawable.createFromStream(
new URL(url).openStream(), null);
ImageView imageView1=(ImageView)findViewById(R.id.imageView1);
imageView1.setImageDrawable(sample);
}catch(Exception e){
Toast myToast=Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG);
myToast.setGravity(Gravity.CENTER, 0, 0);
myToast.show();
}
}
■MainActivityで宣言したメンバの生存期間
Androidを閉じても、値は保持される。
ただすタスクキラーアプリを使うと値はリセットされる。
■ログ出力
Androidのログ出力はLogCatを用いる。
例)
Log.d( "LogCat", "Log message" );
第一引数はタグ名、第2引数はログメッセージ
LogCatウィンドウに出力される。
ログメッセージは日本語も出力できます。
■ローカルストレージへの保存と保存ファイルの確認方法
ローカルストレージ領域にテキストファイルや画像ファイルを保存できます。
Android端末でのパスは、以下のようなディレクトリに保存されます。
/data/data/(パッケージ名)/files/(ファイル名)
◇エミュレータ環境について
例えば、Windows XPの場合ですと、
C:¥Documents and Settings¥PCユーザ名¥.android¥avd¥xxxx.avd
xxxx.avdの「xxxx」は、作成したAVDの名前です。
そして、この中の以下のファイルが、ローカルファイルらしいです。
userdata-qemu.img
◇エミュレータ環境のローカルストレージに保存したファイルを確認する。
①確認方法はエミュレータを起動中にAndroid SDKのtoolsフォルダ内にあるddms.batを起動します。
②alvik Debug Monitorが開くので上段メニューからDevice→File Explore
③File Explorerから「data/data/アプリケーションパッケージ/files」を開く
ファイルを選択して左上のエクスポートアイコンで、任意のフォルダにエクスポートできます。
C:¥Program Files¥Android¥android-sdk¥tools
◇サンプルコード
String fileName="sample.txt";
String fileString="私の猫は¥nティモです";
try {
FileOutputStream fos=openFileOutput(fileName,Context.MODE_WORLD_READABLE);
fos.write(fileString.getBytes());
TextView tv=(TextView)findViewById(R.id.textView1);
tv.setText("書き込んだぜよ¥nファイル名:"+fileName);
fos.close();
} catch (FileNotFoundException e) {
Toast.makeText(this,"Oh 失敗...", Toast.LENGTH_LONG).show();
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (IOException e) {
Toast.makeText(this,"Oh 失敗2...", Toast.LENGTH_LONG).show();
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
■インテントで標準カメラの起動と撮影した画像の取得
下記のコードをMainActivityに記述。
//ボタンイベント。カメラアプリをインテントで立ち上げる。撮影後、データ保存をし、onActivityResultを呼び出す。
public void onClickBtnB(View view) {
Toast.makeText(this, "テスト2", Toast.LENGTH_LONG).show();
String filename = System.currentTimeMillis() + ".jpg";
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, filename);
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
mImageUri = getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent();
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri);
startActivityForResult(intent, 2);
}
//インテントからの返り処理
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Toast.makeText(this, "テスト3", Toast.LENGTH_LONG).show();
if (requestCode == 2) {
// ImageViewに表示するなら
ImageView imageView = (ImageView) findViewById(R.id.imageView1);
imageView.setImageURI(mImageUri);
}
}
■画像リソースの解像度の種類
フォルダ名 意味
drawable OS1.5までの指定方法。OS1.6以上でも指定出来る
drawable-ldpi 低解像度扱いの画像を格納 240×320
drawable-mdpi 中解像度扱いの画像を格納 320×480
drawable-hdpi 高解像度扱いの画像を格納 480×800
drawable-nodpi 解像度を意識しない画像を格納*1
drawable-port 縦画像を格納
drawable-land 縦画像を格納
drawable-ja 日本語ロケーション時の画像を格納
※参考
http://d.hatena.ne.jp/hyoromo/20101118/1290093769
■画像リソースの追加方法
drawable-○○フォルダに画像ファイルを置き、一度実行する。
するとR.javaが更新される。
これで使用OK.
■多言語化に対応
リソースの多言語対応は、res/以下のディレクトリ(たとえばres/values)に修飾子を付与するだけで、簡単に作成できます。
日本語と英語(デフォルト)に対応する場合、下記2つのリソースを用意します。
values/string.xml
values-ja/string.xml
利用例)
Log.d("debug", getString(R.string.hello));
参考サイト:http://techbooster.org/android/resource/583/