最近公司有一个接了我们YOUMEsdk的客户想要实现在通话模式下 手机的音量键能控制媒体音量和通话音量大小。开始想,这个简单 已经有大佬把相关的方法发出来了https://github.com/fishg/wiki/blob/master/Unity%20Android%E9%80%9A%E8%AF%9D%E6%A8%A1%E5%BC%8F%E9%9F%B3%E9%87%8F%E8%B0%83%E6%95%B4%E4%BC%98%E5%8C%96%E6%96%B9%E6%B3%95.md 就是这个!
我们u3d项目怎么使用这个方法列,拿我的unity5.6的版本来说, 第一步:首先我们要把项目打包成andorid studio 项目 如下图
我们在里面添加对应的代码(https://github.com/fishg/wiki/blob/master/Unity%20Android%E9%80%9A%E8%AF%9D%E6%A8%A1%E5%BC%8F%E9%9F%B3%E9%87%8F%E8%B0%83%E6%95%B4%E4%BC%98%E5%8C%96%E6%96%B9%E6%B3%95.md) 就是括号里面的 当然我们要验证效果肯定要加点自己的打印(Debug模式图片太多)
if(audioMgr!=null &&audioMgr.getMode() == AudioManager.MODE_IN_COMMUNICATION)
当是通话模式的时候,进入switch的判断 ,说到这里项目权限里面必须有<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 这个权限。不然无法通过该判断
,好了我们在直接andorid studio 里面运行项目
下面开始附上demo 链接(https://download.csdn.net/download/qq_36317216/10963480)
但是如果想直接在u3d里面打包,不想在android studio里面打包 可不可以实现同样的效果? 答案是可以的。就是有点麻烦
首先我们得找到我们unity路径里面的classes.jar包,不同的打包设置 不同的位置的classes.jar包(https://blog.csdn.net/u012322710/article/details/52790506),我是Editor\Data\PlaybackEngines\androidplayer\Variations\mono\Release\Classes\ 这个目录下的
流程参考这个(https://blog.csdn.net/unity_http/article/details/79929454)
我们照着做一遍 开始一路下一步
点击完成,开始修改
出现报错
然后修改报错
如下图,把最开始的代码添加进去
(https://github.com/fishg/wiki/blob/master/Unity%20Android%E9%80%9A%E8%AF%9D%E6%A8%A1%E5%BC%8F%E9%9F%B3%E9%87%8F%E8%B0%83%E6%95%B4%E4%BC%98%E5%8C%96%E6%96%B9%E6%B3%95.md)
去修改
试试这个(https://blog.csdn.net/weiyu1992/article/details/54098063)还是没啥用
找到这个(https://www.cnblogs.com/McCa/p/4415930.html) 发现错误了
找到了这2个(https://blog.csdn.net/qq_28325423/article/details/80636310,https://blog.csdn.net/u013474104/article/details/62445309) 原来我android studio没有配置ndk路径
参考这个(https://blog.csdn.net/mingyueyixi/article/details/64648867)
原来设置是保存在local.properties里面啊 ,那简单直接直接找到项目里面的这个文件
查看了一个文档(http://unclechen.github.io/2015/10/25/Gradle%E5%AE%9E%E8%B7%B5%E4%B9%8B%E6%89%93%E5%8C%85jar+Log%E5%BC%80%E5%85%B3%E8%87%AA%E5%8A%A8%E5%85%B3%E9%97%AD/)
使用指令gradlew assembleRelease 生成对应的release 的jar包
然后我们把Android studio 通过assembleRelease指令生成的release模式下的classes.jar包(我这里是default文件夹 可能你们的是release文件夹反正都是一个东西)然后把它给改名换成我们需要改成的名字 我这里是改成AndroidPlugin.jar
好了最后一步了
把安卓项目的module的包名 还有脚本引用包名 unity工程的包名 和androidstudiomainfest.xml里面的包名 都改成了com.youme.talk 然后在unity里面打包成功 。最后附上项目代码 (untiy5.6 ,android studio 3.2.1)(https://download.csdn.net/download/qq_36317216/10965206)
最终总结,站在一堆巨人的肩上还弄了这么麻烦,果然学海无涯。