如何使用自定义相机拍照并将其显示在另一项活动上?

时间:2015-06-22 20:05:36

标签: android android-activity camera photo

请帮我如何从自定义相机拍照并将其显示在另一个活动上,请给我更详细的答案,我应该放什么代码,哪里,请告诉我是什么样的变量,int,字符串我应该创造布尔人,
这是我的代码:

主要活动:

1 个答案:

答案 0 :(得分:0)

@Override
public void onPictureTaken(byte[] data, Camera camera) {
    final Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);

    // Store bitmap to local storage
    FileOutputStream out = null;
    try {
        // Prepare file path to store bitmap
        // This will create Pictures/MY_APP_NAME_DIR/
        File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES), "MY_APP_NAME_DIR");
        if (!mediaStorageDir.exists()) {
            if (!mediaStorageDir.mkdirs()) {
                Log.d(Constants.LOG_TAG, "failed to create directory");
                return null;
            }
        }

        // Bitmap will be stored at /Pictures/MY_APP_NAME_DIR/YOUR_FILE_NAME.jpg
        String filePath = mediaStorageDir.getPath() + File.separator + "YOUR_FILE_NAME.jpg";
        out = new FileOutputStream(filePath);
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); 
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (out != null) {
                out.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

您可以使用interface将YOUR_FILE_PATH从CameraPreview类传递到MainActivity类。 然后在MainActivity.java

Intent i = new Intent(this, EditPicture.class);
i.putExtra("FILE_PATH", YOUR_FILE_PATH);
startActivity(i);

在EditPicture活动中

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (getIntent().hasExtra("FILE_PATH")) {
        String filePath = getIntent().getStringExtra("FILE_PATH");

        // Read bitmap from local file
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inPreferredConfig = Bitmap.Config.ARGB_8888;
        Bitmap bitmap = BitmapFactory.decodeFile(filePath, options);
        yourImageView.setImageBitmap(bitmap);
    }
}

最后,将<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>添加到AndroidManifest.xml中,以便让您的应用可以写入外部存储空间。

这是如何将位图写入外部存储器的示例。如果要存储到内部存储(如缓存或其他选项),请参阅http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

如果您需要我详细说明,请告诉我。