目前,我已经完成了一些程序,我可以向您展示。目的是录制视频并将其保存到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);
}
}
这是我创建文件的方式。...
Never硬编码路径。
documentation for FileProvider
具有FileProvider
的解释:
代表外部存储区根目录中的文件。该子目录的根路径与
<external-path>
返回的值相同。
因此,您需要替换:
Environment.getExternalStorageDirectory()
with:
File folder=new File("sdCard/test_drives");
但是请注意,您不能在Android 10及更高版本的设备上使用File folder=new File(Environment.getExternalStorageDirectory(), "test_drives");
。因此,如果您打算将此应用程序公开发布,则需要做其他事情,因为您的某些用户可能正在运行Android 10及更高版本。例如,您可以将Environment.getExternalStorageDirectory()
元数据切换为使用FileProvider
,然后使用:
<external-files-path>
...其中File folder=new File(context.getExternalFilesDir(null), "test_drives");
是context
(例如活动)。