I use the MediaStore.ACTION_VIDEO_CAPTURE
intent class to capture the video, the video stored in default location(gallery),i want to store the video in specific location with specific name.
I use MediaStore.EXTRA_MEDIA_TITLE
and MediaStore.EXTRA_MEDIA_OUTPUT
but I don`t get the video at correct location, at least I need the path of recorded video.
方案一:
Trick is to insert media into database before recording:
String fileName ="captureTemp.mp4";
ContentValues values =newContentValues();
values.put(MediaStore.Video.Media.TITLE, fileName);
cameraVideoURI = getContentResolver().insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);
Intent intent =newIntent(MediaStore.ACTION_VIDEO_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, cameraVideoURI);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,0);
intent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, MAXIMUM_VIDEO_SIZE);
startActivityForResult(intent, CAPTURE_VIDEO_INTENT);
and then onActivityResult() use saved cameraVideoUri to reference recorded video:
String[] projection ={MediaStore.Video.Media.DATA,MediaStore.Video.Media.SIZE };
Cursor cursor = managedQuery(cameraVideoURI, projection,null,null,null);
int column_index_data = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
int column_index_size = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE);
cursor.moveToFirst();
String recordedVideoFilePath = cursor.getString(column_index_data);
int recordedVideoFileSize = cursor.getInt(column_index_size);
方案二:
The solution from Zelimir doesn't work in my case (the videos were at the right location but had a size of zero bytes). So i've found another solution:
protectedvoid onActivityResult(int requestCode,int resultCode,Intent intent){
super.onActivityResult(requestCode, resultCode, intent);
if(resultCode != RESULT_OK)return;
try{
AssetFileDescriptor videoAsset = getContentResolver().openAssetFileDescriptor(intent.getData(),"r");
FileInputStream fis = videoAsset.createInputStream();
File tmpFile =newFile(Environment.getExternalStorageDirectory(),"VideoFile.3gp");
FileOutputStream fos =newFileOutputStream(tmpFile);
byte[] buf =newbyte[1024];
int len;
while((len = fis.read(buf))>0){
fos.write(buf,0, len);
}
fis.close();
fos.close();
}catch(IOException io_e){
// TODO: handle error
}
}
The MediaStore.EXTRA_OUTPUT
and the Uri aren't necessary in this case.
相关推荐
根据自己指定的本地文件路径,获取视频文件并已双列显示缩略图,点击缩略图调用系统播放器进行播放,该文件是源代码,适用用android平台
Android7.0 Intent打开文件管理器 获取文件真实路径。虽然网上很多demo,但是没有一个能够兼容所有Android机的,去网上学习了然后自己亲测过手机分别有Android7.0/6.0/4.3个版本。
Android调用系统自带的文件管理器进行文件选择并获得路径,亲测好使!
Unity 调用Android文件资源管理器,可以选择Android手机上的图片,视频等一些列文件,并且获得相关的文件路径。直接导入Unity即可运行。测试已经通过
web调用本地应用程序
Android 调用系统相机拍摄获取照片的两种方法实现实例 在我们Android开发中经常需要做这个一个功能,调用系统相机拍照,然后获取拍摄的照片。下面是我总结的两种方法获取拍摄之后的照片,一种是通过Bundle来获取压缩...
js通过webview调用android的本地方法,避免addJavascriptInterface问题
是因为从Android7.0开始,就不允许在 App 间,使用 file:// 的方式,传递一个 File ,否则就会抛出异常,而provider的作用恰好就是用过 content://的模式替换掉 file://,看上去只是换了个前缀,但其实是有真实路径...
android 调用自带录像功能 保存自定义路径
Android JNI Android JNI 用C函数写本地库读写文件,底层调用小例子用C函数写本地库读写文件,底层调用小例子
Android AudioRecorder录制mp3文件(已经完整封装好,直接调用) 源码包中有2个类 AudioRecorder2Mp3Util 负责录音和转换 MainActivity 用户的操作界面 注意用的时候需要加上权限 <uses-permission android:name=...
注,chrome 通过注册表注册表 只能调用本地的 exe 或者bat文件,不能调用 ppt word 这样的问题,所以我用VB 写了一个exe 可以接收调用参数,这样只许注册一次就可以通过传参打开所有课执行文件了 由于1.exe是后台...
Android调用系统程序,调用设置页面,wifi设置页面,发送Email,联系人页面调用
主要介绍了android webview中使用Java调用JavaScript方法并获取返回值,本文直接给出代码示例,需要的朋友可以参考下
一个简单的例子,C#多线程实现调用外部程序并获取打印结果 一个简单的例子,C#多线程实现调用外部程序并获取打印结果 一个简单的例子,C#多线程实现调用外部程序并获取打印结果 一个简单的例子,C#多线程实现调用...
android 系统调用WPS打开word excel ppt pdf 等,将代码类移入的你项目,有对6.0 7.0及以上系统做文件读取方法
html5 android网络音乐播放器 可调用android播放本地音乐 里面所有的音乐都需要自己去替换 这也是借鉴别人的写的
安卓调用本地Js函数弹出对话框。博客地址在http://blog.csdn.net/kui2015/article/details/49760499
资源里面有个JAVA文件,导入那个类,根据文档描述的去调用那个类,来实现在android上录制wav格式的录音
使用MediaRecorder实现视频录制,以实现的功能包括:录制开始、录制暂停和计时,播放功能暂时没有,以后如果有机会补上。注意除了在AndroidManifest.xml文件中申请权限外,还需要手动开启存储和相机权限,否则真机...