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を表示することはできなさそうです。。。
誰か情報持ってたら教えてください!

0 件のコメント: