Androidの最近のブログ記事

先日メインで使ってるDoCoMoのフィーチャーフォンをGalaxy Nexusに機種変したのですが、それまでiPhoneで受け取っていたim.kayac.comの通知をAndroidでも受け取りたくなったのでどういう方法があるのか調べてみました。

im.kayac.comはGoogle Talk(Jabber)でも通知ができるので、やるとしたらその方向しかないんだろうなぁと思いつつググってみると案の定Google Talkのアプリで通知を受け取るっていう記事がいくつかみつかりました。

でも、なんか「素のGoogle Talkで通知を確認するのはなんかクールじゃない!」

と思っちゃったので、それ以外の方法ないのかといろいろ探してみたらみつかりました。
(みつかったというかアプリを利用して足りない部分は自分で作ったんですが...)

簡単に方法を説明しちゃうと、自前でXMPPのクライアントを立てて、im.kayac.comからの通知を「Notify My Android」っていうNotify専用のアプリに流すという方法です。

簡単に書くとこんな感じ。
[im.kayac.com] -> [XMPP client] -> [Notify My Android]


ちなみにNotify My Androidは有料です。
有料だけど、今回この実装をやってみたら買う価値はあるかなと。
缶ビール2本我慢すれば買える値段ですし(※お酒はあまりのみませんが!)。

ってことで手順を説明します。

  • AndroidマーケットでNotify My Androidを購入し、Notify My Androidのサイトでアカウント登録とAPI Keyの発行を済ませておく。
  • 以下のスクリプトを使って、im.kayac.comのGoogle Talkのアクティベーションします。
    実行にはAnyEvent::XMPPのインストールと、pitを使ってgtalkって名前で設定(usernameとpassword)を追加しておく必要があります。

    実行は引数にim.kayac.comで発行されたアクティベーションコードを渡すだけ。
    % ./register.pl アクティベーションコード
    session ready at ./register.pl line 27.
    connected at ./register.pl line 31.message from api@im.kayac.com/123456: Your jabber account has been activated! at ./register.pl line 36.
  • あとは以下のスクリプトを起動するだけです。
    実行にはWebService::NotifyMyAndroidのインストールと、pitを使ってnma(Notify My Androidの略)って名前で設定(apikey)を追加しておく必要があります。

    実行は普通に以下な感じ。
    % ./server.pl &
    ちなみに、
    request to https://nma.usk.bz/publicapi/verify?apikey=YOUR_API_KEY failed at ./server.pl line 19
    とかでる人はLWP::Protocol::httpsが入ってないからだと思います。
これでサーバさえちゃんと動いてたら、Notify My Androidに通知が来るはずです。 興味ある方がいたらやってみてください。
Yokohama.pm #8で「Plack on SL4A」というタイトルでLTしてきました。

実はこの話は元ネタがあって、去年のperl.krのAdventカレンダーで紹介されていたものを実践してみたものになっています。

本当は、これを元にAmon2などのフレームワークを動かしたかったのですが、XS依存の問題があってそのXSモジュールをインストールしようと頑張ったのですが、どうしてもインストールできなかったため今回のPlackのインストールまでの話になってしまいました。

もうちょっとだけSL4AでXSを動かせるか試してみたいと思っていて、進捗があったらここでお知らせしたいと思います。

ちなみにSL4AのXSのmakeできない問題は、すでにSL4AのIssueに上っていて、このIssueの最後の方のポストでgithubのPerlのブランチを切って書き換えたやつでビルドできたという話が出ているのですが、ARMのクロスコンパイル環境を用意してやってみたもののうまくいなかいんですよねぇ...。
Androidの開発環境を構築して、HelloAndroidするまで。

  1. JDK 6、antをインストール

    Mac OS XだとDeveloper Tools入れてると
    Javaとantは既にインストールされてるかも?


  2. Android SDKをインストール(といっても解凍して適当な場所に置くだけ)

    以下のようにtools/をPATHに追加(↓はtcsh用のもの)。
    .bashrcとか.tcshrcとかに書いとけばOK。
    あと場合によってはJava用にCLASSPATHの設定が必要かも。
    % setenv PATH ${PATH}:/path/to/android-sdk-linux_x86-1.5_r3/tools

  3. avdを作成(なんかよくわからんけど、開発環境のプロファイルっぽい)

    なんか聞かれるけど、とりあえずデフォルトの[no]のままでいいのでリターン
    % android create avd --target 2 --name my_avd
    Android 1.5 is a basic Android platform.
    Do you wish to create a custom hardware profile [no]
    Created AVD 'my_avd' based on Android 1.5

    これで環境は整った。

  4. HelloAndroidプロジェクトを作成

    % android create project --target 2 --path HelloAndroid --activity HelloAndroid --package com.example.helloandroid

  5. なにもコードは付け加えないで、とりあえずantでビルド(デバッグモード)

    % ant debug
    Buildfile: build.xml
          [setup] Project Target: Android 1.5
          [setup] API level: 3
    
      dirs:
           [echo] Creating output directories if needed...
          [mkdir] Created dir: /path/to/HelloAndroid/bin/classes
    
      resource-src:
           [echo] Generating R.java / Manifest.java from the resources...
    
      aidl:
           [echo] Compiling aidl files into Java classes...
    
      compile:
          [javac] Compiling 2 source files to /path/to/HelloAndroid/bin/classes
    
      dex:
           [echo] Converting compiled files and external libraries into bin/classes.dex...
    
      package-resources:
           [echo] Packaging resources
       [aaptexec] Creating full resource package...
    
      debug:
      [apkbuilder] Creating HelloAndroid-debug.apk and signing it with a debug key...
      [apkbuilder] Using keystore: /home/username/.android/debug.keystore
    
      BUILD SUCCESSFUL
      Total time: 7 seconds

    最近のマシンだったら数秒でビルドが完了するはず。

  6. エミュレーターを起動

    % emulator -avd my_avd &

    A N D R O I D _
    って画面に出る。

    で、しばらくすると(だいぶ待ちます)、Androidが起動します。
    最終的にデスクトップっぽいのが表示されるまで待つ。
    (マシンによっては5分とかかかりますので辛抱強く待ちます…)

    ちなみに自分はnetbookでやったんですが、ウィンドウの大きさがデカすぎて
    縦が画面から飛び出ちゃったのですが下記のように「-scale」って
    オプションを指定することでウィンドウの大きさを変えられます。
    % emulator -avd my_avd -scale 0.8 &


    起動するとアラートでるので「Force close」で無視する android_sdk01.png

  7. エミュレータ上のAndroidにHelloAndroidをインストール。

    % adb install bin/HelloAndroid-debug.apk


    HelloAndroidがインストールされた android_sdk02.png

  8. あとはAndroid上でアプリ実行すると

    文字が表示された android_sdk03.png

エミュレータが激重以外はすんなりここまでできる。
エミュレータだけはどうにかして欲しいです。ほんとに。

検索

広告

月別 アーカイブ

OpenID対応しています OpenIDについて
Powered by Movable Type 5.12