1. import java.io.File;
  2. import java.io.FileNotFoundException;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.util.Calendar;
  6. import java.util.Locale;
  7. import android.annotation.SuppressLint;
  8. import android.app.Activity;
  9. import android.content.Intent;
  10. import android.graphics.Bitmap;
  11. import android.os.Bundle;
  12. import android.os.Environment;
  13. import android.provider.MediaStore;
  14. import android.text.format.DateFormat;
  15. import android.util.Log;
  16. import android.view.View;
  17. import android.view.View.OnClickListener;
  18. import android.widget.Button;
  19. import android.widget.ImageView;
  20. import android.widget.Toast;
  21.  
  22. @SuppressLint("SdCardPath")
  23. public class MainActivity extends Activity {
  24. /** Called when the activity is first created. */
  25. private Button button;
  26. private ImageView view;
  27.  
  28. @Override
  29. public void onCreate(Bundle savedInstanceState) {
  30. super.onCreate(savedInstanceState);
  31. setContentView(R.layout.activity_main);
  32. button = (Button) findViewById(R.id.button1);
  33. view= (ImageView)findViewById(R.id.imageView1);
  34. button.setOnClickListener(new OnClickListener() {
  35.  
  36. @Override
  37. public void onClick(View v) {
  38. // TODO Auto-generated method stub
  39. Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  40. startActivityForResult(intent, 1);
  41. }
  42. });
  43. }
  44.  
  45. @SuppressLint("SdCardPath")
  46. @Override
  47. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  48. // TODO Auto-generated method stub
  49. super.onActivityResult(requestCode, resultCode, data);
  50. if (resultCode == Activity.RESULT_OK) {
  51. String sdStatus = Environment.getExternalStorageState();
  52. if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 检測sd是否可用
  53. Log.i("TestFile",
  54. "SD card is not avaiable/writeable right now.");
  55. return;
  56. }
  57. new DateFormat();
  58. String name = DateFormat.format("yyyyMMdd_hhmmss",Calendar.getInstance(Locale.CHINA)) + ".jpg";
  59. Toast.makeText(this, name, Toast.LENGTH_LONG).show();
  60. Bundle bundle = data.getExtras();
  61. Bitmap bitmap = (Bitmap) bundle.get("data");// 获取相机返回的数据,并转换为Bitmap图片格式
  62.  
  63. FileOutputStream b = null;
  64. File file = new File("/sdcard/Image/");
  65. file.mkdirs();// 创建目录
  66. String fileName = "/sdcard/Image/"+name;
  67.  
  68. try {
  69. b = new FileOutputStream(fileName);
  70. bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把数据写入文件
  71. } catch (FileNotFoundException e) {
  72. e.printStackTrace();
  73. } finally {
  74. try {
  75. b.flush();
  76. b.close();
  77. } catch (IOException e) {
  78. e.printStackTrace();
  79. }
  80. }
  81. try
  82. {
  83. view.setImageBitmap(bitmap);// 将图片显示在ImageView里
  84. }catch(Exception e)
  85. {
  86. Log.e("error", e.getMessage());
  87. }
  88.  
  89. }
  90. }
  91. }

xml文件

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:paddingBottom="@dimen/activity_vertical_margin"
  6. android:paddingLeft="@dimen/activity_horizontal_margin"
  7. android:paddingRight="@dimen/activity_horizontal_margin"
  8. android:paddingTop="@dimen/activity_vertical_margin"
  9. tools:context=".MainActivity" >
  10.  
  11. <ImageView
  12. android:id="@+id/imageView1"
  13. android:layout_width="wrap_content"
  14. android:layout_height="wrap_content"
  15. android:layout_alignParentLeft="true"
  16. android:src="@drawable/ic_launcher" />
  17.  
  18. <Button
  19. android:id="@+id/button1"
  20. android:layout_width="wrap_content"
  21. android:layout_height="wrap_content"
  22. android:layout_alignParentBottom="true"
  23. android:layout_centerHorizontal="true"
  24. android:layout_marginBottom="15dp"
  25. android:text="Button" />
  26.  
  27. </RelativeLayout>

最后要记得加权限

<!-- 在SDCard中创建与删除文件权限 -->

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

<!-- 往SDCard写入数据权限 -->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

  <uses-feature android:name = "android.hardware.camera" />

<uses-feature android:name = "android.hardware.camera.autofocus" />

源码下载

android调用系统相机拍照并保存在本地的更多相关文章

  1. Android 调用系统相机拍照保存以及调用系统相册的方法

    系统已经有的东西,如果我们没有新的需求的话,直接调用是最直接的.下面讲讲调用系统相机拍照并保存图片和如何调用系统相册的方法. 首先看看调用系统相机的核心方法: Intent camera = new ...

  2. Android调用系统相机拍照保存照片很小解决方案

    保存图片小的一般操作步骤: 1. 调用系统相机 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityFo ...

  3. android 调用系统相机拍照 获取原图

      好吧,为了这个问题又折腾了一整天.之前在网上找来的方法,如果在onActivityResult中直接用data.getData()的方式来生成bitmap,其实获取的是拍照生成的缩略图!看看尺寸就 ...

  4. Android 调用系统相机拍照,生命周期重走OnCreate,导致无数据的解决办法

    extends:http://blog.csdn.net/b275518834/article/details/42347903 BUG具体体现为 : (1) 摄像头拍照后图片数据不一定能返回 ; o ...

  5. Android 调用系统相机拍照并获取原图

    第一步:调用相机 Intent getImageByCamera = new Intent( android.provider.MediaStore.ACTION_IMAGE_CAPTURE); St ...

  6. 调用系统相机拍照,保存照片,调用系统裁剪API对照片处理,显示裁剪之后的照片

    package com.pingyijinren.test; import android.annotation.TargetApi; import android.app.Notification; ...

  7. 【踩坑速记】MIUI系统BUG,调用系统相机拍照可能会带给你的一系列坑,将拍照适配方案进行到底!

    一.写在前面 前几天也是分享了一些学习必备干货(还没关注的,赶紧入坑:传送门),也好久没有与大家探讨技术方案了,心里也是挺痒痒的,这不,一有点闲暇之时,就迫不及待把最近测出来的坑分享给大家. 提起An ...

  8. Android下载图片/调用系统相机拍照、显示并保存到本地

    package com.example.testhttpget; import java.io.BufferedReader; import java.io.FileNotFoundException ...

  9. Android 调用系统照相机拍照和录像

    本文实现android系统照相机的调用来拍照 项目的布局相当简单,只有一个Button: <RelativeLayout xmlns:android="http://schemas.a ...

随机推荐

  1. DOM笔记(八):JavaScript执行环境和垃圾收集

    一.执行环境 在有关于JavaScript对象或者this的指向问题时,脱离不了的另外一个概念就是执行环境,即上下文环境.执行环境在JavaScript是一个 很重要的概念,因为它定义了变量或函数有权 ...

  2. [质疑]编程之美求N!的二进制最低位1的位置的问题

    引子:编程之美给出了求N!的二进制最低位1的位置的二种思路,但是呢?但是呢?不信你仔细听我道来. 1.编程之美一书给出的解决思路 问题的目标是N!的二进制表示中最低位1的位置.给定一个整数N,求N!二 ...

  3. kali 重置 mysql 密码

    You can recover MySQL database server password with following five easy steps. Step # 1: Stop the My ...

  4. 自己封装的Socket组件,实现服务端多进程共享Socket对象,协同处理客户端请求

    DotNet.Net.MySocket是SLB.NET(Server Load Balance服务器负载均衡)项目中的核心组件. 在实际的项目中发现,单进程的服务端处理高并发的客户请求能力有限. 所以 ...

  5. NServiceBus教程-持久化配置

    当配置在NServiceBus v5持久性,秩序是非常重要的.最后赢得持久性配置选项.我们看看一些例子. 示例1 在本例中最后一个配置选项将会覆盖前面的所有选项. v5.2 v5.0 编辑 var c ...

  6. 安卓手机修改hosts攻略-摘自网络

    Android手机是和Google帐号紧密联系的,由于$^&情况,很多时候Google帐号无法登录,导致Android市场无法使用.在电脑上我们通过修改Hosts方法可以解决Google帐号的 ...

  7. USB枚举过程(2)

    用bus hound 得到的数据 GET MAX LUN 命令 详见USB_MSC_BlukOnly_v1.0 接下来用到的是UFI  SCSI

  8. android AsyncHttpClient 开源框架的使用

    AsyncHttpClient 1.在很多时候android都需要进行网络的操作,而android自带的HttpClient可以实现,但要进行很多网络连接的时候(如:下载很多图片),就需要线程池来进行 ...

  9. JdkDynamicAopProxy源码

     JdkDynamicAopProxy是通过接口实现动态代理类,主要方法是getProxy(ClassLoader classLoader), 代理类生成之后再调用目标方法时就会调用invoke方法. ...

  10. Function.caller

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/caller 非标准 ...