android获取本地图片或拍照图片
16lz
2021-01-26
直接上代码,代码中注释很清楚,本人觉得这个东西google本来自己就应该集成好,直接一个方法调用最好,因为这个用的比较多,一般的android手机中交流的软件基本上都需要这个东西。
package com.example.photodemo;import android.app.Activity;import android.content.ContentResolver;import android.content.Intent;import android.database.Cursor;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;import android.widget.Toast;public class MainActivity extends Activity {private ImageView image;// 要显示选择的图片private Bitmap photo;// 选择好的图片的bitmap形式private Button button1;// 图片private Button button2;// 拍照private static final int PIC = 1;// 图片private static final int PHO = 2;// 照相@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_main);button1 = (Button) findViewById(R.id.button1);button2 = (Button) findViewById(R.id.button2);image = (ImageView) findViewById(R.id.imageView1);button1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.setType("image/*");intent.setAction(Intent.ACTION_GET_CONTENT);startActivityForResult(intent, PIC);}});// 拍照上传button2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {String state = Environment.getExternalStorageState();if (state.equals(Environment.MEDIA_MOUNTED)) {// 如果存储卡可用Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");startActivityForResult(intent, PHO);} else {Toast.makeText(getApplicationContext(), "存储卡不可用",Toast.LENGTH_LONG).show();}}});}/** * 取得回传的数据 */protected void onActivityResult(int requestCode, int resultCode, Intent data) {if (data != null && requestCode == PHO) { // 拍照上传时Bundle extras = data.getExtras();if (extras != null) {photo = (Bitmap) extras.get("data");image.setImageBitmap(photo);} else {Toast.makeText(MainActivity.this, "未找到图片", Toast.LENGTH_LONG).show();}}if (resultCode == Activity.RESULT_OK) {Uri uri = data.getData();// 当选择的图片不为空的话,在获取到图片的途径try {String[] pojo = { MediaStore.Images.Media.DATA };Cursor cursor = managedQuery(uri, pojo, null, null, null);if (cursor != null) {ContentResolver cr = this.getContentResolver();int colunm_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);cursor.moveToFirst();String path = cursor.getString(colunm_index);/*** * 这里加这样一个判断主要是为了第三方的软件选择,比如:使用第三方的文件管理器的话,你选择的文件就不一定是图片了, * 这样的话,我们判断文件的后缀名 如果是图片格式的话,那么才可以 */if (path.endsWith("jpg") || path.endsWith("png")) {photo = BitmapFactory.decodeStream(cr.openInputStream(uri));image.setImageBitmap(photo);} else {}} else {}} catch (Exception e) {}}}}
布局也顺便写一下吧
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="选择相片" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="拍照相片" /> <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="150dp" android:ems="10" android:inputType="textMultiLine" > <requestFocus /> </EditText> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /></LinearLayout>
作者:Wang6279026 发表于2013-2-20 21:31:21 原文链接 阅读:71 评论:0 查看评论
更多相关文章
- Android学习札记47:TextView显示Html类解析的网页和图片及自定义
- Android(安卓)图像系列: 图片的压缩
- Android(安卓)实现简单的画画版一
- Android(安卓)选择图片、上传图片之ImagePicker
- Android(安卓)程式开发:(十一)选择控件 —— 11.1 TimePicker
- Android添加多语言
- android 7.0 相机,拍照 调裁切提示 “无法加载此图片” 解决方案
- 如何引入一个example到eclipse
- Android之多种Bitmap效果