gpt4 book ai didi

java - 摩托罗拉 Android 2.2 相机忽略 EXTRA_OUTPUT 参数

转载 作者:太空宇宙 更新时间:2023-11-03 11:21:06 25 4
gpt4 key购买 nike

我以编程方式打开相机拍摄视频。我告诉相机使用如下代码将视频文件放到指定位置:

Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
File out = new File("/sdcard/camera.mp4");
Uri uri = Uri.fromFile(out);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent, GlobalUtility.CAMERA_VIDEO);

它在 HTC 手机上运行良好。但在我的 moto defy 上,它只是忽略了 MediaStore.EXTRA_OUTPUT 参数,并将视频放到默认位置。然后我在 onActivityResult() 函数中使用这段代码来解决问题:

private String getRealPathFromURI(Uri contentUri) {
String[] proj = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(contentUri, proj, null, null, null);
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}

String realPath;
try {
File file = new File("/sdcard/camera.mp4");
if (!file.exists()) {
Uri videoUri = data.getData();
realPath = getRealPathFromURI(videoUri);
}
} catch (Exception ex) {
Uri videoUri = data.getData();
realPath = getRealPathFromURI(videoUri);
}

希望这对其他人有帮助。

最佳答案

仅仅因为 /sdcard/ 是一部手机和一个 Android 版本上的 sdcard 目录并不意味着它会保持一致。

您将要使用 Environment.getExternalStorageDirectory()正如弗兰肯斯坦的评论所暗示的那样。这将始终用于获取 SD 卡的目录。

您还需要检查 SD 卡当前是否可安装,因为手机可能处于 USB 存储模式。

尝试类似...

if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
Log.d(TAG, "No SDCARD");
} else {
File out = new File(Environment.getExternalStorageDirectory()+File.separator+"camera.mp4");
}

关于java - 摩托罗拉 Android 2.2 相机忽略 EXTRA_OUTPUT 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8060534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com