2010年12月17日金曜日

Androidエミュレータから社内DBに接続する

Androidエミュレータから、ホストPCにある社内LANのデータベースに接続するのに
手間取ったのでメモ

・データベース:postgresql9.0

まず、エミュレータからホストPC内のpostgresは接続することはできた。
で、そのまま、ホスト名の部分を社内LANにあるDBサーバーのIPアドレスにしてみた所

DriverManager.getConnection(~  の行で
org.postgresql.util.PSQLException: The Connection attempt failed.
の例外が発生した。

ポート番号はデフォルトの5432で合っているし・・・
そういえばSQLServerでもTCP/IPを許可しないとだめだったなと思いだし、
postgresの設定を見て見る。

listen_addressは「*」となっていて、どこからの接続も許可してるみたい。
ここを細かく設定すれば、接続できるネットワークの制限が出来るのね。

次に、pg_hba.confを見て見る。

# TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD
host    all             all             127.0.0.1/32            md5

あれ?127.0.0.1って、ローカルだけしか許容してないぞ。 ということで
192.168.1.0/16 とかやってみる。

confをリロード後・・・ 無事エミュレータからつながった!

2010年12月15日水曜日

Androidの起動時にアプリを自動起動

Windowsのスタートアップのようなことをやるには。


①BOOT_COMPLETEDを受けるBroadCastReceiverをつくる
public void AutoStartReceiver extends BroadCastReceiver {
  onReceiveメソッドをオーバーライド


②ReceiverをManifestで定義する
<receiver android:name=".AutoStartReceiver ">
  <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" /> 

    <category android:name="android:intent.category.DEFAULT" />
  </intent-filter>
</receiver> 

Androidの起動時にアプリを自動起動

Windowsのスタートアップのようなことをやるには。

非同期処理(ASyncTask)のメモ

onPreExecuteとonPostExecuteは、UIスレッド側の処理として動く。
doInBackgroundだけバックグラウンドで動く。

参考
http://blog.livedoor.jp/grs_man/archives/51636268.html

2010年12月14日火曜日

今回の環境

DB PostgreSQL 9.0.1
WEB側開発 ASP.NET(.NET3.5)
ドライバ Npgsql(.net用)
WAS IIS 7.0(Vistaで検証)
WEBサービス WCFWEBサービスで作成

*手間取ったこと
・開発したWCFのデプロイ⇒ 発行でOK
・IISでWCFを動かす設定(コンパネより)
  ASP.NET
  .NET拡張性
  ISAPI拡張
  ISAPIフィルター
 をインストール

 .NET 3.0の中のWCFActivationをインストール(これにはまった)

2010年12月10日金曜日

Android端末の実機で開発中のアプリをデバッグ

1 端末側でUSBデバッグをON
2 PCとUSBケーブルで接続
3 ドライバをインストール
IDEOS携帯は、Mobile Partner(E:)のE:\drivers\adb_driverを指定してインストールした。
4 コマンドラインで、adb devicesとやって、List of devices attachedの下にデバイス名がでればOK。
5 ApplicationManifest.xmlを編集して、デバッグ可能(debugableをtrue)にする。
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">

6 実行すると端末側でアプリが実行される。

ついでに

実機の画面キャプチャをとるには、DDMSを起動してDeviceメニューからScreenCaptureをクリック。

AlertDialog勉強中...

まず AlertDialogを作るためのBuilderを作って
final AlertDialog.Builder builder  = new AlertDialog.Builder(this);

タイトル(っていうか表示する文字)を設定して
builder.setTitle("電話しますか?");

する場合と、しない場合のボタン表示とリスナーを設定
// 「する」場合の処理
builder.setPositiveButton("する", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});

// 「しない」場合の処理
builder.setNegativeButton("しない", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});

アラートダイヤログを生成して
AlertDialog dialog = builder.create();

表示
dialog.show();

で終わり。

画面遷移時にエラー(ActivityNotFoundException)

ApplicationManifest.xmlのApplicationタグの要素に

<activity android:name=".MenuActivity"></activity>

こんな感じで追加。最初にピリオドがないと落ちる。

Android DDMS起動時のエラー(SDK 2.3)

AndroidSDKを2.3-GingerBread(API Level: 9)を使用。
ddmsを起動しようとしたら、以下のエラーがでた。
Failed to get the adb version: Cannot run program "adb": CreateProcess error=ここから文字化け
原因:D:\android-sdk-windows\platform-toolsに adb.exeが移動していた。
対処:%ANDROID_HOME%\platform-toolsにパスを通す。
参考URL:http://d.hatena.ne.jp/none53/20101209/1291850995