之前採用的方式(返回的照片会被压缩,不能达到预期效果):

Intent intent = new Intent();

Intent intent_camera = getPackageManager()

.getLaunchIntentForPackage("com.android.camera");

if (intent_camera != null) {

intent.setPackage("com.android.camera");

}

intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);

startActivityForResult(intent, 100);

回调:(在返回的data中区数据,然后保存,然后再拿到路径。这样图片是已经压缩了的)

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

Log.d("TAG", "requestCode" + requestCode + " ,resultCode" + resultCode

+ data);

if (requestCode == 100 && resultCode == Activity.RESULT_OK

&& null != data) {

// 照相返回界面

String sdState = Environment.getExternalStorageState();

if (!sdState.equals(Environment.MEDIA_MOUNTED)) {

Toast.makeText(getApplicationContext(), "未找到SDK",

Toast.LENGTH_LONG).show();

Log.d("TAG", "sd card unmount");

return;

}

new DateFormat();

String name = DateFormat.format("yyyyMMdd_hhmmss",

Calendar.getInstance(Locale.CHINA))

+ ".jpg";

Log.d("TAG", "name.........." + name);

Bundle bundle = data.getExtras();

// 获取相机返回的数据,并转换为图片格式

Bitmap bitmap;

String filename = null;

bitmap = (Bitmap) bundle.get("data");

FileOutputStream fout = null;

// 定义文件存储路径

File file = new File("/sdcard/e_community/");

if (!file.exists()) {

file.mkdirs();

}

filename = file.getPath() + "/" + name;

try {

fout = new FileOutputStream(filename);

// 对图片进行压缩

bitmap.compress(Bitmap.CompressFormat.PNG, 100, fout);

// FileOutputStream outputStream = new FileOutputStream(filename); // 文件输出流  

//        outputStream.write(data); // 写入sd卡中  

//        outputStream.close(); // 关闭输出流  

} catch (FileNotFoundException e) {

e.printStackTrace();

} finally {

try {

fout.flush();

fout.close();

} catch (IOException e) {

e.printStackTrace();

}

}

Log.d("TAG", "相片路径" + filename);

}

解决图片太小的问题。就是在启动相机的时候设置好照片保存的路径以及名称,这样data中就不会返回数据而是null,这样就能够依据自己设置的路径已经设置的名称通过BitmapFactory.decodeFile(imageUrl.get(j),option);获取到照片。

启动代码例如以下:

private String camera_path = Environment.getExternalStorageDirectory().toString()+"/e_community/";保存的路径

private String camera_photo_name;//保存的名称

Uri mOutPutFileUri;

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

File path1 = new File(PhotoUtil.camera_path);

 if(!path1.exists()){

  path1.mkdirs();

 }

 camera_photo_name=System.currentTimeMillis()+".png";

 File file = new File(path1,camera_photo_name);

 mOutPutFileUri = Uri.fromFile(file);

 intent.putExtra(MediaStore.EXTRA_OUTPUT, mOutPutFileUri);

startActivityForResult(intent, 111);

回调:

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

Log.d("TAG", "requestCode" + requestCode + " ,resultCode" + resultCode

+ data);

if (requestCode == 111&&resultCode==Activity.RESULT_OK) {

// 照相返回界面

String filename = PhotoUtil.camera_path+ "/" + camera_photo_name;

Log.d("TAG", "相片路径" + filename);

}

}

最新文章

  1. ORACLE 11gR2 DG(Physical Standby)日常维护02
  2. [LeetCode] Valid Word Abbreviation 验证单词缩写
  3. PHP面向对象之魔术方法复习
  4. ORACLE AWR报告数据的导入导出实践
  5. Swift 中的函数
  6. win7 chm 打开失败记录
  7. Java中将16进制字符串转换成汉字
  8. powerdesigner 技巧
  9. 用PHP实现单向链表
  10. SQL模糊查询与删除多条语句复习
  11. DATEDIFF interval=ms的用法
  12. 蜗牛爱课 -- iOS 设计模式之模板模式
  13. C#值传递和按引用传递
  14. vue echarts map的使用,页面多图动态自适应
  15. 使用Json.net对Json进行遍历
  16. 基于MNIST数据集使用TensorFlow训练一个没有隐含层的浅层神经网络
  17. Page Visibility(网页可见性) API与登录同步引导页实例页面
  18. tensorflow模型量化
  19. HGOI NOIP模拟4 题解
  20. 逐行分析jQuery源码

热门文章

  1. java 线程传参 方式
  2. tt
  3. select & epoll
  4. C# Winform利用POST传值方式模拟表单提交数据(Winform与网页交互)
  5. MFC Wizard创建的空应用程序中各个文件内容的解析
  6. leetcode第一刷_Text Justification
  7. vue24-webpack+vue-loader
  8. nyoj--20--吝啬的国度(搜索dfs)
  9. @Not - Empty-Null-Blank
  10. Github-flavored Markdown 导出为 PDF