Android開発?はて?
と言うくらい2日坊主で終了しました.忙しくてそれどこではない..

それにも関わらず,掲題の通り,暇人のような事をしてました.
ちょっと前からDyn.comよりDynamicDNSの無料期間終了のカウントダウンメールが
来てたのですが,課金するのは嫌なので,放置してたらやっぱり使えなくなりました..
(アカウントは残ってましたが,もう要無しなので,そのうち消えると思われ.)

で,次の無料DynamicDNSを探したのですが,使い勝手が良さそうなのが中々見つからず..

※その前に,DynamicDNSって食えるのかって?
→ダイナミックドメインネームサービスのことで,
  IPアドレスがころころ変わる人向けに,固有の名前とIPアドレスを結ぶサービスのことです.
 (大喜利っぽく面白い訳を考えましたが何も浮かびませんでした.)

ようやく見つけたのが,Dynu.com(https://www.dynu.com/)でした.
とりあえず100%無料とのことなので,チュートリアルに従って登録.
無事にDynamicDNSを取り戻しました.何となく良い雰囲気を感じました.

その後…

IPアドレスと登録したドメインを結びつけるには,IPアドレスが変わる度に
Updateしなきゃいけないのですが,これを手動でやってたら,
IPアドレスが変わったら外部からアクセス出来なくなってしまい,
折角のサービスが意味なしになってしまいます.

そのために定期的にUpdateをかけてくれるツールがあるのです.
例えば"DiCE"というツールです.
(URL:http://www.forest.impress.co.jp/library/software/dice/)

このツールは昔から使ってるので,こなれた手つきで,サービスから"Dynu.com"を選び,
ホスト名/ログインID/パスワードを入力して手動更新をかけても上手く更新できませんでした...

私の性格上,すぐに諦めたりはしません.
plug-inの設定ファイルがイケてないはずだと思い,
Dynu.comサービス用のplug-inファイル"Dynu.plg"をテキストエディタで開きました....
ん~・・・...良くわからん!
半分諦めましたが,Dynu.comのQAみたら,2つの事が判明しました.
①更新プログラム:GNUDIPをサポート
②URLはhttp://gnudip.dynu.com/gnudip/cgi-bin/gdipupdt.cgi

その後,他のplug-inの設定ファイルで,[Method]がGNUDIPになっているファイルを
見つけたので,そのファイルをまねて,下記★印の対応をしたところ,上手く更新できました.
GNUDIPじゃなくて,GNUDIP23になっているのは,まねたので,意味は分かってないです.
URLの最後に"=<H>&password=<P><OI>"を付けたのも,
パスワードは必要だっぺ☆ってことでこれまたまねただけです...7
とりあえず,この設定で様子見です!

------以下,Dynu.plgの中身.------
[ServiceInfo]
Name=Dynu BASIC
URL=https://www.dynu.com/basic.asp
[Updater]Method=GET
★Method=GNUDIP23
  に変更.
Script=http://update.dynu.com:80/basic/update.asp?domain=<H>&password=<P><OI>
★Script=http://gnudip.dynu.com/gnudip/cgi-bin/gdipupdt.cgi=<H>&password=<P><OI>
  に変更.
IPAddress=&ip_address=<I>
AutoIPAddress=&ip_address=
[Domains]
dynu.com
[Options]
[Response]
1=ip
35=expired
23=nodomain
18=wrongpassword
[Command]
[Messages]
1=IPアドレスを更新しました
35=期限が切れています
23=ドメイン名がありません
18=ユーザー名(ホスト名)またはパスワードが無効です
----------------------------------

以上
アプリ開発ですが,Hello World!の表示で満足してしまったのはナイショです.
で,当初はカメラや加速度センサ使ったりと手の込んだもの作ろうと企んでいたので,
早速いきなりカメラ制御をやってみました.

..ちーん..


さっぱりわからん.いろんなサイトにやり方書かれていましたが,
サンプルコードをいじらずに起動するのが関の山.

基本がなっちゃいないのです.
ということで,下記サイト見ながら簡単な奴(BMI計算機)を作ってみました.
http://androidguide.nomaki.jp/html/app/appMain.html

気づいた点は下記3点くらいでしょうか.

・画面作成ではMicrosoft Visual Basicほどの操作感が得られない.
 →レイアウト用部品とかうざいし,レイアウトで使用する文字もいちいち
 strings.xmlで登録せなあかんし,GUIでマウスでくりくりしても
 思うようにいかないし,VBとかVC++とか使ったことある人にとっては,
 何じゃこりゃという感じです...

・実行時は一度クリーンしてからビルドすべし!!!!!
 →Activityが悪かったからかもしれませんが,起動時にエラーで落ちるケースが
 かなりありました.LogCat見てもさっぱり分からなかったし...
 何となくクリーンしてからビルドし直したらすんなりイケました・・・

・クリックフィックスは良い感じ!
 →クラスのimportとか良くわからないので,ちょくちょくエラーが出るのですが,
 そのたびにマウスでクリックしてimportできるので,初心者には優しい気がしました.

以下,ざっくり手順
---
1.プロジェクト作成
前回の手順同様に,Hello World!までやります.
2.画面作成
[プロジェクト名]/res/layout/activity_main.xml
をいじり倒して必要なテキストボックスやボタンを作成します.GUIで作りました.
テキストボックスの文字列は右クリック→Edit Textをクリックし,New Stringボタンから
文字列と,その識別子(?)を付けます.(これがめんどくさって思った.)

3.プログラム実装
src/MainActivity.javaに動作させたい内容を記述します.
MainActivityクラス内に書かれている"onCreate"関数が起動時に実行されるようです.

その中に"super.onCreate(savedInstanceState);"が書かれているのですが,
これはクラスを継承するときに必須とのことで,おまじないみたいなモンでしょうか.
次の行の"setContentView(R.layout.activity_main);"は
作成した画面を表示するおまじないです.
そして,次の行からやりたいことを記述します.

今回はボタン(button1)を押すとBMIを計算するアプリを作りました.
ボタンクリック処理のおまじないは以下の通り.

Button btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener() {
   public void onClick(View v) { 
                  ~

この中に入力された体重/身長を読み取ってBMIを計算して,
表示する処理を記述しました.
文字列⇔数値(小数点)の変換についてもググりながら実装.
     //入力されたデータのオブジェクト取得
    EditText height = (EditText)findViewById(R.id.editText1);
     //オブジェクトを文字列として変数に代入
    String strHeight   = height.getText().toString();
     //文字列を小数点含む数値として代入
    double dbHeight  = Double.parseDouble(strHeight);
という感じで,また,四捨五入の方法もググりました.
BigDecimal bi = new BigDecimal(String.valueOf(bmi));
 double dbresult = bi.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
で,小数第2位まで表示させました.
↓こんな仕上がり.(値だけだとつまらないので,BMI値の範囲に応じてコメントを付けました・・・)
BMI計算機

結構時間かかってしまいましたが,それなりに前進した気がします.
DL先:http://www.evil-xxxx.com/androidapp/BMI.apk
---


3日坊主と分かりながら,アメーバブログとやらを始めてみました.よろしゃす.

そして,最近定時帰りが続くため,Androidアプリを作ろうと企んでしまいました.
この回で飽きて辞めてしまうことは,安易に想像が出来てしまいましたが,
良い意味で期待を裏切られたらなと思います.

今回は,端末で”Hello World!”を表示するアプリを起動するとこまでやります.

開発環境は以下の通り.
PC-OS : Windows XP SP3 32bit
CPU : Core i5 2500K
メモリ : DDR3 4GB
端末 : ARROWS V(F-04E)
端末OS : Android 4.2.2

以下の手順で実施しました.デバイスが認識されない問題で手こずりましたが
何とか成功しました.
さて,あんなアプリやこんなアプリを作るために頑張るぞ.

---------
簡単に以下に説明してますが,下記サイトを参考にさせて頂きました.
http://note.chiebukuro.yahoo.co.jp/detail/n134579
http://qiita.com/opengl-8080/items/af6267cdb55a9fdfbb66
http://start-android-sdk.blogspot.jp/2010/05/android-xperia-adb-cant-list-attached.html

1.Java SDKのインストール(Java SE Development Kit 7u51)<br>http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
上記サイトにアクセスして,"Accept License Agreement"にチェックを入れて,
"jdk-7u51-windows-i586.exe"をクリックしてダウンロードします.
ダウンロード後,画面に従ってインストールします.(何も考えずに次へで良かったはず.)

2.Android SDKのインストール
http://developer.android.com/sdk/index.html
上記サイトにアクセスして,"Download the SDK"をクリックし,
次のページで,にチェック&32bitにチェックを入れてダウンロードします.
ダウンロード完了後,Cドライブ直下とかに解凍します.
ちなみに,adt-bundle-windows-x86-20131030.zipというファイル名でした.
(ADKがバンドルされていて,しかも,Eclipseも入ってるという.
いろんな手間が省けます.)

3.Eclipse設定
日本語化する場合には,Pleiadesプラグインをダウンロードして,featuresとpluginsフォルダを上書きします.
そして,
eclipse.iniに下記おまじないを追記します.
-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar=default.splash

4.Android SDK マネージャ起動&追加インストール
端末のOSがAndroid4.2.2なので,4.2.2とかをインストールします.
Eclipseを起動せずに,SDK Manager.exeを直接実行します.
(もしくは,Eclipse起動後,ウインドウ→Android SDKマネージャをクリックします.
私の場合には,
追加インストール中にブルスクになりました…)
マネージャが開いたら,"Tools"と"Android 4.2.2"にチェックを入れて,
"Install Packages"をクリックし,すべてのライセンスに対して"Accept licence"に
チェックを入れて"Install"をクリックします.

5.環境変数追加
Pathに下記パスを追加しました.コマンドプロンプトで"adb"と入力し,
ずらずら出てくればOKです.
C:\adt-bundle-windows-x86-20131030\sdk\platform-tools
C:\adt-bundle-windows-x86-20131030\sdk\tools

※ここまでで,インストール完了

6.Hello World作成
Eclipse起動した状態で,ファイル→新規→Androidアプリケーション・プロジェクト
をクリックします.
ターゲットSDKとコンパイルSDKを実機に合わせてAndroid 4.2.2を選びました.
名前は怒られない範囲で適当に付けます.

7.エミュレータ上で動作
ウインドウ→Android仮想デバイス・マネージャーをクリックし,
新規ボタンをクリックして,各項目を適当に入れて完了です.
ちなみに,私は,装置は5.1"WVGA",ターゲットはAndroid4.2.2,
CPUはARMにしました,メモリとかはデフォルトの半分くらいにしたような気がします.

HelloWorldを実行するために,実行→実行構成をクリックし,
ターゲットのタブで,"デバイスを選択をするときに常にプロンプトを表示"をクリックし,
実行をクリックします.
次のウインドウで,先ほど設定した仮想デバイスを選択して,OKをクリックします.

かなり時間かかりましたが,Androidの起動画面が表示され,
HelloWorld!と表示されるアプリが起動できることを確認しました.

8.実機上で動作
端末を開発者向けのオプションのUSBデバッグモードにしてPCとUSB接続させます.
(
Android4.2以降は,ビルド番号を7回選択することで開発者向けのオプションを表示できるようです.)
ドライバのインストール要求があるので,端末会社のHPからドライバをダウンロード
して,インストールしました.

エミュレータ上で動作させた場合と同様に実行構成をクリックして,実行したのですが,
デバイス選択画面に,私の愛しの端末が表示されません・・・
コマンドプロンプトで,"adb devices"と打ってみてもデバイスが見つかりませんでした.
ドライバのインストールし直しなどいろいろ行いましたが,
結論は,下記一手間が必要でした.載っているサイトに中々たどり着けず,
くじけそうになりました…
>adb kill-server
>adb start-server
無事認識され,勝手にアプリのインストール&実行されました.
ちなみに,自宅のHTTPサーバにHelloworld.apkを置いてダウンロード&インストールも
してみましたが,特に問題無く起動できました.
ダウンロードする人は居ないと思いますが,下記URLでたまにダウンロードできます.
http://arc-en-ciel.dyndns.tv:7713/Test/Helloworld.apk

--------
おしまい!
実際構築するより,文章打つ方が疲れるという!