美文网首页
Unity 如何实现监听手机音量按钮来调节媒体音乐音量和通话音量

Unity 如何实现监听手机音量按钮来调节媒体音乐音量和通话音量

作者: dark黑黑 | 来源:发表于2019-02-19 16:53 被阅读0次

最近公司有一个接了我们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 项目  如下图

导出成功后就可以看到一个android studio的项目结构了,我的是这样的 然后我们使用android studio打开这个项目,as的版本是3.2.1的 然后报错这个  我们打开Gradle Scripts里面的build.gradle  我们修改一下gradle的版本 选择不要在提醒我  不要更新。等项目加载完毕后  我们找到代码的需要修改的地方 它就是我们u3d项目的主activity了

我们在里面添加对应的代码(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 里面运行项目 

点击Debug模式运行   看下是否有像我们想的那样 到了这里,标题的问题已经实现了 并且结束了.

下面开始附上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\  这个目录下的

然后我们复制它,然后使用Android Studio重新创建一个空项目

流程参考这个(https://blog.csdn.net/unity_http/article/details/79929454)

我们照着做一遍  开始一路下一步

然后开始重点的了 创建一个module  下一步 这个是sdk带的Androidmainfest.xml 在打apk的时候会被导入apk里面 (具体干嘛 百度一下吧 ,技术比较菜讲不透)

点击完成,开始修改

然后点击右上角的更新同步 

出现报错

点击Open File ,指向了下面这张图 原因(https://www.jianshu.com/p/341744b98aaf   ,    https://www.jianshu.com/p/f34c179bc9d0)

然后修改报错

然后出现新的报错  出现新的报错(https://blog.csdn.net/fredro/article/details/78618044  参考) 然后到了最后一步 然后等待项目同步加载更新完毕后,开始下一步 加载完毕后,我们创建一个java脚本 然后创建好后 我们让它集成我们的UnityPlayerActivity

如下图,把最开始的代码添加进去

(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)

一阵等待后  重新更新好项目后继续生成jar包 https://stackoverflow.com/questions/4401396/could-not-reserve-enough-space-for-object-heap 答案在这里  

去修改

继续查找错误原因去

试试这个(https://blog.csdn.net/weiyu1992/article/details/54098063)还是没啥用 

找到这个(https://www.cnblogs.com/McCa/p/4415930.html)  发现错误了

继续编译 查看这个(https://blog.csdn.net/u014538198/article/details/80567776) 构建成功,但是没有生成我们要生成的jar包,日志往上翻 发现 了问题 还是生成失败,找不到ndk的目录   奇怪我配置了ndk_home的  为啥找不到ndk列  继续搜索,

找到了这2个(https://blog.csdn.net/qq_28325423/article/details/80636310,https://blog.csdn.net/u013474104/article/details/62445309) 原来我android studio没有配置ndk路径 

果然没有NDK,好说配置一下吧 然后设置了 没有保存 什么鬼 

   参考这个(https://blog.csdn.net/mingyueyixi/article/details/64648867)

原来设置是保存在local.properties里面啊 ,那简单直接直接找到项目里面的这个文件

保存好后  继续,依然错误,可能是项目还没有构建  我们构建一下 失败报错,嗯 应该是哪里出现了问题我们去排查一下,看下我们的生成的jar包指令 需要的主要文件都不存在下面的指令都是白扯

查看了一个文档(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/)

当然 他只是说了一个方向,我们就是想把module里面的java代码转换成对应的classes.jar然后在改一下名字 在给Unity使用 所以 我们先生成这个module对应的java代码对应的jar包

使用指令gradlew  assembleRelease  生成对应的release 的jar包

或者使用右边的gradle一样(https://blog.csdn.net/wenwins/article/details/80388361)

然后我们把Android studio 通过assembleRelease指令生成的release模式下的classes.jar包(我这里是default文件夹 可能你们的是release文件夹反正都是一个东西)然后把它给改名换成我们需要改成的名字 我这里是改成AndroidPlugin.jar  

好了最后一步了

都对应修改后 开始在unity打包 好吧 滚回去修改包名= =  android studio项目一样要修改,怎么修改就懒得写了 反正一顿操作 

把安卓项目的module的包名 还有脚本引用包名 unity工程的包名 和androidstudiomainfest.xml里面的包名 都改成了com.youme.talk   然后在unity里面打包成功 。最后附上项目代码 (untiy5.6 ,android studio 3.2.1)(https://download.csdn.net/download/qq_36317216/10965206)

最终总结,站在一堆巨人的肩上还弄了这么麻烦,果然学海无涯。

相关文章

网友评论

      本文标题:Unity 如何实现监听手机音量按钮来调节媒体音乐音量和通话音量

      本文链接:https://www.haomeiwen.com/subject/fmwugxtx.html