zoukankan      html  css  js  c++  java
  • android相机调用及存储详解

      1 package com.firefly.six;
      2 
      3 import java.io.File;
      4 import java.io.FileInputStream;
      5 import java.io.FileNotFoundException;
      6 import java.text.SimpleDateFormat;
      7 import java.util.ArrayList;
      8 import java.util.Date;
      9 import java.util.List;
     10 
     11 import android.app.Activity;
     12 import android.content.Intent;
     13 import android.graphics.Bitmap;
     14 import android.graphics.BitmapFactory;
     15 import android.graphics.drawable.Drawable;
     16 import android.net.Uri;
     17 import android.os.Bundle;
     18 import android.os.Environment;
     19 import android.provider.MediaStore;
     20 import android.util.Log;
     21 import android.view.View;
     22 import android.view.ViewGroup;
     23 import android.view.Window;
     24 import android.widget.BaseAdapter;
     25 import android.widget.GridView;
     26 import android.widget.ImageButton;
     27 import android.widget.ImageView;
     28 import android.widget.TextView;
     29 import android.widget.Toast;
     30 
     31 public class ImageActivity extends Activity {
     32     File outputImage;
     33     private ImageView iv;
     34     public static final int TAKE_PHOTO = 1;
     35     public static final int CROP_PHOTO = 2;
     36     private Uri imageUri;
     37     private String path = Environment.getExternalStorageDirectory()
     38             .getAbsolutePath();
     39     private String imagePath;
     40     private GridView gv_photos;
     41     String photoPath = path + "/Six/image/";
     42     File[] images;
     43     ImageButton image;
     44     List<Drawable> lists;
     45 
     46     @Override
     47     protected void onCreate(Bundle savedInstanceState) {
     48         super.onCreate(savedInstanceState);
     49         requestWindowFeature(Window.FEATURE_NO_TITLE);
     50         setContentView(R.layout.activity_image);
     51         init();
     52     }
     53 
     54     private void init() {
     55         iv = (ImageView) findViewById(R.id.iv_picture);
     56         File f = new File(photoPath);
     57         images = f.listFiles();
     58         try {
     59             lists = new ArrayList<Drawable>();
     60             for (int i = 0; i < images.length; i++) {
     61                 FileInputStream fil = new FileInputStream(photoPath
     62                         + images[i].getName());
     63                 Drawable d = Drawable.createFromStream(fil, null);
     64                 lists.add(d);
     65             }
     66 
     67         } catch (FileNotFoundException e) {
     68             // TODO Auto-generated catch block
     69             e.printStackTrace();
     70         }
     71 
     72         gv_photos = (GridView) findViewById(R.id.gv_photos);
     73         gv_photos.setAdapter(new BaseAdapter() {
     74 
     75             @Override
     76             public View getView(int position, View convertView, ViewGroup parent) {
     77                 // TODO Auto-generated method stub
     78                 convertView = View.inflate(ImageActivity.this,
     79                         R.layout.item_photo, null);
     80                 ImageView iv = (ImageView) convertView
     81                         .findViewById(R.id.iv_photo_item);
     82                 TextView tv = (TextView) convertView
     83                         .findViewById(R.id.tv_photo);
     84                 tv.setText(images[position].getName());
     85                 iv.setImageDrawable(lists.get(position));
     86                 return convertView;
     87             }
     88 
     89             @Override
     90             public long getItemId(int position) {
     91                 // TODO Auto-generated method stub
     92                 return 0;
     93             }
     94 
     95             @Override
     96             public Object getItem(int position) {
     97                 // TODO Auto-generated method stub
     98                 return null;
     99             }
    100 
    101             @Override
    102             public int getCount() {
    103                 // TODO Auto-generated method stub
    104                 return lists.size();
    105             }
    106         });
    107     }
    108 
    109     public void SelectImage(View view) {
    110         // 创建File路径,用于存储拍照后的图片
    111 
    112         // File filePath = Environment.getExternalStorageDirectory();
    113 
    114         // 新建此文件夹
    115         File fileFolder = new File(photoPath);
    116         if (!fileFolder.exists() && !fileFolder.isDirectory()) {
    117             fileFolder.mkdirs();
    118         }
    119 
    120         // 文件名不能总是同一个名字,所以在这里,可以选择用时间来做图片名称
    121 
    122         SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
    123         Date curDate = new Date(System.currentTimeMillis());// 获取当前时间
    124         String name = "six" + formatter.format(curDate);
    125         // 新建此文件
    126         outputImage = new File(fileFolder, name + ".jpg");
    127         // 得到它的名字,在显示中用
    128         imagePath = photoPath + name + ".jpg";
    129         // 找到地址及调用
    130         imageUri = Uri.fromFile(outputImage);
    131         Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
    132         intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
    133         // 启动相机程序
    134         startActivityForResult(intent, TAKE_PHOTO);
    135 
    136     }
    137 
    138     // 注意,这里是要重写这个方法,必须要重写!!
    139     @Override
    140     public void onActivityResult(int requestCode, int resultCode, Intent data) {
    141         switch (requestCode) {
    142         case TAKE_PHOTO:
    143             if (resultCode == RESULT_OK) {
    144                 Intent intent = new Intent("com.android.camera.action.CROP");
    145                 intent.setDataAndType(imageUri, "image/*");
    146                 intent.putExtra("scale", true);
    147                 intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
    148                 // 启动裁剪程序
    149                 startActivityForResult(intent, CROP_PHOTO);
    150             }
    151             break;
    152         case CROP_PHOTO:
    153             if (resultCode == RESULT_OK) {
    154                 try {
    155                     Bitmap bitmap = BitmapFactory
    156                             .decodeStream(getContentResolver().openInputStream(
    157                                     imageUri));
    158                     // 将裁剪后的照片显示出来
    159                     iv.setImageBitmap(bitmap);
    160                 } catch (FileNotFoundException e) {
    161                     e.printStackTrace();
    162                 }
    163             }
    164             break;
    165         default:
    166             break;
    167         }
    168     }
    169 
    170     public void PhotoToImage(View view) {
    171         Toast.makeText(ImageActivity.this, "未做待续哈~", 0).show();
    172     }
    173 
    174 }
    种一棵树最早的时间是十年前,其次是现在。
  • 相关阅读:
    Atitit 理解Monad attilax总结Atiti
    Atitit sql执行计划
    Atitit 深入了解UUID含义是通用唯一识别码 (Universally Unique Identifier),
    atitit..代码生成流程图 流程图绘制解决方案 java  c#.net  php v2
    Atitit 项目培训与学校的一些思路总结
    Atitit 项目的主体设计与结构文档 v3
    Atitit  数据存储的分组聚合 groupby的实现attilax总结
    Atitit 数据存储的数据表连接attilax总结
    Atitit图像识别的常用特征大总结attilax大总结
    Atitit 项目中的勋章体系,,mvp建设 ,荣典体系建设
  • 原文地址:https://www.cnblogs.com/firefly-pengdan/p/5471227.html
Copyright © 2011-2022 走看看