共计 4868 个字符,预计需要花费 13 分钟才能阅读完成。
1、引言
随着手机拍照性能日益弱小,拍照和修图成了咱们每个人的必备技能,正所谓“拍照五分钟,修图两小时”难看的图片也成为很多年轻人的社交工具。因而,滤镜和修图成了很多社交 APP 内必不可少的性能。那么,如何给本人的 APP 增加一个滤镜性能呢?能够接入 HUAWEI Image Kit, 提供 24 款色彩滤镜进行图像优化, 帮忙你疾速实现滤镜性能。
2、性能演示和示例代码
如果你对实现形式感兴趣,能够去 Github 去下载源代码,能够基于具体利用场景优化。
Github demo 下载地址:https://github.com/HMS-Core/hms-image-vision
3、筹备工作
步骤 1 :配置 AppGallery Connect
集成 HUAWEI HMS Core 能力,须要实现以下筹备工作:
- 注册成为华为开发者
- 创立 AppGallery Connect 利用
- 创立 Android Studio 工程
- 生成签名证书
- 生成签名证书指纹
- 配置签名证书指纹
- 增加利用包名并保留配置文件
- 配置 Maven 仓地址及 AppGallery Connect gradle 插件
- 在 Android Studio 配置签名文件
具体操作,请依照《HUAWEI HMS Core 集成筹备》中具体阐明来实现。
步骤 2 :关上 Android Studio
步骤 3 :抉择“File > Open > 示例工程解压门路”,点击“OK”
步骤 4 :增加 HUAWEI agcp 插件、配置仓库、依赖包、混同脚本、权限(示例代码中曾经配好,但后续你的工程须要参考配置)
1. 在我的项目级“build.gradle”中配置 maven 仓库门路及 HUAWEI agcp 插件
- 在“allprojects > repositories”外面配置 HMS SDK 的 maven 仓地址
allprojects {
repositories {maven { url 'https://developer.huawei.com/repo/'}
…
}
}
- 在“buildscript > repositories”外面配置 HMS SDK 的 maven 仓地址
buildscript {
repositories {maven {url 'https://developer.huawei.com/repo/'}
…
}
…
}
- 在“buildscript > dependencies”外面减少配置
buildscript{
dependencies {classpath 'com.huawei.agconnect:agcp:1.3.1.300'}
}
2. 在利用级“build.gradle”中配置依赖包
- 在“dependencies”中增加依赖包
dependencies {
…
implementation 'com.huawei.hms:image-vision:1.0.2.301'
…
}
- 配置 minSdkVersion
android {
...
defaultConfig {
...
minSdkVersion 26
...
}
...
}
- 在文件头增加配置
apply plugin: 'com.huawei.agconnect'
阐明:apply plugin: ‘com.huawei.agconnect’ 须要在 apply plugin:’com.android.application’ 之后配置。
3. 配置混同脚本
- 在“app/proguard-rules.pro”文件中配置
-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keep class com.hianalytics.android.**{*;}
-keep class com.huawei.updatesdk.**{*;}
-keep class com.huawei.hms.**{*;}
- 如果开发者应用了 AndResGuard,须要在混同配置文件中退出 AndResGuard 白名单
"R.string.hms*",
"R.string.connect_server_fail_prompt_toast",
"R.string.getting_message_fail_prompt_toast",
"R.string.no_available_network_prompt_toast",
"R.string.third_app_*",
"R.string.upsdk_*",
"R.layout.hms*",
"R.layout.upsdk_*",
"R.drawable.upsdk*",
"R.color.upsdk*",
"R.dimen.upsdk*",
"R.style.upsdk*",
"R.string.agc*"
4. 在“AndroidManifest.xml”文件中配置权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
步骤 5 :抉择 Android Studio 的“File > Sync Project with Gradle Files”,同步工程。
4. 在“AndroidManifest.xml”文件中配置权限
步骤 1:新建一个 Activity,导入服务包。
public class ImageKitVisionDemoActivity extends AppCompatActivity implements View.OnClickListener
导包
import com.huawei.hms.image.vision.*;
import com.huawei.hms.image.vision.bean.ImageVisionResult;
实现 onCreate 办法,在办法里关联 activity_main.xml 布局:setContentView(R.layout.activity_filter);
步骤 2 :新建一个 activity_main.xml 布局文件
定义有按钮和文本编辑布局:
<EditText
android:id="@+id/btn_filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="filterType(0-24)" />
<Button
android:id="@+id/btn_init"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Init_Service" />
步骤 3 :在 ImageKitVisionDemoActivity 中定义变量,在 onCreate 办法中关联变量与 activity_main.xml 中按钮和文本编辑布局
// 定义文本编辑和按钮
private EditText btn_filter;
private Button btn_init;
// 通过布局 id,关联文本编辑变量和布局中文本编辑框
btn_filter = findViewById(R.id.btn_filter);
// 通过布局 id,关联按钮变量和布局中按钮
btn_init = findViewById(R.id.btn_init);
// 设置按钮监听事件
btn_init.setOnClickListener(this);
步骤 4 :重写 onClick 办法,定义每个点击事件调用的办法,示例:
@Override
public void onClick(View v) {switch (v.getId()) {
case R.id.btn_init:
initFilter(context);
break;
}
}
步骤 5 :获取服务实例:该步骤次要是获取滤镜服务实例,例如,获取滤镜效果图等,写在上述监听点击事件中 initFilter 办法中。
// 获取 ImageVisionImpl 对象
ImageVisionImpl imageVisionAPI = ImageVision.getInstance(this);
步骤 6 :服务初始化,写在上述监听点击事件中 initFilter 办法中
调用 setVisionCallBack 时须要实现 ImageVision 的 VisionCallBack 接口,重写其中的 onSuccess(ImageVisionImpl imageVision) 和 onFailure(int errorCode) 办法。初始化框架胜利时会回调 onSuccess 办法,初始化滤镜服务。初始化失败时会回调 onFailure 办法,传回失败错误码。调用初始化接口时,只有通过校验,第三方利用能力应用场景智能设计服务,初始化胜利。
imageVisionAPI.setVisionCallBack(new ImageVision.VisionCallBack() {
@Override
public void onSuccess(int successCode) {imageVisionAPI.init(context, authJson);
...
}
@Override
public void onFailure(int errorCode) {...}
});
入参 authJson:
阐明:以上参数除了 token 之外,都可在 agconnect-services.json 文件中查找 (参考开发指南)。因平安问题,示例代码中未显示实在鉴权信息,你在开发时需填写实在的鉴权信息。
步骤 7 :构建参数对象 requestJson。
入参 requestJson 和 imageBitmap:
requestJson 字段信息:
taskJson 字段信息:
filterType 映射表:
requestJson 示例:
步骤 8 :获取渲染图。定义一个按钮,监听点击事件,通过点击事件调用接口,留神:调取接口时,须要开启一个子线程去执行,不能在主线程执行。
ImageVisionResult 返回值:
response 字段信息:
步骤 9 :进行服务。
当不再须要滤镜成果时,调用该接口进行服务,stopCode 为 0 时,执行胜利。
5. 结束语
至此咱们就已实现了滤镜性能开发,借助 HMS Image Kit 不须要破费太多工夫就能给 APP 增加滤镜性能至此咱们滤镜性能开发实现,借助 HMS ImageKit 只须要调用滤镜接口就能够给 APP 增加滤镜性能,简略易用,这 24 款滤镜也会给用户带来更多的抉择和良好的体验。
欲了解更多详情,请参阅:
华为开发者联盟官网:https://developer.huawei.com/consumer/en/hms
获取开发领导文档:https://developer.huawei.com/consumer/en/doc/development
参加开发者探讨请到 Reddit 社区:https://www.reddit.com/r/HMSCore/
下载 demo 和示例代码请到 Github:https://github.com/HMS-Core
解决集成问题请到 Stack Overflow:https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newest
原文链接:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0203351141059660527&fid=18
作者:梦阳