Unreal中打开手机相册
最近接到了一个需求, 需要提供一个功能, 让玩家可以在游戏中打开自己的相册, 并从中选择照片上传, 现阶段的需求就是需要实现打开相册->选取照片->加载到内存->显示在UI上的功能, 本篇内容是实现此需求的笔记.
Android平台:
目前Android平台的想法是, Unreal->Java层通过JNI调用:
参考: https://blog.csdn.net/wbin233/article/details/50954868#comments
添加权限:
<uses-permission android:name=“android.permission.READ_EXTERNAL_STORAGE” />
调用系统相册:
1 | private static final int CHOOSE_PHOTO=0; |
关于StartActivityForResult可以参考: https://developer.android.google.cn/guide/components/activities/activity-lifecycle
函数原型:
1 | public void startActivityForResult (Intent intent, |
startactivityForResult之后, 结果通过OnActivityResult返回, 上面的参数requestCode需要设计一下.
貌似Intent中获得的数据(文件路径)还要自己写个解析函数得到文件储存地址
https://blog.csdn.net/zhanghao_Hulk/article/details/105389870
https://www.cnblogs.com/zhujiabin/p/6692025.html
上面的代码封装后通过JNI加入到GameActivity.java中, 使用
1 | <gameActivityClassAdditions> |
通过这个方法可以在回调中拿到相关数据, 具体内容还需要进一步分析
直觉上可以把处理的函数也插入到GameActivity中:
1 | <gameActivityOnActivityResultAdditions> </gameActivityOnActivityResultAdditions> |
然后在Java里调用C++函数?
也可以通过AndroidJNI.h中定义的回调来注册:
1 | // In AndroidJNI.h |
貌似直接可以放在C++里处理
全局搜索搜到了一个原生的处理方法, 可以参考一下:
1 | //E:\UnrealEngine4.18\Engine\Plugins\Online\Android\OnlineSubsystemGooglePlay\Source\Public\OnlineSubsystemGooglePlay.h |
可供参考并仔细阅读:
累了, 今天不写了