Android提供aar包给Unity3d调用

1.aar包制作

下面通过手机振动为例:PhoneVibrate

package com.gamestar.nativesoundpool;

import android.Manifest;
import android.app.Activity;
import android.app.Service;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.VibrationEffect;
import android.os.Vibrator;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.util.Log;

/**
 * Created by jiamilin on 2018/9/10.
 */

public class PhoneVibrate {

    /**
     * 申请振动权限
     * @param activity
     */
    public static boolean  requestVibratePermission(Activity activity){
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (ContextCompat.checkSelfPermission(activity, Manifest.permission.VIBRATE) != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(activity,
                        new String[]{Manifest.permission.VIBRATE},
                        1001);
                Log.e("phonevibrate","权限未申请");
                return false;
            }else {
                Log.e("phonevibrate","权限已经申请");
                return true;
            }
        }
        return true;
    }
    public static  void vibrator(Context context){
        Vibrator vibrator=(Vibrator)context.getSystemService(Service.VIBRATOR_SERVICE);
        if (Build.VERSION.SDK_INT>25){
            /**
             * 创建一次性振动
             *
             * @param milliseconds 震动时长(ms)
             * @param amplitude 振动强度。这必须是1到255之间的值,或者DEFAULT_AMPLITUDE
             */
            VibrationEffect effect = VibrationEffect.createOneShot(20,1);
            vibrator.vibrate(effect);
        }else {
            vibrator.vibrate(20);
        }
    }
    public static void vibrator(Context context, int milliseconds){
        Vibrator vibrator=(Vibrator)context.getSystemService(Service.VIBRATOR_SERVICE);
        if (Build.VERSION.SDK_INT>25){
            /**
             * 创建一次性振动
             *
             * @param milliseconds 震动时长(ms)
             * @param amplitude 振动强度。这必须是1到255之间的值,或者DEFAULT_AMPLITUDE
             */
            VibrationEffect effect = VibrationEffect.createOneShot(milliseconds,1);
            vibrator.vibrate(effect);
        }else {
            vibrator.vibrate(milliseconds);
        }
    }

    public static void vibrator(Context context, int milliseconds, int amplitude){
        Vibrator vibrator=(Vibrator)context.getSystemService(Service.VIBRATOR_SERVICE);
        if (Build.VERSION.SDK_INT>25){
            /**
             * 创建一次性振动
             *
             * @param milliseconds 震动时长(ms)
             * @param amplitude 振动强度。这必须是1到255之间的值,或者DEFAULT_AMPLITUDE
             */
            VibrationEffect effect =null;
            if (amplitude>0 && amplitude <256){
                effect = VibrationEffect.createOneShot(milliseconds,amplitude);
            }else {
                effect = VibrationEffect.createOneShot(milliseconds,1);
            }
            vibrator.vibrate(effect);
        }else {
            vibrator.vibrate(milliseconds);
        }
    }
}

2.将当前项目修改为module,在APP下的build.gradle中将

1)apply plugin: 'com.android.application'修改为:apply plugin: 'com.android.library'

2)defaultConfig下面有个applicationId删除,案例如下:

Android提供aar包给Unity3d调用

将上面两个红色箭头表示的地方修改后继续执行下面的操作

3.build项目以后会自动生成app-debug.aar的文件,具体在项目下找到你的app/build/outputs/aar/app-debug.aar

Android提供aar包给Unity3d调用

 

2.aar包导入

unity调用Android的sdk的两种办法:1.AAR包,2.jar包+assets资源包+AndroidMainfest,但是目前已经不提倡后者,多说采用aar,aar中包括了jar包+assets资源包+AndroidMainfest等所有的资源,我们只要将aar放到unity中就可以,具体存放位置Plugins/Android/****(自定义的文件夹名称,只要能代表你aar的功能即可)/**.aar

3.aar包的调用

Android提供aar包给Unity3d调用