Unity与Android交互之AndroidJavaProxy

2017-10-19  本文已影响0人  养渔人

前言:因为工作的需要,要在Unity中调用Jar包,这篇文章会持续更新,欢迎吐槽,接受留言,一起进步!

Unity 调用Jar中的接口

首先,在Java代码中定义接口,示例代码如下:

public  interface SDKCallbackListener
{
    void OnSDKInited(String msg);
    void OnAuthSuccess(String token);
    void OnCreatedLive(String url);
    void OnDeletedLive(String id);
}

其次,在Unity 工程C#代码中,实现该接口

注意:Unity C#代码实现Android Java 代码必须要完全一致,但是允许在UnityC#代码中实现多次

class SDKCallbackListener : AndroidJavaProxy
{
        // 这句话很重要!!!C#找到Jar中接口的引用
        public SDKCallbackListener() : base("com.unitynative.weibounitysdk.SDKCallbackListener") { }

        public void OnSDKInited(string msg)
        {
            ATrace.Log( "OnSDKInited:" + msg);
        }
        public void OnAuthSuccess(string token)
        {
            ATrace.Log("OnAuthSuccess:" + token);
        }
        public void OnCreatedLive(string url)
        {
            ATrace.Log("OnCreatedLive:" + url);
        }
        public void OnDeletedLive(string id)
        {
            ATrace.Log("OnDeletedLive:" + id);
        }
}

然后,在C#中new一个SDKCallbackListener,并把new好的值传到Java代码中

Unity 中C#代码,为了完成交互工作

mCallbackListener = new SDKCallbackListener();
// 调用Jar中的方法,并把new的值传进去
 mSDKJavaObject.Call("initSDK", mCallbackListener);

最后,在Java代码中调用接口中的方法就好了

Java 代码,开始使用解开了

private  SDKCallbackListener mCallbackListener;
public  void initSDK(SDKCallbackListener listener)
{
        mCallbackListener = listener;
        mCallbackListener.OnSDKInited("Weibo initSDK ok");
}
  

参考文档:

上一篇 下一篇

猜你喜欢

热点阅读