から撮った写真からOutOfMemoryErrorを作成しているところです。私のコードは、例外が発生するまで数回正常に動作するため、メモリ リークを探すのに数時間費やしました。BitmapCamera
奇妙なことは、PictureCallbackバイト配列のサイズを確認するためだけにコードをトレースしたことです。例外がスローされない場合は約 280k ですが、最終的には 1.2M を超えるバイト配列を受け取り、decodeByteArray がクラッシュします。
カスタムを使用していますCameraActivity。初期化するコードはCamera次のようになります
camera = Camera.open();
camera.setDisplayOrientation(cameraOrientation);
Camera.Parameters params = camera.getParameters();
Size size = getPreferredPictureSize();
params.setPictureSize(size.width, size.height);
params.setJpegQuality(JPEG_QUALITY);
params.setPictureFormat(ImageFormat.JPEG);
camera.stopPreview();
camera.setParameters(params);
camera.startPreview();
一時停止中はこのようCameraActivityに解放しますCamera
if (camera != null) {
camera.stopPreview();
camera.release();
camera = null;
}
同じ初期化で、返される画像のサイズが大きく異なるのはなぜですか? ものを完全に解放する方法を見逃してもCameraいいですか?手がかりをいただければ幸いです:)