Camera Intent 始终返回结果代码 0 且 Intent 数据 = null

Camera Intent always return result code 0 and Intent data = null

提问人:Zain -ul-eman 提问时间:11/13/2023 更新时间:11/13/2023 访问量:14

问:

@Override
public String getFragmentTag() {
    return FleetVideoFragment.class.getSimpleName();
}
private void dispatchTakeVideoIntent() {
    Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
    takeVideoIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION
            | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
    if (takeVideoIntent.resolveActivity(mActivity.getPackageManager()) != null) {
        File mediaFile = null;
        try {
            mediaFile = createVideoFile();
        } catch (IOException ex) {
            // Handle the error
        }
        if (mediaFile != null) {
            Uri uriFile = FileProvider.getUriForFile(mActivity,
                    "com.tekfirst.practical.fileprovider",  // Use your FileProvider authority
                    mediaFile);
            takeVideoIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, uriFile);
            takeVideoIntent.putExtra(android.provider.MediaStore.EXTRA_DURATION_LIMIT, 60);
            takeVideoIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
            startActivityForResult(takeVideoIntent, REQUEST_CODE_CAMERA);
        }
    }
}

private File createVideoFile() throws IOException {
    // Create an image file name
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());

字符串 videoFileName = “VIDEO_” + timeStamp + “”; 字符串 videoFileName = “VIDEO” + bookedOutRA.getId() + “” + timeStamp + “”; 文件存储Dir = mActivity.getExternalFilesDir(Environment.DIRECTORY_PICTURES); File storageDir = new File(Objects.requireNonNull(mActivity.getExternalFilesDir(Environment.DIRECTORY_PICTURES)).getAbsolutePath(), “/” + bookedOutRA.getId()); 如果 (!storageDir.exists()) { storageDir.mkdirs(); } 文件 video = File.createTempFile( videoFileName, /* 前缀 / “.mp4”, / 后缀 / storageDir / 目录 */ );

    // Save a file: path for use with ACTION_VIEW intents
    getmCurrentPath = video.getAbsolutePath();
    return video;
}

我正在使用默认相机录制视频,但在最新的 android 设备中,其结果总是被取消,但在旧设备中,它可以正常工作。OUTPUT_EXTRA不工作

Java Android 相机

评论

0赞 CommonsWare 11/13/2023
您的问题可能出在该特定设备上的相机应用程序上。相机应用程序有问题,并不总是正确地遵循这样的操作。IntentACTION_VIDEO_CAPTURE
0赞 Zain -ul-eman 11/13/2023
那么有什么解决方案呢?
0赞 CommonsWare 11/13/2023
向用户道歉。或者,使用一些第三方相机应用程序测试您的应用程序,并为用户提供一个选择器 - 如果您再次遇到问题,请向用户道歉,并建议他们安装其中一个第三方相机应用程序。或者,停止使用并使用 CameraX 或其他一些库自己录制视频。ACTION_VIDEO_CAPTURE

答: 暂无答案