[Unity3D]调用Android接口

简介: 简介 有一些手机功能,Unity没有提供相应的接口,例如震动,例如不锁屏,例如GPS,例如... 有太多的特殊功能Unity都没有提供接口,这时候,我们就需要通过使用Android原生的ADT编辑器去编写Java代码,然后打包jar导入到Unity工程,然后通过Unity提供的调用Android接口的函数去调用jar包中的函数即可。

简介

有一些手机功能,Unity没有提供相应的接口,例如震动,例如不锁屏,例如GPS,例如...

有太多的特殊功能Unity都没有提供接口,这时候,我们就需要通过使用Android原生的ADT编辑器去编写Java代码,然后打包jar导入到Unity工程,然后通过Unity提供的调用Android接口的函数去调用jar包中的函数即可。

这里我们就介绍一下使用Unity实现手机震动效果



实现内容简要说明:

1.     Android提供jar文件,xml文件,res目录,libs目录

2.     通过AndroidJavaClass去调用Android函数

 

另外,这些功能只能在真机上运行!

 

具体实现:

Android部分

1.下载AndroidSDK(需要包含ADT编辑器的)

官方下载连接:http://developer.android.com/sdk/index.html

 

 

2      创建Android项目

菜单位置:File ->New->Android Application Project

创建过程中,只有一下这个界面的内容需要更改,其他的使用默认的就行

 

         生成后解决方案的目录如图

         

         其中MainActivity就是我们需要编辑的java文件了

 

3.     导入Unity相关jar

Jar目录:unity的安装路径\Editor\Data\PlaybackEngines\androidplayer\bin下的classes.jar

通过AddExternalArchives添加,如图:

 

4.     导入jar后,就可以开始编辑相关的函数了,打开MainActivity

添加unityActivity,使MainActivity继承UnityPlayerActivity,并把SetContentView函数删掉(不然到手机上启动程序的时候就会只看到一句HelloWorld),这里用一个比较函数Max作为例子,有参数,有返回值

5.     到这里,需要的函数已经写完,再修改一下xml文件

Xml文件在工程文件目录下,叫AndroidManifest.xml

6.     接下来到处jar包

点击Export后选择Java目录下的Jar file,选择好路径之后按默认选项去到处jar文件即可

 

7.     到这里Android部分结束了

 

Unity部分

1.     设置PlayerSetting,要与Android的package对应上

2.     在Assets目录下添加Plugins\Android目录,把Android的jar文件,res文件夹,libs文件夹,xml文件放入该目录

3.     调用相关函数

(注:初步了解这里的参数之所以填”com.unity3d.player.UnityPlayer”和”currentActivity”,是因为在生成jar文件的时候,已经指定了MainActivityclass继承UnityPlayerActivity,也在XML指定了MainActivity是Main class)

相关文章
|
数据采集 开发工具 图形学
Android平台实现Unity3D下RTMP推送
像Unity3D下的RTMP或RTSP播放器一样,好多开发者苦于在Unity环境下,如何高效率低延迟的把数据采集并编码实时推送到流媒体服务器,实现Unity场景下的低延迟推拉流方案。
152 0
|
API Android开发 图形学
【Unity3D】Android App Bundle(aab)打包上架Google Play介绍
总体说来,Android App Bundle打包有3种方式,每种方式都有成功上架Google Play进行测试通过,因此实用程度还是挺高的。能够理解以下内容的前提是会打apk包,知道如何生成Asset Bundle文件,这块内容可以参考我的上一篇文章。
1263 0
【Unity3D】Android App Bundle(aab)打包上架Google Play介绍
|
开发工具 图形学 Android开发
Windows/Android/IOS平台如何在Unity3d播放RTSP/RTMP流
如果基于Unity3d完全重新开发一个播放器,代价大,周期长,不适合快速出产品,最好的方式就是集成现有Native平台上成熟稳定播放器.
137 1
|
Java Android开发 图形学
Unity3D与Android的交互通信(Unity3D)
这篇文章主要讲的是如何使用Android Studio与Unity的交互通信。主要内容有如何在Android Studio创建工程,如何设置,以及如何导出。以及在Unity调用Android的方法。
|
API Android开发 图形学
【Unity3D】Bundle打包及加载流程Android篇
生成Bundle文件主要是如何对资源进行设置Bundle名及其分类的过程。目前有两种方式,第一种就是在编辑器里面设置每个资源的Bundle名称(如图1),这是最简单直观的操作方式;另一种方式就是通过编写代码并配合资源配置文件进行控制,先通过代码遍历项目工程的资源然后根据资源配置设置其Bundle名称,也可以暴力的按照资源类型进行分类,由于不同项目的控制方式不同,因此就不过多介绍。
634 0
【Unity3D】Bundle打包及加载流程Android篇
|
API 开发工具 Android开发
SMSSDK的Unity3D的两种集成方式-Android
SMSSDK的Unity3D插件主要为用户提供了两种集成的方式:一种是通过桥接文件直接调用SMSSDK的原生API,另外一种是使用SMSSDKGUI中的UI。这两种方式的集成,方便用户按需选择。在进行集成之前,需要到Mob官网获取使用的appKey和appSerect。
1151 0
|
图形学 Android开发
基于Unity3d 引擎的Android游戏优化(续)
VSync Count 垂直同步 中新建一个场景空的时候,帧速率(FPS总是很低),大概在60~70之间。一直不太明白是怎么回事,现在基本上明白了。我在这里解释一下原因,如有错误,欢迎指正。在Unity3D中当运行场景打开Profiler的时候,我们会看到VSync 这一项占了很大的比重。
1464 0
|
Java C# Android开发
基于Unity3d 引擎的Android游戏优化
更新不透明贴图的压缩格式为ETC 4bit,因为android市场的手机中的GPU有多种,每家的GPU支持不同的压缩格式,但他们都兼容ETC格式, 对于透明贴图,我们只能选择RGBA 16bit 或者RGBA 32bit。
1931 0
|
Java Android开发 图形学
Android项目实战(三十九):Android集成Unity3D项目(图文详解)
原文:Android项目实战(三十九):Android集成Unity3D项目(图文详解)   需求:   Unity3D 一般用于做游戏 而且是跨平台的。原本设计是Android 应用端A(原生开发)进行一些业务处理,最后由A 打开Android 应用端B(Unity3D 游戏开发)进行游戏操作。
1571 0
|
Java 开发工具 Android开发
unity3d配置Android环境,打包发布Apk流程详解
Unity配置Android环境,打包发布安卓流程 一:SDK与JDK下载地址:http://pan.baidu.com/s/1mhVaXHe 下载完成后,解压文件 SDK文件 **二、安装 JDK ** 运行安装程序jdk-7u67-windows-x64 Java-JDK 分别点击下一步进行安装。
1495 0