Android调用系统相册选择照片并裁剪

来源:互联网 发布:python嵌入java 编辑:程序博客网 时间:2024/05/29 21:33

Android调用系统相册选择照片并裁剪:

先通过Intent intent = new Intent(Intent.ACTION_PICK, null);来打开浏览相册并可以选择图片;

选择完成回调裁剪 Intent intent = new Intent("com.android.camera.action.CROP");

需要分两步来执行,否则在某些手机(如LG Nexus5)不能调出来裁剪,达不到选择照片的目的;

示例代码如下




package com.example.gallerydemo;

import java.io.File;
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.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;

public class MainActivity extends Activity implements OnClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.camera:


break;
case R.id.photo:
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
this.startActivityForResult(intent, 2);
break;
default:
break;
}
}

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

switch (requestCode) {
case 1:
break;
case 2:
Uri originalUri = data.getData();
       
       Intent intent = new Intent("com.android.camera.action.CROP");
            intent.setDataAndType(originalUri, "image/*");
            intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.parse(getCameraTempFileDir()));
            intent.putExtra("return-data", false);
       intent.putExtra("crop", "true");
       intent.putExtra("aspectX", 1);
       intent.putExtra("aspectY", 1);
       intent.putExtra("outputX", 200);
       intent.putExtra("outputY", 200);
       intent.putExtra("scale", true);
       intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
       intent.putExtra("noFaceDetection", true);
       this.startActivityForResult(intent, 3);
break;
case 3:
String s = "abc";
break;
default:
break;
}


}

public String getCameraTempFileDir() {
File sdDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
String path = sdDir.getPath() + File.separator + "wangwang";
File dir;
dir = new File(path, "gallery_photo.jpg");
if (!dir.exists()) {
dir.mkdirs();
}
return dir.getPath();

}

}
0 0
原创粉丝点击