How to upload the video android to Ftp server.i have try to code of more time but does not work for me..please help me...My problem is file not found exception in client upload function how to clear this error..Please help me..
public class MainActivity extends Activity {
private Camera myCamera;
private MyCameraSurfaceView myCameraSurfaceView;
private MediaRecorder mediaRecorder;
String sourceFileUri;
Button myButton;
SurfaceHolder surfaceHolder;
boolean recording;
/********* work only for Dedicated IP ***********/
static final String FTP_HOST = "upload.com";
/********* FTP USERNAME ***********/
static final String FTP_USER = "users";
/********* FTP PASSWORD ***********/
static final String FTP_PASS = "12345";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
recording = false;
setContentView(R.layout.activity_main);
// Get Camera for preview
myCamera = getCameraInstance();
myCamera.setDisplayOrientation(90);
if (myCamera == null) {
Toast.makeText(MainActivity.this, "Fail to get Camera",
Toast.LENGTH_LONG).show();
}
myCameraSurfaceView = new MyCameraSurfaceView(this, myCamera);
RelativeLayout myCameraPreview = (RelativeLayout) findViewById(R.id.relative);
myCameraPreview.addView(myCameraSurfaceView);
myButton = (Button) findViewById(R.id.btn_capture);
myButton.setOnClickListener(myButtonOnClickListener);
}
Button.OnClickListener myButtonOnClickListener = new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (recording) {
// stop recording and release camera
mediaRecorder.stop(); // stop the recording
Log.e("mediastop", "" + mediaRecorder);
Toast.makeText(MainActivity.this, "Video captured!",
Toast.LENGTH_LONG).show();
doFileUpload();
// Log.e("fileupload", "" + f);
releaseMediaRecorder(); // release the MediaRecorder object
recording = false;
// Exit after saved
// finish();
} else {
// Release Camera before MediaRecorder start
releaseCamera();
if (!prepareMediaRecorder()) {
Toast.makeText(MainActivity.this,
"Fail in prepareMediaRecorder()!\n - Ended -",
Toast.LENGTH_LONG).show();
finish();
}
mediaRecorder.start();
Toast.makeText(MainActivity.this, "Start Recording..",
Toast.LENGTH_LONG).show();
recording = true;
// myButton.setText("STOP");
}
}
};
private Camera getCameraInstance() {
// TODO Auto-generated method stub
Camera c = null;
try {
c = Camera.open(); // attempt to get a Camera instance
} catch (Exception e) {
// Camera is not available (in use or does not exist)
}
return c; // returns null if camera is unavailable
}
private File getOutputMediaFile() {
// To be safe, you can check that the SDCard is mounted
// using Environment.getExternalStorageState() before doing this.
File mediaStorageDir = new File(Environment.getExternalStorageDirectory().getPath().toString()+ "/gg/");
// Create the storage directory if it does not exist
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d("CameraApp", "failed to create directory");
return null;
}
}
// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
.format(new Date());
File mediaFile;
mediaFile = new File(mediaStorageDir.getPath() /*File.separator
*/+ "VID_" + timeStamp + ".mp4");
Log.e("mediafile", "" + mediaFile);
return mediaFile;
}
private boolean prepareMediaRecorder() {
myCamera = getCameraInstance();
myCamera.setDisplayOrientation(90);
mediaRecorder = new MediaRecorder();
myCamera.unlock();
mediaRecorder.setCamera(myCamera);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setProfile(CamcorderProfile
.get(CamcorderProfile.QUALITY_HIGH));
mediaRecorder.setOrientationHint(90);
mediaRecorder.setOutputFile(getOutputMediaFile().getPath());
Log.e("mediarecorder", "" + mediaRecorder);
mediaRecorder.setMaxDuration(60000); // Set max duration 60 sec.
mediaRecorder.setMaxFileSize(5000000); // Set max file size 5M
/*
* try {
*
* doFileUpload();
*
* } catch (ParseException e) { // TODO Auto-generated catch block
* e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated
* catch block e.printStackTrace(); }
*/
mediaRecorder.setPreviewDisplay(myCameraSurfaceView.getHolder()
.getSurface());
try {
mediaRecorder.prepare();
} catch (IllegalStateException e) {
releaseMediaRecorder();
return false;
} catch (IOException e) {
releaseMediaRecorder();
return false;
}
return true;
}
public void doFileUpload() {
if (android.os.Build.VERSION.SDK_INT > 16) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
}
// File f = new File(""+getOutputMediaFile().getPath());
//Log.e("f", "" + f);
Uri uri = Uri.parse(""+getOutputMediaFile().getPath());
Log.e("uri",""+uri);
File filename = new File(uri.getPath());
Log.e("filename",""+filename);
// File fis=fileName;
// Log.e("fis",""+fis);
FTPClient client = new FTPClient();
try {
client.connect(FTP_HOST,21);
Log.e("clientconnect", "" + client);
client.login(FTP_USER, FTP_PASS);
Log.e("clientlogin", "" + client);
client.setType(FTPClient.TYPE_BINARY);
Log.e("clienttype", "" + client);
client.changeDirectory("/gg/");
Log.i("", "$$$$$$$$$$$$$$$$$" + ("/gg/"));
// int reply = client.getReplyCode();
client.setPassive(true);
Log.e("clientpassive", "" + client);
client.noop();
//client.setAutoNoopTimeout( 30000);
Log.e("clientnoop", "" + client);
client.upload(filename,new MyTransferListener());
Log.e("filenameupload", "" + filename);
Log.e("clientupload", "" + client);
// Log.e("file",""+fileName);
Toast.makeText(getBaseContext(), " transferred ..." + client,
Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
try {
client.disconnect(true);
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
public class MyTransferListener implements FTPDataTransferListener {
public void started() {
// btn.setVisibility(View.GONE);
// Transfer started
Toast.makeText(getBaseContext(), " Upload Started ...",
Toast.LENGTH_SHORT).show();
// System.out.println(" Upload Started ...");
}
public void transferred(int length) {
// Yet other length bytes has been transferred since the last time
// this
// method was called
Toast.makeText(getBaseContext(), " transferred ..." + length,
Toast.LENGTH_SHORT).show();
// System.out.println(" transferred ..." + length);
}
public void completed() {
// btn.setVisibility(View.VISIBLE);
// Transfer completed
Toast.makeText(getBaseContext(), " completed ...",
Toast.LENGTH_SHORT).show();
// System.out.println(" completed ..." );
}
public void aborted() {
// btn.setVisibility(View.VISIBLE);
// Transfer aborted
Toast.makeText(getBaseContext(),
" transfer aborted , please try again...",
Toast.LENGTH_SHORT).show();
// System.out.println(" aborted ..." );
}
public void failed() {
// btn.setVisibility(View.VISIBLE);
// Transfer failed
System.out.println(" failed ...");
}
// Jibble.
}
@Override
protected void onPause() {
super.onPause();
releaseMediaRecorder(); // if you are using MediaRecorder, release it
// first
releaseCamera(); // release the camera immediately on pause event
}
private void releaseMediaRecorder() {
if (mediaRecorder != null) {
mediaRecorder.reset(); // clear recorder configuration
mediaRecorder.release(); // release the recorder object
mediaRecorder = null;
myCamera.lock(); // lock camera for later use
}
}
private void releaseCamera() {
if (myCamera != null) {
myCamera.release(); // release the camera for other applications
myCamera = null;
}
}
public class MyCameraSurfaceView extends SurfaceView implements
SurfaceHolder.Callback {
private SurfaceHolder mHolder;
private Camera mCamera;
public MyCameraSurfaceView(Context context, Camera camera) {
super(context);
mCamera = camera;
// Install a SurfaceHolder.Callback so we get notified when the
// underlying surface is created and destroyed.
mHolder = getHolder();
mHolder.addCallback(this);
// deprecated setting, but required on Android versions prior to 3.0
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format,
int weight, int height) {
// If your preview can change or rotate, take care of those events
// here.
// Make sure to stop the preview before resizing or reformatting it.
if (mHolder.getSurface() == null) {
// preview surface does not exist
return;
}
// stop preview before making changes
try {
mCamera.stopPreview();
} catch (Exception e) {
// ignore: tried to stop a non-existent preview
}
// make any resize, rotate or reformatting changes here
// start preview with new settings
try {
mCamera.setPreviewDisplay(mHolder);
mCamera.startPreview();
} catch (Exception e) {
}
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
// The Surface has been created, now tell the camera where to draw
// the preview.
try {
mCamera.setPreviewDisplay(holder);
mCamera.startPreview();
} catch (IOException e) {
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
}
}
Aucun commentaire:
Enregistrer un commentaire