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; } }
Android 代码片段---从相册或相机获取图片保存并处理
最新推荐文章于 2023-10-10 20:52:36 发布