スポンサーリンク

ネコが撮影できるスマホアプリを作ろうと思う その9 一部の機種で動かない不具合を修正

スマホアプリ
スポンサーリンク

自分のスマホで動かない・・・。

iPhoneにも飽きてきてたし、せっかく自分で作ったアプリを使えないっていうのはもったいないなぁと思っていたので、3年ぶりくらいにアンドロイドスマホに戻しました。3年の間にずいぶんアンドロイドのスマホも進歩してたんですねぇ。

そしたら猫を撮影するためのアプリ(↓下のやつ)が起動しても真っ暗な画面が一瞬出てすぐに終了になるじゃないですか。開発用のスマホでは動いてたのに、どうりでGoogle Playの評価で動かないってコメントがあるわけだ・・・。
meowsnapSnapMeow ネコを自動で撮影する自撮りカメラ
Get it on Google Play

これは直さないといけない!という事で、調査開始。

このアプリは内部でOpenCVを使っているのでそこが怪しい。っていうかむしろそれくらいしか考えられない。静的リンクしているので、その辺がうまく行っていないのかなと思ってみたら。ビンゴでした。

AndroidStudioでOpenCVのサンプルを動かすを参考にさせていただきました。

サンプルコード

修正前がこちら。最初のActivityのonResume関数の所です。

@Override
    public void onResume() {
        super.onResume();
        if (!OpenCVLoader.initDebug()) {
            Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization");
            OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
            

        } else {
            Log.d(TAG, "OpenCV library found inside package. Using it!");
           mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
        }
    }

修正後がこちら。これで無事に動くようになりました。

@Override
    public void onResume() {
        super.onResume();
        //if (!OpenCVLoader.initDebug()) {
            Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization");
            //OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
            mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);

        //} else {
        //    Log.d(TAG, "OpenCV library found inside package. Using it!");
       //     mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
      //  }
    }

OpenCVは非常に便利だけどこういうリンクとかっていう使いこなしが難しいなぁ。

このアプリに関する記事一覧はこちらから。

ネコが撮影できるスマホアプリを作ろうと思う 記事一覧
猫を自動で認識して撮影するアプリ 完成したアプリはこちらです、アンドロイドのみの対応となりますが、カメラをネコに向けると自動でネコの顔を認識して画像を保存していきます。 SnapMeow ...

コメント