美文网首页unity3D技术分享
六、安卓开发与Unity——04、安卓发送消息给Unity(回调

六、安卓开发与Unity——04、安卓发送消息给Unity(回调

作者: GameObjectLgy | 来源:发表于2020-08-18 09:31 被阅读0次

用到的是 AndroidJavaProxy 这个类

public interface ExActivityListener 
{
    public void onRestart();
    public void onStart();
    public void onResume();
    public void onPause();
    public void onStop();
    public void onActivityResult(int requestCode, int resultCode, Intent data);
    public void onTest();
}
public class MainActivity extends UnityPlayerActivity 
{
    @Override
         protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
    }
    private ExActivityListener listener;
    public void setListener(ExActivityListener listener) 
    {
        Log.v("Unity", "setListener(1)!------------");
        this.listener = listener;
    }
    @Override
         public void onRestart() 
    {
        Log.v("Unity", "onRestart!------------");
        super.onRestart();
        if(listener != null) listener.onRestart();
    }
    @Override
         public void onStart() 
    {
        super.onStart();
        if(listener != null) listener.onStart();
    }
    @Override
         public void onResume() 
    {
        super.onResume();
        if(listener != null) listener.onResume();
    }
    @Override
         public void onPause() 
    {
        super.onPause();
        if(listener != null) listener.onPause();
    }
    @Override
         public void onStop() 
    {
        if(listener != null) listener.onStop();
        super.onStop();
    }
    public void onTest() 
    {
        if(listener != null) listener.onTest();
        super.onStop();
    }
    @Override
         public void onActivityResult(int requestCode, int resultCode, Intent data) 
    {
        if(listener != null) listener.onActivityResult(requestCode, resultCode, data);
    }
    public String test() 
    {
        Log.v("测试","成功");
        onTest();
        return "测试成功";
    }
}

Unity代码

public class ActivityListener : AndroidJavaProxy
    {
        public ActivityListener() : base("com.test.mytest.ExActivityListener")
        {
        }

        public void onRestart()
        {
            UnityEngine.Debug.LogError("Back to Unity onRestart");
        }

        public void onStart()
        {
            UnityEngine.Debug.LogError("Back to Unity onStart");
        }

        public void onResume()
        {
            UnityEngine.Debug.LogError("Back to Unity onResume");
        }

        public void onPause()
        {
            UnityEngine.Debug.LogError("Back to Unity onPause");
        }

        public void onStop()
        {
            UnityEngine.Debug.LogError("Back to Unity onStop");
        }

        public void onActivityResult(int requestCode, int resultCode, AndroidJavaObject data)
        {
            UnityEngine.Debug.LogError("onActivityResult");
        }
        public void onTest()
        {
            UnityEngine.Debug.LogError("Back to Unity OnTest");
        }
    }

    void Awake()
    {
        AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
        activity.Call("setListener", new ActivityListener());
        UnityEngine.Debug.LogError("Awake");
    }

    void Start()
    {
        AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
        string value2 = activity.Call<string>("test");
        Debug.Log (value2);

    }
}

相关文章

网友评论

    本文标题:六、安卓开发与Unity——04、安卓发送消息给Unity(回调

    本文链接:https://www.haomeiwen.com/subject/dyixjktx.html