首先看最重要的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

 <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.meitu.graydemo.MainActivity"> <LinearLayout
android:layout_width="368dp"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:layout_editor_absoluteY="0dp"
tools:layout_editor_absoluteX="8dp"> <LinearLayout
android:id="@+id/buttonLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"> <Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClickAlbum"
android:text="打开相册"
tools:layout_editor_absoluteX="16dp"
tools:layout_editor_absoluteY="16dp" /> <Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClickCamera"
android:text="打开相机"
tools:layout_editor_absoluteX="280dp"
tools:layout_editor_absoluteY="16dp" />
</LinearLayout> <ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@android:color/holo_blue_bright"
tools:layout_editor_absoluteX="16dp"
tools:layout_editor_absoluteY="48dp" /> </LinearLayout> </android.support.constraint.ConstraintLayout>
05-11 18:11