您已经编写了解决方案 ^^ 要启动相机应用,请使用:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
captured_image = System.currentTimeMillis() + ".jpg";
File file = new File(Environment.getExternalStorageDirectory(), captured_image);
captured_image = file.getAbsolutePath();
Uri outputFileUri = Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
intent.putExtra("return-data", true);
((Activity) GlobalVars.main_ctx).startActivityForResult(intent, RES_IMAGE_CAPTURE);
那么你需要一个ActivityResulListener Like:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
switch (requestCode) {
case RES_IMAGE_CAPTURE:
Log.i( "MakeMachine", "resultCode: " + resultCode );
switch( resultCode )
{
case 0:
Log.i( "MakeMachine", "User cancelled" );
break;
case -1:
//image storead, now load it in the web
break;
}
break;
}
}
存储图片后,您必须执行发布请求以将图片加载到网络中,您需要将文件复制到服务器(可能是 asp.net)的脚本,而您只需执行请求即可。我只有一个带有凭据的 https 请求代码,使用来自 appache 的外部库,这可能有点太复杂了,但我相信你会在这里找到代码,否则我的解决方案如下所示:
public static boolean upload_image(String url, List<NameValuePair> nameValuePairs,String encoding) {
DefaultHttpClient http = new DefaultHttpClient();
SSLSocketFactory ssl = (SSLSocketFactory)http.getConnectionManager().getSchemeRegistry().getScheme( "https" ).getSocketFactory();
ssl.setHostnameVerifier( SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER );
final String username = "username";
final String password = "password";
UsernamePasswordCredentials c = new UsernamePasswordCredentials(username,password);
BasicCredentialsProvider cP = new BasicCredentialsProvider();
cP.setCredentials(AuthScope.ANY, c);
http.setCredentialsProvider(cP);
HttpResponse res;
try {
HttpPost httpost = new HttpPost(url);
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.STRICT);
for(int index=0; index < nameValuePairs.size(); index++) {
ContentBody cb;
if(nameValuePairs.get(index).getName().equalsIgnoreCase("File")) {
File file = new File(nameValuePairs.get(index).getValue());
FileBody isb = new FileBody(file,"application/*");
entity.addPart(nameValuePairs.get(index).getName(), isb);
} else {
// Normal string data
cb = new StringBody(nameValuePairs.get(index).getValue(),"", null);
entity.addPart(nameValuePairs.get(index).getName(),cb);
}
}
httpost.setEntity(entity);
res = http.execute(httpost);
InputStream is = res.getEntity().getContent();
BufferedInputStream bis = new BufferedInputStream(is);
ByteArrayBuffer baf = new ByteArrayBuffer(50);
int current = 0;
while((current = bis.read()) != -1){
baf.append((byte)current);
}
res = null;
httpost = null;
String ret = new String(baf.toByteArray(),encoding);
GlobalVars.LastError = ret;
return true;
}
catch (ClientProtocolException e) {
// TODO Auto-generated catch block
return true;
}
catch (IOException e) {
// TODO Auto-generated catch block
return true;
}
}