0

加速後に写真を保存します。これは私のコードです:

if (acc_tot > 10.5) {
            camera = Camera.open();
            camera.takePicture(null, null, jpegCallback);

            camera.release();
    }
.....
....
PictureCallback jpegCallback = new PictureCallback() {
        public void onPictureTaken(byte[] data, Camera _camera) {


        }

    };  

手伝って頂けますか?写真をSDカードに保存できますか?

4

2 に答える 2

0

これは簡単に行うことができます。これこれを見てください。画像をSDカードに簡単に保存できます。これを行う

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />まずこれをマニフェストに追加します。PictureCallback今、このように実装します

PictureCallback jpegCallback = new PictureCallback() {
        public void onPictureTaken(byte[] data, Camera _camera) {

String root = Environment.getExternalStorageDirectory().toString();
    File myDir = new File(root + "/saved_images");    
    myDir.mkdirs();

    String fname = "ImageName" +".jpg";
    File file = new File (myDir, fname);
    if (file.exists ()) file.delete (); 
    try {
           file.createNewFile();
           FileOutputStream out = new FileOutputStream(file);
           bmp.compress(Bitmap.CompressFormat.JPEG, 90, out);
           out.write(data,0,dat.length);
           out.flush();
           out.close();

    } catch (Exception e) {
           e.printStackTrace();
    }

        }

    };  

お役に立てれば

于 2013-06-27T15:35:19.617 に答える
0

写真を撮ろうとした直後にカメラを離しています。それがまったく機能するとは限りません。カメラがシャットダウンして、写真が表示されない場合があります。写真を受け取った後にカメラを開きたくない場合は、写真のコールバックで camera.release() を呼び出す前ではなく、できるだけ早く呼び出します。

さらに、カメラ プレビューを起動したり、プレビュー フレームの宛先を設定したりしません。写真を撮る前に、これらの両方が必要です。Android >= 3.0 をターゲットにしている場合、次の最小限のコードが機能するはずです。

 import android.graphics.SurfaceTexture;
 ...
 private mSurfaceTexture = new SurfaceTexture(0);
 ...
 if (acc_tot > 10.5) {
        camera = Camera.open();
        camera.setPreviewTexture(mSurfaceTexture);
        camera.startPreview();
        camera.takePicture(null, null, jpegCallback);
 }

ただし、1枚の写真が必要なたびにこれを行うと、カメラの起動にかなりの時間がかかります(〜1秒)。

良好なパフォーマンスを得るには、カメラを開いて、加速度追跡の開始時にプレビューを開始する必要があります。これにより、最小限の遅延で必要なときに takePicture を呼び出すことができます。アクティビティを一時停止するか、加速度の追跡を停止したら、カメラ デバイスを離します。

于 2013-06-27T17:47:13.300 に答える