package com.camera;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
public class CameraActivity extends Activity {
private TextView tv;
private Button camerabutton;
private ProgressBar pb;
private String uploadUrl = "http://yanshi.chinaapp.cc/service.php?action=uploadFile";
/** Called when the activity is first created. */
Handler handle = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.what) {
case 0:
tv.setText("上传成功。");
Toast.makeText(CameraActivity.this, "上传成功", Toast.LENGTH_SHORT)
.show();
pb.setVisibility(ProgressBar.INVISIBLE);
break;
case 1:
tv.setText("无可用网络。");
Toast.makeText(CameraActivity.this, "无可用网络", Toast.LENGTH_SHORT)
.show();
pb.setVisibility(ProgressBar.INVISIBLE);
break;
case 2:
tv.setText("找不到服务器地址");
Toast.makeText(CameraActivity.this, "找不到服务器地址",
Toast.LENGTH_SHORT).show();
pb.setVisibility(ProgressBar.INVISIBLE);
break;
default:
break;
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.text);
pb = (ProgressBar) findViewById(R.id.progressBar1);
camerabutton = (Button) findViewById(R.id.camerabutton);
camerabutton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// MediaStore.ACTION_VIDEO_CAPTURE
// 从一个既存的Camera应用中申请视频功能的Intent动作类型
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
// MediaStore.EXTRA_VIDEO_QUALITY:这个值的范围是0~1,0的时候质量最差且文件最小,1的时候质量最高且文件最大。
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, 1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
Log.d("test", "onActivityResult() requestCode:" + requestCode
+ ",resultCode:" + resultCode + ",data:" + data);
if (resultCode == RESULT_OK) {
if (null != data) {
Uri uri = data.getData();
if (uri == null) {
return;
} else {
// 视频捕获并保存到指定的fileUri意图
Toast.makeText(this, "Video saved to:\n" + data.getData(),
Toast.LENGTH_LONG).show();
Cursor c = getContentResolver().query(uri,
new String[] { MediaStore.MediaColumns.DATA },
null, null, null);
if (c != null && c.moveToFirst()) {
tv.setText("上传中请等待......");
pb.setVisibility(View.VISIBLE);
String filPath = c.getString(0);
Log.d("test", filPath);
new Upload(filPath).start();
}
}
}
} else if (resultCode == RESULT_CANCELED) {
// 用户取消了视频捕捉
Toast.makeText(CameraActivity.this, "你取消视频录制", Toast.LENGTH_LONG)
.show();
} else {
// 视频捕捉失败,建议用户
Toast.makeText(CameraActivity.this, "视频录制失败请重新录制",
Toast.LENGTH_LONG).show();
}
}
public class Upload extends Thread {
String filpath;
public Upload(String filpath) {
super();
this.filpath = filpath;
}
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
ConnectionDetector cd = new ConnectionDetector(CameraActivity.this);
if (cd.isConnectingToInternet()) {
if (cd.checkURL(uploadUrl)) {
uploadVideo(CameraActivity.this, filpath);
//uploadFile(filpath);
handle.sendEmptyMessage(0);
} else {
handle.sendEmptyMessage(2);
}
} else {
handle.sendEmptyMessage(1);
}
}
}
public void uploadVideo(Context context, String videoPath) {
try {
HttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost(uploadUrl);
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
if(!videoPath.isEmpty()){
FileBody filebodyVideo = new FileBody(new File(videoPath));
reqEntity.addPart("uploadedfile", filebodyVideo);
}
postRequest.setEntity(reqEntity);
HttpResponse response = httpClient.execute(postRequest);
BufferedReader reader = new BufferedReader(new InputStreamReader(
response.getEntity().getContent(), "UTF-8"));
String sResponse;
StringBuilder s = new StringBuilder();
while ((sResponse = reader.readLine()) != null) {
s = s.append(sResponse);
}
Log.e("Response: ", s.toString());
} catch (Exception e) {
Log.e(e.getClass().getName(), e.getMessage());
}
}
}
- 1
- 2
前往页