当前位置: 代码迷 >> Android >> android照相及照片下传
  详细解决方案

android照相及照片下传

热度:102   发布时间:2016-05-01 13:54:52.0
android照相及照片上传



package com.android.cist.camera.view;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.util.HashMap;import java.util.Map;import android.app.Activity;import android.app.AlertDialog;import android.content.ContentResolver;import android.content.DialogInterface;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.Toast;import com.android.cist.R;import com.android.cist.network.HttpUtil;import com.android.cist.network.form.FormFile;import com.android.cist.network.form.HttpFormUtil;import com.android.cist.util.ApplicationUtil;import com.android.cist.util.ImageUtil;public class CameraActivity extends Activity implements OnClickListener{	private ImageView preview;	private EditText carNo;	private EditText addres;	private EditText type;	private Button back;	private Button submit;	private Button capture;	private Button reCapture;	private OnClickListener imgViewListener;	private Bitmap myBitmap;	private byte[] mContent;	private Handler handler;	String returnString;	private CalendarView happenDate;	private static final int REQUEST_CAMERA = 1;	private static final int REQUEST_CALENDAR = 2;	@ Override	public void onCreate ( Bundle savedInstanceState )	{		super.onCreate(savedInstanceState);		setContentView(R.layout.camera);		setUpViews();		setUpListeners();		ApplicationUtil.getInstance().addActivity(this);	}	@ Override	protected void onActivityResult ( int requestCode , int resultCode , Intent data )	{		super.onActivityResult(requestCode, resultCode, data);		ContentResolver resolver = getContentResolver();		/**		 * 因为两种方式都用到了startActivityForResult方法,		 * 这个方法执行完后都会执行onActivityResult方法, 所以为了区别到底选择了那个方式获取图片要进行判断,		 * 这里的requestCode跟startActivityForResult里面第二个参数对应		 */		if (requestCode == 0)		{			try			{				// 获得图片的uri				Uri originalUri = data.getData();				// 将图片内容解析成字节数组				mContent = readStream(resolver.openInputStream(Uri.parse(originalUri.toString())));				// 将字节数组转换为ImageView可调用的Bitmap对象				myBitmap = getPicFromBytes(mContent, null);				// //把得到的图片绑定在控件上显示				preview.setImageBitmap(myBitmap);			} catch ( Exception e )			{				System.out.println(e.getMessage());			}		} else if (requestCode == REQUEST_CAMERA){			try			{				super.onActivityResult(requestCode, resultCode, data);				Bundle extras = data.getExtras();				myBitmap = (Bitmap) extras.get("data");				ByteArrayOutputStream baos = new ByteArrayOutputStream();				myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);				mContent = baos.toByteArray();			} catch ( Exception e )			{				e.printStackTrace();			}			// 把得到的图片绑定在控件上显示			preview.setImageBitmap(ImageUtil.toRoundCorner(myBitmap, 10));//把拍摄的照片转成圆角显示在预览控件上		}else if(requestCode==REQUEST_CALENDAR){			if(resultCode == RESULT_OK){				happenDate.setCalendar(data.getIntExtra("year", 1900), data.getIntExtra("month", 0), data.getIntExtra("day", 1));			}		}	}	public static Bitmap getPicFromBytes ( byte[] bytes , BitmapFactory.Options opts )	{		if (bytes != null)			if (opts != null)				return BitmapFactory.decodeByteArray(bytes, 0, bytes.length, opts);			else				return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);		return null;	}	public static byte[] readStream ( InputStream inStream ) throws Exception	{		byte[] buffer = new byte[1024];		int len = -1;		ByteArrayOutputStream outStream = new ByteArrayOutputStream();		while ((len = inStream.read(buffer)) != -1)		{			outStream.write(buffer, 0, len);		}		byte[] data = outStream.toByteArray();		outStream.close();		inStream.close();		return data;	}	@Override	public void onClick(View v) {		int id = v.getId();		switch(id){			case R.id.capture:{				final CharSequence[] items =				{ "相册", "拍照" };				AlertDialog dlg = new AlertDialog.Builder(CameraActivity.this).setTitle("选择图片").setItems(items,						new DialogInterface.OnClickListener()						{							public void onClick ( DialogInterface dialog , int item )							{								// 这里item是根据选择的方式,								// 在items数组里面定义了两种方式,拍照的下标为1所以就调用拍照方法								if (item == 1){									Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE");									startActivityForResult(getImageByCamera, REQUEST_CAMERA);								} else{									Intent getImage = new Intent(Intent.ACTION_GET_CONTENT);									getImage.addCategory(Intent.CATEGORY_OPENABLE);									getImage.setType("image/jpeg");									startActivityForResult(getImage, 0);								}							}						}).create();				dlg.show();			}			break;			/*case R.id.reCapture:{				final CharSequence[] items =				{ "相册", "拍照" };				AlertDialog dlg = new AlertDialog.Builder(CameraActivity.this).setTitle("选择图片").setItems(items,						new DialogInterface.OnClickListener()						{							public void onClick ( DialogInterface dialog , int item )							{								// 这里item是根据选择的方式,								// 在items数组里面定义了两种方式,拍照的下标为1所以就调用拍照方法								if (item == 1)								{									Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE");									startActivityForResult(getImageByCamera, 1);								} else								{									Intent getImage = new Intent(Intent.ACTION_GET_CONTENT);									getImage.addCategory(Intent.CATEGORY_OPENABLE);									getImage.setType("image/jpeg");									startActivityForResult(getImage, 0);								}							}						}).create();				dlg.show();			}			break;*/			case R.id.submit:{				new PostThread().start();//开启线程提交数据			}			break;			case R.id.back:{				CameraActivity.this.finish();//返回,销毁当前Activity			}			break;			default:			break;		}	}	}
1 楼 kulmao 2011-10-18  
我咋木有看到PostThread这个方法在哪里?
2 楼 浦南镇 2011-11-23  
膜拜楼主,请问我想做一个客户端修改头像的功能,最后要传到服务器,能给一个具体的代码吗?万分感谢!
3 楼 helloandroid 2011-11-24  
浦南镇 写道
膜拜楼主,请问我想做一个客户端修改头像的功能,最后要传到服务器,能给一个具体的代码吗?万分感谢!



http://open.t.qq.com/api/user/update_head?format=json&pic=img这个地址是更新头像的。
4 楼 浦南镇 2011-11-25  
helloandroid 写道
浦南镇 写道
膜拜楼主,请问我想做一个客户端修改头像的功能,最后要传到服务器,能给一个具体的代码吗?万分感谢!



http://open.t.qq.com/api/user/update_head?format=json&pic=img这个地址是更新头像的。




很感谢你的回答,但是我做的不是qq客户端,我做的客户端是用webserice和数据库相连的,想实现上传图片(包括头像)功能
5 楼 zgycsmb 2011-12-15  

大家好,android中上传图片到服务器中的功能,哪位有例子吗,求发一份给我
[email protected]
多谢
  相关解决方案