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>