2009年7月アーカイブ

2009年6月9日に開催された「Google Developer Day 2009」のAndroid関連動画です。

※全動画は、「http://www.youtube.com/view_play_list?p=D9BEC0DBDB742F54」から参照できます

 

  • 【MB-1】Android のデータ共有(安生先生)
  •  

  • 【MB-2】Android でリアルタイムゲームの開発方法(クリス プルエット先生)
  •  

  • 【MB-3】Android 高度方法指(ジェイソン チェン先生)
  •  

    ※おまけ:GDDのオープニング

    [Android] Android 1.5 SDK, Release 3

    | トラックバック(1) |

    「Android 1.5 SDK, Release 3」がリリースされました。

     

    以下のサイト(ページ)が参考になります(有り難うございます)。

    ※[ ] 内の時刻は、リリース当日(2009/07/17)にポストされた時刻

     

    また、参考までにAndroid 1.5 SDK r2 と r3 のファイルの差分を(Windowsベースで)比較してみると、
    差分の大部分はバイナリファイル(exe, img, jar)であり、
    テキストファイル(inf, ini, java, txt)の変更は、ごくわずかということがわかりました。

    ※ただし、ファイルの末端の改行の差違のみのファイルと docs フォルダは除く

     → ここから

    add-ons

    • google_apis-3\manifest.ini ・・・ version=2 → revision=3
    • google_apis-3\images\NOTICE.txt, ramdisk.img, system.img, userdata.img
    • google_apis-3\libs\maps.jar

     

    platforms

    • platforms\android-1.1\tools\aapt.exe, aidl.exe, dexdump.exe
    • platforms\android-1.1\tools\lib\dx.jar
    • platforms\android-1.5\android.jar, build.prop
    • platforms\android-1.5\data\layoutlib.jar, widgets.txt
    • platforms\android-1.5\data\res\values-*-pt ・・・ 追加
    • platforms\android-1.5\images\NOTICE.txt, ramdisk.img, system.img, userdata.img
    • platforms\android-1.5\samples\Home\src\com\example\android\home\ApplicationsStackLayout.java, Home.java
    • platforms\android-1.5\tools\aapt.exe, aidl.exe, dexdump.exe
    • platforms\android-1.5\tools\lib\dx.jar

     

    tools

    • platforms\android-1.5\tools\acp.exe, adb.exe, dmtracedump.exe, emulator.exe, fastboot.exe, hprof-conv.exe, mksdcard.exe, NOTICE.txt, sqlite3.exe
    • platforms\android-1.5\tools\lib\androidprefs.jar, anttasks.jar, apkbuilder.jar, ddmlib.jar, ddms.jar, ddmuilib.jar, draw9patch.jar, hierarchyviewer.jar, jarutils.jar, sdklib.jar, sdkmanager.jar, sdkstats.jar, traceview.jar

     

    usb_driver

    • amd64\android_usb.inf 
    • x86\android_usb.inf

    ← ここまで

     

    最後に、Android 1.5 SDK r3 から(MaxOSX/Linux向けに)用意された「android update adb」を Linux で試してみました。

    android_update_adb.png

    キャプチャが小さいですが赤枠のとおり「android update adb」「android kill-server」「android start-server」「adb devices」を実行しています。

    試した環境は、既に ADP1 を接続したことがある環境で、/etc/udev/rules.d 下を編集済でしたが、クリーン環境でどうなるかは未確認です^^;

    また、Androidデバイス(ここでは、HT-03A)側の「設定」アプリケーションで、以下の設定も必要です。
    → 「設定」 > 「アプリケーション」 > 「開発」 > 「USBデバッグ」 を 「ON」にする。

     

    2009/7/20追記:
    当方の環境では、/etc/udev/rules.d下の編集は必要であり、また、ADP1やHT-03Aに関しては、「android update adb」も不要でした
    詳細は、「[Android] クリーンなUbuntu8.04環境にAndroidSDK1.5r3をインストールしてHT-03Aを接続するまで - adakoda」に書き込みました。

     

    [Android] Android で Google Analytics - adakoda」の書き込みのとおり、
    Google Analytics では、Android 1.5 標準のブラウザからのアクセスは、Safari / Android と認識されるのですが、
    プログラム的にもユーザーエージェントを調べてみました。

     

    UserAgentを取得するには、
    android.webkit パッケージ - WebSettings クラスを使用することで、UserAgent を取得することができます。
    具体的なサンプルソースコードは、以下のとおりです。

    WebView webView = new WebView(this);
    WebSettings webSettings = webView.getSettings();
    
    String userAgentString = "";
    userAgentString = webSettings.getUserAgentString();
    Log.v("UserAgent", userAgentString);
    

    上記のコードを実行すると、UserAgent は、

    Mozilla/5.0 (Linux; U; Android 1.5; ja-jp; HT-03A Build/CDB72) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1

    のような結果でした。

    haru-komugi先生(http://d.hatena.ne.jp/haru-komugi/20090713/1247483849)のとこでも書かれています。

     

    で、ここからが面白い。。。

    Android 1.5 から非推奨APIとなった setUserAgent() を使用すると、定義済みの UserAgent に変更できます。

    例えば、setUserAgent(1) とすると・・・ 

    // 1 if the WebView should use a desktop user-agent string
    webSettings.setUserAgent(1);
    userAgentString = webSettings.getUserAgentString();
    Log.v("UserAgent(1)", userAgentString);
    

    結果は、

    Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1

    のように Macintosh に早変わり。。。

     

    続けて、setUserAgent(2) とすると・・・

    // 2 if the WebView should use an iPhone user-agent string
    webSettings.setUserAgent(2);
    userAgentString = webSettings.getUserAgentString();
    Log.v("UserAgent(2)", userAgentString);
    

    結果は、

    Mozilla/5.0 (iPhone; U; CPU iPhone 2_1 like Mac OS X; en) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile/5F136 Safari/525.20.1

    のように、今度は iPhone に早変わり。。。

     

    ちなみに、Android 1.5 からは、同クラスに setUserAgentString() が追加されていましたので、
    以下のように任意の UserAgent を設定することもできます。

    webSettings.setUserAgentString("hogehoge");
    userAgentString = webSettings.getUserAgentString();
    Log.v("UserAgent(hogehoge)", userAgentString);
    

    Android とタグを打っておきながら申し訳ないですが、Biz・ホーダイ ダブルの話です。

    HT-03A 購入時、Biz・ホーダイ ダブルの契約をしたのですが、発売当日ということもあって、店員の方も慣れない対応だったようで、諸々の手続きに2時間かかって手続きを終えましたorz...

    また、その後も、お店の方から連絡があり、必要な手続きが不足していたとか、そもそもプランを間違えていたとか・・・ということで、何日か後にDSにお邪魔して、ようやく手続きを完了しました。

    今回、パケット定額のサービスを契約していたのですが、これも間違っていたら・・・と不安になり、契約の確認方法を教えていただいたところ、以下のページから確認できることを教えていただきました。

    →「My docomo ホームページ

    このMy docomoのページにアクセスするにはは、docomo IDが必要とのことでしたが、

    「IDとパスワードを覚えていません。。。」

    という話をすると、親切にも、即日IDを再発行、パスワードリセットしていただき、無事、同ページへアクセスすることができました。

    同ページにアクセスすると、翌日の請求予定金額やポイント情報などを確認することができ、気になっていた契約内容を見ると、ちゃんと「MoperaUライト」+「Biz・ホーダイ ダブル定額」になっておりました。

     

    ちなみに6日間(7/10~7/15)のパケットを確認すると、以下の結果に。。。

    my_docomo_packet.png

    カンマがないので、瞬間的に判断できなかったのですが、33万パケットということでした(思ったより少ない?)。

    ※表示は、~7/31となっていますが、この記事を書いている7/16の前日までの記録です

     

    実は、ここのところ忙しくて、HT-03A にあまり触れておらず、インターネットはもちろんのこと、Android Marketなど、ほとんど利用していなかったので、上記のパケット数となったようです。

    では、仮にBiz・ホーダイ ダブルに申し込んでいなかった場合、どうなっていたかというと、

    71,250[パケット] x 0.08[円/パケット] + 266,982[パケット] x 0.02[円/パケット] = 11,039[円](税抜き)

    くらいになっていたと思われます。。。

    ということで、次月の請求額が、ちゃんと定額になっていたので、今後も安心して使用できそうです。

    (既に上限超えているので、気兼ねなくつかうぞー。)

    ちなみに料金の参考にしたページは、以下のページです。

    →「Biz・ホーダイ ダブル : Biz・ホーダイ ダブルとは | 料金・割引 | NTTドコモ

    HT-03Aから普段使用しているGoogle Analyticsへアクセスしてみました。

    結果としては、数値と一部の(JavaScriptで描画されている?)グラフは見れましたが、Flashで描画されているグラフは(当然ですが)見れませんでした。。。
    ※もしかして、モバイル用のURLとかあるんでしょうか?

     

    ちなみに、当サイトの最近1ヵ月のブラウザとOSのアクセスは、以下のとおりです(数値は削っています)。

    GoogleAnalytics.png

    表の1列目が「ブラウザおよびOS」列ですが、残念ながら文字切れしています。。。

    わかりにくいですが、9行目(番目)の0.34%というのが、「Safari / Android」で、Android端末からのアクセスです。

    iPhoneは、「Safari or Mozilla Compatible Agent / iPhone or iPod」の組み合わせでわかれて集計されていますが、数値的には、Androidと同じくらいです。

     

    と、話がそれましたが、Google携帯はシングルサインオンで、様々なGoogleサービスが、どこにいても使えるので、大変便利です(特にPCとの連携)。

    まだアクセスしにくいサービスもありますが、外部APIも公開されているサービスも多いので、Androidアプリとして作成してみても面白そうです。

    当方では、AIRでFlickr、Picasa、YouTube、その他もろもろのREST系アプリを実装したことがあるのですが、RESTプログラミングは面白いので、お勧めです。

    Android Developer Challenge 2 (ADC2) Full Terms and Conditions が発表されました。

    http://code.google.com/intl/ja/android/adc/adc2_terms.html

     

    ADC2 の情報については、2009年5月末のGoogle I/O 2009 で既にアナウンスされていましたが、その際に、「2009年6月 くらいに Full Terms and Conditions を発表する」ということになっていましたので、約半月遅れ?で発表されたことになります。

     

    さて、気になる ADC2 Full Terms and Conditions の内容ですが、上記リンク先を参照してみるとわかるように、本記事を執筆時点では、すべて英語で記載されています(全19項目)。。。

    内容が内容だけに、正確な日本語訳を問われますので、そのあたりは、明日のニュースサイト(もしくはGoogle先生)にお任せすることにします。。。

    というと物足りないので、斜め読みしたメモ書き程度のもので恐縮ですが、以下に残しておきます。

     

    3. BINDING AGREEMENT

    チーム、または、ビジネスでエントリする方への注意書きがありますので、該当する方は、注意してお読みください。

    個人で非ビジネスエントリ(=私)だよ。という方は、最初のパラグラフだけでいいかな(もちろん、全文を読む必要がありますけど^^;)

     

    4. ELIGIBILITY

    参加資格について書かれています。

     

    5. CHALLENGE TIMELINE

    提出期限、第1次審査、第2次審査の日程が書かれています。

    提出期限は、2009年8月31日。

    第1次審査は、2009年10月23日まで、

    第2次審査は、2009年11月20日までに行われるみたいです。

    各々の時刻は、11:59:59 P.M. Pacific Time (PT) Zone in the United States ということなので、間際になる場合には、十分にご注意ください。

     

    7. SUBMISSION PERIOD

    Android 1.5 SDKを使ってくださいとのことではじまり、カテゴリも以前告知されていた10のカテゴリで決定みたいです。

    対応すべき言語は、最低限、英語が必須で、それに加え、その他の言語(例えば日本語)も含めてもいいみたいです。

    ということは、ローカライズしておければ、多少?有利かもしれませんね(当方みたいな個人レベルだと英語だけでも苦しいのですが。。。)。

     

    8. FIRST ROUND JUDGING

    9. SECOND ROUND JUDGING

    第1次審査、第2次審査について書かれています。

     

    10. PRIZES

    賞金について書かれています。

    モチベーションが保てなくなったら、ここを読みましょう(笑)。

     

    # と書いているところで・・・、
    # いつも購読させていただいているTaosoftware先生からの記事をFeedしました。。。
    # Taosoftware先生(株式会社)は、既にご存じとかと思われますが、有益なAndroidの情報をいち早く公開されており、
    # 大変勉強になるコンテンツで溢れております(本当すごいです)ので、ご存じでなかった方は、フィード登録してみてください。
    # 是非日本人から受賞者が出てほしいですね!
    # 当方もチャレンジしたいのですが、Androidに割ける時間が就寝/起床前後の1日2時間程度なので、到底無理ですzzz...

    日本Android会主催の勉強会は、日本Androidの会のトップページから参照できますが、
    それ以外のAndroid関連の勉強会を探す場合には、「IT勉強会カレンダー」を使用しています。

    ITCalAndroid.png

    ※特定の勉強会を検索するには、「検索オプションを表示」から検索

    Googleカレンダーは、Android端末(HT-03Aなど)でも、標準のカレンダー/ブラウザアプリを使用して参照できるのですが、
    かなり見づらいので、もっとカスタマイズしたアプリが必要ですね。

    [Android] Googleリーダー

    | トラックバック(0) |

    普段、RSSの購読には、Googleリーダーを使っています。

    HT-03Aでも使ってみることに。

     

    Googleリーダーは、Googleのトップページ上部のメニューで、その他 > リーダー にあります。

    GoogleReader1.png

     

    ログインすると、PCと比べるとちょっと狭いですが、PCで読んだのと全く同じものが読めます。

    これまでADP1をWifiでしか使用しなかったのですが、HT-03Aを機に「Mopera U」+「Biz・ホーダイ ダブル」にして、あらためて、どこでもインターネットにつながっている良さを実感した。

    読みかけのデータも、書きかけのデータもクラウドにあるので、自宅にいなくてもデータが同期できているのである。

    今日は外出だけど、どこでもRSSが読めるので、そんなの関係ない。

    GoogleReader2.png

    以前、自分が書いた「[Android] HT-03A発売日決定-実機で試したい8+2のサンプルコード - adakoda」という記事を検証してみた。

    まずは、Android SDK 付属の「ApiDemos」から。

     

    1. Graphics/CameraPreview

    CameraPreview.png 

    HT-03A本体には、ADP1にあったような物理的なカメラボタン(KEYCODE_CAMERA)がない。

    したがって、カメラアプリを作る場合には、標準のカメラアプリのようにソフトウェア(シャッター)ボタンを実装することを忘れてはいけない。

    ちなみに、CameraPreviewサンプルは、その名のとおり、プレビューだけしか実装していないので、どのみちシャッターはきれないのである(笑)。

    カメラアプリのサンプルコードは、Androidソースコードのpackages\apps\Cameraに完全なものがあるので、そちらを参考にしていただきたい。

     

    2.Graphics/Compass

    当然ながらADP1と同じなので、コメントなし。

    というのもつまらないので、

    事前に言っていた

    ※HT-03Aには、もっと立派なコンパスもプリインされています^^

    も試してみることに。

    下のキャプチャが、HT-03Aプリインアプリである羅針盤のコンパス。

    Compass.png

    コンパスも思った以上に滑らかで気持ち良いのだが、それより興味を注いだのが画面右下をタッチしてでてくる切り替えボタン。

    円周をタッチすると、切り替えボタン?が円周上をグニュグニュとスクロールする。

    伝わらないかもしれないが、超クールだ。

    コンパスそっちのけで、このメニュー?(ドック?)の実装方法を考え込んでしまった(5分固まる)。

     

    3. Graphics/FingerPaint

    FingerPaint.png

    タッチの感度についてもADP1と同じ感じ。

    画面キャプチャの何が2コ入りかというと。実は、HT-03Aは、電池パックが2個入り(嬉)。

     

    4. Graphics/OpenGL ES/Sprite Text

    SpriteText.png

    この場合のfpsは同じように見える(ように、実は、ADP1も撮り直したけど)。。。

     

    5. Graphics/OpenGL ES/Touch Rotate

    TouchRotate.png

    実は、このサンプル。トラックボールでも操作できることに気づいた。気持ちいい。

    それにしても、画面をタッチすると、指紋が残る。。。傷もつけたくないし。。。

    ということで、ADP1に貼っていた保護シートを剥がして、HT-03Aに付け替えるという暴挙にでる。

    これが意外に成功。

    つまり、HTC Dream(G1)とHTC Magic(HT-03A)の画面サイズは同じなのだ。

    ということで、保護シートは、G1用でもイケると思う。

    CAPDASE docomo HT-03A / HTC Magic Google G2 Soft Jacket 2 XPOSE with Screen Guard Crystal Clear, Clear Black ソフトジャケット (クリスタル・クリアー 液晶保護シート 付き) クリアー・ブラック SJHCMAGIC-P201

     

    6. OS/Morse Code

    MorseCode.png

    バイブレーターのサンプルなのだが、ここでエディットボックスに数字を入力する必要がある。

    ADP1の時は、ハードウェアキーボードをスライドさせて簡単に入力できたが、HT-03Aは、ソフトウェアキーボードなので、結構大変。

    特に画面が縦向きの時は、キーボードの幅も狭くなるので、指が太いと大変。。。

    画面を横向きにすると、キーボードの幅が多少広くなるので、まーなんとかセーフというところ。

    ちなみに入力方法としては、iWnnを搭載していた。Wnnを使うのは10年ぶりで何だか嬉しい。

     

    7. OS/Sensors 

    これまたApiDemosサンプルとしては、ADP1で試していたとおり。

    しいて言えば、ADP1は、ハードウェアキーボードを出した時に、画面が横向きになったが、

    HT-03Aは、前述のとおりハードウェアキーボードがないので、実機を横向きにすると、画面が横向きになるといったところか。

    また、事前に言っていた

    ※HT-03Aのプリインにも水平器があります

    も試してみることに。

    下のキャプチャが、HT-03Aプリインアプリである羅針盤の水平器。

    RashinbanSensors.png

    事前に見ていたキャプチャではわからなかったのだが、実際に試してみると、空気(気泡?)の動きが滑らかで、よくみると芸が細かい(拍手)。

     

    8. App/Voice Recognition

    VoiceRecognition.png

    音声認識のサンプル。予想どおりだけど、やっぱり動かない。

    ソースを見ると、ACTION_RECOGNIZE_SPEECHインテントをチェックしている。。。

    そこで、ADP1からVoice DialerとVoice Searchを引っこ抜いて、HT-03Aに強引につっこんでみる。 ↓

    VoiceApp.png

    すると、ボタンが有効に! ↓

    VoiceRecognitionEnable.png

    口を開けて待っていると・・・ ↓

    VoiceRecognitionError.png

    エラーの文字が・・・

    残念です¥¥

    というか、購入して間もないのに無茶しすぎ^^;

    こんな時間に何やっているんだ!

    Android1.5から、android.viewパッケージにGestureDetector.OnDoubleTapListenerインターフェースが追加されています。

    このインターフェースを使用すると、ダブルタップ(=マウスでいうところのダブルクリック)を簡単に検出できます。

    ↓のような感じ。

    public class GestureTestActivity extends Activity implements
            GestureDetector.OnGestureListener,
            GestureDetector.OnDoubleTapListener {
        GestureDetector mGestureDetector;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            mGestureDetector = new GestureDetector(this);
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            if (mGestureDetector.onTouchEvent(event)) {
                return true;
            }
    
            return super.onTouchEvent(event);
        }
    
    ...省略...
    
        @Override
        public boolean onDoubleTap(MotionEvent e) {
            Log.v("Test", "onDoubleTap()");
            return false;
        }
    
        @Override
        public boolean onDoubleTapEvent(MotionEvent e) {
            Log.v("Test", "onDoubleTapEvent()");
            return false;
        }
    
        @Override
        public boolean onSingleTapConfirmed(MotionEvent e) {
            Log.v("Test", "onSingleTapConfirmed()");
            return false;
        }
    }

    Android 1.1以前でダブルタップを検出するコードを書いたことがある人にしか伝わらないかもしれなのですが、
    シングルタップのAPIのみでダブルタップ検出を行うのは、結構大変だったのです。。。

    マイナーネタであり、あまり知られていない?ようですが、コーディングが楽になるのでポストしておきます。

    <<前のページへ 123

    2010年9月

          1 2 3 4
    5 6 7 8 9 10 11
    12 13 14 15 16 17 18
    19 20 21 22 23 24 25
    26 27 28 29 30    

    自作フリーソフトウェア