Android拍摄并进行图像识别(二)

文章介绍了如何在Android应用中实现拍照AI识别功能,主要涉及图像识别部分。通过调用相机获取图片,使用百度智慧云的图像识别API,经过获取鉴权Token、图片转Base64编码,然后发送请求进行图像识别,并展示识别结果。文章详细阐述了每个步骤,包括获取Token、图片处理和访问API的代码实现。
摘要由CSDN通过智能技术生成

一、简介

​ 最近在学习实现Android的拍照AI识别功能,主要通过调用手机系统的摄像机来完成拍照,并通过网络服务访问百度智慧云上的图像识别api来进行识图,最后将识图结果返回到app中。我把这个功能分成两个部分,分别是拍摄和识别,这篇文章讲的是图像识别部分,想看拍摄部分分析请点击:Android拍摄并进行图像识别(一)_Super500000的博客-CSDN博客

二、程序流程图

在这里插入图片描述

三、核心代码分析

1.获取鉴权Token
private String getAccessToken() {
   
    String token = SPUtils.getString(Constant.TOKEN, null, this);
    if (token == null) {
   
        //访问API获取接口
        Log.d("Camera","执行至getAccessToken()");
        requestApiGetToken();
    } else {
   
        //则判断Token是否过期
        if (isTokenExpired()) {
   
            //过期,再获取一次
            requestApiGetToken();
        } else {
   
            accessToken = token;
        }
    }
    return accessToken;
}

private void requestApiGetToken() {
   
        String grantType = "client_credentials";
        String apiKey = "A63XnnuZfncKbBpMpnnpL54P";
        String apiSecret = "v2OmvaINWEw9tETlawLN62zYrYgjvCe";//应用匹配
        service.getToken(grantType, apiKey, apiSecret)
                .enqueue(new NetCallBack<GetTokenResponse>() {
   
                    @Override
                    public void onSuccess(Call<GetTokenResponse> call, Response<GetTokenResponse> response) {
   
                        if (response.body() != null) {
   
                            //鉴权Token
                            accessToken = response.body().getAccess_token();
                            //过期时间 秒
                            long expiresIn = response.body().getExpires_in();
                            //当前时间 秒
                            long currentTimeMillis = System.currentTimeMillis() / 1000;

                            //放入缓存
                            SPUtils.putString(Constant.TOKEN, accessToken, MainActivity.this);
                            SPUtils.putLong(Constant.GET_TOKEN_TIME, currentTimeMillis, MainActivity.this);
                            SPUtils.putLong(Constant.TOKEN_VALID_PERIOD, expiresIn, MainActivity.this);
                        }
                    }

                    @Override
                    public void onFailed(String errorStr) {
   
                        Log.d("Camera", "获取Token失败,失败原因:" + errorStr);
                        accessToken = null;
                    }
                });
    }

这里的apiKey和apiSecret是从百度智慧云的应用列表中负责的,每创建一个应用都会有一个独一无二的apiKey和apiSecret

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值