如何在Unity中调用Android的JAVA代码

如何在Unity中调用Android的JAVA代码,第1张

方法/步骤

1

首先要创建一个android项目

步骤阅读

2

因为项目需要使用Unity提供的接口,所以需要将接口classes.jar引入至当前工程但中。接口包的所在地,打开Finder->应用程序->Unity->点击Unity图标,鼠标右键选择“显示包内容”->Contents->PlaybackEngines->AndroidPlayer->bin->classes.jar

。接口包引入工程后,开始编写JAVA代码。

3

UnityTestActivity是主Activity,Unity程序一起动就会调用这个Activity,这是在AndroidManifest.xml中配置的。需要继承UnityPlayerActivity,就是刚刚引入的classes.jar包中提供的接口类。UnityTestActivity对外提供了两个方法接口,StartActivity0(String

name) 方法与StartActivity1(String

name)方法,这两个方法是在Unity中使用C#脚本调用的,意思是调用后程序将打开一个新的Activity,参数name也是由C#脚本传递过来的,接着将传递的String参数继续传递给新打开的Activity。

步骤阅读

4

接下来就是设置xml文件和布局文件了。对于会android编程的同学就很熟悉了。

5

把写好的java代码发布成jar包。接下来就创建unity工程,Unity工程中文件夹的结构如下,Plugins->Android的名称不能修改,必需保持一致。接着把Eclipse中Android的工程文件拷贝至这里,除了Android工程中的src文件夹,将其余文件夹全部拷贝至Plugins->Android文件夹中。最后在Plugins->Android文件夹中创建bin文件夹,然后将刚刚生成的.jar文件拷贝进来,jar的名称可以随便修改,但是jar包里面必须是com->xys->class文件,否则运行程序后提示找不到类文件。

步骤阅读

6

接下来就是如何在C#中调用android的方法的代码了。

加入如下代码。

AndroidJavaClass jc = new

AndroidJavaClass("com.unity3d.player.UnityPlayer")

AndroidJavaObject jo =

jc.GetStatic<AndroidJavaObject>("currentActivity")

jo.Call("StartActivity0","第一个Activity")

先得到AndroidJavaClass,然后得到AndroidjavaObject就是当前Activity的对象,也就是在上面创建的主UnityTestActivity.JAVA。拿到对象后调用jo.Call()参数1表示调用UnityTestActivity.JAVA类中的方法名称,参数2表示该方法传递过去的参数。如下所示:“第一个Activity”与“第二个Activit”就是在C#中传递过去的字符串。

7

发布成android平台apk

需要完成一个提供三个功能的模块:

1、设定X秒后显示一条推送通知;

2、设定X秒后显示一条通知,之后每天再显示一次;

3、清除本应用的所有推送。

开始:

1、  创建jar包工程

创建的时候要引入两个第三方jar包。

一个是Unity的包,地址: Unity安装目录\Editor\Data\PlaybackEngines\androidplayer\release\bin\classes.jar(貌似4.x的目录和5.x不太一样,但总之就是找到androidplayer里面的classes.jar)

还有一个是安卓SDK的包,地址: 安卓SDK安装目录\platforms\安卓版本\android.jar

2、  编码

思路就是使用AlarmManager服务,在一定时间后发起广播,然后通过接收器接受展示。如果你做过安卓开发,对这段代码肯定不会陌生。如果没做过也没关系,当成一个黑盒,在需要的时候调接口就行。

首先添加一个Java类,注意父类要设为BroadcastReceiver。

添加完成后,就可以开始写了:

3、  导出jar包

在项目上右键——Export,导出为jar格式。

4、添加AndroidManifest.xml

安卓应用中如果要让应用收到广播,还需要在AndroidManifest.xml中加入receiver标签。我们创建的项目是一个Java项目,不会自动生成AndroidManifest,所以需要手动写一个:

● 注意“<action android:name="UNITY_NOTIFICATOR" />”这里名字要和前面Java代码中的一致。

5、  在U3D项目中调用

创建一个新的U3D项目,在界面上放一个Text和两个Button:

然后将导出的jar文件和AndroidManifest.xml文件移动到 U3D项目目录\Assets\Plugins\Android下:

在几个UI的父节点上加一个脚本,内容如下:

● 注意实例化AndroidJavaObject的参数名字要和Java工程的包名类名一致。

然后绑定控件和事件方法。绑定好后先编译一下,如果通过了,就可以导出一个apk包了。将这个包安装到安卓设备上。手头没有安卓设备,就用模拟器来测试:

点击“Show”按钮,10秒后会收到通知(点击后可将应用至后台,或杀掉),而点击“Clean”按钮,通知都会被清除,至此,这个通知插件就完成了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11462093.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存