Android显示相册图片和相机拍照

首先看最重要的MainActive类:

 

 

public class MainActivity extends AppCompatActivity {

    private final int FROM_ALBUM = 1;//表示从相册获取照片
    private final int FROM_CAMERA = 2;//表示从相机获取照片
    private ImageView imageView;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        textView = (TextView)findViewById(R.id.textView);
        setContentView(R.layout.activity_main);

        applyWritePermission();//请求权限

    }

    // 打开相册
    public void onClickAlbum(View view){
        Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(intent, FROM_ALBUM);
    }

    // 打开相机
    public void onClickCamera(View view){
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, FROM_CAMERA);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data){

        //从相册返回
        if(requestCode == FROM_ALBUM  &&  resultCode == Activity.RESULT_OK  &&  data != null){
            imageView = (ImageView)findViewById(R.id.imageView);
            textView = (TextView)findViewById(R.id.textView);
            Uri imageUri = data.getData();
            ContentResolver cr = this.getContentResolver();
            try {
                Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(imageUri));

                int res = FaceClassified.runClassified(bitmap);

                imageView.setImageBitmap(bitmap);
            }catch (FileNotFoundException e){
                Log.e("Exception", e.getMessage(), e);
            }
        }

        //从相机返回
        if(requestCode == FROM_CAMERA  &&  resultCode == Activity.RESULT_OK  &&  data != null){
            imageView = (ImageView)findViewById(R.id.imageView);
            textView = (TextView)findViewById(R.id.textView);

            Bitmap photo = (Bitmap) data.getExtras().get("data");

            int res = FaceClassified.runClassified(photo);
 
            imageView.setImageBitmap(photo);
        }

        super.onActivityResult(requestCode, resultCode, data);
    }

  

    private void applyWritePermission() {

        String permissions1 = Manifest.permission.WRITE_EXTERNAL_STORAGE;
        String permissions2 = Manifest.permission.READ_EXTERNAL_STORAGE;
        String permissions3 = Manifest.permission.CAMERA;

        if (Build.VERSION.SDK_INT >= 23) {
            int check1 = ContextCompat.checkSelfPermission(this, permissions1);
            if (check1 != PackageManager.PERMISSION_GRANTED) {
                requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
            }
            int check2 = ContextCompat.checkSelfPermission(this, permissions2);
            if (check2 != PackageManager.PERMISSION_GRANTED) {
                requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
            }
            int check3 = ContextCompat.checkSelfPermission(this, permissions3);
            if (check3 != PackageManager.PERMISSION_GRANTED) {
                requestPermissions(new String[]{Manifest.permission.CAMERA}, 1);
            }
        }
    }
}

 

 

 

上面两个按钮的处理函数名称在布局中定义,布局如下:两个button(一个打开相册,一个打开相机),一个imageview

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:app="http://schemas.android.com/apk/res-auto"
 4     xmlns:tools="http://schemas.android.com/tools"
 5     android:layout_width="match_parent"
 6     android:layout_height="match_parent"
 7     tools:context="com.meitu.graydemo.MainActivity">
 8 
 9 <LinearLayout
10     android:layout_width="368dp"
11     android:layout_height="wrap_content"
12     android:orientation="vertical"
13     tools:layout_editor_absoluteY="0dp"
14     tools:layout_editor_absoluteX="8dp">
15 
16     <LinearLayout
17         android:id="@+id/buttonLayout"
18         android:layout_width="fill_parent"
19         android:layout_height="wrap_content"
20         android:orientation="horizontal">
21 
22         <Button
23             android:id="@+id/button"
24             android:layout_width="wrap_content"
25             android:layout_height="wrap_content"
26             android:onClick="onClickAlbum"
27             android:text="打开相册"
28             tools:layout_editor_absoluteX="16dp"
29             tools:layout_editor_absoluteY="16dp" />
30 
31         <Button
32             android:id="@+id/button2"
33             android:layout_width="wrap_content"
34             android:layout_height="wrap_content"
35             android:onClick="onClickCamera"
36             android:text="打开相机"
37             tools:layout_editor_absoluteX="280dp"
38             tools:layout_editor_absoluteY="16dp" />
39     </LinearLayout>
40 
41     <ImageView
42         android:id="@+id/imageView"
43         android:layout_width="wrap_content"
44         android:layout_height="wrap_content"
45         app:srcCompat="@android:color/holo_blue_bright"
46         tools:layout_editor_absoluteX="16dp"
47         tools:layout_editor_absoluteY="48dp" />
48 
49 
50 </LinearLayout>
51 
52 
53 
54 
55 </android.support.constraint.ConstraintLayout>

 

posted @ 2017-09-17 13:59  sysu_huangwei  阅读(1665)  评论(0编辑  收藏  举报