2

私のアプリは MediaStore.ACTION_IMAGE_CAPTURE インテントで写真を撮ります。問題は、シャッター ボタンを押した後、写真を再撮影または受け入れることができる [OK] ボタンと [キャンセル] ボタンが表示される前に、断続的にアプリがクラッシュすることです。[OK] ボタンと [キャンセル] ボタンの選択は意図の一部であり、私のコードではないため、クラッシュは私のコードが直接の原因ではないようです。

アプリが閉じてエラー メッセージが表示されず、logcat が反応せず、CPU/ネットワーク/メモリ モニターが突然停止し、「モニターが無効になっています」と表示されます。

private void dispatchTakePictureIntent() {

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, getPhotoFileUri(photoFileName));

    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
    }
}

photoFileName は常にfile:///storage/emulated/0/Android/data/com.companyname.appname/files/Pictures/AppName/myphoto.jpg

写真が撮られた後、このコードによって処理されます

private List<Bitmap> myImages;
enter code here
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (resultCode != RESULT_CANCELED) {

        if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {

            if (resultCode == RESULT_OK) {
                Uri takenPhotoUri = getPhotoFileUri(photoFileName);
                BitmapFactory.Options options = new BitmapFactory.Options();
                options.inSampleSize = 4;
                Bitmap takenImage = BitmapFactory.decodeFile(takenPhotoUri.getPath(), options);

                //Store image in memory
                myImages.add(takenImage);

                if (myImagesAdapter == null) {
                    myImagesAdapter = new MyImagesListViewAdapter(this, myImages);

                    GridView myListView = (GridView) findViewById(R.id.my_images_view);
                    myListView.setAdapter(myImagesAdapter);
                    myImagesAdapter.notifyDataSetChanged();
                } else {
                    myImagesAdapter.notifyDataSetChanged();
                }

            } else { // Result was a failure
                Toast.makeText(this, "Picture wasn't taken!", Toast.LENGTH_SHORT).show();
            }
        }
    }
}

さらに、これは、実行時 (再生ボタンを押す) ではなく、デバッグ モード (Android Studio でバグを押す) の場合にのみ、より頻繁に発生するようです。

これは、最初の写真を撮ったときに発生しましたが、2 番目、3 番目、4 番目の写真でも発生しました。

UPDATE 1 logcat を ha No Filters に変更すると、これらの行が取得されます

09-06 22:30:26.961 990-1473/? I/WindowState: WIN DEATH: Window{296d6791 u0 com.mycompany.myapp/com.mycompany.myapp.MyFirstActivity}

09-06 22:30:26.965 990-1473/? D/InputDispatcher: ウィンドウが消えました: Window{296d6791 u0 com.mycompany.myapp/com.mycompany.myapp.MyFirstActivity}

09-06 22:30:26.968 990-2174/? I/WindowState: WIN DEATH: Window{3ac0ee0b u0 com.mycompany.myapp/com.mycompany.myapp.MySecondActivity}

09-06 22:30:26.971 990-2174/? D/InputDispatcher: ウィンドウが消えました: Window{3ac0ee0b u0 com.mycompany.myapp/com.mycompany.myapp.MySecondActivity}

09-06 22:30:27.059 990-1819/? I/ActivityManager: プロセス com.mycompany.myapp (pid 8623) が停止しました

09-06 22:30:27.626 990-2174/? I/ActivityManager: 強制停止 com.mycompany.myapp appid=10170 user=0: from pid 9949

09-06 22:30:27.627 990-2174/? I/ActivityManager: 強制終了アクティビティ ActivityRecord{18ca1aa0 u0 com.mycompany.myapp/.MyFirstActivity t254}

09-06 22:30:27.631 990-2174/? I/ActivityManager: 強制終了アクティビティ ActivityRecord{15946ece u0 com.mycompany.myapp/.MySecondActivity t254}

09-06 22:30:27.666 2249-2249/? NearbyMessages: ClientAppContext: 0P 識別子 (com.mycompany.myapp)、0P プレフィックス (0p:) なし

4

2 に答える 2