Android封裝jar包,把當前專案設定成module,封裝手機振動jar包給unity呼叫
Android封裝jar包或者把當前專案設定成module操作步驟都一樣,此處以手機振動為例,封裝jar包給Unity平臺使用,具體如下:
Android部分:
1.建立unity要呼叫的手機振動的類:PhoneVibrate
package com.lin.phonevibrate; import android.app.Service; import android.content.Context; import android.os.VibrationEffect; import android.os.Vibrator; public class PhoneVibrate { public static void vibrator(Context context){ Vibrator vibrator=(Vibrator)context.getSystemService(Service.VIBRATOR_SERVICE); vibrator.vibrate(200); } public static void vibrator(Context context,int milliseconds){ Vibrator vibrator=(Vibrator)context.getSystemService(Service.VIBRATOR_SERVICE); vibrator.vibrate(milliseconds); } }
2.將當前專案修改為module,在APP下的build.gradle中將
1)apply plugin: 'com.android.application'修改為:apply plugin: 'com.android.library'
2)defaultConfig下面有個applicationId刪除,案例如下:
將上面兩個紅色箭頭表示的地方修改後繼續執行下面的操作
3.build專案以後會自動生成app-debug.aar的檔案,具體在專案下找到你的app/build/outputs/aar/app-debug.aar,然後修改.aar為zip,解壓,找到classes.jar,名字可以隨便起,這就是最終提供給其他平臺的jar包
請注意:
1.如果沒有找到outputs下的aar資料夾,那麼你需要創新build專案,點選build/make module 'app',就可以看見新生成的aar資料夾
2.如果需要許可權,記得要把AndroidManifest.xml檔案提供給unity平臺
Unity部分:
1.新建資料夾plugins,Android,bin,res四個資料夾,bin下存放新生成的jar包,res下存放AndroidManifest.xml檔案
2.呼叫:注意,上下文物件指的是Activity,必須是AndroidJavaObject context = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity"); //獲得Context
不要修改他的包名,這是unity的包名,不是自己的
需要特別注意的是:振動vibrate方法傳值的時候需要判斷版本號(Api 26),如果你傳的是VibrationEffect,那麼會出現手機不振動的情況,原因是VibrationEffect是後來出現的,直接傳值是老版本的做法。
就是這麼簡單,歡迎交流