Androidの最近のブログ記事

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

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月号」。

Android Dev Phone 1 にUSB接続する手順についても、
android developersのサイト(http://developer.android.com/guide/developing/device.html#dev-phone-1)に解説があります。

Windowsの場合
ADB InterfaceというUSBドライバをインストールする必要がありますので、
ハードウェアウィザードで、Android SDKディレクトリ直下のusb_driverフォルダを指定してあげればOKです。
※私は、Vista32bitで確認しました

Linuxの場合
rootでログインし、適当なエディタ(例えば、geditなど)で、
/etc/udev/rules.d/50-android.rules
ファイルを作成し、このファイルの中身に、
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
または、
SUBSYSTEM=="usb_device", SYSFS{idVendor}=="0bb4", MODE="0666"
のどちらかを記述、保存後、実行権を与えてあげればOKです。
※私は、Ubuntu8.10で「SUBSYSTEM=="usb",・・・」の方の記述で確認しました

Macintoshの場合は、試しておりませんが、
> If you're developing on Mac OS X, it just works. Skip this step.
とのことなので、何もしなくてよいはずです。

無事、USB接続の準備ができたら、コマンドライン(ターミナル)などから、
adb shell
を実行することで、デバイスにアクセスできます。

[Android] ドキュメントURL

| トラックバック(0) |
AndroidのドキュメントURLが、
http://code.google.com/intl/ja/android/documentation.html ※旧サイト
から、
http://developer.android.com/ ※新サイト
へ変更されていました。

詳しい説明は、以下に記述されています。
http://code.google.com/intl/ja/android/devsite-transition.html

旧サイトのAndroid 1.0 SDKのコンテンツは、しばらくは参照できますが、、
更新はされず、新しいサイトへのリダイレクトが促されるようです。
新しいサイトでは、SDKのダウンロードやリファレンスだけでなく、ビデオ、ブログ、メーリングリストなどのページも参照できます。

旧サイトへのリンクを張っていた方は、貼り直した方がよさそうですね。
ちなみに、Android 1.1 SDKのローカルで参照できるドキュメントは、新しいサイトの形式となっていました。

安生先生監修の「初めてのGoogle Androidプログラミング サンプルで学ぶ必須作法と基本手順」を読みました。

これからAndroidをはじめてみようという方は、1章~5章まで読むことで、開発環境を構築し、Hello Worldまで作成できるようになると思います。

また、Hello Worldまではできたんだけど、その後が・・・という方も、7章、8章を読むことで、他のコントロールも使用できるようになると思います。

既に、結構開発されている方にとっても、9章のGPS、10章のContentProviderの内容が濃いので、きっと役に立つと思います。

※全部で294ページ11章あります。
※こちらのページ「初めてのGoogle Androidプログラミング サンプルで学ぶ必須作法と基本手順」にも、もう少し詳しい説明があります。

API Level(minSdkVersion)を追加するには

AndroidManifest.xmlファイルに、

    <uses-sdk android:minSdkVersion="2" />

を追加する(この例では、API Level 2)。

uses-sdk minSdkVersion

 

Eclipseからは、以下の手順でも設定できます。

1.Eclipseを起動する
2.[Package Explorer]からAndroidManifest.xmlをダブルクリックする
3.[Permisisons]タブをクリックする
4.[Add]ボタンをクリックする
5.[Uses Sdk]を選択し、[OK]をクリックする
6.[Min sdk version]に、1や2などを入力する

uses-sdk minSdkVersion 

「Android 1.1 SDK, Release 1」がリリースされました。
こちら(http://developer.android.com/sdk/1.1_r1/index.html)からダウンロードできます。

以下、Android 1.1 Version Notes(http://developer.android.com/sdk/android-1.1.html)に掲載されている(原文)を、
簡単にまとめてみました。
※ただし、Resolved Issues、New Featuresを除く


概要

  • Android 1.1で、API Levelと呼ばれる識別子が更新された
  • API Levelは、アプリケーションを動作させるために必要なSDK(システム)バージョンを示した識別子
  • API Levelは、アプリケーションのAndroidManifest.xmlに、<uses-sdk android:minSdkVersion="API Level" />として記述する
    ※Android 1.1のAPI Levelは、2
    ※Android 1.0のAPI Levelは、1
  • Android 1.1で新しく追加されたAPIを使用するアプリケーションは、必ずAPI Level 2で宣言する必要がある
  • Android 1.1で新しく追加されたAPIを使用しているアプリケーションが、API Levelを省略した場合、Android 1.1デバイスでは動作するが、Android 1.0デバイスでは、新しく追加されたAPIを実行した際にクラッシュする
  • Android 1.1SDKでビルドするが、Android 1.1で追加されたAPIを使用していない場合、
    Android 1.0デバイス互換であることを示すAPI Level 1して宣言することができる

 

外部ライブラリ

  • com.google.android.mapsを<uses-library>で使用することができる

 

デバイス互換

  • Android 1.1システムイメージは、T-Mobile G1との互換性もテストされている

 

UIローカライゼーション

  • English, US (en_US)
  • German (de)・・・ドイツ語

 

API変更点詳細

  • プロセスIDを取得するAPIとして、Process.myUid()が追加された(戻り値は、int)
  • android.view.ViewにgetLeft/Top/Right/BottomPaddhingOffset()、isPaddingOffsetRequired()が追加された
  • TextViewにsetMarqueeRepeatLimit()が追加された
  • android.R.attr.marqueeRepeatLimitが追加された
    ※サンプルアプリケーションApiDemoにもText/Marqueeが追加されていました
  • android.Manifest.permission.BROADCAST_SMSが追加された
  • android.Manifest.permission.BROADCAST_WAP_PUSHが追加された

Eclipseからデバッグした際に、

Failed to create debug key: Cannot run program "...\keytool.exe": CreateProcess error=3
JAVA_HOME is set to:...
Update it if necessary, or manually execute the following command:
...

というエラーに遭遇しました。
原因は、環境変数JAVA_HOMEの設定に誤りがあったため、keytool.exeの起動ができなかった・・・ということで、
対処方法としては、同環境変数をJavaがインストールされているフォルダへ修正し、
Eclipseを再起動後、Project... > Cleanを実行することで解決しました。

※環境変数JAVA_HOMEを手動で変更したりしていた訳ではなかったのですが、
古いSDKの動作を確認したく、一時的にSDKパスを変更し、
C:\Users\ada\AppData\Local\Androidなどのユーザーデータを削除した後、
デバッグしようとした際に、削除したdebug.keystoreを生成しようとしたとことで現象が発生しました。

<<前のページへ 2526272829303132333435

Android 楽しいよ!

2010年12月

      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 31  

自作フリーソフトウェア