投稿

9月, 2011の投稿を表示しています

SequoyahとAndroid nativeプロジェクトとgdb

Sequoyah plug-in(シクウォイア)を使えばeclipse上でnativeの管理が簡単になりそうである。 Eclipse Indigo(3.7)では以下のサイトが参考になった。 Ubuntu 11.4+eclipse3.7で動作確認できた。   Windows+cygwin+eclipse IndigoにSequoyahをインストールする例   http://www.permadi.com/blog/2011/09/setting-up-android-jni-projects-in-windows-eclipse-and-sequoyah/ eclipse Sequoyah wiki http://wiki.eclipse.org/Sequoyah eclipse native debug http://www.eclipse.org/sequoyah/documentation/native_debug.php eclipse native debugの補足 実際、ボクが試しのはndk-r6bとeclipse3.7+Android3.1実機(Toshiba)。 実は微妙に設定が異なるので注意が必要(Ubuntu11.4で検証) Debug Configurationsの記述中 GDB debuggerは ndkのルート/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gdb GDB command fileは プロジェクトローカル/obj/local/armeabi/gdb2.setup これは存在しないファイルですが、効率よくするためにこの名前を使う。 後でgdb.setupをrenameする。 Conclusion: ndkのデバッカ起動は非常に面倒であるが、gdbのuiモードが日本語表示非対応なため、eclipse上でdebug出来るのは非常に助かる(変数の文字列は読めないことがあるがソースのコメントが読める)。  とはいえndkも対応になったADTがあれば、こんな手間はいらないのだが。 PS.1 Samsung Galaxy Tab10.1(Android3.1/Google

setHasOptionsMenu、ActionBar,SearchViewそしてFocus

ActionBarにSearchViewを入れて以下のようなActiviteに2つのFragmentが入っていると。。。 [action bar(searchview)] [ListFragment][WebView+Fragment ]  action barのSearchViewに検索キーを打つ入れるたびに、 下の2つのfragmentがリアルタイムに変化するコードの場合を考える。 WebView+Fragment 内にsetHasOptionsMenu(true);の呼び出しが あると(これはよくあるパターンだと思う) そのコール時にAction Barを作り直すため、SearchViewの、 Focusが失われてしまう。 そのため、IUは最悪になってしまう。 これを回避するには2つの解決策が思い浮かぶ。 1. setHasOptionsMenu(true);を呼ばない 2. [WebView+Fragment ]、setHasOptionsMenu(true);から呼ばれるonCreateOptionsMenu内でSearchViewが生成された後、SearchView.requestFocus()を呼ぶ。 尚、requestFocus()は呼ぶコードの位置によってはFocusが移動しないことがある。 1はFragment個別のメニューが設定できないため、使いやすさが失われる 2は検索キーのRestore等もあるのでこの方法をとるのがいい ということで2を採用

Activite + ndk (naitive) Open GL ESを使って開放する際の注意点

GLSurfaceViewを使っているActivityをfinishする(閉じる)とき、TextureをGLSurfaceView側でクリアするため、naitive内で作ったTextureでも、native側でglDeleteTextures()を使ってクリアすると、GLSurfaceView側でもクリアするため、conflictが発生するようである。 したがって、glDeleteTextureはnativeで呼ぶ必要はなさそうである。 もし、glDeleteTexture等をつかうと、他のActiviteでフォントが黒ぬき(黒豆腐?)になり壊れてしまうという現象が発生した。 (TableとPhone両方, osはAndroid 3.1とAndroid2.2.2) Crashはしなかった。