您的位置:首页 > 移动开发 > Android开发

android Camera使用(一)

2016-09-20 15:22 295 查看
现在的App不可避免的要使用到手机的相机功能

首先我们先来介绍下最简单的一个实现方式,启动系统自带的Activity

上代码:

public void openCamera() {
Intent i=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
path=getOutputMediaFile();
i.putExtra(MediaStore.EXTRA_OUTPUT,path);//使用自定义的路径进行保存图片
startActivityForResult(i,FLAG_CAMERA_RESULT);
}

private Uri getOutputMediaFile(){
      File path= Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
      File file=new File(path,"App_Note");
      if(!file.exists()){
          boolean flag= file.mkdirs();
       }
      String timestamp=new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
      File mediaFile=new File(file.getAbsolutePath()+File.separator+"img_"+timestamp+".jpg");
      return Uri.fromFile(mediaFile);
}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==FLAG_CAMERA_RESULT){
if(resultCode==RESULT_OK){
Bitmap bitmap= BitmapFactory.decodeFile(path.getPath());
list.add(bitmap);
adapter.notifyDataSetChanged();
}
}else if(requestCode==FLAG_GALLERY_RESULT){
if(resultCode==RESULT_OK){

try {
InputStream is= getContentResolver().openInputStream(data.getData());
Bitmap bitmap= BitmapFactory.decodeStream(is);
list.add(bitmap);
adapter.notifyDataSetChanged();

} catch (FileNotFoundException e) {
e.printStackTrace();
}
Log.i("com.loo",data.getData()+"");
}

}
}


注意:

如果不设置MediaStore.EXTRA_OUTPUT,系统将会在默认的地址进行保存,并在onActivityResult的data数据中返回,

Bitmap bm= (Bitmap) data.getExtras().get("data");//bitmap是被压缩过的


暂时不知道怎么获取存储的地址:试过使用data.getData()还是返回null。。。。。坑啊

如果设置了,返回的data即为NULL。

打开相册代码:

public  void openGallery(){
Intent i=new Intent(Intent.ACTION_GET_CONTENT);
i.setType("image/*");
startActivityForResult(i,FLAG_GALLERY_RESULT);
}


注意:一定要设置type,否则会报错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: