A collection of methods for Unity-Android Plugin development simplification. The library is production ready and used in the following Unity Asset Store products:
These scripts are intended to be added as a submodule
git submodule add git@github.com:TarasOsiris/Unity-Android-JNI-Toolkit.git unity-proj/Assets/Scripts/JNI-Toolkit/
But you might as well can just copy the contents of the Scripts folder over to your project
The functionality consists of lots of small granular methods that are intended to reduce the amount of boilerplate code written when using Unity JNI API.
- Acessing the Unity Activity. The object is lazy initialized and cached:
_printHelper = new AndroidJavaObject(C.AndroidPrintHelper, AGUtils.Activity);Lot's of the Android methods take Context object as a parameter, so you can pass AGUtils.Activity as Activity extends Context in Android
- Shortcut methods to avoid passing a type parameter all the time, also helps with autocomplete.
Some example code snippets:
var key = iterator.CallStr("next"); // same as iterator.Call<string>("next")var result = new WifiInfo
{
BSSID = wifiInfoAJO.CallStr("getBSSID"),
SSID = wifiInfoAJO.CallStr("getSSID"),
MacAddress = wifiInfoAJO.CallStr("getMacAddress"),
LinkSpeed = wifiInfoAJO.CallInt("getLinkSpeed"),
NetworkId = wifiInfoAJO.CallInt("getNetworkId"),
IpAddress = wifiInfoAJO.CallInt("getIpAddress"),
Rssi = wifiInfoAJO.CallInt("getRssi")
};- Safe null checking
if (networkInfo.IsJavaNull())
{
return false;
}- Calling mthods on the main (UI) thread
_ajo.MainThreadCall("remove");- Get various AJOs and other things
Like ActivityDecorView, PackageManager, ContentResolver etc. Check system features with HasSystemFeature method. Get current time in millis CurrentTimeMillis etc.
- Cast
AndroidJavaObjectto the class:
static AndroidJavaObject GetSystemService(string name, string serviceClass)
{
try
{
var serviceObj = AGUtils.Activity.CallAJO("getSystemService", name);
return serviceObj.Cast(serviceClass);
}
catch (Exception e)
{
if (Debug.isDebugBuild)
{
Debug.LogWarning("Failed to get " + name + " service. Error: " + e.Message);
}
return null;
}
}