public class MainActivity extends Activity implements OnClickListener {    private Button btn_photo;    private Button btn_camare;    private ImageView img;    private static final int CAMARE = 999;    private static final int PHOTO = 888;    private static final int CAMARE_SD = 666;    private File imgFile;    private Uri imgUri;        @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initview();    }    private void initview() {        // TODO Auto-generated method stub        btn_photo = (Button)findViewById(R.id.btn_photo);        btn_camare = (Button)findViewById(R.id.btn_camare);        img = (ImageView)findViewById(R.id.img);                btn_camare.setOnClickListener(this);        btn_photo.setOnClickListener(this);        }

重写onActivityResult方法 写好三个请求码

    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        // TODO Auto-generated method stub        super.onActivityResult(requestCode, resultCode, data);        switch (requestCode) {
        case CAMARE:            if (requestCode == RESULT_CANCELED) {                Toast.makeText(this,"取消了拍照",Toast.LENGTH_SHORT).show();                return;            }            Bitmap camarebit = data.getParcelableExtra("data");            img.setImageBitmap(camarebit);                        break;
        case PHOTO:            if (resultCode==RESULT_OK) {                imgUri = data.getData();                img.setImageURI(imgUri);            }                                    break;
        case CAMARE_SD://          if (hasSDcard()) {//              img.setImageURI(imgUri);//              //          }            if (resultCode==RESULT_OK) {                String path = getPathFromUri(imgUri);                BitmapFactory.Options options = new BitmapFactory.Options();                options.inSampleSize=5;                Bitmap bit = BitmapFactory.decodeFile(path, options);                img.setImageBitmap(bit);                            }                        break;        }    }

点击事件

    @Override    public void onClick(View v) {        // TODO Auto-generated method stub        switch (v.getId()) {        case R.id.btn_camare://          Intent in = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//          if (hasSDcard()) {//              File dir = getExternalCacheDir();//              imgFile = new File(dir,System.currentTimeMillis()+"avatar.png");//              imgUri = Uri.fromFile(imgFile);//              //              in.putExtra(MediaStore.EXTRA_OUTPUT, imgUri);//              startActivityForResult(in, CAMARE_SD);//          }

intent 跳转到系统相机,给一个之前写好的请求码

            Intent camarein = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);            imgUri = creatUri();            getPathFromUri(imgUri);            camarein.putExtra(MediaStore.EXTRA_OUTPUT, imgUri);            startActivityForResult(camarein,CAMARE_SD);                        break;                    case R.id.btn_photo:            Intent in = new Intent(Intent.ACTION_GET_CONTENT);            in.setType("img/*");            startActivityForResult(in,PHOTO);            break;        }    }

判断sd卡是否存在

    private boolean hasSDcard(){        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {            return true;                    }else {            return false;        }                }
    private Uri creatUri() {            // TODO Auto-generated method stub        String imgName = System.currentTimeMillis()+"avatar.jepg";        ContentValues value = new ContentValues();        value.put(MediaStore.Images.Media.TITLE,imgName);        value.put(MediaStore.Images.Media.DISPLAY_NAME,imgName);        value.put(MediaStore.Images.Media.MIME_TYPE,imgName );        Uri uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,value);                                return uri;    }

获取 Uri 的方法

    private String getPathFromUri(Uri uri) {        // TODO Auto-generated method stub        if (uri!=null) {            String path = null;

先初始化path
获得uri的头
判断是File还是content

            String scheme = uri.getScheme();
            if (ContentResolver.SCHEME_FILE.equals(scheme)) {                path = uri.getPath();            }else if(ContentResolver.SCHEME_CONTENT.equals(scheme)){                Cursor cursor = getContentResolver().query(uri, new String[] {ImageColumns.DATA}, null,null,null);                if (cursor.moveToFirst()) {                    int index = cursor.getColumnIndex(ImageColumns.DATA);                    path = cursor.getString(index);                                    }                cursor.close();                }            return path;                    }        return null;    }}

更多相关文章

  1. ExpandableListView 使用方法
  2. android三种监听方法
  3. android 编译错误解决方法(一)
  4. Android(安卓)基于surfaceView绘制正弦曲线
  5. Android一种欢迎界面全屏显示方法
  6. Android(安卓)滑动验证的一种简单实现
  7. MPAndroidChart的具体属性方法
  8. Android(安卓)切屏
  9. Android(安卓)判断APP是否在前台

随机推荐

  1. Android Binder 系统级使用demo
  2. Android性能优化案例研究
  3. Android 强制设置横屏或竖屏
  4. android4.0创建AVD后,打开虚拟机黑屏问题
  5. Android下Speex库除0错误(SIGFPE)排除
  6. and 使用以及添加一个自己的mime type在C
  7. 《H5 App开发》判断当前环境是Android还
  8. Android构建报错:Android resource linkin
  9. android linux 基础知识总结
  10. Android 获取设备信息