目前,我已经完成了一些流程,我可以向您展示。目的是录制视频并将其保存到back4app数据库中。
这将来自此...
还有文件...
请考虑到我也在同一片段中成功添加图片,我不知道我是否更改了此文件中的图片,图片会有任何问题。
这就是我创建文件的方式。...
private File getFilePath(){
File folder=new File("sdCard/test_drives");
if(!folder.exists()){
folder.mkdir();
}
Date currentTime = Calendar.getInstance().getTime();
video_file=new File(folder,"test_drives_"+currentTime+".mp4");
return video_file;
}
这是我的onActivityForResult方法。...
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==VIDEO_REQUEST && resultCode==RESULT_OK){
ParseQuery<ParseObject> query= ParseQuery.getQuery("CitaTestDrive");
query.getInBackground(idEventoTestDrive, new GetCallback<ParseObject>() {
@Override
public void done(ParseObject object, ParseException e) {
videoUri=data.getData();
String file=videoUri.getPath();
File inputFile = new File(file);
try {
fileInputStream = new FileInputStream(inputFile);
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
Bitmap thumbnailBm = BitmapFactory.decodeStream(fileInputStream);
ByteArrayOutputStream st = new ByteArrayOutputStream();
thumbnailBm.compress(Bitmap.CompressFormat.JPEG, 50, st);
byte[] byteArr = st.toByteArray();
Date currentTime = Calendar.getInstance().getTime();
ParseFile thumbFile = new ParseFile("TestDrive"+" "+currentTime+" "+nombreAsesor+".jpg", byteArr);
object.put("Video",thumbFile);
object.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if(e==null){
Toast.makeText(getActivity(),"Video uploaded to server",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getActivity(),e.toString(),Toast.LENGTH_LONG).show();
}
}
});
请记住,这是一个片段!
如果您还有其他需要,我会在这里为您提供更多信息,我将以我获取照片的方式进行攻击...
if (requestCode == REQUEST_IMAGE_SUBIR_CEDULA && resultCode == RESULT_OK) {
if (data != null && data.getExtras() != null) {
bitmap = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
ParseFile file = new ParseFile("image.jpg", byteArray);
imagenSubirCedula.setImageBitmap(bitmap);
}
}
答案 0 :(得分:0)
这就是我创建文件的方式。...
从不硬编码路径。
documentation for FileProvider
对此有一个解释,用于<external-path>
:
代表外部存储区根目录中的文件。该子目录的根路径与
Environment.getExternalStorageDirectory()
返回的值相同。
因此,您需要替换:
File folder=new File("sdCard/test_drives");
具有:
File folder=new File(Environment.getExternalStorageDirectory(), "test_drives");
不过请注意,您不能在Android 10及更高版本的设备上使用Environment.getExternalStorageDirectory()
。因此,如果您打算将此应用程序公开发布,则需要做一些其他事情,因为您的某些用户可能正在运行Android 10及更高版本。例如,您可以将FileProvider
元数据切换为使用<external-files-path>
,然后使用:
File folder=new File(context.getExternalFilesDir(null), "test_drives");
...其中context
是Context
(例如活动)。