Unity3D调用Android提供的接口
2017-05-12 14:27
330 查看
需求:Android提供相关的接口,android只提供接口,没有相关的界面,android接口打包以jar包的形式供Unity3D调用
1.编写相关的android接口
在studio中新建工程,并设置为library,编写相关的接口
ex:在Android中提供录音的接口
android中有一个service负责实现录音相关的工作,对外提供的接口是
Recorder.Java 中的两个接口 startRecordering(),stopRecordering()
编写完成之后,编译打包,生成androidplug.jar(名称随意)
[/code]
2.新建unity3d的工程,在Assets目录下,新建目录,结构如下
Plugins
|_Android
目录结构和名称不能随意更改,将第一步生成的jar包,放在Android目录下。再用unity3d生成apk时,用对应的AndroidManifest.xml模板,我们需要在AndroidManifest.xml中加入对用的service和相应的权限
将 Unity3d安装目录中,到Editor\Data\PlaybackEngines\androidplayer 目录将AndroidManifest.xml copy到unity3d工程的Assets->Plugins->Android目录下,需要在这个AndroidManifest.xml中加入android中提供的录音的服务和录音的权限
1
[/code]
android:name 请使用android工程中全部限定名
和对应的权限
2
1
2
[/code]
AndroidManifest.xml中其他内容不需要修改
3.unity3d中调用接口
[/code]
//通过实例就可以调用想用的方法,Call(“”,”“) 第一个参数是方法名,第二个参数是方法需要的参数
toastExample.Call (“startRecordering”,activityContext);
1.编写相关的android接口
在studio中新建工程,并设置为library,编写相关的接口
ex:在Android中提供录音的接口
android中有一个service负责实现录音相关的工作,对外提供的接口是
Recorder.Java 中的两个接口 startRecordering(),stopRecordering()
编写完成之后,编译打包,生成androidplug.jar(名称随意)
public class Recorder{ public Recorder(){ } public static Recorder instance() { if(instance == null) { instance = new Recorder(); } return instance; } public void startRecordering(Context context){ Log.e(TAG, "-----------plugin start recordering--------------"); RecorderService.startRecordering(context); } public void stopRecordering(Context context){ Log.e(TAG, "-----------plugin end recordering--------------"); RecorderService.stopRecordering(context); RecorderService.playerArm(context); } }
[/code]
2.新建unity3d的工程,在Assets目录下,新建目录,结构如下
Plugins
|_Android
目录结构和名称不能随意更改,将第一步生成的jar包,放在Android目录下。再用unity3d生成apk时,用对应的AndroidManifest.xml模板,我们需要在AndroidManifest.xml中加入对用的service和相应的权限
将 Unity3d安装目录中,到Editor\Data\PlaybackEngines\androidplayer 目录将AndroidManifest.xml copy到unity3d工程的Assets->Plugins->Android目录下,需要在这个AndroidManifest.xml中加入android中提供的录音的服务和录音的权限
<service android:name="com.xxx.androidpluginRecorderService"></service>1
1
[/code]
android:name 请使用android工程中全部限定名
和对应的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.RECORD_AUDIO" />1
2
1
2
[/code]
AndroidManifest.xml中其他内容不需要修改
3.unity3d中调用接口
private AndroidJavaObject toastExample = null; private AndroidJavaObject activityContext = null; void Start () { using(AndroidJavaClass activityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { activityContext = activityClass.GetStatic<AndroidJavaObject>("currentActivity"); Debug.Log("-----------UnityPlayer"); } //android中对应的类名,获得相应的类的实例 using(AndroidJavaClass pluginClass = new AndroidJavaClass("com.xxx.androidplugin.Recorder")) { Debug.Log("-----------com.xxx.androidplugin.Recorde------"); if(pluginClass != null) { Debug.Log("-----------com.xxx.androidplugin.Recorde init success------"); toastExample = pluginClass.CallStatic<AndroidJavaObject>("instance"); } } }
[/code]
//通过实例就可以调用想用的方法,Call(“”,”“) 第一个参数是方法名,第二个参数是方法需要的参数
toastExample.Call (“startRecordering”,activityContext);
相关文章推荐
- Unity3D 调用Android的提供的接口
- [Unity3D]调用Android接口
- [Unity3D]调用Android接口
- [Unity3D]调用Android接口
- Unity3D调用Android接口
- [Unity3D]调用Android接口
- javaweb 服务器 提供SOAP协议接口,android客户端调用代码实现过程
- Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(7)
- 转发:android 调用系统的接口
- Android应用开发笔记(1):调用打电话和发短信、收短信接口、发Email (Call, Dial, SMSManager, Broadcast, Email)
- Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(5)
- 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口
- android 多媒体文件 支持第三方应用的调用接口
- C# WebServices接口提供C++调用的数据包问题
- Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(2)
- Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(3)
- 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口
- 调用Android常用应用的接口
- 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口
- 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口