LoginSignup
1
1

More than 5 years have passed since last update.

THETAのサンプルコードをAndroidエミュレーターで動かしたい時

Last updated at Posted at 2015-05-29

某所で少しだけ時間が空いたので、RICOH THETAの開発者サイトにあったAndroidのサンプルコードをAndroidエミュレーターで動かそうとしたら少しハマったのでメモ。
Androidの開発を行う場合、エミュレーターではなく実機で行う事の方が多いと思うので、こういうハマり方はしないと思います。

ダウンロード & インストール

  1. AndroidStudioインストール
    • ダウンロードしてきてインストールするだけなので、解説は色々なサイトにお任せします
  2. RICOH_THETA_SDK_forAndroid.0.3.0 ダウンロード
    • 開発者登録が必要なようで、facebookアカウント等が必要になるようです

Make Project

  • 先にダウンロードしてきたフォルダを展開するとRICOH_THETA_SDK_for_Android.0.3.0/ricoh-theta-sample-for-androidが存在しているのでこの子をmake projectしようとするとエラーが発生しました
    • (エラーログや画面を残していませんでした・・・。)
  • どうやらAndroid API 19 Platformを利用しているらしく発生するエラー
    • 表示されたエラー画面中にInstallというリンクがあるので、クリックすればインターネットに繋がっていれば、インストール出来るようです

THETAをノートPCに接続する

SSIDとかパスワードを入力してもノートPCからTHETAに繋ぐ事が出来ませんでした。
はじめにの辺りを読むと、2.4Ghz制限があるようで、ノートPCの設定を見ると5Ghzを併用する設定となっていたらしく、この辺りの兼ね合いで繋がらなかったようです。
私が使っていたVaioですと、Smart Networkにある設定から無線LANのモード変更で2.4Ghzのみとする事が出来ました。
ただ、違う日に試してみたところ、併用の設定でも繋がったので関連は不明です。
この作業をしていた場所に、PCを使う人が多かったせいかもしれません。

なお、Vaioの無線設定方法に関しては、[Windows 7,Vista,XP]
2.4GHz無線方式と5GHz無線方式を切り替えて使用する方法
が分かりやすいと思います。

サンプルアプリ

上記までを行ったら、Run Debugを選択し、エミューレーターでランチします
アプリが起動したら、画面上部のボタンを押しONに変更してしばらく待つと、AndroidEmulatorで以下のような画面が出ます
選ぶ.png

ここで、写真を一つ選択すると下記のように落ちてしまいます
落ちる.png

openGLでエラー

この際、下記のようなエラーログが残っていました

logcat
05-28 05:55:18.309    2334-2353/com.theta360.sample E/AndroidRuntime﹕ FATAL EXCEPTION: GLThread 170
    Process: com.theta360.sample, PID: 2334
    java.lang.IllegalArgumentException: No config chosen
            at android.opengl.GLSurfaceView$BaseConfigChooser.chooseConfig(GLSurfaceView.java:869)
            at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:1023)
            at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1400)
            at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1239)

解決策

エラーをググってみると以下の辺りの記事が良さそうでした
OpenGL ES 2.0 Support for Android?
Android OpenGL demo “No config chosen”

GLに関する設定を追記すると良いようですね。

GLPhotoView.java
    private void initialize(Context context) {

        setEGLContextClientVersion(2);
        super.setEGLConfigChooser(8, 8, 8, 8, 16, 0);

        mRenderer = new GLRenderer();
        setRenderer(mRenderer);

というわけで、GLPhotoView.javaの76行目付近にsetEGLConfigChooserを記載してみたところ、動きました!

Android Developersには以下のように記載されていますね

Install a config chooser which will choose a config with at least the specified depthSize and stencilSize, and exactly the specified redSize, greenSize, blueSize and alphaSize.
If this method is called, it must be called before setRenderer(Renderer) is called.
If no setEGLConfigChooser method is called, then by default the view will choose an RGB_888 surface with a depth buffer depth of at least 16 bits.

デフォルトのサフェースがエミュレーターだと使えないという感じなのですかね?

以下の解説とかも分かりやすいかもしれません。
GL SurfaceView の導入

とりあえず、動かせたぞー!

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1