当前位置: 代码迷 >> Android >> Android 代码片断-从相册或相机获取图片保存并处理
  详细解决方案

Android 代码片断-从相册或相机获取图片保存并处理

热度:43   发布时间:2016-04-28 07:39:00.0
Android 代码片段---从相册或相机获取图片保存并处理
private void startPhotoAlbum(){	Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);			startActivityForResult(intent, UConstants.GETIMAGE);}	private String urlTempPic = "";	private void startCamera(){	Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);	urlTempPic = getImagePath();			i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(urlTempPic)));	startActivityForResult(i, UConstants.CAPUTRE);}public static String getImagePath(){	String path = null;				String dir = getExternalStoragePublicDirectory(UDataStorage.Dir_Pictures) + "/pyj/temp/pics/";	path = dir + System.currentTimeMillis() + ".jpg";				ensureDir(dir);				return path;}public static boolean ensureDir(String dir){	boolean result = false;	File file = new File(dir);	if (!file.exists())		result = file.mkdirs();	return result;}public static File getExternalStoragePublicDirectory(String type){	File file = null;	String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + type;	file = new File(path);	if (!file.exists())		file.mkdirs();	return file;}

private static final int DIALOG_YES_NO_LONG_MESSAGE = 1;		@Override	protected Dialog onCreateDialog(int id) {		// TODO Auto-generated method stub		switch (id) {		case DIALOG_YES_NO_LONG_MESSAGE:            return new AlertDialog.Builder(JSelectEventTypeActivity.this,AlertDialog.THEME_HOLO_LIGHT)                .setTitle("提示")                .setPositiveButton("从相册", new DialogInterface.OnClickListener() {                    public void onClick(DialogInterface dialog, int whichButton) {                            /* User clicked OK so do some stuff */                    	startPhotoAlbum();                    }                })                .setNeutralButton("从相机", new DialogInterface.OnClickListener() {                    public void onClick(DialogInterface dialog, int whichButton) {                        /* User clicked Something so do some stuff */                    	startCamera();                    }                })                .setNegativeButton("不需要", new DialogInterface.OnClickListener() {                    public void onClick(DialogInterface dialog, int whichButton) {                    }                })                .create();		}				return null;	}

@Override	protected void onActivityResult(int requestCode, int resultCode, Intent data) {		// TODO Auto-generated method stub		switch (resultCode) {		case RESULT_OK:			if (requestCode == UConstants.CAPUTRE)			{				// Load up the image's dimensions not the image itself				try {					BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();					bmpFactoryOptions.inJustDecodeBounds = true;					Bitmap bmp = BitmapFactory.decodeFile(urlTempPic,							bmpFactoryOptions);										int widthRatio = (int) Math.ceil(bmpFactoryOptions.outWidth / (float) 1080);					if (widthRatio > 1)					{						bmpFactoryOptions.inSampleSize = widthRatio;					}					bmpFactoryOptions.inJustDecodeBounds = false;					bmp = BitmapFactory.decodeFile(urlTempPic, bmpFactoryOptions);				} catch (Exception e) {					// TODO Auto-generated catch block					e.printStackTrace();				}							}			else if (requestCode == UConstants.GETIMAGE)			{				Uri imageFileUri = data.getData();								try {					BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();					bmpFactoryOptions.inJustDecodeBounds = true;										Bitmap bmp = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageFileUri), null, bmpFactoryOptions);										int widthRatio = (int) Math.ceil(bmpFactoryOptions.outWidth							/ (float) 1080);					if (widthRatio > 1) {						bmpFactoryOptions.inSampleSize = widthRatio;					}										bmpFactoryOptions.inJustDecodeBounds = false;					bmp = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageFileUri),null, bmpFactoryOptions);											} catch (Exception e) {					// TODO: handle exception				}			}			break;		default:			break;		}	}



1楼u011960402昨天 21:10
加点注释会比较好
  相关解决方案