• 拍照 和 选择相册 设置背景图片


      1 package com.testCarema.android;
      2 
      3 import android.app.Activity;
      4 import android.app.AlertDialog;
      5 import android.content.ContentResolver;
      6 import android.content.DialogInterface;
      7 import android.content.Intent;
      8 import android.graphics.Bitmap;
      9 import android.graphics.BitmapFactory;
     10 import android.net.Uri;
     11 import android.os.Bundle;
     12 import android.view.View;
     13 import android.view.View.OnClickListener;
     14 import android.widget.ImageView;
     15 
     16 import java.io.ByteArrayOutputStream;
     17 import java.io.InputStream;
     18 
     19 public class testCarema extends Activity {
     20 
     21     private ImageView imageView;
     22     private OnClickListener imgViewListener;
     23     private Bitmap myBitmap;
     24     private byte[] mContent;
     25 
     26     @Override
     27     public void onCreate(Bundle savedInstanceState) {
     28         super.onCreate(savedInstanceState);
     29         setContentView(R.layout.main);
     30         imageView = (ImageView) findViewById(R.id.imageView);
     31         imgViewListener = new OnClickListener() {
     32             public void onClick(View v) {
     33                 final CharSequence[] items = {"相册", "拍照"};
     34                 AlertDialog dlg = new AlertDialog.Builder(testCarema.this)
     35                         .setTitle("选择图片")
     36                         .setItems(items, new DialogInterface.OnClickListener() {
     37                             public void onClick(DialogInterface dialog, int item) {
     38                                 // 这里item是根据选择的方式,
     39                                 // 在items数组里面定义了两种方式,拍照的下标为1所以就调用拍照方法
     40                                 if (item == 1) {
     41                                     Intent getImageByCamera = new Intent(
     42                                             "android.media.action.IMAGE_CAPTURE");
     43                                     startActivityForResult(getImageByCamera, 1);
     44                                 } else {
     45                                     Intent getImage = new Intent(
     46                                             Intent.ACTION_GET_CONTENT);
     47                                     getImage.addCategory(Intent.CATEGORY_OPENABLE);
     48                                     getImage.setType("image/jpeg");
     49                                     startActivityForResult(getImage, 0);
     50                                 }
     51                             }
     52                         }).create();
     53                 dlg.show();
     54             }
     55         };
     56         // 给imageView控件绑定点点击监听器
     57         imageView.setOnClickListener(imgViewListener);
     58 
     59     }
     60 
     61     @Override
     62     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     63         // TODO Auto-generated method stub
     64         super.onActivityResult(requestCode, resultCode, data);
     65 
     66         ContentResolver resolver = getContentResolver();
     67         /**
     68          * 因为两种方式都用到了startActivityForResult方法, 这个方法执行完后都会执行onActivityResult方法,
     69          * 所以为了区别到底选择了那个方式获取图片要进行判断,
     70          * 这里的requestCode跟startActivityForResult里面第二个参数对应
     71          */
     72         if (requestCode == 0) {
     73             try {
     74                 // 获得图片的uri
     75                 Uri originalUri = data.getData();
     76                 // 将图片内容解析成字节数组
     77                 mContent = readStream(resolver.openInputStream(Uri
     78                         .parse(originalUri.toString())));
     79                 // 将字节数组转换为ImageView可调用的Bitmap对象
     80                 myBitmap = getPicFromBytes(mContent, null);
     81                 // //把得到的图片绑定在控件上显示
     82                 imageView.setImageBitmap(myBitmap);
     83             } catch (Exception e) {
     84                 System.out.println(e.getMessage());
     85             }
     86 
     87         } else if (requestCode == 1) {
     88             try {
     89                 super.onActivityResult(requestCode, resultCode, data);
     90                 Bundle extras = data.getExtras();
     91                 myBitmap = (Bitmap) extras.get("data");
     92                 ByteArrayOutputStream baos = new ByteArrayOutputStream();
     93                 myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
     94                 mContent = baos.toByteArray();
     95             } catch (Exception e) {
     96                 // TODO Auto-generated catch block
     97                 e.printStackTrace();
     98             }
     99             // 把得到的图片绑定在控件上显示
    100             imageView.setImageBitmap(myBitmap);
    101         }
    102     }
    103 
    104     public static Bitmap getPicFromBytes(byte[] bytes,
    105                                          BitmapFactory.Options opts) {
    106         if (bytes != null)
    107             if (opts != null)
    108                 return BitmapFactory.decodeByteArray(bytes, 0, bytes.length,
    109                         opts);
    110             else
    111                 return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
    112         return null;
    113     }
    114 
    115     public static byte[] readStream(InputStream inStream) throws Exception {
    116         byte[] buffer = new byte[1024];
    117         int len = -1;
    118         ByteArrayOutputStream outStream = new ByteArrayOutputStream();
    119         while ((len = inStream.read(buffer)) != -1) {
    120             outStream.write(buffer, 0, len);
    121         }
    122         byte[] data = outStream.toByteArray();
    123         outStream.close();
    124         inStream.close();
    125         return data;
    126 
    127     }
    128 
    129 }
  • 相关阅读:
    JavaScript得到当前窗口的所有大小值
    JavaScript 变量、作用域和内存问题
    jQuery html5Validate基于HTML5表单验证插件
    新世界
    2001年的火花
    High Dynamic Range Compression on Programmable Graphics Hardware
    运筹帷幄
    你还要在学校找什么东西?
    图行天下
    Supra Team
  • 原文地址:https://www.cnblogs.com/androidsj/p/4766510.html
Copyright © 2020-2023  润新知