2010年6月16日水曜日

DDM dispatch reg wait timeout Can't dispatch DDM chunk no handler defined ってなに?

アンドロイド携帯にアプリを送ってみたら、
DDM dispatch reg wait timeout
Can't dispatch DDM chunk 52454151: no handler defined
とエラーが出る。

コマンドプロンプトから
>adb -d install -r
HogeHogeX.apk
937 KB/s (150034 bytes in 0.156s)
DDM dispatch reg wait timeout
Can't dispatch DDM chunk 52454151: no handler defined
Can't dispatch DDM chunk 48454c4f: no handler defined
Can't dispatch DDM chunk 46454154: no handler defined
Can't dispatch DDM chunk 4d505251: no handler defined
pkg: /data/local/tmp/HogeHogeX.apk
Success

転送自体は正常みたいですが。。。。

いろいろいじくっていたら原因がわかった。

なんのことはない。
携帯上で送ろうとしていたアプリケーションが
携帯上で実行中だった。

アンドロイドアプリの『タスクマネージャ』などを
アンドロイドマーケットからダウンロードし、
アプリケーションを終了させてから、送りなおしたら、
このメッセージは出なくなった。

なーんだ。

2010年5月19日水曜日

Android:HelloWorldを作ってみる

Android1.6+
HelloWorldを作ってみる
Windows XP+
Eclipse Galileo
---
この前の記事
Android 開発環境の構築 Android SDKのインストールからXperiaの開発環境構築まで
のつづきです。

さてAndroidの開発環境が整ったところで、まず最初はやはりHelloWorldでしょう。

実際のプログラムを見る前に、Androidのアプリケーションの構成を説明します。

主に個々のアプリケーションを表現する『Activity』クラスと
アプリケーション中のウィンドウを表現する『View』クラスとで
構成されています。
ここでは、このActivityとViewを使ってHelloWorldを作成し、
描画領域を表現する『Canvas』クラスを使いグラフィカルな表示を
試してみます。

Eclipseを起動します。
メニューから
[File]-[New]-[Project]



New Project で
[Android]-[Andoid Project] を選択し[Next]



New Android Projectで
Project name: HelloWorld
◎Create new project in workspace
Build Target [v]Android 1.6 のように選び
Application name: HelloWorld
Package name: com.android.example.helloworld
[v]CreateActivity: HelloWorldActivity

とし

[Finish]をクリックします。

Package nameは本来自分のドメイン名を使用して選定します。
たとえば、所属する会社のドメインがhogehoge.co.jpなら
jp.co.hogehoge.helloworld
とします。
しかしながら、パッケージ名がアプリケーションリリース後に重複しないように
するのが目的なので、それほど厳格には決められていないようです。
しかも、ドメイン名に『 - : ハイフン』が入っている名前は、
Javaパッケージ名では許されないので、ちゃんと選定しようとすると
ずいぶんと頭を悩ませます。





ワークベンチに移動します。
画面右側の矢印をクリックします。
ちなみにこのWelcom画面に戻るには、メニューから[Help]-[Welcome]とします。


ワークベンチの画面が表示されます


ソースコードは次のところに生成されています。
左のパンから

[HelloWorld]-[src]-[com.android.example.helloworld]-[HelloWorldActivity.java]

と開いていきます。

HelloWorldActivity.java

をダブルクリックし開きます。


ちなみに
左のパンに表示されているフォルダは次のような意味があります。

・src
ソースコード
アプリケーションのソースプログラムがここで管理されています。

・res
リソース
アイコンや画像、プログラム中で使用するメッセージ等の文字列。
音楽データや動画データ、ゲームのデータ
と言ったアプリケーションが実行中に使用する実行中に変わらない
データを保存しておきます。

・AndroidManifest.xml
アプリケーションについての情報を記載します。
アプリケーションをリリースするときの情報や
アプリケーションが実行するときに使用する端末の資源、
インターネット接続やファイルシステムへのアクセスや
画面表示の自動回転と言った動作を設定します。

・gen
自動生成されるファイルです。
実際には、作成・編集したリーソース中のラベルを自動生成し、
アプリケーションから利用しやすくしています。
プログラム中で R.layout のように記載されているステートメントは
このリソースを参照しています。


■自動生成されたプログラムをとりあえず実行してみる

メニューから
[Run]-[Run Configurations...]


左側のパンから
[Android Application] をダブルクリック
Project欄の右横の[Browse]をクリックし
ターゲットとなるプロジェクトを選択します。
ここでは
[HelloWorld]
を選択します。




上部のタブから
[Target] を選択し
バーチャルデバイスを選択します。
ここでは

[v]Android1.6_API_Level4

にチェックを入れています

下部のボタン
[Apply]
 をクリックし
[Run]
で実行します。


まつことしばし。。。
2~10分ぐらいでしょうか。
最初の実行時にはバーチャルデバイス用メモリ領域を作成し
そこにAndroid一式をコピーし
エミュレーターを起動し
Androidを実行し
ビルドしたアプリケーションをエミュレーター上の端末にコピーし
アプリケーションの実行を指示します。
重い。。。






とりあえず、

HelloWorld,HelloWorldActivity!

と表示されていますが、これは、プロジェクトの自動生成したときに
自動的にリソース上に作成されたものなので、実際には何もプログラミングしていません。
これではつまらない。。。

ただ、これだけのソースコードでアプリケーションが実行出来るのは、
Windows VisualC++プログラマーからすると驚きですよね。

では、HelloWorld を表示してみましょう。
もともとのプログラムは、次のように生成されているはずです。

[HelloworldActivity.java]

package com.android.example.helloworld;

import android.app.Activity;
import android.os.Bundle;

public class HelloWorldActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}



これを修正していきます。

[HelloworldActivity.java]

package com.android.example.helloworld;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.graphics.*;

public class HelloWorldActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
HelloWorldView view = new HelloWorldView(getApplication());

setContentView(view);
}
}

class HelloWorldView extends View{
public HelloWorldView(Context context){
super(context);
setFocusable(true);
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setARGB(255,128,128,255);
paint.setTextSize(24);

canvas.drawText("Hello World!!!",100,100,paint);

}

}


再び

[Run]-[Run Configuration]

から実行してみます。



のように停止した場合は、
エミュレーター上の Menu ボタンをクリックします。




つづいて、実際にAndroid携帯にこのプログラムを送って実行してみましょう。

Android 開発環境の構築 Android SDKのインストールからXperiaの開発環境構築まで
の下~~~~の方です。。。

まとまってなくてすみません(^-^;;;
いま編集しなおしますので。。。

2010年5月14日金曜日

Android-devices 端末一覧

Android Device 一覧

2009.7.10 HT-03A Android1.5 Docomo 3G 320x480 GPS,Orientation,Accelerometer

2010.4.1 SO-O1B Xperia/X10 Android1.6 Docomo 3G 480x854 GPS,Orientation,Accelerometer

2010.4.27 X06HT HTC Desire Android2.1 SoftBank 480x800 GPS,Orientation,Accelerometer

2010.6 SHI01 ISO1

2010年5月12日水曜日

Android:SurfaceView::onDraw()が呼び出されない

SurfaceView::onDraw()が呼び出されない
Android: SurfaceView::onDraw() is not called
Android1.6+
----

SurfaceViewを使用してみるとOverrideした関数onDrawが呼び出されないことに
気がつきます。これはどうもデフォルトの仕様のようですが、SurfeceViewの
コンストラクタで、setWillNotDraw(false)とすることで
呼び出されるようになります。

class TestView extends SurfaceView
{
public TestView (Context context){
super(context);

setWillNotDraw(false); //■ここに追加
}
protected void onDraw(Canvas canvas) {

canvas.drawBitmap(bitmap,10,10,mPaint);

super.onDraw(canvas);
}
}


.

2010年5月11日火曜日

Android:画面の向きの固定 Portrait Landscape を指定するには How to Fix Screen Orientation

How to Fix screen orientation and rotation
Android1.6
Eclipse GALIREO / WindowsXP
AndroidManifest.xml
screenOrientation,unspecified,portrait,landscape,user,behind,sensor,nosensor
----
Androidの画面の向きの設定

Androidには画面の向きにあわせて自動的に画面を回転する機能がありますが、
アプリケーションによっては固定したいこともあります。
画面を固定するには、AndroidManifest.xml ファイルを編集することで出来ます。

AndroidManifest.xmlファイルを開きます。
Open AndroidManifest.xms



①下のタブの中から[Application]を選びます。
Select "Application" tab

②Application Nodesから(Activity)を選択します。ここでは、[.TestGravityActivity(Activity)]となっているところです。
Select Activity from "Application Nodes"

③画面右下から[Screen orientation]を選択します。
Select "Screen orientation"

 unspicified : システム自動設定 ユーザーの画面の向けた方向に自動回転します。/ Auto rotation
 landscape : 横長方向固定 / Fix landscape
 portrait : 縦長方向固定 / Fix portrait
 user : 現在のレイアウトに従います ユーザーの操作により切り替わります
 behind : 親のアクティビティーに従います ユーザーの操作により切り替わります
 sensor : センサーに従います
 nosensor : センサーを無視します

.

2010年5月10日月曜日

Activity・Viewクラスでのスクリーンサイズ・画面サイズの取得方法

Android 1.6
How to get the screen size on Activity class.
How to get the screen size on View class.
Activityクラスの派生クラスでのスクリーンサイズ・画面サイズの取得方法
Viewクラスの派生クラスでのスクリーンサイズ・画面サイズの取得方法
----

■Activityクラス上でスクリーンサイズを取得する方法

getSystemService(WINDOW_SERVICE)
を使用してスクリーンサイズを取得します。


import android.content.Context;
import android.view.Display;
import android.view.WindowManager;

public class TestActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

WindowManager windowmanager = (WindowManager)getSystemService(WINDOW_SERVICE);
Display disp = windowmanager.getDefaultDisplay();
int width = disp.getWidth();
int height = disp.getHeight();
}
}


■Viewクラス上でスクリーンサイズを取得する方法

contextオブジェクトが使えるのでそれを使用します。

Display disp =
((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).
getDefaultDisplay();
int width = disp.getWidth();
int height = disp.getHeight();

2010年5月4日火曜日

Android Xperia/X10 adb devices で認識されない 表示されない

adb can't list my attached device
SonyEricsson Xperia X10 SO-01B
android usb driver download and install
Windows XP,Windows Vista,Windows 7
Eclipse GALILEO
adb version 1.0.25
adb devices,adb list,adb kill-server,adb start-server
について記載しています
---
■症状:simptom
adb devices でSonyEricsson Xperia SO-01B が認識しない。
android/xperia USB 接続できない認識しない。
マスストレージデバイスとしてしか認識されない。
Xperiaのドライバのダウンロード場所が見つからない!?

■確認
現状では次のようにコマンドを入力しても、認識されていない状態だと思われます。

C:\>adb devices
List of devices attached


Xperia が認識されていません。

結局 / We need ...

1.XperiaをUSB Debug Mode にしないといけない。
We have to change Xperia to Debug Mode.

2.USBドライバが足りない。
USBドライバはExperia上にすでに保存されています。
We have to install USB Driver for Debug Mode.
(Driver is included on Xperia,We don't need download)

のが原因です。


■USBドライバの取り出しとインストール
USBドライバは、Xperiaの中に予め入っています。
XperiaをUSBモードで接続し、中のドライバを展開インストールします。

ドライバの場所は
Xperia's debug connection driver is here
(Xperia):\CDBrowser\Drivers.zip\ADB\amd64
(Xperia):\CDBrowser\Drivers.zip\ADB\i386
(Xperia):\CDBrowser\Drivers.zip\ADB\android_winusb.inf

パソコンにコピーし適当なフォルダに展開します。
android_winusb.infを右クリックしインストールします。
Right click on android_winusb.inf and select install.

■Xperiaをデバッグモードへ変更する
 Change mode on Xperia to Debug Mode

Xperia > 設定 > アプリケーション > 開発 > USBデバッグ [v]
Xperia X10 > Settings > Applications > Development > USB Debugging [v]




デバッグモードに変更することでドライバーがインストールされます。
And then,Automaticaly installed.



>adb kill-server
>adb start-server
>adb devices
List of devices attached
CB511***M decvice




できましたでしょうか。
.