トーン(BEEP音)生成のサンプルコード。

ToneGenerator toneGenerator = new ToneGenerator(AudioManager.STREAM_SYSTEM, ToneGenerator.MAX_VOLUME);
toneGenerator.startTone(ToneGenerator.TONE_PROP_BEEP);
(緑の電話)通話キー + MENUキー + (赤の電話)切断キーを押す。

タッチイベントに応答するには、onTouchEvent()をオーバーライドします。

引数のMotionEventには、タッチされた際の情報が格納されてきますので、
getX()、getY()で、タッチされた座標、
getEventTime()で、タッチされた時間(ms)、
getAction()で、タッチアクションを取得できます。

タッチアクションとは、タッチ動作を表した定数で、例えば、
ACTION_DOWN→ACTION_MOVE(何回か繰り返し)→ ACTION_UP
のようになります。

参考となるサンプルコードは、ApiDemos/Graphics/FingerPaintです。

Droid 壁紙、Android Developer Badgeは、
こちらの公式サイト(http://www.android.com/media/goodies.html)からダウンロードできます。
※今まで勝手に「Android君」とか呼んでいたのですが、正しくは「Droid」だったんですね

壁紙

android-wallpaper3_thumbnail.pngandroid-wallpaper5_thumbnail.jpg
android-wallpaper4_thumbnail.pngandroid-wallpaper6_thumbnail.jpg

Android Developer Badge




Androidで、エミュレータ/デバイス(実機)の画面キャプチャーを保存するには、
Eclipse(+ADT)のDDMSパースペクティブ(perspective)Devicesタブで、Screen Captueボタンを押し、
表示されたDevice Screen Capture画面で、Saveボタンを押すと、pngファイルで保存することができます。
DDMSScreenCapture.png

DeviceScreenCapture.png

Android Dev PhoneのシステムイメージがHTCから正式に公開されました。

http://www.htc.com/www/support/android/adp.html

 

以下、実際にAndroid1.0からAndroid1.1へ書き換えた際のメモです。

 

事前準備

上記サイトから、OS毎のfastboot、バージョン毎のSystem Image、Radio Imageをダウンロードする。
※1.0、1.1の両方ダウンロードしておくことをお勧めします

 

Update the Device Radio Firmware

  1. デバイスにSDカードが挿入されていることを確認する
  2. デバイスを通常どおり起動する
  3. デバイスとPCをUSBで接続する
  4. コマンドラインから「adb devices」を実行し、デバイスと接続できていることを確認する
    ※「List of devices attached」の出力に続けて、デバイスのシリアル番号が表示されればOK
  5. コマンドラインから「adb push ota-radio-1_22_14_11.zip /sdcard/update.zip」を実行し、1~2分待つ
    ※ota~zipは、必要なバージョンに応じて適宜読み替えてください、ここでの例は、Android1.1に書き換える場合の例
    ※しばらく待つのは、コピーしたバイト数が表示されていても、バックグランドでコピーが実行されていて、完了していない場合があるため
  6. (家のマークの)HOMEキーを押したままリブートし、いつものAndroid君のあとに、
    (びっくりマーク)!アイコンが表示されるまで(押したまま)待つ
    ※リブートは、「adb shell」「su」「reboot」、もしくは、電源長押し後、電源を切って、入れ直す
  7. キーボードを出して、ALT + l キーを押し、Android system recovery utilityを起動させる
    ※ここでの l キーは、エルキーです、アイキーでも、数字の1キーでもないです
  8. ALT + s キーを押し、(先の5でコピーしておいた)update.zipの書き込みを実行させる
  9. 書き込みのプログレスバーが消えたら、
    (家のマークの)HOMEキー + (戻るマークの)BACKキーを押し、
    radio imageの書き込みを実行させると、矢印のイメージのあとに、自動的に再起動され、
    さらに、別のイメージが表示された後、通常どおり起動されます

Flash the System Image to the Device

  1. (戻るマークの)BACKキーを押しながら電源を入れる
    ※3体のAndroid君がスケートボードに乗っているイメージに、FASTBOOTが表示されればOK
    ※黄色いラインにFASTBOOTでなく、Serial0が表示されている場合には、
     (戻るマークの)BACKでFASTBOOTに切り替えることができる(逆は、カメラキー)
  2. デバイスとPCを(USB接続していなければ)接続する
  3. 必要であれば、コマンドラインから「fastboot erase userdata」を実行する
    ※実行すると、ダウンロードしたアプリや、その他の設定が削除されます
     (SIMロックを解除していた情報や、セットアップ時に登録したgoogle acountなども含む)
     多くの場合、バージョンアップの際には不要です(バージョンダウンでは必要)
  4. コマンドラインから「fastboot erase cache」を実行する
  5. コマンドラインから「fastboot update signed-dream_devphone-img-130444.zip」を実行する
    ※signed~zipは、必要なバージョンに応じて適宜読み替えてください、ここでの例は、Android1.1に書き換える場合の例
    ※fastbootモードを抜けるには、ADP1の場合、、
     (緑の電話)通話キー + (赤の電話)切断キー + MENUキーを押すと、再起動できる
    ※< waiting for device >と表示されていれば接続に失敗している
     Windowsの場合であれば、デバイスマネージャーから
     「ADB Interface - HTC Dream Composite ADB Interface」
     「ディスクドライブ - HTC Android Phone」
     「ポータブルデバイス - Android Phone」などを削除し、再インストールする
  6. 自動的に再起動されるはずであるが、そうでない場合、「fastboot reboot」を実行する
    ※確認した限りでは、自動的に再起動されました

 

ファームウェアのバージョンは、Setting - About Phone - Firmware versionで確認できます。

ハマりどころは、fastbootで< waiting for device >と表示された場合の対処方法ですが、それ以外は問題なくできました。

 

※参考にした記事

エミュレーター/デバイス(実機)のシリアル番号を取得するには、

adb get-serialno

を実行します。

実行結果は、エミュレーターの場合、

emulator-5554

などとなります。

 

内部的には、クライアントからエミュレーター/デバイス(実機)のadb serverプロセスに、TCP5037ポートで接続し、

0012host:track-devices

を送信すると、サーバーからの応答として、4バイトのASCII文字列である

OKAY

の戻り値に続けて、
複数のエミュレーター/デバイス(実機)の情報を格納した文字列

0015emulator-5554\tdevice\n

が返却されます。
この文字列は、\n区切りで1つのエミュレーター/デバイス(実機)を表現しており、
さらに、その中の文字列は、\t区切りで、前半をシリアル番号、後半がstateという意味になっています。

※クライアント/サーバーともに、送受信の際の先頭4バイト(上記の場合、0012や0015)は、それ以降のデータの長さを16進数で表現した文字列です

[Android] Read-only file system

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

adb shell でエミュレータ(emulator)や実機(device)へ接続後、
ファイルシステムを変更しようとしても「Read-only file system」と表示されて変更ができない場合、

mount -o rw,remount /dev/block/mtdblock3 /system

と入力すると、変更できるようになります(上記は、/system での例)。

参考にしたサイトは、こちら(http://blogger.splhack.org/2008/12/android-dev-phone-1-2.html)。
※sakamoto先生のブログ、大変役に立つ情報ばかりです

Wi-fi接続時のIP Address(アドレス)を取得するコードが必要となり、書いてみました。

WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
String strIPAddess =
    ((ipAddress >> 0) & 0xFF) + "." +
    ((ipAddress >> 8) & 0xFF) + "." +
    ((ipAddress >> 16) & 0xFF) + "." +
    ((ipAddress >> 24) & 0xFF);
Log.v("IP Address", strIPAddess);

実行すると、(いつものごとく)例外が発生して終了してしまいましたが、
最近では、すぐにパーミッション不足だろうということがわかるようになりました。
ということで、AndroidManifest.xmlにandroid.permission.ACCESS_WIFI_STATEを追加することで、無事解決できました。

また、IPアドレスは、int型で取得できますが、リトルエンディアンでした。

Software Design 2009年3月号の第2特集に、Androidの記事がありました。

第4章の お天気アプリは、私も作成していたので、うーん、先を越されてしまった。。。という感じです。
また、(Ny)ARToolKitは、年明けにFlash関連のブログ(trick7 - さくーしゃさんがまたスゴイものを作った)を
読んで気になっていたので、タイムリーな記事でした。

Adobe AIRだと、PaperVisionを勉強していたのでだいだいできるのですが、
Androidだと、Open GL ESということで一から勉強し直しです。
記事を参考に試してみようと思います。

※全部で48ページ5章あります。
※「Software Design (ソフトウエア デザイン) 2009年 03月号」。

<<前のページへ 2728293031323334353637

Android 楽しいよ!

2010年11月

  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        

自作フリーソフトウェア