android获取拍照图片、本地图片简单实现!

在安卓应用开发中经常会用到调用系统相机拍照跟获取本地图片功能,下面就是对这一常用功能的简单实现Demo!

在获取拍照图片功能中要加上这两权限。

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

布局文件

 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="com.hhkb.obtainmobilephoto.MainActivity" >
10
11     <Button
12         android:id="@+id/btn_album"
13         android:layout_width="wrap_content"
14         android:layout_height="wrap_content"
15         android:text="@string/album" />
16
17     <Button
18         android:id="@+id/btn_camera"
19         android:layout_width="wrap_content"
20         android:layout_height="wrap_content"
21         android:layout_toRightOf="@id/btn_album"
22         android:text="@string/camera" />
23
24     <ImageView
25         android:id="@+id/iv_photo"
26         android:layout_width="wrap_content"
27         android:layout_height="wrap_content"
28         android:layout_below="@id/btn_camera"
29         android:src="@drawable/pretty" />
30
31 </RelativeLayout>

代码

  1 public class MainActivity extends Activity implements OnClickListener {
  2
  3     private static final int CAMERA = 1025;
  4     private static final int ALBUM = 1026;
  5
  6     TextView mBtnAlbum, mBtnCamera;
  7     ImageView mIvPhoto;
  8
  9     private File mFolder;
 10     private String mImgName;
 11
 12     @Override
 13     protected void onCreate(Bundle savedInstanceState) {
 14         super.onCreate(savedInstanceState);
 15         initView();
 16         initData();
 17     }
 18
 19     private void initView() {
 20         setContentView(R.layout.activity_main);
 21         mBtnAlbum = (TextView) findViewById(R.id.btn_album);
 22         mBtnCamera = (TextView) findViewById(R.id.btn_camera);
 23         mIvPhoto = (ImageView) findViewById(R.id.iv_photo);
 24
 25     }
 26
 27     private void initData() {
 28         mBtnAlbum.setOnClickListener(this);
 29         mBtnCamera.setOnClickListener(this);
 30     }
 31
 32     /*
 33      * 设置从相机获取图片
 34     */
 35     private void getImgFromCamra() {
 36         String state = Environment.getExternalStorageState();
 37         // 先检测是不是有内存卡。
 38         if (state.equals(Environment.MEDIA_MOUNTED)) {
 39             mFolder = new File(Environment.getExternalStorageDirectory(), "bCache");
 40             // 判断手机中有没有这个文件夹,没有就新建。
 41             if (!mFolder.exists()) {
 42                 mFolder.mkdirs();
 43             }
 44             // 自定义图片名字,这里是以毫秒数作为图片名。
 45             mImgName = System.currentTimeMillis() + ".jpg";
 46             Uri uri = Uri.fromFile(new File(mFolder, mImgName));
 47             // 调用系统拍照功能。
 48             Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
 49             intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
 50             startActivityForResult(intent, CAMERA);
 51         } else {
 52             Toast.makeText(this, "未检测到SD卡", Toast.LENGTH_SHORT).show();
 53         }
 54     }
 55
 56     /*
 57      * 设置从本地相册获取图片
 58     */
 59     private void getImgFromAlbum() {
 60         // 调用本地图库。
 61         Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
 62         intent.setType("image/*");
 63         startActivityForResult(intent, ALBUM);
 64     }
 65
 66     public void onActivityResult(int requestCode, int resultCode, Intent data) {
 67         Bitmap bm;
 68         if (resultCode == RESULT_OK && requestCode == CAMERA) {
 69             // 调用系统方法获取到的是被压缩过的图片,通过自定义路径轻松获取原始图片。
 70             bm = BitmapFactory.decodeFile(mFolder.getAbsolutePath()
 71                     + File.separator + mImgName);
 72             mIvPhoto.setImageBitmap(bm);
 73         }
 74
 75         if (resultCode == RESULT_OK && requestCode == ALBUM) {
 76             try {
 77                 if (data != null) {
 78                     // 获取本地相册图片。
 79                     Uri uri = data.getData();
 80                     ContentResolver cr = getContentResolver();
 81                     bm = BitmapFactory.decodeStream(cr.openInputStream(uri));
 82                     mIvPhoto.setImageBitmap(bm);
 83                 }
 84             } catch (FileNotFoundException e) {
 85                 e.printStackTrace();
 86             }
 87         }
 88     }
 89
 90     @Override
 91     public void onClick(View v) {
 92         switch (v.getId()) {
 93         case R.id.btn_album:
 94             getImgFromAlbum();
 95             break;
 96         case R.id.btn_camera:
 97             getImgFromCamra();
 98             break;
 99         default:
100             break;
101         }
102
103     };
104 }

时间: 2024-10-07 04:27:04

android获取拍照图片、本地图片简单实现!的相关文章

android项目中的拍照和本地图片截图

1,得到保存截图文件的地址 private static final String IMAGE_FILE_LOCATION = Environment.getExternalStorageDirectory()+"/temp.jpg"; private Uri imageUri; imageUri = Uri.fromFile(new File(IMAGE_FILE_LOCATION)); 2.相冊和拍照button的点击事件 // 相冊 imageViewLocalPhoto.set

Android 获取并显示远程图片 Picasso框架的使用(一)

转载请注明出处:明桑Android 在Android开发中,常需要从远程获取图片并显示在客户端,当然我们可以使用原生HttpUrlConnection和AsyncTask等操作来完成,但并不推荐,因为这样不仅需要我们编写大量的代码,还需要处理缓存和下载管理等,最好自己封装成库或者采用第三方库: Picasso:A Powerful Image Downloading and Caching Library for Android 根据名字就知道它是跟什么相关了(Picasso:毕加索)它的基本操

拍照、本地图片工具类(兼容至Android7.0)

拍照.本地图片工具类:解决了4.4以上剪裁会提示"找不到文件"和6.0动态授予权限,及7.0报FileUriExposedException异常问题. package com.hb.weex.util; import android.Manifest; import android.app.Activity; import android.app.Dialog; import android.content.ClipData; import android.content.Conten

Android 获取并显示远程图片 Picasso框架的使用(二)

转载请注明出处:明桑Android 在上篇文章中介绍了Picasso的基本用法,这篇文章作为以上的练习: 本文代码github地址:UsePicasso 实现效果:(动图请耐心加载) 需要的知识点 了解Picasso框架的使用:Android 获取并显示远程图片 Picasso框架的使用(一) 知道如何自定义GridView 我们需要编写两个布局文件:activity_gridview.xml activity_main.xml 以及ImageAdapter类.GridImageActivity

Android 实例讲解添加本地图片和调用系统拍照图片

在项目的开发过程我们离不开图片,而有时候需要调用本地的图片,有时候需要调用拍照图片.同时实现拍照的方法有两种,一种是调用系统拍照功能,另一种是自定义拍照功能.而本博文目前只讲解第一种方法,第二种方法后期在加以讲解. 添加本地图片和调用系统拍照图片主要是通过调用acitivity跳转startActivityForResult(Intent intent, int requestCode)方法和activity返回结果onActivityResult(int requestCode, int re

ImageView显示拍照or本地图片

1 <LinearLayout 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:o

android ImageLoader加载本地图片的工具类

import android.widget.ImageView; import com.nostra13.universalimageloader.core.ImageLoader; /** * 异步加载本地图片工具类 * * @author tony * */ public class LoadLocalImageUtil { private LoadLocalImageUtil() { } private static LoadLocalImageUtil instance = null;

【Android】WebView读取本地图片

背景 咱的博客园APP,是通过一个WebView来展示新闻的详情的.新闻必然是图文并茂的,无论是支持离线缓存还是加速新闻的打开速度, 都需要咱们打通本地存储与WebView之间的桥梁. 思路 1:首先把WebView的绝对路径设置为我们图片存储的根目录 修改第一个参数以指向本地存储目录,这样就可以使用相对路径引用该目录下的本地文件了.如 webView.loadDataWithBaseURL("file:///storage/emulated/0/Android/data/zhexian.lea

Android获取网页上的图片的代码

public Bitmap getWebBitmap(String imgUrl) { Bitmap bitmap =null; try { InputStream inputStream = null; URL url; url = new URL(imgUrl); if (url != null) { // 打开连接 HttpURLConnection httpURLConnection = (HttpURLConnection) url .openConnection(); httpURL