拍照和从相册选择图片
2016-01-08 16:27
417 查看
private void chosePhoto() {
DialogUtil.showDoubleNoneTitleTextDialog(activity, "选择图片", "拍照",
"图库", new OnDialogClickListener() {
@Override
public boolean onClick(View v) {
takePicture();
return false;
}
}, new OnDialogClickListener() {
@Override
public boolean onClick(View v) {
openAlbum();
return false;
}
});
}
// 拍照
public void takePicture() {
String state = Environment.getExternalStorageState();
if (state.equals(Environment.MEDIA_MOUNTED)) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File outDir = Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
if (!outDir.exists()) {
outDir.mkdirs();
}
File outFile = new File(outDir, System.currentTimeMillis() + ".jpg");
picFileFullName = outFile.getAbsolutePath();
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(outFile));
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
} else {
Log.e(TAG, "请确认已经插入SD卡");
}
}
// 打开本地相册
public void openAlbum() {
Intent intentFromGallery = new Intent();
// 设置文件类型
intentFromGallery.setAction(Intent.ACTION_GET_CONTENT);
intentFromGallery.addCategory(Intent.CATEGORY_OPENABLE);
intentFromGallery.setType("image/*");
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
startActivityForResult(intentFromGallery, SELECT_PIC_KITKAT);
} else {
startActivityForResult(intentFromGallery, CREATE_REQUESTCODE);
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_CANCELED) {
return;
}
if (CREATE_REQUESTCODE == requestCode) {
if (null != data) {
Uri uri = data.getData();
if (uri != null) {
String realPath = getRealPathFromURI(uri);
Log.e(TAG, "获取图片成功,path=" + realPath);
setImageView(realPath);
} else {
Log.e(TAG, "从相册获取图片失败");
}
}
} else if (SELECT_PIC_KITKAT == requestCode) {
if (null != data) {
setImageView(FragWeiXiuYuYue.getPath(getActivity(),
data.getData()));
}
}
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
if (resultCode == -1) {
Log.e(TAG, "获取图片成功,path=" + picFileFullName);
setImageView(picFileFullName);
} else if (resultCode == 0) {
// 用户取消了图像捕获
} else {
// 图像捕获失败,提示用户
Log.e(TAG, "拍照失败");
}
}
}
DialogUtil.showDoubleNoneTitleTextDialog(activity, "选择图片", "拍照",
"图库", new OnDialogClickListener() {
@Override
public boolean onClick(View v) {
takePicture();
return false;
}
}, new OnDialogClickListener() {
@Override
public boolean onClick(View v) {
openAlbum();
return false;
}
});
}
// 拍照
public void takePicture() {
String state = Environment.getExternalStorageState();
if (state.equals(Environment.MEDIA_MOUNTED)) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File outDir = Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
if (!outDir.exists()) {
outDir.mkdirs();
}
File outFile = new File(outDir, System.currentTimeMillis() + ".jpg");
picFileFullName = outFile.getAbsolutePath();
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(outFile));
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
} else {
Log.e(TAG, "请确认已经插入SD卡");
}
}
// 打开本地相册
public void openAlbum() {
Intent intentFromGallery = new Intent();
// 设置文件类型
intentFromGallery.setAction(Intent.ACTION_GET_CONTENT);
intentFromGallery.addCategory(Intent.CATEGORY_OPENABLE);
intentFromGallery.setType("image/*");
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
startActivityForResult(intentFromGallery, SELECT_PIC_KITKAT);
} else {
startActivityForResult(intentFromGallery, CREATE_REQUESTCODE);
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_CANCELED) {
return;
}
if (CREATE_REQUESTCODE == requestCode) {
if (null != data) {
Uri uri = data.getData();
if (uri != null) {
String realPath = getRealPathFromURI(uri);
Log.e(TAG, "获取图片成功,path=" + realPath);
setImageView(realPath);
} else {
Log.e(TAG, "从相册获取图片失败");
}
}
} else if (SELECT_PIC_KITKAT == requestCode) {
if (null != data) {
setImageView(FragWeiXiuYuYue.getPath(getActivity(),
data.getData()));
}
}
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
if (resultCode == -1) {
Log.e(TAG, "获取图片成功,path=" + picFileFullName);
setImageView(picFileFullName);
} else if (resultCode == 0) {
// 用户取消了图像捕获
} else {
// 图像捕获失败,提示用户
Log.e(TAG, "拍照失败");
}
}
}
相关文章推荐
- css制作简单的三角形
- jQuery-事件委托案例练习
- 实用代码片段---持续记录
- 追求错了,当然痛苦
- 2016-1-8 windows 7下安装mysql及其配置和运用
- iOS开发拓展篇—音效的播放
- cdh5.47 上配置flume
- 网盘搜
- 老李分享:Android -自动化埋点 2
- 手势识别模块+Python给PC增加点快捷键
- Android TabLayout学习资料
- 网关,MAC,IP,子网掩码,网桥,eth0
- 共享主机配置php open_basedir提升安全 防止文件被跨站访问
- 有向图的邻接表描述 c++
- JS浮点数运算出现Bug的解决方案
- Spring mvc4使用JSON包变更
- FSMC
- swift 笔记 (十二) —— 下标
- 【转发】:CSS代码重构与优化之路
- javaApplication+mybatis+mysql简单的数据连接展示