1.调用系统摄像头

1.声明常量和变量

2.按钮点击事件,打开系统摄像头

3.重写onActivityResult事件接收拍照返回

4.生成文件名返回路径

5.保存图片

  private static final int TAKE_PICTURE = 1;  class btnGotoActivity02Listener implements OnClickListener {    public void onClick(View v) {      Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //调用摄像头拍照      startActivityForResult(intent, TAKE_PICTURE);    }  }  @Override  protected void onActivityResult(int requestCode, int resultCode, Intent data) {    String filename = "";    try {      if (resultCode == Activity.RESULT_OK && requestCode == TAKE_PICTURE) {        Bundle bundle = data.getExtras();        Bitmap bmp = (Bitmap)bundle.get("data");        filename = saveImage(bmp);      }    } catch (Exception err) {      Log.e("Exception", err.getLocalizedMessage());    }  }  public String buildFileName(){    Date now = new Date();    SimpleDateFormat formater = new SimpleDateFormat("yyMMdd_HHmmss");    String SDCARD = Environment.getExternalStorageDirectory() + "/";    String basePath = SDCARD + "dier/photo/";    File dir = new File(basePath);    dir.mkdirs();        return basePath + formater.format(now) + ".jpg";  }    public String saveImage(Bitmap bmp) throws Exception {    File file = new File(buildFileName());    file.createNewFile();    FileOutputStream oStream = new FileOutputStream(file);    bmp.compress(Bitmap.CompressFormat.JPEG, 100, oStream); //100是照片质量,0-100,越大越好    oStream.flush();    oStream.close();    return file.getPath();  }



2.保存完整分辨率的照片

使用上面的方法,保存下来的图片仅为原图的1/4大小,如果需要保存大照片则需要使用下面的方式

缺点:此方法除了在指定的目录下保存图片外,在系统拍照路径下也会保存下一张相同的图片。

  private static final int TAKE_PICTURE = 1;  private String TEMP_FILE = "";    class btnGotoActivity02Listener implements OnClickListener {    public void onClick(View v) {      TEMP_FILE = buildFileName();      Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //调用摄像头拍照      intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(TEMP_FILE))); //另存图片地址      startActivityForResult(intent, TAKE_PICTURE);    }  }    public String buildFileName(){    Date now = new Date();    SimpleDateFormat formater = new SimpleDateFormat("yyMMdd_HHmmss");    String SDCARD = Environment.getExternalStorageDirectory() + "/";    String basePath = SDCARD + "dier/photo/";    File dir = new File(basePath);    dir.mkdirs();        return basePath + formater.format(now) + ".jpg";  }    @Override  protected void onActivityResult(int requestCode, int resultCode, Intent data) {    String filename = "";    try {      if (resultCode == Activity.RESULT_OK && requestCode == TAKE_PICTURE) {        File file = new File(TEMP_FILE);        if(file.exists()){          filename = file.getPath();          Toast.makeText(MainActivity.this, "图片已保存在:" + filename, 3000).show();        }        else {          Toast.makeText(MainActivity.this, "亲,我实在无能为力啊,你是用啥程序照的相片?", 5000).show();        }      }    } catch (Exception err) {      Log.e("Exception", err.getLocalizedMessage());    }  }  


更多相关文章

  1. 动态显示带图片列表【Android】
  2. android studio实现视频图片轮播功能
  3. Glide框架V3版本和V4版本区别
  4. android 网络编程--URL获取数据/图片
  5. 三种自定义漂亮的Android(安卓)SeekBar的方法
  6. android 5.0 修改默认壁纸
  7. [置顶] android加载大图片到内存
  8. Android调用摄像头拍照(兼容7.0)
  9. unity3d 保存(截图、拍照)图片 到Android(安卓)IPhone手机相册

随机推荐

  1. php代码如何在html文件里面执行(详解)
  2. 如何解决php中curl_init()函数不可用
  3. php中如何进行小写转换?
  4. PHP以正则表达式验证手机号码
  5. 如何实现php中date只显示年月日
  6. 如何解决php中fpm无法启动
  7. 如何解决php连接erp数据库失败
  8. 如何解决在php用gd库输出图片到微信浏览
  9. 详解PHP中php switch的方法实例
  10. 代码分析php中的回调函数