public static void StartListening()
        {
#if !UNITY_EDITOR
            var intent = CreateIntent();

            AndroidUtils.RunOnUiThread(() => {
                speechRecognizerInstance.Call("startListening", intent);
            });
#else
            Debug.Log("start listening is ignored on Editor");
#endif
        }
        public static void Construct(BaseRecognitionListenerProxy listenerProxy)
        {
#if !UNITY_EDITOR
            AndroidUtils.RunOnUiThread(() => {
                activityContext       = AndroidUtils.GetActivityContext();
                speechRecognizerClass = new AndroidJavaClass("android.speech.SpeechRecognizer");

                if (!speechRecognizerClass.CallStatic <bool>("isRecognitionAvailable", activityContext))
                {
                    UnityLooper.Enqueue(() => {
                        Debug.LogError("AndroidSpeechRecognizer: Recognition is not available");
                    });
                    return;
                }

                speechRecognizerInstance = speechRecognizerClass.CallStatic <AndroidJavaObject>("createSpeechRecognizer", activityContext);
                if (speechRecognizerInstance == null)
                {
                    UnityLooper.Enqueue(() => {
                        Debug.LogError("AndroidSpeechRecognizer: Recognition is not available");
                    });
                    return;
                }

                speechRecognizerInstance.Call("setRecognitionListener", listenerProxy);

                UnityLooper.Enqueue(() => {
                    Debug.Log("android speech recognizer constructed");
                });

                constructed = true;
            });
#else
            Debug.Log("skipping initialization of Android Speech Recognizer on Editor");
#endif
        }