android 拍照换头像,Android调用相机拍照,裁剪及更换头像功能的实现

1,点击弹出popwindow,选择相机或者相册

这个就不多说了,在OnclickListener里写弹出的窗口位置和样式。

2,选择拍照功能,调用手机相机。

```

//调用相机

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");

if (isExistSd()) {

intent.putExtra(MediaStore.EXTRA_OUTPUT,

Uri.fromFile(new File(Environment.getExternalStorageDirectory(),fileName)));

}

startActivityForResult(intent,REQUEST_TO_CAMERA);

photoPopWin.dismiss();

或者选择调用相册

//调用本地相册

Intent i = new Intent(Intent.ACTION_PICK);

i.setType("image/*");

i.setAction(i.ACTION_GET_CONTENT);

startActivityForResult(i,REQUEST_TO_PHOTOALBUM);

photoPopWin.dismiss();

```

选择完毕,

```

/**

* Intent请求回调函数

* @param requestCode

* @param resultCode

* @param data

*/

@Override

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

if (requestCode == REQUEST_TO_CAMERA) {   //判断是否选择了相机

if (isExistSd()){                                    //判断是否有SD卡

tempFile = new File(Environment.getExternalStorageDirectory(),fileName);

cutImage(Uri.fromFile(tempFile));                 //拍照完毕,调用裁剪方法裁剪图片

}else {

Toast.makeText(this, "SD卡不存在,图片保存失败", Toast.LENGTH_SHORT).show();

}

} else if (requestCode == REQUEST_TO_PHOTOALBUM) {   //未选择相机,再判断是否选择了相册

if (data != null){

Uri uri = data.getData();

cutImage(uri);

}

} else if (requestCode == REQUEST_TO_PHOTOCUTED) {

bitmap = data.getParcelableExtra("data");  // 图片类型为bitmap

(这里是上传图片的方法)

String url = ********************; // 上传接口

String path_file = Environment.getExternalStorageDirectory()+File.separator+"DCIM"+File.separator+"temp.jpg";

//图片的地址   这里写的是一个固定的(在sd卡下的DCIM文件夹中的temp文件),仅供参考

File file = new File(path_file);//要上传的文件

Map  params = new HashMap<>();//参数

params.put("uid",这里是参数id);

MultipartRequest request = new MultipartRequest(url, new Response.ErrorListener() {

//失败  回调这个方法

@Override

public void onErrorResponse(VolleyError error) {

}

}, new Response.Listener() {

//成功  回调这个方法

@Override

public void onResponse(String response) {

}

},"imgfile",file,params);

}

}

```

3,拍照完毕,点击确定,调用裁剪方法, 如不需要裁剪,可以自行去掉!

```

/**

* 定义方法裁剪图片

*/

public void cutImage(Uri uri) {

Intent intent = new Intent("com.android.camera.action.CROP");

intent.setDataAndType(uri, "image/*");

intent.putExtra("crop", "true");

intent.putExtra("aspectX", 1);

intent.putExtra("aspectY", 1);

intent.putExtra("outputX", 250);

intent.putExtra("outputY", 250);

intent.putExtra("outputFormat", "JPEG");

intent.putExtra("noFaceDetection", true);

intent.putExtra("return-data", true);

startActivityForResult(intent, REQUEST_TO_PHOTOCUTED);

}

```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294043.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win7 绑定arp

首先&#xff0c;需要查看可用网卡的id&#xff0c;使用命令netsh i i show interface &#xff1b; 再绑定arp地址&#xff0c;netsh -c "i i" add neighbors idx IP地址 MAC地址 &#xff1b; 若要删除绑定&#xff0c;可以使用netsh -c "i i" delete…

设计模式:面向对象的设计原则下(ISP、DIP、KISS、YAGNI、DRY、LOD)

本文继续来介绍接口隔离原则&#xff08;ISP&#xff09;和依赖倒置原则&#xff08;DIP&#xff09;&#xff0c;这两个原则都和接口和继承有关。文章最后会简单介绍几个除了 SOLID 原则之外的原则。接口隔离原则&#xff08;ISP&#xff09;提起接口&#xff0c;开发人员的第…

Android之sqlite常见用法以及取最新多少条数据(包括删除和不删除之外的数据)

用sqlite的感受: sqlite和mysql很像,如果你对mysql有一定的经验,那么里面的sql写法也类似,比如常见的limit用法,mysql里面主要用limite分页,但是数据多了不建议,很影响效率。 sqlite常用用法函数总结如下: query: //need try catch and db.close();try{cursor…

ADB server didn't ACK

当我们通过eclipse开发Android应用时&#xff0c;会连接真机会使用模拟器进行仿真&#xff0c;有时候启动失败&#xff0c;会提示这样的错误。 工具/原料 Eclipse CMD命令窗口 方法/步骤 首先通过CMD启动adb服务。这个时候会提示启动失败。 服务启动失败的原因有很多&#xff0…

段落排版--行间距, 行高(line-height)

<!DOCTYPE HTML> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"> <title>行间距</title> <style type"text/css">p{line-height:2em;} /*段落行间距为2倍。*/ <…

解析邮件归档技术 保护企业邮件安全(三)

&#xff08;接中集&#xff09;  主持人&#xff1a;我明白你的意思&#xff0c;等于你只是把技术提供给他们&#xff0c;他们来卖和他们平台结合在一起的东西&#xff1f; 梁京伟&#xff1a;对&#xff0c;这种方式更多一些。所以这个是我们更倾向于开发我们技术&#xff0…

android方块密码输入框,Android仿微信/支付宝的方块密码输入框

在用到支付类或者验证类app时&#xff0c;都有一个简密的输入框。百度了下有个不错的帖子点击打开链接不过自己也写了个简单的类似的。不废话了。没图说个席八。懒得运行&#xff0c;直接截layout.xml的效果图先。布局文件android:layout_width"fill_parent"android:…

童鞋,[HttpClient发送文件的技术实践]请查收

昨天有童鞋在群里面问&#xff1a;怎么使用HttpClient发送文件&#xff1f;01荒腔走板之前我写了一个《ABP小试牛刀之上传文件》&#xff0c;主要体现的是服务端&#xff0c;上传文件的动作是由前端小姐姐完成的&#xff0c; 我还真没有用HttpClient编程方式发送过文件。不过Ht…

Android之Camera介绍

Android Camera 使用小结 Android手机关于Camera的使用&#xff0c;一是拍照&#xff0c;二是摄像&#xff0c;由于Android提供了强大的组件功能&#xff0c;为此对于在Android手机系统上进行Camera的开发&#xff0c;我们可以使用两类方法&#xff1a;一是借助Intent和MediaSt…

elasticsearch2.2之javaApi

2019独角兽企业重金招聘Python工程师标准>>> 前言&#xff1a;elasticsearch虽然自带rest接口&#xff0c;但是在真正使用过程中可能更多的是通过不同编程语言的客户端进行交互。 因为代码里有或多或少的注释&#xff0c;所以直接贴代码&#xff1a; package elasti…

My SQL 学习笔记二

本文主要记录这两天遇到的问题&#xff1a; 1.sql脚本文件存在自己的目录下&#xff0c;例如在F盘&#xff0c;通过命令&#xff1a;mysql> source F:/filename.sql 会弹出Failed to open file "F:/filename.sql" error:2 错误 这个错误一般是Mysql没有权限访问文…

《程序员的职业素养》读书笔记

书籍地址&#xff1a;http://book.douban.com/subject/11614538/ 一句话点评该书&#xff1a;Bob大叔的职业生涯经验总结&#xff0c;现身说法&#xff0c;可信可敬&#xff01; &#xff08;一&#xff09;专业主义 &#xff08;1&#xff09;“专业主义”就意味着担当责…

html 转义反斜杠字符串,JS中处理单个反斜杠(即转义字符的处理)

问题来源&#xff1a;在表单的标签中对输入的字符串进行大写转换。一不小心输入了反斜杠 \如下图所示&#xff1a;输入 chn\ 的时候&#xff0c;在 IE8 下弹出一个js错误。(在实际的项目的表单元素中遇到了&#xff0c;单独这样拿出来测试的时候又不弹出错误。也很是焦灼)索…

Android之SurfaceView简介(一)

1. SurfaceView介绍 通常情况程序的View和用户响应都是在同一个线程中处理的&#xff0c;这也是为什么处理长时间事件&#xff08;例如访问网络&#xff09;需要放到另外的线程中去&#xff08;防止阻塞当前UI线程的操作和绘制&#xff09;。但是在其他线程中却不能修改UI元素&…

C# 值得永久收藏的WPF项目实战(经典)

01—简介之前也写过好多篇CM框架相关的项目实战文章&#xff0c;比如&#xff1a;C# WPF框架Caliburn.Micro快速搭建C# WPF框架Caliburn.Micro入门实例1C# WPF MVVM项目实战(进阶①)C# WPF MVVM项目实战(进阶②)C# WPF MVVM模式下在主窗体显示子窗体并获取结果C# WPF Caliburn.…

InfoQ十周年:不忘初心,继续前行

我们都知道&#xff1a;软件正在改变世界&#xff0c;也已经看到了在加快这种变化时&#xff0c;于软件世界中我们的影响力。在这种热情下&#xff0c;10年前我们带着一些不寻常的信念与情怀创建了InfoQ&#xff1a;\\\\t我们相信&#xff1a;这个社区需要的内容是开发者所撰写…

eclipse_中的注释_快捷键

eclipse 中的注释 快捷键 把要注释的代码选中&#xff0c;按CtrlShift/ /* */ 形式的 ctrl/ //形式的 取消代码注释&#xff1a; 把要注释的代码选中&#xff0c;按CtrlShift\ /* */ 形式的 ctrl/ //形式的 (1)CtrlSpace 说明:内容助理。提供对方法,变量,参数,j…

html自动填充高度,html元素如何仅使用css填充剩余屏幕高度的100%?

html元素如何仅使用css填充剩余屏幕高度的100&#xff05;&#xff1f;我有一个标题元素和一个内容元素&#xff1a;#header#content我希望标题具有固定的高度&#xff0c;并且内容可以填满屏幕上可用的所有剩余高度&#xff0c;使用overflow-y: scroll;。这可能没有Javascript…