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を生成しようとしたとことで現象が発生しました。

本家サイトに(http://source.android.com/download)に、ダウンロード・ビルド方法が掲載されています。

当方でも、Ubuntu8.04+プロキシーなし環境において、
掲載されている手順で、問題なくダウンロード・ビルドできることを確認できました。

ソースコード行数(Step数)をカウントしてみると、
コメントありで約1,500万行、コメントなしで約1,000万行でした。

※「組み込みの人。」(http://d.hatena.ne.jp/embedded/20081112/p2)に、もっと正確な情報がありました。

※日経 Linux (リナックス) 2009年 01月号 [雑誌]にもソースコードのダウンロード・ビルド方法が掲載されており、
ソースコードについても、付属のDVDに収録されていました。

日経 Linux (リナックス) 2009年 02月号 [雑誌]には、Zaurusへの移植の記事も掲載されていました。

[Android] 逆引きAndroid入門

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

逆引きAndroid入門のページ(http://www.adakoda.com/android/)を公開しました。

Bitmapのピクセル操作をするには、
android.graphicsパッケージBitmapクラスのgetPixel() / setPixel()を呼び出します。
また、getPixels() / setPixels()を呼び出すことで、複数のピクセルを操作することもできます。

具体的なサンプルコードは、以下のとおりです。

// Bitmap bitmap; // ビットマップがARGB32bitの場合
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int pixels[] = new int[width * height];
bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
for (int y = 0; y < height; y++) {
    for (int x = 0; x < width; x++) {
        int pixel = pixels[x + y * width];
        pixels[x + y * width] = Color.argb(
                Color.alpha(pixel),
                0xFF - Color.red(pixel),
                0xFF - Color.green(pixel),
                0xFF - Color.blue(pixel));
    }
}
bitmap.setPixels(pixels, 0, width, 0, 0, width, height);

この例では、ARGB32bit形式のBitmapに対して、
getPixels()を呼び出し、全ピクセルを(pixels)配列へ取得後、
forループ内で、各ピクセル(32bit値)のRGBを反転したピクセルを配列へ戻し、
最後に、setPixels()を呼び出し、変更した配列をBitmapへ反映させています。

上記では、全ピクセルを一括で配列へ取得していますが、
全ピクセルが必要でなければ、以下のように1行毎にget/setしてもよいでしょう。
このあたりは、画像処理のアルゴリズムとか、使用メモリ容量、速度などを考慮して書いてみてください。

int pixels[] = new int[width];
for (int y = 0; y < height; y++) {
    bitmap.getPixels(pixels, 0, width, 0, y, width, 1);
    for (int x = 0; x < width; x++) {
        int pixel = pixels[x];
        // ...
    }
    bitmap.setPixels(pixels, 0, width, 0, y, width, 1);
}

最後になりますが、
setPixels()は、Bitmapが編集不可(つまり、Bitmap.isMutable()がfalse)の場合、
IllegalStateExceptionの例外がスローされます。

ちなみに、編集不可のBitmapから、編集可能なBitmapを得るには、
copy(Bitmap.Config config, boolean isMutable)
を呼び出します。

第1引数が、Bitmapピクセルの並びで、32bitARGBを得るには、Bitmap.Config.ARGB_8888を指定します。
また、第2引数が編集可能かどうかですので、trueを設定することで、編集可能なBitmapのコピー(複製)を得ることができます。

XMLを解析するには、org.xmlpull.v1パッケージのXmlPullParserクラスを使用します。

 

XmlPullParserのインスタンスを得るには?

android.utilパッケージのXmlクラスのstaticメソッドであるnewPullParser()を呼び出します。

final XmlPullParser xmlPullParser = Xml.newPullParser();

または、

og.xmlpull.v1パッケージのXmlPullParserFactoryクラスのstaticメソッドである
XmlPullParserFactory.newInstance()を呼び出し、
XmlPullParserFactoryのインスタンスを取得後、同インスタンスのnewPullParser()を呼び出します。

final XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
final XmlPullParser xmlPullParser = factory.newPullParser();

※通常は、簡単な前者の方法でよいと思います。

 

XmlPullParserインスタンスに解析したいXMLをセットするには?

XmlPullParserクラスの
setInput(Reader in)、または、
setInput(InputStream inputStream, String inputEncoding)
を呼び出します。

例えば、このクラスの動作を理解するために、以下のように書いてみるのもよいでしょう(ヘルプと同じ例です)。

xmlPullParser.setInput(new StringReader("<foo>Hello World!</foo>"));

 

XmlPullParserインスタンスで解析を進めるには?

XmlPullParserクラスのnext()を呼び出します。

すると、戻り値に、EventTypeと呼ばれる下記のような定数値が得られます(以下は一部)。

  • XmlPullParser.START_DOCUMENT
  • XmlPullParser.START_TAG
  • XmlPullParser.TEXT
  • XmlPullParser.END_TAG
  • XmlPullParser.END_DOCUMENT

また、XmlPullParserクラスのgetDepth()を呼び出すと、現在解析しているdepth(階層)を得ることもできますし、
getName()を呼び出すと、エレメントのname(名前)を取得できます。

例えば、以下のようなXMLを解析すると、

<lv1>
  a
  <lv2 title="test">
    b
  </lv2>
  c
</lv1>

以下のような結果が得られます。

depth=0, eventType=START_DOCUMENT,  name=null   //
depth=1, eventType=  START_TAG,     name=lv1    // <lv1>
depth=1, eventType=    TEXT,        name=null   //   a
depth=2, eventType=      START_TAG, name=lv2    //     <lv2>
depth=2, eventType=        TEXT,    name=null   //       b
depth=2, eventType=      END_TAG,   name=lv2    //     </lv2>
depth=1, eventType=    TEXT,        name=null   //   c
depth=1, eventType=  END_TAG,       name=lv1    // </lv1>
depth=0, eventType=END_DOCUMENT,    name=null   //

まとめると、

  • START/END_DOCUMENTは、最初と最後に登場し、depthは、0
  • START/END_TAGは、<></>のたびに登場し、depthは、STARTでインクリメント、ENDの後にデクリメントされる
  • nameは、<></>でのみセットされる

のような感じになります。

最後になりますが、肝心の値の取得ですが、
TEXTの値を取得するには、getText()、
属性(先の例だとtitleの値)を取得するには、getAttributeValue()を呼び出すと取得できます。

<<前のページへ 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        

自作フリーソフトウェア