void onOutput(AndroidJavaObject resultMap) { if (Mibo.onOutput != null) { List <OutputData> outputDataSets = new List <OutputData>(); int count = resultMap.CallStatic <int>("getSize"); for (int i = 0; i < count; ++i) { AndroidJavaObject outputData = resultMap.CallStatic <AndroidJavaObject>("getOutputData", i); outputDataSets.Add(new OutputData( outputData.Get <int>("id"), (float)outputData.Get <long>("processTime") * .001f, outputData.Get <string>("data") )); } Mibo.onOutput(outputDataSets.ToArray()); } if (Mibo.onTrack != null) { List <TrackData> trackData = new List <TrackData>(); int count = resultMap.CallStatic <int>("getSize"); int index = 0; for (int i = 0; i < count; ++i) { AndroidJavaObject outputData = resultMap.CallStatic <AndroidJavaObject>("getOutputData", i); int t = outputData.Get <int>("id"); if (t == 4) { var tempTrackData = JsonUtility.FromJson <TrackData>(outputData.Get <string>("data")); trackData.Add(tempTrackData); index++; } } if (index == 0) { Mibo.onTrack(null); } else { Mibo.onTrack(trackData.ToArray()); } } if (Mibo.onFaceRecognize != null) { List <FaceRecognizeData> recognizeData = new List <FaceRecognizeData>(); int count = resultMap.CallStatic <int>("getSize"); Debug.Log("MiboUnity: count:" + count); for (int i = 0; i < count; ++i) { AndroidJavaObject outputData = resultMap.CallStatic <AndroidJavaObject>("getOutputData", i); int t = outputData.Get <int>("id"); Debug.Log("MiboUnity : t: " + t); { var tempRecognizeData = JsonUtility.FromJson <FaceRecognizeData>(outputData.Get <string>("data")); recognizeData.Add(tempRecognizeData); Debug.Log("MiboUnity : " + JsonUtility.ToJson(tempRecognizeData)); } } Mibo.onFaceRecognize(recognizeData.Count > 0 ? recognizeData.ToArray() : null); } }