Android - 从相机拍摄并保存图像

时间:2014-11-13 22:12:42

标签: android file camera

我正在尝试让我的应用程序从相机拍摄照片,然后将其保存到设备内存中。在下面的代码中,我尝试获取SD卡的路径,然后使用相机捕获的数据创建一个文件。但是,我收到一个FileNotFoundException。代码工作正常,直到这一点,日志显示data []中存储的字节数,所以我假设相机不是问题。任何帮助将不胜感激...谢谢!!

PictureCallback jpegCallback = new PictureCallback() {
    public void onPictureTaken(byte[] data, Camera camera) {
        Log.d("testing", "wrote bytes: " + data.length);

        File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
        File file = new File(path, "Image.jpg");

        try {
            OutputStream os = new FileOutputStream(file);
            os.write(data);
            os.close();

            MediaScannerConnection.scanFile(instance, new String[] { file.toString() }, null,
                    new MediaScannerConnection.OnScanCompletedListener() {
                public void onScanCompleted(String path, Uri uri) {
                    Log.d("ExternalStorage", "Scanned " + path + ":");
                    Log.d("ExternalStorage", "-> uri=" + uri);
                }
            });
        } catch (IOException e) {
            Log.d("testing", "error writing file :(");
        } finally {
            Log.d("testing", "finally...");
            camera.stopPreview();
            camera.release();
            camera = null;
            Toast.makeText(getApplicationContext(), "Image Taken!", Toast.LENGTH_LONG).show();
        }
    }
};

1 个答案:

答案 0 :(得分:0)

你试过这个:

Environment.getExternalStorageDirectory().getAbsolutePath();

这应该会给你一张SD卡的路径。