Android2.3(Gingerbread)に搭載された機能の1つで、NativeActivtyっていうのがある。
名前から察するところ、Native(c/c++)のみで実装できるActivityか?と思ってたんですが、どうも違うことがわかりました。よくよく調べてみると、NativeActivity自体はJavaで実装されており、決まった形の関数を実装する形で連携するようです。
簡単にまとめると以下のとおり。
名前から察するところ、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 件のコメント:
コメントを投稿