2012-11-17

Androidアプリを作ってみる - 端末電池状態(1) -

90年代前半から始めたネット利用に際し、多くの諸先輩方が残された道標となるメモを利用させて頂いた。
残念ながら、自分はそういう諸先輩方の足元にも及ばないレベルでしかなく恐れ多いが、せっかくAndroidがらみのブログを書いているので、自己に向けたメモがてら、端末の電池残量表示アプリを作り、その経過を記録して残す事にした。

開発環境:Android SDK(4.1対応)
表示ターゲット端末:Nexus7
ターゲットバージョン: Android4.1
最低対応バージョン: Android2.3
開発環境OS:Linux

おそらく一般的な開発環境OSはWindowsXP or Windows7 辺りなんだろうが、今回はLinuxで開発する。
LinuxのディストリにはJavaやAndroidSDKのパッケージもあるのだろうが、ここではパッケージではなく、各配布元のSDKIを使って作ることにする。

各SDKは、全てホームフォルダ直下に作成する前提で説明する。

Javaのインストール

Android4.1では、JavaのバージョンはJava2SE-6を使うことになっているので、配布元からjdk1.6バージョンのSDKを取得する。
JavaはOpenJDKとSun(Oracle )のものがあるが、バージョン6までは、安定度からはSunのJDKが優れているので、こいつを使う

OracleのJDKダウンロードのサイトから、”Java SE 6 Update 37”を選択してダウンロードする。
使っているOS環境で異なるが、

32ビットなら、 Linux x86    68.44 MB      jdk-6u37-linux-i586.bin
64ビットなら、 Linux x64    68.71 MB      jdk-6u37-linux-x64.bin

を選び、ダウンロードし、ホームフォルダに保存する。(ここから先は、ホームフォルダを /home/user として説明)
拡張子が.binのSDKは開発環境フォルダのアーカイブみたいなもので、インストールするには、ファイルに実行権限を与えて実行するだけでよい。

$ cd $HOME
$ chomod u+x jdk-6u37-linux-i586.bin
$ ./jdk-6u37-linux-i586.bin  <--- インストールを開始

これで、jdk1.6.0_37 みたいなフォルダが出来る。面倒なのでこのフォルダにjdk16というリンクを作成する。
 $ ln -s  jdk1.6.0_37 jdk16

ログインした時点でこのjavaを使えるようにパスを通し、環境変数もセットする

$ vi .profile
JAVA_HOME=$HOME/jdk16
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH

これでJavaの開発環境は整った。

Android SDKのインストール

Android SDKは、Googleの配布サイトからダウンロードする。
これもJavaと同じように、OS環境によって

32ビットなら、Linux 32-bit     adt-bundle-linux-x86.zip
64ビットなら、Linux 64-bit     adt-bundle-linux-x86_64.zip

を選びダウンロードする。JDKと異なるのは、MD5のチェックがついているので、ダウンロード後の、ファイルチェックが可能になる。

$md5sun adt-bundle-linux-x86.zip 

表示された数値とサイトでのMD5 checksum が同じか確かめ、問題なければ解凍する。

$ unzip adt-bundle-linux-x86.zip

android-sdk-linux というフォルダに解凍される。

Eclipseのインストール

JavaとAndroidSDKがあれば開発可能だが、今時テキストエディタで開発しなくても、Eclipseという無料の優秀な開発ツールがあるので有りがたく使わせて頂く。
Ecllipse1のダウンロードサイトから、自分の環境にあったEclipseをダウンロードしてセットアップする。
ここでは、 初版の事情から、一つ前の、Eclipse Classic 3.7.2, (173 MB)をダウンロードして使う事にする。

$ tar zxvf eclipse-SDK-3.7.2-linux-gtk.tar.gz

これで、ecllipse というフォルダにeclipse IDE環境が解凍される。これだけで開発は可能だが、メニューを日本語対応させることができるnlpackなるモジュールを開発している方がおられるので、有りがたく使わせて頂く。

3.7.2 Stream Build    nlpack.eclipse.indigo-SR2-I201205311700

上記が、3.7.2に対応する日本語化モジュールのリンクなので、これをクリックして本体をダウンロードする
日本語化モジュールのインストールは、eclipseを解凍してできたインストールしたフォルダの、dropinsフォルダに、nlpackという
フォルダを新規作成し、そこへ先ほどダウンロードした

$HOME/NLpackja-eclipse-SDK-3.7.2-blancofw20120531.zip

をセットして解凍する。

$ cd  eclipse/dropins/
$ mkdir nlpack
$ cd nlpack
$ mv  $HOME/NLpackja-eclipse-SDK-3.7.2-blancofw20120531.zip .
$ tar zxvf NLpackja-eclipse-SDK-3.7.2-blancofw20120531.zip

これで、

$HOME/eclipse/dropins/nlpack/ecllipse

というフォルダができ、そこに日本語モジュールが解凍される。

後は、eclipseの起動オプションに、たんまりメモリをくれてやる設定をし、ecllipseを起動する。

$cd $HOME/eclipse
$ vi ./eclipse.ini
-----------------------------------------
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Xms256m
-Xmx1024m
-----------------------------------------
こんな感じで、eclipseに大きめのメモリを食らわしてやる。これでようやくeclipseの起動準備が終わったので、エクリプスを起動する。

$ cd $HOME/eclipse
$ ./eclipse

eclipseのAndroidSDKのプラグインをインストール

 ecllipseが起動したら、AndroidSDKのプラグインをインストールする。

[ヘルプ]---[新規ソフトウエアのインストール]

作業対象URLに、

 https://dl-ssl.google.com/android/eclipse/

を入力して[追加]ボタンを押し、サイトを追加し、出てきたリポジトリは全てチェックしてインストールする
ecllipseから再起動を促されるので、反抗せずに素直に従う。

AndroidのOSバージョンごとのモジュールをインストール

再起動後、Androidプラグインの設定を行う。

[ウインドウ]--[設定]

で設定画面をひらき、ダイアログ左のメニューからAndroidを選択し、SDK : Location にAndroidSDKをインストールした場所を入力してやる。

SDK Location :    /home/user/android-sdk-linux

Androidは、IntelのCPUように暇さえあれば次々とOSバージョンをアップするため、開発に際してはターゲットバージョンになりうる各バージョンごとのモジュールを準備しなければならない。そこで、

eclipseの [ウインド]---Android SDK Manager

を開き、開発対象となるバージョンごとのモジュールを選択し、インストールする。
現段階では、
  • 4.x 全て
  • 携帯向けの最後のバージョンである2.3.3
  • Extras から Android Support Library
の3パターンを選択インストールしてやる。ダウンロードを伴うのでかなり時間がかかるが、気長に待つ


AndroidSDKの開発エミュレータの設定

実機端末がない場合でも開発できるように、開発エミュレータをセットアップしてやる。 eclipseを起動し、

eclipseの [ウインド]---AVD Manager  で、AVDマネージャを起動し、Newで設定条件を新規作成する。

img0001


Name: このエミュレータ設定の名前。設定条件は、
  • Target: 開発ターゲット
  • CPU:  ARM
  • SDCard: 1GB
  • Snapshop: Enable
  • Built-in: WVGA800

これで保存する。AVDマネージャから、Startを押して、保存した条件でエミュレータを起動する。


起動条件を指定するダイアログが出るので、
  • Launch from snapshop
  • Save to snapshop 
 の両方にチェックを入れてLaunch ボタンを押してエミュレータを起動する。AVDはかなり思いアプリケーションで、遅めのPCだと起動するのにコーヒーが立てられるほど時間を食う。
そこで、その時間を短縮させる為に、起動した後でスナップショットをイメージとして保存しておき、次にAVDを起動する際に使いまわす為の指定が、Save to snapshop と Lauch from snapshop である。

AVDで開発を行うと開発中のアプリケーションがインストールされるが、開発アプリをイメージとして保存したくない場合は、以下のようにすると良い。
  • eclipseが開いた時点で、 最初にAVDマネージャからエミュレータを起動する。
  • 起動する際には、Save to snapshot のチェックを外して、アプリケーションがスナップへ保存されないようにする。
 AVDは、一度起動したら、アプリケーションのデバッグの開始・停止ごとに再起動しなおす事無くそのまま使えるので、スナップショットを利用しない手はない。

さて、これでようやく開発準備が整った。

2012-11-16

Android 4.2 の開発者向けオプション

Nexus7が発売されてから、まだ半年も経過していないが、既にアップデートは2回目になる。
今回のアップデートは、4.2へのアップデートで、メジャーバージョン?と呼んで良いのかわからないが、少し大きいバージョンアップになる。
おそらく、4.1.2の時は、4.1での不具合修正アップデートだったのだろうが、今回の4.2では、新機能追加という意味合いだろう。
このバージョンから、マルチユーザー対応になっており、
一つの端末を家族や恋人で分け合う、 慎ましい利用方法を行う向きには、大変便利になった。
あの、iPadですら実装していない機能なのだが、ユーザーには極めてわかりづらい内容になっている。
Googleは広告を売って生業を立てているくせに、自社商品の広告は極めて下手くそだと思う。
まあ、そんな事のひとつなのだが、4.2になって、設定メニューから”開発者向けオプション”が消えた。
 実際には機能がなくなったのではなく、隠れコマンド化しただけの事だ。
おそらく、Googleが当初想定した開発者ユーザー中心の利用から、想定外の一般ユーザーの利用の比率が高まったために、隠しコマンド化したのだろう。

これを表示させるには、 設定メニューから、

タブレット情報 を表示させ、

ビルド番号 を 7回タップする

Nexus7なので、7回なんだろう・・・・ww


2012-11-05

DATA08W

DATA08Wを使うことにした。この端末の面白い所は、内蔵SDカードにWEBインターフェース
経由でアクセス出来る所だ。
SDカードを持たないNexus7にとってUSBケーブルを忘れてきた時でもデータへのアクセスが可能なのは心強い。
最も、製造元が、あの、”ファーウェイ”なので要注意。GPSは当然OFFで使う。




2012-10-16

Linuxとの連携

Nexus7などAndroid端末をLinux PCへ接続して利用する

接続方法

AndroidはPCとの接続プロトコルに、MTP(media transfer protocol)を利用する。
それに対応するパッケージが、mtpfsであり、OpenSUSEではmtpfs-1.0.x.i586などになる。
これをインストールするだけでAndroidとの接続ができる。

手順

最初にAndroidt端末をUSB接続ケーブルでPCと接続する

Android端末(もし、テザリングを行なっていた場合は、先に停止しておく事!!

設定 > [端末] > [ストレージ] > [メニュー] > [USBでパソコンに接続]

これでAndroid側の準備はOK。

PC側

最初にマウントポイントを作っておかないといけない。(/media/android をマウントポイントとする)
# mkdir /media/android

Androidと接続させる

# mtpfs /media/android/

これだけでOK。


アンマウントするには、

# fusermount -u /media/android