• Andriod Unity 调用android函数


    //首先这是一个前沿

    //我看了多的资料,还看了近半个小时的 android activity 的讲解

    终于打出了apk

    //接下来开始

    //一步一步的跟着我走

    1.创建一个android项目或者一个modudle 其项目类型为android library !android library ! android library !

    2.包名可以是你的unity包名,也可以不是,反正放到unity需要查看那个 .xml 你的package

    3.把 C:Program FilesUnityEditorDataPlaybackEnginesAndroidPlayerVariationsmonoReleaseClasses 中的class.jar

    复制到你的android项目中的libs文件中

    4.鼠标点击libs里的那个包并右键 -> Add as library //作用是添加此包的依赖

    5.由于module类型为android library 所以没有主类文件和activity这个东东 所以没有主类文件和activity这个东东 所以没有主类文件和activity这个东东

    重要的我说三遍

    6.接下来创建一个主类,你可以自定义类名字,但最好跟着哥哥走

    MainActivity.java

    package com.aprivate.lib;
    import android.app.Service;
    import android.os.Bundle;
    import android.os.Vibrator;
    import  com.unity3d.player.UnityPlayerActivity;
    
    public class MainActivity extends UnityPlayerActivity
    {
    
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            //    setContentView(R.layout.activity_main);
        }
    
        public void OnAndroidVibrate(String str)
        {
            Vibrator m_vibrator = (Vibrator) getApplication().getSystemService(Service.VIBRATOR_SERVICE);
            m_vibrator.vibrate(10000);
        }
    
    }

    7.不要问为什么,这个功能是点击按钮手机震动

    8.m_vibrator.vibrate(10000); 是要手机震动权限的 所以

    // 再AndroidManifest.XML 中加入 <uses-permission android:name="android.permission.VIBRATE" />

    // 不知道加再哪里的眼睛看过来

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.aprivate.lib" >
    
        <uses-permission android:name="android.permission.VIBRATE" />
        <application
            android:allowBackup = "true"
            android:label = "lib">
            <activity android:name=".MainActivity" android:label="lib">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    </manifest>

    9.接下来搞得差不多了 请注意上面这个xml ,是有

    <activity android:name=".MainActivity" android:label="lib">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>

    10.因为unity调用android时两个Activity 不要问为什么,i not no;

    11.然后点击android studio 菜单栏中的 build -> make modudle '????'

    12.unity 要有这个路径 AssetsPluginsAndroid 没有的create

    13.将build/outputs/arr/中的arr(用解压工具)中的libs 和 res 和 androidManifest.xml 和 classes.jar 复制到 unity AssetsPluginsAndroid 路径下

    14.将外面大概2.0k 的 classes.jar  替换 libs中的.jar

    15.至此 工程完成

    16.写调用android中的函数

            AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
            if (jo != null)
            {
                m_text.text = "jo 不为null";
    
                jo.Call("OnAndroidVibrate", "12131");
    
    
            }
            else
            {
                m_text.text = "jo 为null";
            }

    17. 我的测试成功 而且xml中的package 中的包和我unity中的包时不对应的

    18.我的android library 的api等级要小于我的unity中的api等级

    unity中的为 4.1 level 16

    android中的则为 4.0

    19 android 中的SDK 和 untiy 用的SDK时同一个

    20. 如有不懂或者出错的 请评论

  • 相关阅读:
    explicit构造函数
    Windows内核编程之:结构化异常处理
    驱动对象DRIVER_OBJECT
    Windows内核编程之:内存管理
    Windows内核编程之:链表
    Windows内核编程之:返回状态值
    设备对象DEVICE_OBJECT
    数据恢复
    Windows内核编程之:数据类型
    Windows内核编程之:检查内存的可用性
  • 原文地址:https://www.cnblogs.com/YZFHKMS-X/p/11862586.html
Copyright © 2020-2023  润新知