0

カスタムカメラを作成しようとしていますが、1 つを除いてすべて機能しています。写真を撮った後、プレビューが表示され、受け入れる、やり直す、またはキャンセルする選択肢がある「ネイティブ」機能を模倣しようとしています。私はこれを機能させています。

問題は、写真が撮られた直後にCamera.takePictureコールバックが発生し、この「確認」画面が表示されることです。現時点では、画像を利用できますが、準備ができていません...

ユーザーが「確認、この写真を使用したい」にタッチするまで、バイト[]データを一時的な場所に保存したいです。その後、実際の画像をデバイスに保存します。

現在、画像をビットマップのように保存しています

// create the directory that the app uses to store pending
// uploads
String photoStoragePath = Environment
        .getExternalStorageDirectory()
        + Photo.UPLOAD_DIRECTORY;

// create the directory
File storageDirectory = new File(photoStoragePath);
storageDirectory.mkdirs();

// used for filename uid
long millis = System.currentTimeMillis();

// define the file_name to save photo taken by camera
// activity
String fileName = millis + ".jpg";

File file = new File(photoStoragePath, fileName);

// temporarily store the photo
mLastPhoto.compress(CompressFormat.JPEG, 95,
        new FileOutputStream(file.getAbsolutePath()));

しかし、5枚ほどの写真を撮った後、このOOM例外が発生します

09-26 01:55:14.979: E/AndroidRuntime(6303): FATAL EXCEPTION: main
09-26 01:55:14.979: E/AndroidRuntime(6303): java.lang.OutOfMemoryError
09-26 01:55:14.979: E/AndroidRuntime(6303):     at android.graphics.BitmapFactory.nativeDecodeByteArray(Native Method)
09-26 01:55:14.979: E/AndroidRuntime(6303):     at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:426)
09-26 01:55:14.979: E/AndroidRuntime(6303):     at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:444)
09-26 01:55:14.979: E/AndroidRuntime(6303):     at com.company.app.ui.CameraActivity$3$1$2.onPictureTaken(CameraActivity.java:203)
09-26 01:55:14.979: E/AndroidRuntime(6303):     at android.hardware.Camera$EventHandler.handleMessage(Camera.java:734)
09-26 01:55:14.979: E/AndroidRuntime(6303):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-26 01:55:14.979: E/AndroidRuntime(6303):     at android.os.Looper.loop(Looper.java:137)
09-26 01:55:14.979: E/AndroidRuntime(6303):     at android.app.ActivityThread.main(ActivityThread.java:4745)
09-26 01:55:14.979: E/AndroidRuntime(6303):     at java.lang.reflect.Method.invokeNative(Native Method)

このように画像をメモリに保存する必要がありますか、それともこれを簡単にするために欠けているものがありますか?

4

0 に答える 0