AR移动应用开发(三) Unity与Android的Back键冲突解决
来源:互联网 发布:中国家居建材 知乎 编辑:程序博客网 时间:2024/06/14 21:30
AR移动应用开发(三) Unity与Android的Back键冲突解决
上一篇的最后留下了两个问题
- Unity视图下横屏闪退
- Unity视图下Android无法响应back返回上一activity
对于第一个问题,应该是Unity横屏下视图的某些设置跟Android那边xml的屏幕横屏配置有冲突引起的。根据老师的提醒,在manifest的Unity视图的activity子节下加入了
android:configChanges="keyboardHidden|orientation|screenSize"修改后的xml的部分内容:<activity android:name=".MainActivity_unity" android:configChanges="keyboardHidden|orientation|screenSize" />
问题就解决了。
下面着重来解决Unity与Android的Back键冲突的问题。
这问题在网上也能搜到很多的解决方法。大部分都是从android端入手的。其实既然现在的状况是Unity能响应到Back键而Android端不能响应。 那么也就是可以通过从Unity端入手,为Unity写一个Back键的响应事件不就行了吗
我们在Unity端生成一个脚本,写上以下代码,挂在EasyAR_startUp上
void Update () { if(Input.GetKey(KeyCode.Escape)) { Application.Quit(); } }
然后按上次的步骤导入到android工程当中。结果这次Unity视图是退出了。但是整一个app都退出了。达不到只退回上一个activity的效果。
这样,不妨试试让Unity回调Android的函数。
代码脚本如下:
void Update () { if(Input.GetKey(KeyCode.Escape)) { AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"); jo.Call("onBackPressed"); } }
我们这里让UnityPlayer回调 onBackPressed这一个函数。
于是我们把Unity重新生成一个android工程。
既然我们回调的UnityPlayer所在的 activity中的onBackPress函数,这样我们就在UnityPlayerNativeActivity重写一个onBackPress函数。
@Override public void onBackPressed(){ runOnUiThread(new Runnable() { @Override public void run() { mUnityPlayer.quit(); } }); super.onBackPressed(); }
参考内容:
http://www.ithao123.cn/content-10465610.html
加上这句话后,虽然可以退出,但是却会提示错误。经过一轮找资料之后,猜测可能是进程相关的问题。所以尝试着给Unity的activity的xml加上
android:process="e.unity"就是完整的内容是:<activity android:name=".MainActivity_unity" android:process="e.unity" android:configChanges="keyboardHidden|orientation|screenSize" />
就解决问题了
阅读全文
1 0
- AR移动应用开发(三) Unity与Android的Back键冲突解决
- AR移动应用开发(一) Unity与EasyAR
- AR移动应用开发(二) Unity工程嵌入Android
- 基于 vuforia + unity + android studio 的AR开发(1)
- 基于 vuforia + unity + android studio 的AR开发(2)
- 基于EasyAR的Android端AR应用开发(三)---模型的旋转、缩放、平移
- 使用高通公司的Vuforia SDK搭建Android版移动AR应用开发环境
- (10)unity入门,unity的应用VR、AR
- 基于EasyAR的Android端AR应用开发(一)
- Android View深入解析(三)滑动冲突与解决
- 解决android 单击事件和移动事件的冲突
- unity+高通vuforia开发增强现实(AR)教程(三) (勘误)
- unity+高通vuforia开发增强现实(AR)教程(三)
- unity+高通vuforia开发增强现实(AR)教程(三)
- 基于EasyAR的Android端AR应用开发(二)----脱卡
- Ar Unity for Android(一)
- 基于 vuforia + unity + android studio 的AR开发中遇到的问题
- vuforia结合unity3d开发AR的androidAPP总结(三)
- 汇编语言常用指令
- Android多线程----异步消息处理机制之Handler详解
- 一周入门Kotlin(三)
- IMWeb提升营Day4 | 训练题19:顺时针打印矩阵
- bzoj1770[Usaco2009 Nov]lights 燈 高斯消元
- AR移动应用开发(三) Unity与Android的Back键冲突解决
- SpringMVC学习笔记(六):如何返回数据
- Ubuntu16.04安装IntelCaffe(根据官方文档)
- 不需要额外空间的交换函数的弊端
- mybatis-映射器-insert元素,update,delete元素
- 【VBA】单元格合并思路
- 为什么要配置环境变量?
- Ubuntu 16.04/14.04安装SS与Chrome
- 人机大战第三局,柯洁中盘认输意义何在?