Android 拍照,選取本地照片

private String[] items = new String[] { "選擇本地圖片", "拍照" };
/**
* 
* 設置圖像彈出框
* 
*/
private void ShowPickDialog() {
	new AlertDialog.Builder(this)
			.setTitle("設置頭像")
			.setItems(items, new DialogInterface.OnClickListener() {

				@Override
				public void onClick(DialogInterface dialog, int which) {
					Intent intent = new Intent();

					switch (which) {
					case 0:
						// 從圖片中選取頭像
						dialog.dismiss();
						
						intent = new Intent(Intent.ACTION_PICK, null);

						intent.setDataAndType(
						MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
									"image/*");
						startActivityForResult(intent, IMAGE_PIC);

						break;
					case 1:
						// 進行拍照
						dialog.dismiss();

					if (!Environment.getExternalStorageState().equals(
								Environment.MEDIA_MOUNTED)) {
								
					Toast.makeText(SetInfoActivity.this, "拍照功能必須插入SD卡",
							Toast.LENGTH_LONG).show();
					return;
				}

					/**
					 * 調用快速拍照功能,至於爲何叫快速拍照,你們能夠參考以下官方
					* 文檔,you_sdk_path
					* /docs/guide/topics/media/camera.html
					* 
					*/
					intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

					// 下面這句指定調用相機拍照後的照片存儲的路徑
					intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri
						.fromFile(new File(Environment
								.getExternalStorageDirectory(),
							fileName)));
					startActivityForResult(intent, IMAGE_CEAMER);

					break;
					}
				}
			})
			.setNegativeButton("取消", new DialogInterface.OnClickListener() {

				@Override
				public void onClick(DialogInterface dialog, int which) {
					dialog.dismiss();
				}
			}).show();
		
	}

2.   對startActivityForResult的返回處理:
html

@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if (resultCode == RESULT_OK) {
			switch (requestCode) {
			// 若是是直接從相冊獲取
			case IMAGE_PIC:
				startPhotoZoom(data.getData());
				break;
				
			// 若是是調用相機拍照時
			case IMAGE_CEAMER:

				File temp = new File(Environment.getExternalStorageDirectory()
						+ "/" + fileName);

				startPhotoZoom(Uri.fromFile(temp));

				break;
			// 取得裁剪後的圖片
			case IMAGE_CUT:
			
				if (data != null) {
					setPicToView(data);
				}
				break;
			default:
				break;

			}
		}
	
	}
相關文章
相關標籤/搜索