Is it possible to have code similar to the following that does the same for video?
if (resultCode == Activity.RESULT_CANCELED) {
// camera mode was canceled.
} else if (resultCode == Activity.RESULT_OK) {
// Took a picture, use the downsized camera image provided by default
Bitmap cameraPic = (Bitmap) data.getExtras().get("data");
if (cameraPic != null) {
try {
savePic(cameraPic);
} catch (Exception e) {
Log.e(DEBUG_TAG, "saveAvatar() with camera image failed.", e);
}
}
What I am trying to do is to be able to take a video using the Camera Intent and save that video or a copy of that video to my specific directory. This is the code i have to take the clip:
private void initTakeClip(){
Button takeClipButton = (Button) findViewById(R.id.takeClip);
takeClipButton.setOnClickListener(new OnClickListener(){
public void onClick(View v){
String strVideoPrompt = "Take your Video to add to your timeline!";
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(Intent.createChooser(cameraIntent, strVideoPrompt), TAKE_CLIP_REQUEST);
}
});
}
I just don't know how to go about then getting that specific video that was just taken and then copying it into my sd/appname/project_name/ directory.
The same is the case for getting the name/file location when adding a clip already from memory to my directory:
private void initAddClip(){
Button addClipButton = (Button) findViewById(R.id.addClip);
addClipButton.setOnClickListener(new OnClickListener(){
public void onClick(View v){
String strAvatarPrompt = "Choose a picture to use as your avatar!";
Intent pickVideo = new Intent(Intent.ACTION_PICK);
pickVideo.setType("video/*");
startActivityForResult(Intent.createChooser(pickVideo, strAvatarPrompt), ADD_CLIP_REQUEST);
}
});
}
Any/All help would be appreciated.
First what you need to do is get the URI from the onActivityResult like this:
private String videoPath = "";
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Uri vid = data.getData();
videoPath = getRealPathFromURI(vid);
}
public 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);
}
Then once you have the actual path stored as videoPath then you can store that using
try {
FileInputStream fis = openFilePath(videoPath);
//this is where you set whatever path you want to save it as:
File tmpFile = new File(Environment.getExternalStorageDirectory(),"VideoFile.3gp");
//save the video to the File path
FileOutputStream fos = new FileOutputStream(tmpFile);
byte[] buf = new byte[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
}