android获取本地图片或拍照图片
- - CSDN博客移动开发推荐文章直接上代码,代码中注释很清楚,本人觉得这个东西google本来自己就应该集成好,直接一个方法调用最好,因为这个用的比较多,一般的android手机中交流的软件基本上都需要这个东西. private ImageView image;// 要显示选择的图片. private Bitmap photo;// 选择好的图片的bitmap形式.
直接上代码,代码中注释很清楚,本人觉得这个东西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;// 照相 @Override protected 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() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(intent, PIC); } }); // 拍照上传 button2.setOnClickListener(new OnClickListener() { @Override public 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>