2011年4月26日火曜日

[Android]URLのQueryを配列に変換

AndroidというよりApacheの話になるんですが、めんどくさいURLのクエリーを配列に落としてくれるクラスがあります。知らないころガリガリ書いてたなぁ。コードはこんな感じ。

try {
    URI uri = new URI("http://localhost/hoge?foo1=foo1&bar1=bar1&nihonngo=%e6%97%a5%e6%9c%ac%e8%aa%9e%e3%82%82Ok");
    List<NameValuePair> list = URLEncodedUtils.parse(uri, "UTF-8");
    Log.d("test",list.toString());
    //[foo1=foo1, bar1=bar1, nihonngo=日本語もOk]って表示される
catch (URISyntaxException e) {
}

2011年4月18日月曜日

[Android]Androidはオープンソース(その2)

GDD Blog: [Android]Androidはオープンソースでも紹介しました、ソースの検索サイトですが、ほかにも検索できるサイトがありましたので、紹介します。

サイトはhttp://grepcode.com/です。

このサイトは、Android以外のコードも検索できます。また、eclipseのプラグインもあります。
ちょっと使ってみましたが、ソースがない場合にボタンが表示され、コードが表示されます。
結構便利ですよ。

2011年4月16日土曜日

[Android]Androidはオープンソース

Androidはオープンソースです。オープンソースですが、いつも環境がそろっているとは限りません。
そんな時はここ。ソースの検索サイトを無料で公開してくれています。2.2系2.3系があるみたいです。

2011年4月8日金曜日

[Java]グローバル例外ハンドラ

.NETではグローバル例外ハンドラというのがあり、処理されなかった例外を一手に処理するハンドラがあります。で、Javaは?と思って調べてみると、あるんですね。
この手の機能は一般的なものなんですかねぇ。java 1.5からの機能みたいですね。
しかしこのメソッドはセッターであるため、1つしか設定できないんです。というわけで、複数でハンドリングする場合は、注意しないと上書きされちゃいますね。

サンプルコードは以下のとおり。

import java.lang.Thread.UncaughtExceptionHandler;
class TestApp {
    public static void main(String[] args) {
        //スタティックメソッドのほうは、どこで例外が発生しても情報が取得できる!
        Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
            public void uncaughtException(Thread t, Throwable e) {
                System.out.println(e.getMessage());
            }
        });
        new TestApp().exception();
    }
    public void exception(){
        throw new RuntimeException("テストだよーん");
    }
}

2011年4月4日月曜日

[Android]NativeActivtyをちょっと調べてみた

Android2.3(Gingerbread)に搭載された機能の1つで、NativeActivtyっていうのがある。
名前から察するところ、Native(c/c++)のみで実装できるActivityか?と思ってたんですが、どうも違うことがわかりました。よくよく調べてみると、NativeActivity自体はJavaで実装されており、決まった形の関数を実装する形で連携するようです。

簡単にまとめると以下のとおり。

  • NativeActivityはJavaで実装されている
  • NativeActivityはJNIを使う
  • NativeActivityは主要なライフサイクルのコールバック時に、対応するNativeメソッドを呼ぶ
  • JNIの部分は雛形のテンプレートがあり、それを実装する(っぽい)
  • Nativeでの画面描画はOpenGLを使うのが一般的
  • Nativeからセンサーを使えるようになった

こんな感じでしょうか。で、NativeActivityをextendsして、通常のActivityのようなことができるかを試してみました。


  • Nativeが描画している画面の上にWidget配置→NGでした(やり方が悪いだけかも...)
  • メニューを出す→OKでした
  • ダイアログを出す→OKでした
  • Native側からカメラを制御→方法が見つからず
  • Native側からGPSを使う→方法が見つからず

ということで、OpenGLで画面を描画している上にViewを表示することはできなさそうです。。。
誰か情報持ってたら教えてください!