如何将视频android上传到Ftp server.i有尝试代码更多的时间,但不适合我..请帮助我...我的问题是文件没有在客户端上传功能发现异常如何清除这个error..Please帮助我..如何上传视频android文件zilla服务器
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
}
}
}
上存在,创建目录? –
ftp4j-1.7.1.jar库文件... –
你知道解决方案,请告诉我... –