需求:android提供相关的接口,android只提供接口,没有相关的界面,android接口打包以jar包的形式供unity3d调用

1.编写相关的android接口
在Eclipse中新建工程,并设置为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);    }}

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>

android:name 请使用android工程中全部限定名
和对应的权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.RECORD_AUDIO" />

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("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("instance");               }          }     }

//通过实例就可以调用想用的方法,Call(“”,”“) 第一个参数是方法名,第二个参数是方法需要的参数
toastExample.Call (“startRecordering”,activityContext);

更多相关文章

  1. AndroidManifest.xml中一些权限配置
  2. 【Android】Android 代码判断是否获取ROOT权限(二)
  3. android studio 导入工程
  4. android SD卡读写权限
  5. Android软件工程师之不归路
  6. android基础入门(二)——创建android工程
  7. Android接口定义语言(AIDL)
  8. Android工程的建立与解析
  9. 【Android】Android 代码判断是否获取ROOT权限(一)

随机推荐

  1. android:第二个anroid项目 电话拨号器
  2. android在.java中手写布局
  3. Android(安卓)4.4 KitKat NotificationMa
  4. 第一部分:如何在iOS和Android上选择一个J
  5. Android SharePreferences源码解析
  6. Android 开发 之 折叠布局(CollapsingTool
  7. 网页 Android(安卓)套壳
  8. 20180505_android传感器种类及获取
  9. 【Android】Navigation实现页面跳转
  10. android2.2中默认浏览器无法使用手势放大