Android头像--拍照上传
来源:互联网 发布:python编程 中文 pdf 编辑:程序博客网 时间:2024/05/18 00:52
今天早上想给上次的头像增加拍照上传功能,不单单是相册选择。于是遇见了好多麻烦。
首先,dialog改成两个选项;
AlertDialog.Builder builder = new AlertDialog.Builder(Myfragment_tx.this); builder.setTitle("选择图片"); final String[] items = {"拍照","从相册中选择"}; builder.setItems(items, new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int which) { switch (which){ case 0: openCamera(); break; case 1: Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); intent.setType("image/*"); startActivityForResult(intent, 0); break; } } }); AlertDialog dialog = builder.create(); dialog.setCanceledOnTouchOutside(true); dialog.show();public void openCamera(){ SimpleDateFormat formatter = new SimpleDateFormat ("yyyy_MM_dd_HH_mm_ss"); Date curDate = new Date(System.currentTimeMillis());//获取当前时间 String str = formatter.format(curDate); Intent intent1 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File file = new File(Environment.getExternalStorageDirectory()+"/lrsa/img/", "head"+str+".jpg"); outPutFile = Uri.fromFile(file); intent1.putExtra(MediaStore.EXTRA_OUTPUT, outPutFile); startActivityForResult(intent1, 1); }然后测试就炸了,开始修正工作,告诉是这个样子的---->java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 cmp=android/com.android.internal.app.ResolverActivity clip={text/uri-list U:file:///storage/emulated/0/lrsa/img/test.jpg} (has extras) } from ProcessRecord{7c18b6c 9475:com.dareway.apps.lrsa/u0a246} (pid=9475, uid=10246) with revoked permission android.permission.CAMERA好吧,看在的英语水平还过关的份上,我认出貌似权限的问题,找相机权限
<uses-permission android:name="android.permission.CAMERA" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />但是这两个都加了,再菜也不能忘记这两个对吧,改动了一下发现还是不可用。就想到一个问题,好吧,又是该死的版本权限问题,Android6.0和以前不一样,旧的可以直接那么写,但新的要求这么玩--->
if( MainActivity.this.checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED ) { // 申请一个(或多个)权限,并提供用于回调返回的获取码(用户定义) requestPermissions(new String[]{ Manifest.permission.CAMERA}, MY_PERMISSIONS_REQUEST_CALL); }public void onRequestPermissionsResult(int requestCode,String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions,grantResults); ....... }重要的事情说三遍:请记得动态授权,动态授权,动态授权。相机启动了,也拍照了,然后就结束了,对,平平淡淡的没有反应,这是什么鬼,这不是我的需求!这是之前的代码,我做个一个intent data检测,看看是不是为空,结果用相机拍照,果然会为空,data为null。 protected void onActivityResult(int requestCode, int resultCode, Intent data) { Bitmap bitmap = null; if(data==null){ return;//当data为空的时候,不做任何处理 } if(requestCode==0){ try { //通过URI得到输入流 InputStream inputStream = getContentResolver().openInputStream(data.getData()); //通过输入流得到bitmap对象 BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inSampleSize = 4; bitmap = BitmapFactory.decodeStream(inputStream,null,opts); filePath=getPath.getPath(this,data.getData()); } catch (IOException e) { e.printStackTrace(); } } imageView.setImageBitmap(bitmap); }看了看问题在这里-->File file = new File(Environment.getExternalStorageDirectory()+"/lrsa/img/", "head"+str+".jpg"); outPutFile = Uri.fromFile(file); intent1.putExtra(MediaStore.EXTRA_OUTPUT, outPutFile);据说在Camera应用程序,有如何处理返回值data问题!人家是这么玩的--->默认情况下,即不需要指定intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);照相机有自己默认的存储路径,但是如果指定了目标uri,data就没有数据,如果没有指定uri,则data就返回有数据!这是真的。然后我改成这个模样了--->if(requestCode==1){ InputStream inputStream = null; try { inputStream = getContentResolver().openInputStream(outPutFile); //通过输入流得到bitmap对象 BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inSampleSize = 4; bitmap = BitmapFactory.decodeStream(inputStream,null,opts); filePath=getPath.getPath(this,outPutFile); } catch (FileNotFoundException e) { e.printStackTrace(); } }else { return;//当data为空的时候,不做任何处理 }然后暂时还没发现什么问题。这只是我的笔记,不是技术贴,所以不严谨,有问题欢迎讨论。
1 0
- Android头像--拍照上传
- Android 上传头像的拍照跟相册
- android:拍照/本地上传头像+本地缓存
- 上传头像 拍照 相册
- android头像相册/拍照选取,裁剪及上传综合案例
- android头像相册/拍照选取,裁剪及上传综合案例
- android 拍照,裁切,上传圆形头像, 图片等比缩放
- 上传头像(拍照或者本地上传)
- Android实现从手机相册上传头像以及拍照上传到服务器
- android拍照裁剪修改头像
- php实现手机拍照上传头像功能
- php实现手机拍照上传头像功能
- android studio 适配android7.0 android 6.0拍照调用系统裁剪工具实现头像上传功能
- 个人资料上传头像模块,拍照+图库+图片剪裁+圆形头像
- Android 上传图片/头像——取得手机内的图片或拍照取得图片
- Android头像上传/拍照/从相册选择Demo(个人信息模块会用到)
- Android开发之头像上传(包含拍照,从相册选择图片,裁剪等)
- Android调用摄像头拍照和从相册中选择(上传、更换头像)
- postgresql 从json数组中提取json值,并分组,汇总
- 【WC2017四校联考2】看门狗 题解
- 如何写好一份产品需求文档
- CSS布局模型
- 海康摄像头第一次RTSP成功
- Android头像--拍照上传
- [转]透视矩阵
- 嵌入式Linux学习:u-boot源码分析(2)--AM335X系列的2014.10版
- PyhonSocket
- java学习-javaAPI(2017/1/24)
- Centos6.5使用yum安装mysql
- Android中的进程间通信(二)
- MFC处理背景图片切换时,背景上的按钮图片不变化
- 批量更改图片名称