私のアプリは 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:) なし