7

おそらく見落としているだけの問題に遭遇しました。

カメラの表面プレビューから写真を撮り、sd_card. これはほぼ完璧に機能します。ファイル名を割り当てましたが、filename.

これは私がやろうとしてきたことです:

Button imagecapture = (Button) findViewById(R.id.imagecapture);
imagecapture.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
        String filename = null;
        ImageCaptureCallback iccb = null;

        try {
            filename = timeStampFormat.format(new Date());
            ContentValues values = new ContentValues();
            values.put(Media.TITLE, filename);
            values.put(Media.DESCRIPTION, "Image capture by camera");

            Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
            iccb = new ImageCaptureCallback(getContentResolver().openOutputStream(uri));
        } catch (Exception ex) {
            ex.printStackTrace();
            Log.e(getClass().getSimpleName(), ex.getMessage(), ex);
        }
        camera.takePicture(mShutterCallback, mPictureCallbackRaw, iccb);
        com.froogloid.android.gspot.Park.imageFileName = filename;
    }
});

ファイル名は使用しません (つまり、時間/日付のスタンプを要求します)。

4

3 に答える 3

6

これは、ImageCaptureCallback クラスを介して PictureCallback を実装し、ファイル出力ストリームを介してファイルが書き込まれる onPictureTaken をオーバーライドすることで解決されました。ファイル出力ストリームを必要なファイル名に変更するだけで済みました。

于 2009-01-23T13:43:55.100 に答える
0

それは画像を保存しませんか?私のアプリでは、このコードは画像を保存します。おそらく、変数「filaname」を使用してSDカードから画像を取得しますか? sdcard からの画像を使用するには、変数に保存する方が良いです。たとえば、uri.toString の "fileUri" の値、最後に uri Uri.parse(fileUri) で sdcard ファイルから取得します。

于 2009-01-26T13:01:10.653 に答える
0

これが役立つことを願っています/おそらく最善の方法ではありませんが、うまくいきました. どうぞ:
これはカメラ キャプチャ画像のコールバックです。

public class ImageCaptureCallback implements PictureCallback {

    private OutputStream filoutputStream;
    public ImageCaptureCallback(OutputStream filoutputStream) {
        this.filoutputStream = filoutputStream;
    }

    @Override
    public void onPictureTaken(byte[] data, Camera camera) {

        try {
            Log.v(getClass().getSimpleName(), "onPictureTaken=" + data + " length = " + data.length);
            FileOutputStream buf = new FileOutputStream("/sdcard/dcim/Camera/" + CameraActivity.filename + ".jpg");
            buf.write(data);
            buf.flush();
            buf.close();
            // filoutputStream.write(data);
            filoutputStream.flush();
            filoutputStream.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}
于 2009-02-25T21:25:57.850 に答える