前言
双十一即将来临不知道各位的购物是不是已经塞满了东西呢?小编也想将自己的购物车塞得满满的,奈何钱包不想,于是就只能通过游戏虚拟购物来满足自己的购物欲了。没曾想到竟然被我发现了一款集成了华为HMS ML Kit手部关键点检测的小游戏-疯狂购物车,下面就跟小编一起看看这个游戏是怎么实现的吧!
应用场景
疯狂购物车小游戏是通过集成华为HMS ML Kit手部关键点检测服务来实现的,通过手势检测可以控制购物车左右移动,从而接住掉落下来的各类商品,每隔15秒将提一次速,给玩家带来不一样的购物游戏体验。
怎么样,这么有趣的游戏还不心动吗?那就一起来看看开发步骤吧!
开发实战
- 配置Maven仓地址
打开Android Studio项目级“build.gradle”文件
buildscript {
repositories {
google()
jcenter()
maven {url 'https://developer.huawei.com/repo/'}
}
dependencies {
...
classpath 'com.huawei.agconnect:agcp:1.4.1.300'
}
}
allprojects {
repositories {
google()
jcenter()
maven {url 'https://developer.huawei.com/repo/'}
}
}
- Full SDK集成
dependencies{
// 引入基础SDK
implementation 'com.huawei.hms:ml-computer-vision-handkeypoint:2.0.4.300'
// 引入手部关键点检测模型包
implementation 'com.huawei.hms:ml-computer-vision-handkeypoint-model:2.0.4.300'
}
用上述方式两种方法之一集成SDK后,在文件头添加配置。
在apply plugin: 'com.android.application'后添加apply plugin: 'com.huawei.agconnect'
- 创建手部关键点分析器
MLHandKeypointAnalyzer analyzer =MLHandKeypointAnalyzerFactory.getInstance().getHandKeypointAnalyzer();
- 创建识别结果处理类“HandKeypointTransactor”
public class HandKeypointTransactor implements MLAnalyzer.MLTransactor<List<MLHandKeypoints>> {
@Override
public void transactResult(MLAnalyzer.Result<List<MLHandKeypoints>> results) {
SparseArray<List<MLHandKeypoints>> analyseList = results.getAnalyseList();
// 开发者根据需要处理识别结果,需要注意,这里只对检测结果进行处理。
// 不可调用ML Kit提供的其他检测相关接口。
}
@Override
public void destroy() {
// 检测结束回调方法,用于释放资源等。
}
}
- 设置识别结果处理器,实现分析器与结果处理器的绑定
analyzer.setTransactor(new HandKeypointTransactor());
- 创建LensEngine
LensEngine lensEngine = new LensEngine.Creator(getApplicationContext(), analyzer)
.setLensType(LensEngine.BACK_LENS)
.applyDisplayDimension(1280, 720)
.applyFps(20.0f)
.enableAutomaticFocus(true)
.create();
- 调用run方法,启动相机,读取视频流,进行识别
// 请自行实现SurfaceView控件的其他逻辑。
SurfaceView mSurfaceView = findViewById(R.id.surface_view);
try {
lensEngine.run(mSurfaceView.getHolder());
} catch (IOException e) {
// 异常处理逻辑。
}
- 检测完成,停止分析器,释放检测资源
if (analyzer != null) {
analyzer.stop();
}
if (lensEngine != null) {
lensEngine.release();
}
结束语
看完主要开发步骤是不是觉得集成简单又快速,除了上述的疯狂购物车小游戏,手部关键点识别技术在生活中有很多的应用场景。比如拍摄短视频的软件在集成了这种技术后,可以根据手部关键点生成一些可爱或者搞笑的特效,增加短视频的趣味性。或者是在面向智能家居的场景中,可以自定义一些手势作为智能家电的远距离操控指令,进行一些更加智能的人机交互方式。快来试试吧,一起开发好玩又有趣的应用吧!
Github Demo
更详细的开发指南参考华为开发者联盟官网:https://developer.huawei.com/consumer/cn/hms/huawei-mlkit
原文链接:https://developer.huawei.com/consumer/cn/forum/topic/0204394603426760022?fid=18
原作者:timer
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。