第三方美颜android_ios微信美颜第三方软件 - CSDN
  • 做项目时遇到客户一个另类需求——“拍照必须使用系统相机”,当手机装有第三方相机时, 调用new Intent(MediaStore.ACTION_IMAGE_CAPTURE);会弹出相机选择界面, 但是客户是不允许用户用第三方相机的,因为第三方...

    做项目时遇到客户一个另类需求——“拍照必须使用系统相机”,当手机装有第三方相机时,

    调用new Intent(MediaStore.ACTION_IMAGE_CAPTURE);会弹出相机选择界面,

    但是客户是不允许用户用第三方相机的,因为第三方相机有的可以直接进行选择照片操作,

    但是客户要求照片必须是当前拍摄的。

    上面是遇到的问题,寻找解决方案,发现Intent可以通过setPackage设置包名来指定

    要打开的应用,安卓原生系统中照相机的包名是com.Android.camera,通过测试在三

    星等几个使用原生系统的手机中可以避免选择第三方相机直接调用了系统相机,但是在

    魅族、小米等手机中仍然弹出相机选择界面,通过查看这几款手机自带相机的apk发现,

    它们的包名并不是com.android.camera,试着将包名改为魅族小米的包名测试通过,

    可以直接指定系统相机;

      虽然找到了原因,但是我们总不能每款手机都做一个适配来指定包名吧。还好安卓

    允许我们获取手机中安装的所有apk的信息。我的解决方案是遍历手机中所有安装的软件,

    判断软件的名称为"相机,照相机,照相,拍照,摄像,Camera,camera"等关键字,

    系统相机无非都是这样命名的。以下是代码:

    [java] view plain copy
    1. /** 
    2.  * 照相功能 
    3.  * imgPath指定照片存储路径 
    4.  */  
    5. public void cameraMethod(Activity activity, int RESULT_CAPTURE_IMAGE,  
    6.         String imgPath) {  
    7.     try {  
    8.         Intent imageCaptureIntent = new Intent(  
    9.                 MediaStore.ACTION_IMAGE_CAPTURE);  
    10.         File out = new File(imgPath);  
    11.         Uri uri = Uri.fromFile(out);  
    12.         try {// 尽可能调用系统相机  
    13.             String cameraPackageName = getCameraPhoneAppInfos(myActivity);  
    14.             if (cameraPackageName == null) {  
    15.                 cameraPackageName = "com.android.camera";  
    16.             }  
    17.             final Intent intent_camera = activity.getPackageManager()  
    18.                     .getLaunchIntentForPackage(cameraPackageName);  
    19.             if (intent_camera != null) {  
    20.                 imageCaptureIntent.setPackage(cameraPackageName);  
    21.             }  
    22.         } catch (Exception e) {  
    23.             // TODO Auto-generated catch block  
    24.             e.printStackTrace();  
    25.         }  
    26.         imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);  
    27.         imageCaptureIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);  
    28.         activity.startActivityForResult(imageCaptureIntent,  
    29.                 RESULT_CAPTURE_IMAGE);  
    30.     } catch (Exception e) {  
    31.         // TODO Auto-generated catch block  
    32.         e.printStackTrace();  
    33.     }  
    34. }  
    35.   
    36. // 对使用系统拍照的处理  
    37.   
    38. public String getCameraPhoneAppInfos(Activity context) {  
    39.     try {  
    40.         String strCamera = "";  
    41.         List<PackageInfo> packages = context.getPackageManager()  
    42.                 .getInstalledPackages(0);  
    43.         for (int i = 0; i < packages.size(); i++) {  
    44.             try {  
    45.                 PackageInfo packageInfo = packages.get(i);  
    46.                 String strLabel = packageInfo.applicationInfo.loadLabel(  
    47.                         context.getPackageManager()).toString();  
    48.                 // 一般手机系统中拍照软件的名字  
    49.                 if ("相机,照相机,照相,拍照,摄像,Camera,camera".contains(strLabel)) {  
    50.                     strCamera = packageInfo.packageName;  
    51.                     if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {  
    52.                         break;  
    53.                     }  
    54.                 }  
    55.             } catch (Exception e) {  
    56.                 e.printStackTrace();  
    57.             }  
    58.         }  
    59.         if (strCamera != null) {  
    60.             return strCamera;  
    61.         }  
    62.     } catch (Exception e) {  
    63.         e.printStackTrace();  
    64.     }  
    65.     return null;  
    66. }  
    展开全文
  • 视频通话、视频直播、语音通话、视频录制播放各种处理等功能 1.容联 云通讯 ...qd=pc-dasou&cp=im&xl=null&kw=10918969&bd_vid=9047599401555687554#tab4 https://www.yu...

       视频通话、视频直播、语音通话、视频录制播放各种处理等功能

    1.容联 云通讯

    https://www.yuntongxun.com/api/im.html?ly=sem-baidu&qd=pc-dasou&cp=im&xl=null&kw=10918969&bd_vid=9047599401555687554#tab4

    https://www.yuntongxun.com/download/download.html

     2.UCloud

    https://www.ucloud.cn/site/product/urtc.html?utm_source=baidu&utm_campaign=%E6%B5%B7%E5%A4%96-%E5%9C%BA%E6%99%AF%E8%AF%8D&utm_adgroup=%E5%AE%9E%E6%97%B6%E9%9F%B3%E8%A7%86%E9%A2%91&utm_term=%E8%A7%86%E9%A2%91%E9%80%9A%E8%AF%9Dsdk&utm_medium=search_cpc&utm_channel=pc&utm_content=haiwai-changjingci&ytag=%E8%A7%86%E9%A2%91%E9%80%9A%E8%AF%9Dsdk_%E5%AE%9E%E6%97%B6%E9%9F%B3%E8%A7%86%E9%A2%91RTC_baidu_search

    https://www.ucloud.cn/site/opensource/#kyxm

    3.网易云信

    https://yunxin.163.com/netcall?from=bd2jjX1068

    https://yunxin.163.com/live-demo

    4.腾讯云

    https://cloud.tencent.com/act/pro/trtcnew?fromSource=gwzcw.3018642.3018642.3018642&utm_medium=cpc&utm_id=gwzcw.3018642.3018642.3018642

    https://github.com/tencentyun/SuperPlayer_Android

    https://cloud.tencent.com/document/product/454/7873#Android

    https://cloud.tencent.com/document/product/454/6555

    5.环信

    https://www.easemob.com/product/im?utm_source=baidu&utm_medium=00.%E5%93%81%E7%89%8C%E8%AF%8D-%E5%8D%B3%E6%97%B6%E9%80%9A%E8%AE%AF&utm_campaign=00.%E5%8D%B3%E6%97%B6%E9%80%9A%E8%AE%AF%E8%A1%8C%E4%B8%9A%E4%B8%BB%E8%AF%8D&utm_term=%E7%8E%AF%E4%BF%A1%E5%8D%B3%E6%97%B6%E9%80%9A%E8%AE%AF%E4%BA%91&e_creative=30128000000&e_keywordid=125606120520&e_keywordid2=125606120520&renqun_youhua=1795911&bd_vid=8395012350620860836

    https://www.easemob.com/download/im

    6.融云

    https://www.rongcloud.cn/active/double11?utm_source=baiduPay&utm_medium=cpc&utm_term=ffmpeg&utm_content=2019%E5%B9%B4%E7%BB%88%E5%A4%A7%E4%BF%83&utm_campaign=PC-%E6%B4%BB%E5%8A%A8%E4%B8%93%E9%A2%98&bd_vid=7787376246920371495

    https://github.com/sealtalk/sealtalk-android

    https://github.com/rongcloud/sealrtc-android

    https://github.com/rongcloud/demo-chatroom/tree/master/client-android/ChatroomDemo

    https://github.com/rongcloud/sealmic-android

    https://www.rongcloud.cn/docs/open_source.html

    7.即构科技

    https://market.zego.im/Livevideo_sdk.html

    https://doc.zego.im/download/code

    https://github.com/zegoim/ZegoChatroom-Android

    https://github.com/zegodev/liveroom-topics-android

    https://doc.zego.im/download/demo

    8.微吼

    https://www.vhall.com/store

    https://github.com/vhall/vhallsdk_live_android

    9.百家云

    https://github.com/baijia/BJLiveUI-Android

    https://github.com/baijia/BJLiveCore-Android

    http://dev.baijiayun.com/wiki/detail/65

    10.三体云

    http://www.3ttech.cn/index.php?menu=4

    http://www.3ttech.cn/index.php?menu=28

    11.锐动天地

    http://www.rdsdk.com/productsdk.html

    12.秀拍客

    http://www.56show.com/lepai/lepai.html

    13.美摄

    https://www.meishesdk.com/

    14.七牛云

    https://www.qiniu.com/events/20191111?utm_campaign=SEM&utm_content=SEM_baidu&utm_medium=cpc&utm_source=baiduSEM&utm_term=brand

    https://github.com/pili-engineering/QNRTC-Android

    https://github.com/pili-engineering/PLDroidShortVideo

    15.新乐视云联

    http://www.lecloud.com/zh-cn/help/api.html

    16.阿里云

    https://help.aliyun.com/document_detail/45270.html?spm=5176.product29949.6.667.YZNFdd

     

    展开全文
  • 做项目时遇到客户一个另类需求——“拍照必须使用系统相机”,当手机装有第三方相机时, 调用new Intent(MediaStore.ACTION_IMAGE_CAPTURE);会弹出相机选择界面, 但是客户是不允许用户用第三方相机的,因为...

    做项目时遇到客户一个另类需求——“拍照必须使用系统相机”,当手机装有第三方相机时,

    调用new Intent(MediaStore.ACTION_IMAGE_CAPTURE);会弹出相机选择界面,

    但是客户是不允许用户用第三方相机的,因为第三方相机有的可以直接进行选择照片操作,

    但是客户要求照片必须是当前拍摄的。

    上面是遇到的问题,寻找解决方案,发现Intent可以通过setPackage设置包名来指定

    要打开的应用,安卓原生系统中照相机的包名是com.Android.camera,通过测试在三

    星等几个使用原生系统的手机中可以避免选择第三方相机直接调用了系统相机,但是在

    魅族、小米等手机中仍然弹出相机选择界面,通过查看这几款手机自带相机的apk发现,

    它们的包名并不是com.android.camera,试着将包名改为魅族小米的包名测试通过,

    可以直接指定系统相机;

      虽然找到了原因,但是我们总不能每款手机都做一个适配来指定包名吧。还好安卓

    允许我们获取手机中安装的所有apk的信息。我的解决方案是遍历手机中所有安装的软件,

    判断软件的名称为"相机,照相机,照相,拍照,摄像,Camera,camera"等关键字,

    系统相机无非都是这样命名的。以下是代码:

    [java] view plain copy
    1. /** 
    2.  * 照相功能 
    3.  * imgPath指定照片存储路径 
    4.  */  
    5. public void cameraMethod(Activity activity, int RESULT_CAPTURE_IMAGE,  
    6.         String imgPath) {  
    7.     try {  
    8.         Intent imageCaptureIntent = new Intent(  
    9.                 MediaStore.ACTION_IMAGE_CAPTURE);  
    10.         File out = new File(imgPath);  
    11.         Uri uri = Uri.fromFile(out);  
    12.         try {// 尽可能调用系统相机  
    13.             String cameraPackageName = getCameraPhoneAppInfos(myActivity);  
    14.             if (cameraPackageName == null) {  
    15.                 cameraPackageName = "com.android.camera";  
    16.             }  
    17.             final Intent intent_camera = activity.getPackageManager()  
    18.                     .getLaunchIntentForPackage(cameraPackageName);  
    19.             if (intent_camera != null) {  
    20.                 imageCaptureIntent.setPackage(cameraPackageName);  
    21.             }  
    22.         } catch (Exception e) {  
    23.             // TODO Auto-generated catch block  
    24.             e.printStackTrace();  
    25.         }  
    26.         imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);  
    27.         imageCaptureIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);  
    28.         activity.startActivityForResult(imageCaptureIntent,  
    29.                 RESULT_CAPTURE_IMAGE);  
    30.     } catch (Exception e) {  
    31.         // TODO Auto-generated catch block  
    32.         e.printStackTrace();  
    33.     }  
    34. }  
    35.   
    36. // 对使用系统拍照的处理  
    37.   
    38. public String getCameraPhoneAppInfos(Activity context) {  
    39.     try {  
    40.         String strCamera = "";  
    41.         List<PackageInfo> packages = context.getPackageManager()  
    42.                 .getInstalledPackages(0);  
    43.         for (int i = 0; i < packages.size(); i++) {  
    44.             try {  
    45.                 PackageInfo packageInfo = packages.get(i);  
    46.                 String strLabel = packageInfo.applicationInfo.loadLabel(  
    47.                         context.getPackageManager()).toString();  
    48.                 // 一般手机系统中拍照软件的名字  
    49.                 if ("相机,照相机,照相,拍照,摄像,Camera,camera".contains(strLabel)) {  
    50.                     strCamera = packageInfo.packageName;  
    51.                     if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {  
    52.                         break;  
    53.                     }  
    54.                 }  
    55.             } catch (Exception e) {  
    56.                 e.printStackTrace();  
    57.             }  
    58.         }  
    59.         if (strCamera != null) {  
    60.             return strCamera;  
    61.         }  
    62.     } catch (Exception e) {  
    63.         e.printStackTrace();  
    64.     }  
    65.     return null;  
    66. }  
    展开全文
  • 文章目录人脸识别的用处人脸识别实现自行选取相关的第三方平台及其开放的api接口先获取相应第三方平台的APPID、API Key和secret key获取APPID、API Key和secret key调用第三方库接口(导入相关jar包)调用相应的接口...

    人脸识别的用处

    人脸识别技术是指利用分析比较的计算机技术识别人脸。人脸识别是一项热门的计算机技术研究领域,其中包括人脸追踪侦测,自动调整影像放大,夜间红外侦测,自动调整曝光强度等技术

    人脸识别(face recognizaton)按顺序可以大体上分为四个部分,即人脸检测(face detection),人脸对齐(face alignment),人脸校验(face verification)和人脸识别(face identification)。 人脸检测就是在一张图片中找到人脸所处的位置,即将人脸圈出来,比如拍照时数码相机自动画出人脸。人脸对齐就是在已经检测到的人脸的基础上,自动找到人脸上的眼睛鼻子嘴和脸轮廓等标志性特征位置。人脸校验就是判断两张脸是不是同一个人。人脸识别就是给定一张脸,判断这张脸是谁。

    最近几年人脸识别被炒到了风口上,相对应的第三方平台也比较多,如face++,科大讯飞,阅面科技,包括
    腾讯等等都有自己的人脸数据库,以及开放的api接口,、故在android平台集成人脸检测以及人脸识别技术也变得容易许多。

    在这里插入图片描述

    人脸识别实现

    • 自行选取相关的第三方平台及其开放的api接口

    • 先获取相应第三方平台的APPID、API Key和secret key

      如比较热门的face++平台就需要在face++网站中注册并且创建一个试用(试用免费)的api key
      在这里插入图片描述
      这个APPID、API Key和secret key获取主要取决于选择调用的第三方平台,作者在这实现的实例是调用一个第三方库,他可支持百度云获取的APPID、API Key和secret key。

    获取APPID、API Key和secret key

    一、在百度云网站中创建应用
    百度云网址点这
    在这里插入图片描述
    二、填写相关应用信息 (选取的接口应根据自身要实现的功能进行选取api调用)
    在这里插入图片描述

    三、完成创建,获取到APPID、API Key和secret key

    APPID、API Key和secret key

    调用第三方库接口(导入相关jar包)

    在这里插入图片描述
    jar包:https://pan.baidu.com/s/1A4ktfhkFcxS-ga9-d4H4rQ
    提取码:3reh

    在这里插入图片描述

    调用相应的接口方法进行人脸识别(该库中为AipOcr函数进行人脸识别)

    • AipOcr函数解析

      • 构造函数:
    public AipOcr(String appId, String apiKey, String secretKey) {
            super(appId, apiKey, secretKey);
        }
    

    传入参数就是上面获取到的appId,apiKey,secretKey

    • 调用图片是获取相关属性

    • 通过图片的二进制数据和想要获取图片的相关属性(性别,年龄等)

    public JSONObject basicGeneral(byte[] image, HashMap<String, String> options) {
            AipRequest request = new AipRequest();
            this.preOperation(request);
            String base64Content = Base64Util.encode(image);
            request.addBody("image", base64Content);
            if (options != null) {
                request.addBody(options);
            }
    
            request.setUri("https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic");
            this.postOperation(request);
            return this.requestServer(request);
        }
    
    • 通过图片的本地路径和想要获取图片的相关属性(性别,年龄等)
    public JSONObject basicAccurateGeneral(String image, HashMap<String, String> options) {
            try {
                byte[] imgData = Util.readFileByBytes(image);
                return this.basicAccurateGeneral(imgData, options);
            } catch (IOException var4) {
                var4.printStackTrace();
                return AipError.IMAGE_READ_ERROR.toJsonResult();
            }
        }
    
    • 通过图片的url路径和想要获取图片的相关属性(性别,年龄等)
    public JSONObject generalUrl(String url, HashMap<String, String> options) {
            AipRequest request = new AipRequest();
            this.preOperation(request);
            request.addBody("url", url);
            if (options != null) {
                request.addBody(options);
            }
    
            request.setUri("https://aip.baidubce.com/rest/2.0/ocr/v1/general");
            this.postOperation(request);
            return this.requestServer(request);
        }
    

    在此选取第一种方法进行调用

    实例代码

    实例代码地址:https://github.com/liuyzh25/Android/tree/master/FaceIdentify

    • 获取图片,可从相册中选择和调用手机相机拍摄

    • 从相册中选择

    getImage=(Button)findViewById(R.id.getImage);
            getImage.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent in=new Intent(Intent.ACTION_PICK);
                    in.setType("image/*");
                    startActivityForResult(in,PHOTO_ALBUM);
                }
            });
    
    • 调用手机相机拍摄
      先更改调用权限
      在这里插入图片描述
      进行调用
    if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
                ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},1);
            }
    if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)!=PackageManager.PERMISSION_GRANTED){
                ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},2);
            }
    
    
    Camera.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    File outputImage=new File(Environment.getExternalStorageDirectory()+File.separator+"face.jpg");
                    try{
                        if(outputImage.exists()){
                            outputImage.delete();
                        }
                        outputImage.createNewFile();
                    }catch (IOException e){
                        e.printStackTrace();
                    }
                    imageUri=Uri.fromFile(outputImage);
                    ImagePath=outputImage.getAbsolutePath();//拍摄后图片的存储路径
                    Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                    intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
                    startActivityForResult(intent,CAMERA);
                }
            });
    
     @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            //从相册中选择的图片
            if(requestCode==PHOTO_ALBUM){
                if(data!=null){
                    Uri uri=data.getData();
                    Cursor cursor=getContentResolver().query(uri,null,null,null,null);
                    cursor.moveToNext();
                    ImagePath=cursor.getString(cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA));
                    cursor.close();
                    resizePhoto();
                    myPhoto.setImageBitmap(myBitmapImage);
                    Log.i("图片路径",ImagePath);
                }
            }
            //相机拍摄的图片
            else if(requestCode==CAMERA){
                try{
                    resizePhoto();
                    myPhoto.setImageBitmap(myBitmapImage);
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }
        //调整图片的比例,使其大小小于1M,能够显示在手机屏幕上
        public void resizePhoto(){
            BitmapFactory.Options options=new BitmapFactory.Options();
            options.inJustDecodeBounds=true;//返回图片宽高信息
            BitmapFactory.decodeFile(ImagePath,options);
            //让图片小于1024
            double radio=Math.max(options.outWidth*1.0d/1024f,options.outHeight*1.0d/1024f);
            options.inSampleSize=(int)Math.ceil(radio);//向上取整倍数
            options.inJustDecodeBounds=false;//显示图片
            myBitmapImage=BitmapFactory.decodeFile(ImagePath,options);
        }
    
    • 调用函数进行人脸识别
    detect.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    res=null;
                    detect_tip.setVisibility(View.VISIBLE);
                    detect_tip.setText("识别中...");
                   if(myBitmapImage==null){
                       myBitmapImage=BitmapFactory.decodeResource(getResources(),R.mipmap.face2);
                       bitmapSmall=Bitmap.createBitmap(myBitmapImage,0,0,myBitmapImage.getWidth(),myBitmapImage.getHeight());
                   }
                   else{//由于有些图片在一些型号手机角度会倾斜,需要进行摆正
                       int degree=getPicRotate(ImagePath);
                       Matrix m=new Matrix();
                       m.setRotate(degree);
                       bitmapSmall=Bitmap.createBitmap(myBitmapImage,0,0,myBitmapImage.getWidth(),myBitmapImage.getHeight(),m,true);
                   }
                   //将图片由路径转为二进制数据流
                    ByteArrayOutputStream stream=new ByteArrayOutputStream();
                    //图片转数据流
                    bitmapSmall.compress(Bitmap.CompressFormat.JPEG,100,stream);
                    final byte[] arrays=stream.toByteArray();
                    //网络申请调用函数进行人脸识别
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            HashMap<String,String> options=new HashMap<>();
                            options.put("face_fields","age,gender,race,beauty,expression");//人脸属性:年龄,性别,肤色,颜值,笑容
                            AipFace client=new AipFace("10734368","6cvleSFbyRIRHzhijfYrHZFj","SDnCUfrtH0lgrK01HgTe2ZRLNsmCx5xy");
                            client.setConnectionTimeoutInMillis(2000);
                            client.setSocketTimeoutInMillis(6000);
                            res=client.detect(arrays,options);
                            try{
                                Message message = Message.obtain();
                                message.what = 1;
                                message.obj = res;
                                handler.sendMessage(message);
                            }catch (Exception e){
                                e.printStackTrace();
                                Message message = Message.obtain();
                                message.what = 2;
                                handler.sendMessage(message);
                            }
                        }
                    }).start();
                }
            });
        }
    
    • 将获取的网络数据进行处理
    private Handler handler=new Handler(){
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                if(msg.what==1){
                    JSONObject res=(JSONObject) msg.obj;
                    face_resultNum=res.optString("result_num");
                    if(Integer.parseInt(face_resultNum)>=1) {
                        try {
                            JSONArray js = new JSONArray(res.optString("result"));
                            face_age = js.optJSONObject(0).optString("age");
                            face_gender = js.optJSONObject(0).optString("gender");
                            if (face_gender.equals("female")) {
                                face_gender = "女";
                            } else {
                                face_gender = "男";
                            }
                            face_race = js.optJSONObject(0).optString("race");
                            if (face_race.equals("yellow")) {
                                face_race = "黄种人";
                            } else if (face_race.equals("white")) {
                                face_race = "白种人";
                            } else if (face_race.equals("black")) {
                                face_race = "黑种人";
                            }else if(face_race.equals("arabs")){
                                face_race = "阿拉伯人";
                            }
                            int express = Integer.parseInt(js.optJSONObject(0).optString("expression"));
                            if (express == 0) {
                                face_expression = "无";
                            } else if (express == 1) {
                                face_expression = "微笑";
                            } else {
                                face_expression = "大笑";
                            }
                            face_beauty = js.optJSONObject(0).optString("beauty");
                            double  beauty=Math.ceil(Double.parseDouble(face_beauty)+25);
                            if(beauty>=100){//对获得的颜值数据进行一定处理,使得结果更为合理
                                beauty=99.0;
                            }
                            else if(beauty<70){
                                beauty+=10;
                            }
                            else if(beauty>80 && beauty<90){
                                beauty+=5;
                            }
                            else if(beauty>=90 && beauty<95){
                                beauty+=2;
                            }
                            face_beauty=String.valueOf(beauty);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                        detect_tip.setVisibility(View.GONE);
                        AlertDialog.Builder alertDialog = new AlertDialog.Builder(faceRecognition.this);
                        String[] mItems = {"性别:" + face_gender, "年龄:" + face_age, "肤色:" + face_race, "颜值:" + face_beauty, "笑容:" + face_expression};
                        alertDialog.setTitle("人脸识别报告").setItems(mItems, null).create().show();
                    }else{
                        detect_tip.setVisibility(View.VISIBLE);
                        detect_tip.setText("图片不够清晰,请重新选择");
                    }
                }else{
                    detect_tip.setVisibility(View.VISIBLE);
                    detect_tip.setText("图片不够清晰,请重新选择");
                }
            }
        };
    

    ps:layout布局相关(可自行设计)

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:background="@color/color2"
            android:padding="5sp"
            android:gravity="center"
            android:text="火眼金睛:一张图看穿你的岁月"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@mipmap/face2"
            android:layout_gravity="center"
            android:layout_weight="1"
            android:id="@+id/myPhoto"/>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:layout_gravity="center"
            android:gravity="center"
            android:id="@+id/detect_tip"
            android:text="识别中..."/>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_margin="10dp"
                android:text="选图"
                android:background="@drawable/button_decoration"
                android:textColor="@color/white"
                android:textSize="25sp"
                android:layout_weight="1"
                android:id="@+id/getImage"/>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_margin="10dp"
                android:text="拍照"
                android:background="@drawable/button_decoration"
                android:textColor="@color/white"
                android:textSize="25sp"
                android:layout_weight="1"
                android:id="@+id/Camera"/>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="10dp"
                android:layout_weight="1"
                android:background="@drawable/button_decoration"
                android:textColor="@color/white"
                android:textSize="25sp"
                android:id="@+id/detect"
                android:text="识别"/>
        </LinearLayout>
    </LinearLayout>
    

    代码运行结果:

    https://s1.ax1x.com/2020/06/02/tY8qrF.jpg
    在这里插入图片描述

    作者:林伟彬
    原文链接:https://blog.csdn.net/weixin_45115928/article/details/106466826

    展开全文
  • Android第三方库合集

    千次阅读 2016-11-17 11:29:08
    Android第三方库合集
  • 现在基本每个app都需要...今天向大家介绍一个好用的第三方框架,可以帮助我们快速集成。opencamera for android 效果图 集成项目 allprojects { repositories { ... maven { url 'https://www.jitpack.io' } }...
  • android实际的开发过程中,经过需要使用到第三方的资源,第三方提供的资源包括apk文件,so动态库文件,.a的静态库文件。 而第三方提供的这些资源,经常需要集成到Android的原生工程中。   集成so动态库,...
  • 2,美颜直播 美不美都能装的直播,iOS OPENGL美艳加速,手机完全不发烫。 3,前后摄像头随时切换 4,提供RTMP连接状态的回调 一,首先简单扫盲 当前直播都是用RTMP协议,推流到RTMP服务
  • 第三方美颜接口 1.0.0( ) 第三方滤镜接口 1.0.0( ) 自定义拍摄时长 1.0.0( ) 自定义分辨率 1.0.0( ) 自定义视频帧率 1.0.0( ) 自定义视频码率 1.0.0( ) 支持 1:1 正方形录制 1.0.0( ) 断点拍摄(多段...
  • 项目集成流程:1.获取APPKEY:进入哎吖科技官网:http://www.aiyaapp.com/,提交接入申请,填入applicationId获取appKey。(可以免费申请试用)2.添加Maven集成:在项目的build.gradle中添加引用,如图:3....
  • 视频 1、趣拍云服务  http://vcs.qupai.me/     拍照 1、camera360 SDk 拍照滤镜   http://www.camera360.com/   2 、凃图  http://tusdk.com/
  • 1.异步处理框架rxjava 观察者模式,有订阅者,被订阅者,解决android异步代码不简洁问题rxrecylelife防止rxjava使用时的内存泄露rxbus 解决framemt,activity跳转,代码简介2.图片处理架fresco 处理多图片glide ...
  • 近些年,随着网络视频直播行业的兴起...实现以上需求现在大部分企业是通过第三方视频SDK来完成的,那如何快速接入类似Faceu功能,本篇以第三方sdk宝宝特效为例:先上效果图:SDK接入流程1.获取APPKEY:进入哎吖科技...
  • https://github.com/pili-engineering/PLDroidShortVideo
  • 作者:声网Agora 资深软件开发工程师 戚敏明如今越来越多的用户开始对美颜/道具这一功能产生越来越大的需求,尤其是在泛娱乐场景下。而现如今市场上有许多第三方美颜 SD...
  • 该项目是一个网络框架,基本上所有的网络访问都在使用了,google也已经在Android底层在使用了。 项目官网:http://square.github.io/okhttp/ Litpal: 项目地址:...
  • Android上要实现一个录制功能,需要有几个方面的知识储备:自定义相机的开发、视频数据格式的了解、编码相关知识以及视频合成技术,同时如果需要美颜、磨皮等滤镜操作还需要一定的openGL的知识。如果有需要深入音...
  • 一般直播平台需要用户给主播送礼物来实现盈利,所以刷礼物的功能是必备的,另外为了增加视频的美感与炫酷等特效功能,也需要用到美颜与视频滤镜等功能,实现以上需求现在大部分企业是通过第三方视频SDK来完成的。...
1 2 3 4 5 ... 20
收藏数 725
精华内容 290
关键字:

第三方美颜android