我想将视频上传到服务器。我的下面的代码记录并保存了视频,但是我想让它在我按下停止按钮后立即上传录制的视频。
例如,在Instagram或Whatsapp上,相机会录制视频,停止播放时会向我们提供上传按钮。那我怎么能实现呢?
MainActivity .java
public class MainActivity extends Activity {
private static int CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE ;
private TextView output;
/**
* Called when the activity is first created.
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );
Button buttonRecording = (Button) findViewById( R.id.s );
output = (TextView) findViewById( R.id.output );
buttonRecording.setOnClickListener( new Button.OnClickListener() {
@Override
public void onClick(View arg0) {
// create new Intentwith with Standard Intent action that can be
// sent to have the camera application capture an video and return it.
Intent intent = new Intent( MediaStore.ACTION_VIDEO_CAPTURE );
// create a file to save the video
Uri fileUri = getOutputMediaFileUri( MEDIA_TYPE_VIDEO );
// set the image file name
intent.putExtra( MediaStore.EXTRA_OUTPUT, fileUri );
// set the video image quality to high
intent.putExtra( MediaStore.EXTRA_VIDEO_QUALITY, 1 );
// start the Video Capture Intent
startActivityForResult( intent, CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE );
}
} );
}
/**
* Create a file Uri for saving an image or video
*/
private Uri getOutputMediaFileUri(int type) {
return Uri.fromFile( getOutputMediaFile( type ) );
}
/**
* Create a File for saving an image or video
*/
private File getOutputMediaFile(int type) {
// Check that the SDCard is mounted
File mediaStorageDir = new File( Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_MOVIES ), "Danger Escape Videos" );
// Create the storage directory(MyCameraVideo) if it does not exist
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
output.setText( "Failed to create directory MyCameraVideo." );
Toast.makeText( getApplicationContext(), "Failed to create directory MyCameraVideo.",
Toast.LENGTH_LONG ).show();
Log.d( "MyCameraVideo", "Failed to create directory MyCameraVideo." );
return null;
}
}
// Create a media file name
// For unique file name appending current timeStamp with file name
java.util.Date date = new java.util.Date();
String timeStamp = new SimpleDateFormat( "yyyyMMdd_HHmmss" )
.format( date.getTime() );
File mediaFile;
if (type == MEDIA_TYPE_VIDEO) {
// For unique video file name appending current timeStamp with file name
mediaFile = new File( mediaStorageDir.getPath() + File.separator +
"VID_" + timeStamp + ".mp4" );
} else {
return null;
}
return mediaFile;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// After camera screen this code will excuted
if (requestCode == CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
output.setText( "Video File : " + data.getData() );
// Video captured and saved to fileUri specified in the Intent
Toast.makeText( this, "Video saved to:" +
data.getData(), Toast.LENGTH_LONG ).show();
} else if (resultCode == RESULT_CANCELED) {
output.setText( "User cancelled the video capture." );
// User cancelled the video capture
Toast.makeText( this, "User cancelled the video capture.",
Toast.LENGTH_LONG ).show();
} else {
output.setText( "Video capture failed." );
// Video capture failed, advise user
Toast.makeText( this, "Video capture failed.",
Toast.LENGTH_LONG ).show();
}
}
}
}