Android 如何使用自定义照相机拍摄照片并在其他活动中显示?

Android 如何使用自定义照相机拍摄照片并在其他活动中显示?,android,android-activity,camera,photo,Android,Android Activity,Camera,Photo,请帮助我如何从自定义相机拍摄照片并在其他活动中显示,请给我更详细的答案,我应该放什么代码,在哪里,请告诉我我应该创建什么类型的变量、int、string、boolean, 这是我的密码: 主要活动: @Override public void onPictureTaken(byte[] data, Camera camera) { final Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);

请帮助我如何从自定义相机拍摄照片并在其他活动中显示,请给我更详细的答案,我应该放什么代码,在哪里,请告诉我我应该创建什么类型的变量、int、string、boolean,
这是我的密码:

主要活动:

@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();
        }
    }
}
您可以使用接口将\u文件\u路径从CameraPreview类传递到MainActivity类。 然后在MainActivity.java中

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

@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);
    }
}
最后,将
添加到您的AndroidManifest.xml中,以允许您的应用程序写入外部存储

这是如何将位图写入外部存储器的示例。如果要存储到内部存储,如缓存或其他选项,请参阅


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

尚未通读,但您能否将图像数据存储到本地文件存储,并将捆绑路径传递给活动?在第二个活动中,您可以读取本地文件存储。我使用bundle进行了尝试,但无法将其保存到本地文件存储,idk为什么,它不会显示,它会在测试时关闭我的应用程序您在发送之前尝试存储?您基本上只需要通过bundle将字符串路径传递给本地文件。在存储之前,你可能需要考虑压缩。你能给我一个代码的例子吗?因为我不太明白你在说什么。我似乎可以理解,我只有2个小问题,“文件路径”和“Youl FielePixPipe”,因为我是一个C++的开发人员,学习Android已经4个月了,我从来没有做过照片,现在这让我有很多问题,我如何设置它们(文件路径)和你的文件路径?更新了答案。“FILE_PATH”是bundle的字符串标记。你可以随意命名。您只需要为putExtra和GetStringExtra谢谢使用相同的字符串标记,但是您的文件路径是什么?很抱歉问这么多,我知道这很烦人,但我必须在本周完成这个应用程序。我更新了代码,这样您的\u文件\u路径就不存在了:)您可以再次引用代码,看看如何获取路径。我将意图作废,并在使用onclick方法拍照后调用,效果很好,但活动启动,没有显示照片,我该怎么办?