microSD のマウント状態

microSD のマウント状態は
Environment_getExternalStorageState() の
実行結果でわかる
実行結果の String値が
Environment_MEDIA_MOUNTED 定数と等しいなら
読み書き可能
これを利用してマウント状態を確認し
マウントされていないなら、Activity を終了する処理をメソッドに記述すればOK
Android 2.2 以降は、アプリを microSD カードに移せるので
開発するときに役立つかも

Android関連の書籍

これまでにいくつか勉強のために
Android の本を買いましたので、紹介してみます
まず、わかりやすさからなら

がおすすめです
http://www.shoeisha.com/book/hp/10days/down/index.html#android
から必要なファイル、そして
この本で作成するアプリがダウンロードできます
最近の書籍は、昔とは違い、サンプルやソースコードが
ダウンロードできるため、うまくいかないときには
完成版のコードと比べて、修正したり、
実際に先にアプリを動かすことができるので、
理解がしやすくなっていると思います
この本で参考になったのが、Eclipse を使って電子証明書を
つくったり、Android 開発者の登録のしかたやバージョンアップの
方法です
次に、

こちらは、少し難しくなります
ただ、コードの解説が載っていますので
アプリ作成の勉強をするにあたり、参考になると思います
ただし、間違っているところがありますので、
http://www.sbcr.jp/support/9833.html
に正誤表が載っていますので
こちらを参考にする必要があります

IS04 の予備バッテリー購入

3月に機種変してから、IS04 を使っています
来月、ようやく android 2.2 にできるようになるようです
また、近々、アップデートで
Eメールの削除機能が使えるようになるようです
ただ、私の場合、省エネのような使い方はしないため
ほぼ10時間程度で電池がなくなります
このため、どこかにでかけるときのために
予備のバッテリーを購入しました
今回、購入したのは、充電機つきのものです

充電には4~5時間はかかりますが
出先で充電することや、電池の残量を気にするよりは
効率的です
あらかじめ、充電しておいたものと交換すれば
充電完了の状態で使えますので
電池切れの心配はなくなります
とくに、しらない場所にいったときに
ナビが使えなくなったり、乗り換え案内ができないと
とても不便です
android 携帯そのものが電池がもたないので
できれば2つほど購入しておいたほうが
対処できます

Android 開発メモ

Eclipse を使って開発するときに、ディレクトリごとの
解説になりそうなものをまとめてみました
ブログなどでまとめておくと
自分の知識の復習やまとめに役立ちます
Screenshot-12.png
src ディレクトリには ソースコードが格納される
res ディレクトリには アプリに関連する各種ソースが格納される
drawable-*dpi 関連には
アプリのアイコン、アプリで使用する画像を入れる
layout ディレクトリには
アプリ画面のレイアウトを記述したXML コードが格納される
values ディレクトリには
文字列、数値などのリソースが格納される
ちなみに、drawable-*dpi は
画面の大きさごとに応じて画像を表示するためにわけてある
大きめの画像を使うなら
hdpi
中ぐらいなら
mdpi
小さいなら
ldpi
h=high m=middle l=low
みたいな意味だとおもいます
プロジェクトを作ると、root に AndroidManifest.xml
が作成されます
ここには、アプリの基本情報が記述されています
また、権限を変更するときにも、ここの設定を変更します

自作アプリ ブラウザからのインストール実験

署名付きAPKファイルの作成
を公開するまえに、まずは自分の環境でインストールなどに
問題がないかを調べます
まず、手持ちの Webサーバにアップロードします
とはいっても、レンタルサーバーなどはつかいません
XAMPP を使えば、簡単に簡易Webサーバを準備できます
もしくは、ubuntu や fedora ,CentOS なら
apache をインストールすることでも対応可能です
今回は、ubuntu でAPK ファイルを
作成したので
sudo apt-get install httpd
でWeb サーバー機能をいれます
このままだと、権限の問題で読み書きに支障がでるので
sudo chown -R snowpool www/
で所有者をユーザへ変更します
次に、android アプリのインストールファイルを
ダウンロードできるページへ移動します
cp /home/snowpool/デスクトップ/Test2.apk .
続いて、HTMLファイルを編集し、ダウンロードできるようにします
vi /var/www/index.html
内容は
<html><body><h1>It works!

<p>This is the default web page for this server.

<p>The web server software is running but no content has been added, yet.

アプリ配布テスト<br>
<a href=”Test2.apk”>アプリ配布実験</a>
</body>
とします
これで、Android エミュレータを起動し
エミュレータのブラウザで
http://サーバーのIPアドレス
で接続して、
ファイルをダウンロードします
(残念ながら、日本語部分が文字化けしました)
Screenshot-9.png
Screenshot-10.png
ダウンロードが無事に成功したら
インストールします
Screenshot-11.png
このときに
このアプリが行える権限などが
AndroidManifest.xml にしたがって表示されます
エミュレータ以外にも
VirtualBox で起動した Android OS も同様の方法でインストールの
実験が可能です
このVirtualBox の環境作成には
Android-X86-2.2をVirtualBoxで動かした。
を参考にさせていただきました

署名付きAPKファイルの作成

Android Market にアプリを登録するには
デジタル署名されたアプリケーションファイル
通称APKファイルを作成する必要があります
以下が Eclipse での APK ファイル作成になります
作成したいプロジェクトを右クリックし
Android Tools > Export Signed Application Package
すると、プロジェクト名を聞かれるので
Browse ボタンから探す
もしくは プロジェクト名を入力します
今回は、test プロジェクトを入力します
次に、電子証明書を作成します
まだ作成していないので、
Create new keystore
を選択し、
Location の項目へファイル名と置くディレクトリを
入力します
ちなみに、ファイルの拡張子は
.keystore になります
Screenshot-6.png
続いて、電子証明書の作成画面です
Screenshot-7.png
Alias
ファイルの別名
Password
パスワード
Confirm
確認のため、もう一回パスワード入力
Validity(years)
電子証明書の有効期限
First and Last Name
開発者の名前
Organization Unit
会社の部署
Organization
会社名
City or Locality
都市または地域名
State or Province
州名または地方名
Contry Code
国コード(日本なら jp)
これらを記入します
これらを入力して、次は署名付きAPKファイルの保存先を
指定します
Screenshot-8.png
この画面で Browse ボタンを押すと
保存先を聞かれるので、任意の場所に保存します
今回は、デスクトップに置きました
最後に Finish ボタンを押して、作成完了です
今回の参考サイトとして
eclipse上で署名されたandroidアプリ(.apk)を作成する
apkファイルに署名する簡単な方法
Androidアプリケーションを公開するために:署名と配置の方法
を参考にさせていただきました
今回は、Eclipse で行いましたが
不具合がでたときの対策としてコマンドから
証明書を作成する、ということに挑戦しようと思います
ubuntu で行っているため
Android アプリに署名をする
を参考に、端末から作成してみます

署名付きAPKが作成できません

ようやく、Eclipse で android アプリのファイルが
作成できると思ったのですが
残念ながら、電子証明書が作成できません
この電子証明書がないとアプリのインストールができません
現在、使用している環境は
android 10.10 32bit
です
署名付きAPKが作成できなくなった
によれば
、ADTのバージョンが原因
もしくは
eclipse の入れ直しで解決することが多いようです
もっとも、Eclipse にこだわらないのであれば
Androidアプリケーションを公開するために:署名と配置の方法にあるように
端末から作成するという方法もあるようです
まずは、Android SDK のアップデートを行ってみます

アイコンと名前の設定

アプリの名前を変更するには
res/values/string.xml
の中にある
<string name=”app_name”>プロジェクト名</string>
の部分の プロジェクト名
のところを変更すれば、アプリの名前を変更できます
たとえば
Test1 というプロジェクトで作成しているなら
<string name=”app_name”>Test1</string>
となっているので、
これを
<string name=”app_name”>さんぷるあぷり</string>
とすれば、アプリ名前がかわります
Screenshot-2.png
Screenshot-1.png
ちなみに、string.xml の内容を書き換えるとアプリの名前が変わるのは
AndroidManifest.xml
の中にある
application タグの中の
android:label=”@string/app_name”
の記述によって、変更先を参照するようになっているからです
また、アイコンを変更するのなら
res/drawable-hdpi
res/drawable-ldpi
res/drawable-mdpi
の中に使用したいアイコンの画像ファイルをおきます
そして、Eclipse で
File > Refresh
を行えば、設定が反映されます
これも、
AndroidManifest.xml
の中にある
application タグの中の
android:icon=”@drawable/icon”
の記述により、画像ファイルを変更するだけで
アイコンを変更することが可能になっています

電話着信時のイベント処理

Androidi プログラミングのメモ
電話着信関連のイベントを処理するには
PhoneStateListener 関連を使用するらしい
「PhoneStateListener 電話」
で検索すると、いろいろ出てきます
さすがにアプリを携帯で実験するのはリスキーなので
まずはエミュレータで実行
参考サイトは
PhoneStateListenerを使って着信イベントを取得する
これを使えば、まずはエミュレータで実行して実験できます
もうひとつ興味深かったのが
電話番号・SIM・デバイスID・サービス・通信強度・基地局・電話コールの取得
こちらはソースが載っているので、
わかりやすいかも

複数のSDKバージョンへの対応

新しい機能を実装したアプリを作成すると
新機能がサポートされていない Android OS では動作しない
まぁあたりまえなんだけど
Windows 98 で Windows 7 の機能は使えないし
一応、新しいSDKでビルドしたアプリでも
最低限実行可能なSDKバージョンを指定しておけば
そのバージョンで動作はできるようです
バージョン指定には、Androidmanifest.xml に以下の文を追記します
<uses-sdk android:minSdkVersion=”4″></uses-sdk>
この4の部分がAPIレベルという
Android SDK に関連する数値です
ただし、この設定を行っても
インストールはできるけど、動作保障はできない
ということです
Linux に wine を入れて Windows アプリを起動しようとしても
うまくいくとは限らないというのと同じようなものです
Android 2.3 にしかない機能を
Android 2.1 で動かすと
強制終了のようになります
このため、リリースするときには
バージョンを考慮するか、もしくは切り替え機能を搭載することが
多いようです
これが Android 2.2 対応とかという表示がされる理由です
Android 2.1 とか Android 2.2 とかでわかりにくいときには
Windows 98, Windows ME ,Windows 2000
Windows XP Windows Vista Windows 7
というようにバージョンがあがったら
システムが変わるぐらいに考えてみるとわかりやすいです