Git Product home page Git Product logo

takephotoandroidn-master's Introduction

Android进阶封装之“史无前例"一个类实现兼容Android 6.0权限、适配Android 拍照7.0: 相机与相册上传图片就用我好啦!

  更为详细的封装过程,对应的CSDN博客地址:http://blog.csdn.net/xh870189248/article/details/77389855

介绍只需三步的环境集成:

  • 第一步:把 demo下的res的 xml文件夹整个复制到你的工程res文件夹根目录下:

第一步

  • 第二步:在你AndroidManifest.xml下的Application节点下加入以下代码:
          <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="${applicationId}.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_provider_paths"/>
           </provider>
  • 如下所示

这里写图片描述

  • 第三步 :把demo的就仅仅一个类 TakePictureManager.class 复制过去就可以啦!别忘了在清单文件加相关权限哦!

怎么使用?

示例:

TakePictureManager takePictureManager takePictureManager = new TakePictureManager(this);
                //开启裁剪 比例 1:3 宽高 350 350  (默认不裁剪)
                takePictureManager.setTailor(1, 3, 350, 350);
                //拍照方式
                takePictureManager.startTakeWayByCarema();
                //监听回调
                takePictureManager.setTakePictureCallBackListener(new TakePictureManager.takePictureCallBackListener() {
         //成功拿到图片,isTailor 是否裁剪? ,outFile 拿到的文件 ,filePath拿到的URl
        @Override
        public void successful(boolean isTailor, File outFile, Uri filePath) {
                  }
        //失败回调
        @Override
        public void failed(int errorCode, List<String> deniedPermissions) {

                   }
                });

    //把本地的onActivityResult()方法回调绑定到对象
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        takePictureManager.attachToActivityForResult(requestCode, resultCode, data);
    }

    //onRequestPermissionsResult()方法权限回调绑定到对象
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        takePictureManager.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }

使用详细步骤:

  • ①、先new一个TakePictureManager 对象,构造方法只需传this即可(不管你在Activity还是在Fragment)。

  • ②、重写onActivityResult()方法,调用对象的attachToActivityForResult()方法,参数依次是onActivityResult()回调的参数。 实现把拍照或相册回调发数据绑定在对象方法处理。

  • ③、重写onRequestPermissionsResult()方法,调用对象的onRequestPermissionsResult()方法,参数依次是onRequestPermissionsResult()回调的参数。 实现把权限回调绑定在对象方法处理。

  • ④、这时候,你只需调用对象方法,即可轻松调用相机或相册。具体的方法参数说明如下:

方法名 参数 说明
setTailor(int aspectX, int aspectY, int outputX, int outputY) 要裁剪的宽比例、要裁剪的高比例、要裁剪图片的宽、要裁剪图片的高 一旦调用,表示要裁剪,默认不裁剪
startTakeWayByAlbum() 无参数 调用相册
sstartTakeWayByCarema() 无参数 调用相机
setTakePictureCallBackListener(takePictureCallBackListener listener) takePictureCallBackListener 回调接口 调用相机或相册后的回调
接口 方法 说明
takePictureCallBackListener successful(boolean isTailor, File outFile, Uri filePath) 成功回调! isTailor : 是否已裁剪, outFile :输出的照片文件 ,filePath :输出的照片Uri 。
failed(int errorCode, List deniedPermissions) 失败回调!errorCode :0表示相片已移除或不存在! 1表示权限被拒绝,deniedPermissions当权限被拒绝时候,会通过list传回

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.