正在查看: CAARD v1.1.19 应用的 q.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: CAARD v1.1.19 应用的 q.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package l2;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothHeadset;
import android.bluetooth.BluetoothProfile;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.speech.RecognitionListener;
import android.speech.RecognitionSupport;
import android.speech.RecognitionSupportCallback;
import android.speech.RecognizerIntent;
import android.speech.SpeechRecognizer;
import android.util.Log;
import cc.z;
import ha.a;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import java.util.concurrent.Executors;
import kotlin.Metadata;
import org.json.JSONArray;
import org.json.JSONObject;
import pa.j;
@Metadata(d1 = {"\u0000æ\u0001\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000b\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\b\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u000e\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010\t\n\u0002\b\u0004\n\u0002\u0010\u0007\n\u0002\b\u0004\n\u0002\u0010\u0006\n\u0002\b\u0002\n\u0002\u0010\"\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0010\u0002\n\u0002\b\u0015\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010\u0012\n\u0002\b\b\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\b\n\u0002\u0010\u0011\n\u0000\n\u0002\u0010\u0015\n\u0002\b\u0014\n\u0002\u0018\u0002\n\u0000\b\u0007\u0018\u00002\u00020\u00012\u00020\u00022\u00020\u00032\u00020\u00042\u00020\u0005B\u0005¢\u0006\u0002\u0010\u0006J\u0010\u0010>\u001a\u00020?2\u0006\u0010@\u001a\u00020\nH\u0002J\b\u0010A\u001a\u00020?H\u0002J\u0010\u0010B\u001a\u00020?2\u0006\u0010C\u001a\u00020\fH\u0002J\u0010\u0010D\u001a\u00020?2\u0006\u0010E\u001a\u00020\u001aH\u0002J\b\u0010F\u001a\u00020?H\u0002J\u0010\u0010G\u001a\u00020?2\u0006\u0010@\u001a\u00020\nH\u0002J\u0010\u0010H\u001a\u00020?2\u0006\u0010@\u001a\u00020\nH\u0002J\u0012\u0010I\u001a\u00020?2\b\u0010J\u001a\u0004\u0018\u000100H\u0002J\u0010\u0010K\u001a\u00020\f2\u0006\u0010L\u001a\u00020\fH\u0002J\b\u0010M\u001a\u00020\fH\u0002J\b\u0010N\u001a\u00020\fH\u0002J\b\u0010O\u001a\u00020\fH\u0002J\u0010\u0010P\u001a\u00020?2\u0006\u0010@\u001a\u00020\nH\u0002J\u0010\u0010Q\u001a\u00020?2\u0006\u0010R\u001a\u00020\fH\u0002J\u0010\u0010S\u001a\u00020?2\u0006\u0010T\u001a\u00020UH\u0016J\u0018\u0010V\u001a\u00020?2\u0006\u0010W\u001a\u0002002\u0006\u0010X\u001a\u00020YH\u0002J\u0012\u0010V\u001a\u00020?2\b\b\u0001\u0010Z\u001a\u00020[H\u0016J\b\u0010\\\u001a\u00020?H\u0016J\u0012\u0010]\u001a\u00020?2\b\u0010^\u001a\u0004\u0018\u00010_H\u0016J\b\u0010`\u001a\u00020?H\u0016J\b\u0010a\u001a\u00020?H\u0016J\u0012\u0010b\u001a\u00020?2\b\b\u0001\u0010T\u001a\u00020[H\u0016J\b\u0010c\u001a\u00020?H\u0016J\u0010\u0010d\u001a\u00020?2\u0006\u0010e\u001a\u00020\u0013H\u0016J\u001a\u0010f\u001a\u00020?2\u0006\u0010^\u001a\u00020\u00132\b\u0010g\u001a\u0004\u0018\u00010hH\u0016J\u001c\u0010i\u001a\u00020?2\b\b\u0001\u0010j\u001a\u00020k2\b\b\u0001\u0010l\u001a\u00020\nH\u0016J\u0012\u0010m\u001a\u00020?2\b\u0010n\u001a\u0004\u0018\u00010hH\u0016J\u0012\u0010o\u001a\u00020?2\b\u0010^\u001a\u0004\u0018\u00010hH\u0016J\u0010\u0010p\u001a\u00020?2\u0006\u0010T\u001a\u00020UH\u0016J-\u0010q\u001a\u00020\f2\u0006\u0010r\u001a\u00020\u00132\u000e\u0010s\u001a\n\u0012\u0006\b\u0001\u0012\u00020\u001a0t2\u0006\u0010u\u001a\u00020vH\u0016¢\u0006\u0002\u0010wJ\u0012\u0010x\u001a\u00020?2\b\u0010n\u001a\u0004\u0018\u00010hH\u0016J\u0010\u0010y\u001a\u00020?2\u0006\u0010z\u001a\u00020%H\u0016J\b\u0010{\u001a\u00020?H\u0002J\b\u0010|\u001a\u00020?H\u0002J\b\u0010}\u001a\u00020\fH\u0002J\u0010\u0010~\u001a\u00020?2\u0006\u0010\u007f\u001a\u00020\u001aH\u0002J\t\u0010\u0080\u0001\u001a\u00020?H\u0002J,\u0010\u0081\u0001\u001a\u00020?2\u0007\u0010\u0082\u0001\u001a\u00020\u001a2\u0007\u0010\u0083\u0001\u001a\u00020\f2\u0007\u0010\u0084\u0001\u001a\u0002022\u0006\u0010C\u001a\u00020\fH\u0002J4\u0010\u0085\u0001\u001a\u00020?2\u0006\u0010@\u001a\u00020\n2\u0007\u0010\u0082\u0001\u001a\u00020\u001a2\u0007\u0010\u0083\u0001\u001a\u00020\f2\u0007\u0010\u0086\u0001\u001a\u00020\u00132\u0006\u0010C\u001a\u00020\fH\u0002J\u0011\u0010\u0087\u0001\u001a\u00020?2\u0006\u0010@\u001a\u00020\nH\u0002J\u001c\u0010\u0088\u0001\u001a\u00020?2\t\u0010\u0089\u0001\u001a\u0004\u0018\u00010h2\u0006\u0010L\u001a\u00020\fH\u0002J\u0010\u0010\u008a\u0001\u001a\u0005\u0018\u00010\u008b\u0001*\u000200H\u0002R\u0010\u0010\u0007\u001a\u0004\u0018\u00010\bX\u0082\u000e¢\u0006\u0002\n\u0000R\u0010\u0010\t\u001a\u0004\u0018\u00010\nX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u000b\u001a\u00020\fX\u0082\u000e¢\u0006\u0002\n\u0000R\u0010\u0010\r\u001a\u0004\u0018\u00010\u000eX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u000f\u001a\u00020\fX\u0082\u000e¢\u0006\u0002\n\u0000R\u0010\u0010\u0010\u001a\u0004\u0018\u00010\u0011X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u0012\u001a\u00020\u0013X\u0082D¢\u0006\u0002\n\u0000R\u0010\u0010\u0014\u001a\u0004\u0018\u00010\u0015X\u0082\u000e¢\u0006\u0002\n\u0000R\u0010\u0010\u0016\u001a\u0004\u0018\u00010\u0017X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u0018\u001a\u00020\fX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u0019\u001a\u00020\u001aX\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u001b\u001a\u00020\u001cX\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u001d\u001a\u00020\fX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u001e\u001a\u00020\fX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u001f\u001a\u00020 X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010!\u001a\u00020\fX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\"\u001a\u00020\fX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010#\u001a\u00020\u001aX\u0082D¢\u0006\u0002\n\u0000R\u000e\u0010$\u001a\u00020%X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010&\u001a\u00020%X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010'\u001a\u00020\u0013X\u0082D¢\u0006\u0002\n\u0000R\u000e\u0010(\u001a\u00020\u0013X\u0082D¢\u0006\u0002\n\u0000R\u000e\u0010)\u001a\u00020*X\u0082D¢\u0006\u0002\n\u0000R\u000e\u0010+\u001a\u00020\fX\u0082\u000e¢\u0006\u0002\n\u0000R\u0016\u0010,\u001a\n\u0012\u0004\u0012\u00020\b\u0018\u00010-X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010.\u001a\u00020\fX\u0082\u000e¢\u0006\u0002\n\u0000R\u0010\u0010/\u001a\u0004\u0018\u000100X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u00101\u001a\u000202X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u00103\u001a\u00020\fX\u0082\u000e¢\u0006\u0002\n\u0000R\u0010\u00104\u001a\u0004\u0018\u00010\u001aX\u0082\u000e¢\u0006\u0002\n\u0000R\u0010\u00105\u001a\u0004\u0018\u000106X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u00107\u001a\u00020\fX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u00108\u001a\u00020\fX\u0082\u000e¢\u0006\u0002\n\u0000R\u0010\u00109\u001a\u0004\u0018\u00010:X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010;\u001a\u00020 X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010<\u001a\u00020\u0013X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010=\u001a\u00020\u0013X\u0082D¢\u0006\u0002\n\u0000¨\u0006\u008c\u0001"}, d2 = {"Lcom/csdcorp/speech_to_text/SpeechToTextPlugin;", "Lio/flutter/plugin/common/MethodChannel$MethodCallHandler;", "Landroid/speech/RecognitionListener;", "Lio/flutter/plugin/common/PluginRegistry$RequestPermissionsResultListener;", "Lio/flutter/embedding/engine/plugins/FlutterPlugin;", "Lio/flutter/embedding/engine/plugins/activity/ActivityAware;", "()V", "activeBluetooth", "Landroid/bluetooth/BluetoothDevice;", "activeResult", "Lio/flutter/plugin/common/MethodChannel$Result;", "alwaysUseStop", "", "bluetoothAdapter", "Landroid/bluetooth/BluetoothAdapter;", "bluetoothDisabled", "bluetoothHeadset", "Landroid/bluetooth/BluetoothHeadset;", "brokenStopSdk", "", "channel", "Lio/flutter/plugin/common/MethodChannel;", "currentActivity", "Landroid/app/Activity;", "debugLogging", "defaultLanguageTag", "", "handler", "Landroid/os/Handler;", "initializedSuccessfully", "intentLookup", "lastFinalTime", "", "lastOnDevice", "listening", "logTag", "maxRms", "", "minRms", "minSdkForOnDeviceSpeechSupport", "minSdkForSpeechSupport", "missingConfidence", "", "noBluetoothOpt", "pairedDevices", "", "permissionToRecordAudio", "pluginContext", "Landroid/content/Context;", "previousListenMode", "Lcom/csdcorp/speech_to_text/ListenMode;", "previousPartialResults", "previousRecognizerLang", "recognizerIntent", "Landroid/content/Intent;", "recognizerStops", "resultSent", "speechRecognizer", "Landroid/speech/SpeechRecognizer;", "speechStartTime", "speechThresholdRms", "speechToTextPermissionCode", "cancelListening", "", "result", "completeInitialize", "createRecognizer", "onDevice", "debugLog", "msg", "destroyRecognizer", "hasPermission", "initialize", "initializeIfPermitted", "context", "isDuplicateFinal", "isFinal", "isListening", "isNotInitialized", "isNotListening", "locales", "notifyListening", "isRecording", "onAttachedToActivity", "binding", "Lio/flutter/embedding/engine/plugins/activity/ActivityPluginBinding;", "onAttachedToEngine", "applicationContext", "messenger", "Lio/flutter/plugin/common/BinaryMessenger;", "flutterPluginBinding", "Lio/flutter/embedding/engine/plugins/FlutterPlugin$FlutterPluginBinding;", "onBeginningOfSpeech", "onBufferReceived", "p0", "", "onDetachedFromActivity", "onDetachedFromActivityForConfigChanges", "onDetachedFromEngine", "onEndOfSpeech", "onError", "errorCode", "onEvent", "p1", "Landroid/os/Bundle;", "onMethodCall", "call", "Lio/flutter/plugin/common/MethodCall;", "rawrResult", "onPartialResults", "results", "onReadyForSpeech", "onReattachedToActivityForConfigChanges", "onRequestPermissionsResult", "requestCode", "permissions", "", "grantResults", "", "(I[Ljava/lang/String;[I)Z", "onResults", "onRmsChanged", "rmsdB", "optionallyStartBluetooth", "optionallyStopBluetooth", "sdkVersionTooLow", "sendError", "errorMsg", "setupBluetooth", "setupRecognizerIntent", "languageTag", "partialResults", "listenMode", "startListening", "listenModeIndex", "stopListening", "updateResults", "speechBundle", "findComponentName", "Landroid/content/ComponentName;", "speech_to_text_release"}, k = 1, mv = {1, 9, 0}, xi = 48)
public final class q implements j.c, RecognitionListener, pa.n, ha.a, ia.a {
private boolean A;
private boolean B;
private SpeechRecognizer C;
private Intent D;
private BluetoothAdapter E;
private Set<BluetoothDevice> F;
private BluetoothDevice G;
private BluetoothHeadset H;
private String I;
private long L;
private long M;
private final String Q;
private Context f10386a;
private pa.j f10387b;
private Activity f10396q;
private j.d f10397r;
private boolean f10398s;
private boolean f10399t;
private boolean f10400u;
private boolean f10401v;
private boolean f10402w;
private boolean f10403x;
private boolean f10404y;
private final int f10388c = 21;
private final int f10389d = 29;
private final int f10390e = 31;
private final int f10391f = 28521;
private final double f10392m = -1.0d;
private int f10393n = 9;
private final String f10394o = "SpeechToTextPlugin";
private boolean f10395p = true;
private boolean f10405z = true;
private boolean J = true;
private f K = f.deviceDefault;
private float N = 1000.0f;
private float O = -100.0f;
private final Handler P = new Handler(Looper.getMainLooper());
@Metadata(d1 = {"\u0000\u001f\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\b\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000*\u0001\u0000\b\n\u0018\u00002\u00020\u0001J\u0010\u0010\u0002\u001a\u00020\u00032\u0006\u0010\u0004\u001a\u00020\u0005H\u0016J\u0010\u0010\u0006\u001a\u00020\u00032\u0006\u0010\u0007\u001a\u00020\bH\u0016¨\u0006\t"}, d2 = {"com/csdcorp/speech_to_text/SpeechToTextPlugin$locales$1", "Landroid/speech/RecognitionSupportCallback;", "onError", "", "error", "", "onSupportResult", "recognitionSupport", "Landroid/speech/RecognitionSupport;", "speech_to_text_release"}, k = 1, mv = {1, 9, 0}, xi = 48)
public static final class a implements RecognitionSupportCallback {
final j.d f10406a;
final q f10407b;
final z<SpeechRecognizer> f10408c;
a(j.d dVar, q qVar, z<SpeechRecognizer> zVar) {
this.f10406a = dVar;
this.f10407b = qVar;
this.f10408c = zVar;
}
@Override
public void onError(int error) {
this.f10407b.r("error from checkRecognitionSupport: " + error);
SpeechRecognizer speechRecognizer = (SpeechRecognizer) this.f10408c.a;
if (speechRecognizer != null) {
speechRecognizer.destroy();
}
}
@Override
public void onSupportResult(RecognitionSupport recognitionSupport) {
cc.l.f(recognitionSupport, "recognitionSupport");
new e(this.f10406a, this.f10407b.f10401v).b(recognitionSupport.getSupportedOnDeviceLanguages());
SpeechRecognizer speechRecognizer = (SpeechRecognizer) this.f10408c.a;
if (speechRecognizer != null) {
speechRecognizer.destroy();
}
}
}
@Metadata(d1 = {"\u0000\u001f\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\b\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002*\u0001\u0000\b\n\u0018\u00002\u00020\u0001J\u0018\u0010\u0002\u001a\u00020\u00032\u0006\u0010\u0004\u001a\u00020\u00052\u0006\u0010\u0006\u001a\u00020\u0007H\u0016J\u0010\u0010\b\u001a\u00020\u00032\u0006\u0010\u0004\u001a\u00020\u0005H\u0016¨\u0006\t"}, d2 = {"com/csdcorp/speech_to_text/SpeechToTextPlugin$setupBluetooth$mProfileListener$1", "Landroid/bluetooth/BluetoothProfile$ServiceListener;", "onServiceConnected", "", "profile", "", "proxy", "Landroid/bluetooth/BluetoothProfile;", "onServiceDisconnected", "speech_to_text_release"}, k = 1, mv = {1, 9, 0}, xi = 48)
public static final class b implements BluetoothProfile.ServiceListener {
b() {
}
@Override
public void onServiceConnected(int profile, BluetoothProfile proxy) {
cc.l.f(proxy, "proxy");
if (profile == 1) {
q.this.H = (BluetoothHeadset) proxy;
q.this.r("Found a headset: " + q.this.H);
}
}
@Override
public void onServiceDisconnected(int profile) {
if (profile == 1) {
q.this.r("Clearing headset: ");
q.this.H = null;
}
}
}
public q() {
String languageTag = Locale.getDefault().toLanguageTag();
cc.l.e(languageTag, "toLanguageTag(...)");
this.Q = languageTag;
}
private final boolean A() {
return !this.f10398s;
}
private final boolean B() {
return !this.f10400u;
}
private final void C(j.d dVar) {
boolean isOnDeviceRecognitionAvailable;
SpeechRecognizer createOnDeviceSpeechRecognizer;
if (I()) {
dVar.a(Boolean.FALSE);
return;
}
Context context = this.f10386a;
cc.l.c(context);
boolean z10 = androidx.core.content.a.checkSelfPermission(context, "android.permission.RECORD_AUDIO") == 0;
if (Build.VERSION.SDK_INT < 33 || !z10) {
Intent voiceDetailsIntent = RecognizerIntent.getVoiceDetailsIntent(this.f10386a);
if (voiceDetailsIntent == null) {
voiceDetailsIntent = new Intent("android.speech.action.GET_LANGUAGE_DETAILS");
voiceDetailsIntent.setPackage("com.google.android.googlequicksearchbox");
}
Intent intent = voiceDetailsIntent;
Context context2 = this.f10386a;
if (context2 != null) {
context2.sendOrderedBroadcast(intent, null, new e(dVar, this.f10401v), null, -1, null, null);
return;
}
return;
}
Context context3 = this.f10386a;
cc.l.c(context3);
isOnDeviceRecognitionAvailable = SpeechRecognizer.isOnDeviceRecognitionAvailable(context3);
if (isOnDeviceRecognitionAvailable) {
z zVar = new z();
Context context4 = this.f10386a;
cc.l.c(context4);
createOnDeviceSpeechRecognizer = SpeechRecognizer.createOnDeviceSpeechRecognizer(context4);
cc.l.e(createOnDeviceSpeechRecognizer, "createOnDeviceSpeechRecognizer(...)");
zVar.a = createOnDeviceSpeechRecognizer;
Intent intent2 = new Intent("android.speech.action.RECOGNIZE_SPEECH");
SpeechRecognizer speechRecognizer = (SpeechRecognizer) zVar.a;
if (speechRecognizer != null) {
speechRecognizer.checkRecognitionSupport(intent2, Executors.newSingleThreadExecutor(), new a(dVar, this, zVar));
}
}
}
private final void D(boolean z10) {
String str;
if (this.f10400u == z10) {
return;
}
this.f10400u = z10;
if (z10) {
str = "listening";
} else {
if (z10) {
throw new ob.m();
}
str = "notListening";
}
r("Notify status:" + str);
pa.j jVar = this.f10387b;
if (jVar != null) {
jVar.c("notifyStatus", str);
}
if (z10) {
return;
}
String str2 = !this.A ? "doneNoResult" : "done";
r("Notify status:" + str2);
H();
pa.j jVar2 = this.f10387b;
if (jVar2 != null) {
jVar2.c("notifyStatus", str2);
}
}
private final void E(Context context, pa.b bVar) {
this.f10386a = context;
pa.j jVar = new pa.j(bVar, "plugin.csdcorp.com/speech_to_text");
this.f10387b = jVar;
jVar.e(this);
}
public static final void F(q qVar, float f10) {
cc.l.f(qVar, "this$0");
pa.j jVar = qVar.f10387b;
if (jVar != null) {
jVar.c("soundLevelChange", Float.valueOf(f10));
}
}
private final void G() {
if (this.f10405z) {
return;
}
BluetoothAdapter bluetoothAdapter = this.E;
Set<BluetoothDevice> set = this.F;
BluetoothHeadset bluetoothHeadset = this.H;
if (bluetoothAdapter == null || bluetoothHeadset == null || set == null || !bluetoothAdapter.isEnabled()) {
return;
}
for (BluetoothDevice bluetoothDevice : set) {
if (bluetoothHeadset.startVoiceRecognition(bluetoothDevice)) {
r("Starting bluetooth voice recognition");
this.G = bluetoothDevice;
return;
}
}
}
private final void H() {
if (this.f10405z) {
return;
}
BluetoothDevice bluetoothDevice = this.G;
BluetoothHeadset bluetoothHeadset = this.H;
if (bluetoothDevice == null || bluetoothHeadset == null) {
return;
}
r("Stopping bluetooth voice recognition");
bluetoothHeadset.stopVoiceRecognition(bluetoothDevice);
this.G = null;
}
private final boolean I() {
return Build.VERSION.SDK_INT < this.f10388c;
}
private final void J(String str) {
final JSONObject jSONObject = new JSONObject();
jSONObject.put("errorMsg", str);
jSONObject.put("permanent", true);
this.P.post(new Runnable() {
@Override
public final void run() {
q.K(q.this, jSONObject);
}
});
}
public static final void K(q qVar, JSONObject jSONObject) {
cc.l.f(qVar, "this$0");
cc.l.f(jSONObject, "$speechError");
pa.j jVar = qVar.f10387b;
if (jVar != null) {
jVar.c("notifyError", jSONObject.toString());
}
}
private final void L() {
if (this.f10405z) {
return;
}
BluetoothAdapter defaultAdapter = BluetoothAdapter.getDefaultAdapter();
this.E = defaultAdapter;
this.F = defaultAdapter != null ? defaultAdapter.getBondedDevices() : null;
b bVar = new b();
BluetoothAdapter bluetoothAdapter = this.E;
if (bluetoothAdapter != null) {
bluetoothAdapter.getProfileProxy(this.f10386a, bVar, 1);
}
}
private final void M(final String str, final boolean z10, f fVar, final boolean z11) {
r("setupRecognizerIntent");
String str2 = this.I;
if (str2 != null && cc.l.a(str2, str) && z10 == this.J && this.K == fVar) {
return;
}
this.I = str;
this.J = z10;
this.K = fVar;
this.P.post(new Runnable() {
@Override
public final void run() {
q.N(q.this, z10, str, z11);
}
});
}
public static final void N(q qVar, boolean z10, String str, boolean z11) {
cc.l.f(qVar, "this$0");
cc.l.f(str, "$languageTag");
Intent intent = new Intent("android.speech.action.RECOGNIZE_SPEECH");
qVar.r("In RecognizerIntent apply");
intent.putExtra("android.speech.extra.LANGUAGE_MODEL", "free_form");
qVar.r("put model");
Context context = qVar.f10386a;
if (context != null) {
intent.putExtra("calling_package", context.getApplicationInfo().packageName);
}
qVar.r("put package");
intent.putExtra("android.speech.extra.PARTIAL_RESULTS", z10);
qVar.r("put partial");
if (!cc.l.a(str, Locale.getDefault().toLanguageTag())) {
intent.putExtra("android.speech.extra.LANGUAGE", str);
qVar.r("put languageTag");
}
if (z11) {
intent.putExtra("android.speech.extra.PREFER_OFFLINE", z11);
}
intent.putExtra("android.speech.extra.MAX_RESULTS", 10);
qVar.D = intent;
}
private final void O(j.d dVar, String str, boolean z10, int i10, boolean z11) {
if (I() || A() || getF10400u()) {
dVar.a(Boolean.FALSE);
return;
}
this.A = false;
p(z11);
this.N = 1000.0f;
this.O = -100.0f;
r("Start listening");
f fVar = f.deviceDefault;
f fVar2 = f.dictation;
if (i10 == fVar2.ordinal()) {
fVar = fVar2;
}
G();
M(str, z10, fVar, z11);
this.P.post(new Runnable() {
@Override
public final void run() {
q.P(q.this);
}
});
this.M = System.currentTimeMillis();
D(true);
dVar.a(Boolean.TRUE);
r("Start listening done");
}
public static final void P(q qVar) {
cc.l.f(qVar, "this$0");
SpeechRecognizer speechRecognizer = qVar.C;
if (speechRecognizer != null) {
speechRecognizer.startListening(qVar.D);
}
}
private final void Q(j.d dVar) {
if (I() || A() || B()) {
dVar.a(Boolean.FALSE);
return;
}
r("Stop listening");
this.P.post(new Runnable() {
@Override
public final void run() {
q.R(q.this);
}
});
if (!this.f10395p) {
s();
}
D(false);
dVar.a(Boolean.TRUE);
r("Stop listening done");
}
public static final void R(q qVar) {
cc.l.f(qVar, "this$0");
SpeechRecognizer speechRecognizer = qVar.C;
if (speechRecognizer != null) {
speechRecognizer.stopListening();
}
}
private final void S(Bundle bundle, boolean z10) {
if (y(z10)) {
r("Discarding duplicate final");
return;
}
ArrayList<String> stringArrayList = bundle != null ? bundle.getStringArrayList("results_recognition") : null;
if (stringArrayList == null || !(!stringArrayList.isEmpty())) {
r("Results null or empty");
return;
}
JSONObject jSONObject = new JSONObject();
jSONObject.put("finalResult", z10);
float[] floatArray = bundle.getFloatArray("confidence_scores");
JSONArray jSONArray = new JSONArray();
int size = stringArrayList.size() - 1;
if (size >= 0) {
int i10 = 0;
while (true) {
JSONObject jSONObject2 = new JSONObject();
jSONObject2.put("recognizedWords", stringArrayList.get(i10));
if (floatArray == null || floatArray.length < stringArrayList.size()) {
jSONObject2.put("confidence", this.f10392m);
} else {
jSONObject2.put("confidence", Float.valueOf(floatArray[i10]));
}
jSONArray.put(jSONObject2);
if (i10 == size) {
break;
} else {
i10++;
}
}
}
jSONObject.put("alternates", jSONArray);
String jSONObject3 = jSONObject.toString();
cc.l.e(jSONObject3, "toString(...)");
r("Calling results callback");
this.A = true;
pa.j jVar = this.f10387b;
if (jVar != null) {
jVar.c("textRecognition", jSONObject3);
}
}
private final void m(j.d dVar) {
if (I() || A() || B()) {
dVar.a(Boolean.FALSE);
return;
}
r("Cancel listening");
this.P.post(new Runnable() {
@Override
public final void run() {
q.n(q.this);
}
});
if (!this.f10395p) {
s();
}
D(false);
dVar.a(Boolean.TRUE);
r("Cancel listening done");
}
public static final void n(q qVar) {
cc.l.f(qVar, "this$0");
SpeechRecognizer speechRecognizer = qVar.C;
if (speechRecognizer != null) {
speechRecognizer.cancel();
}
}
private final void o() {
boolean isOnDeviceRecognitionAvailable;
r("completeInitialize");
if (this.f10399t) {
r("Testing recognition availability");
Context context = this.f10386a;
if (context == null) {
r("null context during initialization");
j.d dVar = this.f10397r;
if (dVar != null) {
dVar.a(Boolean.FALSE);
}
j.d dVar2 = this.f10397r;
if (dVar2 != null) {
dVar2.b("missingContext", "context unexpectedly null, initialization failed", "");
}
this.f10397r = null;
return;
}
if (Build.VERSION.SDK_INT >= 31) {
if (!SpeechRecognizer.isRecognitionAvailable(context)) {
isOnDeviceRecognitionAvailable = SpeechRecognizer.isOnDeviceRecognitionAvailable(context);
if (!isOnDeviceRecognitionAvailable) {
Log.e(this.f10394o, "Speech recognition not available on this device");
j.d dVar3 = this.f10397r;
if (dVar3 != null) {
dVar3.b("recognizerNotAvailable", "Speech recognition not available on this device", "");
}
this.f10397r = null;
return;
}
}
} else if (!SpeechRecognizer.isRecognitionAvailable(context)) {
Log.e(this.f10394o, "Speech recognition not available on this device");
j.d dVar4 = this.f10397r;
if (dVar4 != null) {
dVar4.b("recognizerNotAvailable", "Speech recognition not available on this device", "");
}
this.f10397r = null;
return;
}
L();
}
this.f10398s = this.f10399t;
r("sending result");
j.d dVar5 = this.f10397r;
if (dVar5 != null) {
dVar5.a(Boolean.valueOf(this.f10399t));
}
r("leaving complete");
this.f10397r = null;
}
private final void p(final boolean z10) {
SpeechRecognizer speechRecognizer = this.C;
if (speechRecognizer == null || z10 != this.B) {
this.B = z10;
if (speechRecognizer != null) {
speechRecognizer.destroy();
}
this.C = null;
this.P.post(new Runnable() {
@Override
public final void run() {
q.q(q.this, z10);
}
});
r("before setup intent");
M(this.Q, true, f.deviceDefault, false);
r("after setup intent");
}
}
public static final void q(l2.q r4, boolean r5) {
throw new UnsupportedOperationException("Method not decompiled: l2.q.q(l2.q, boolean):void");
}
public final void r(String str) {
if (this.f10401v) {
Log.d(this.f10394o, str);
}
}
private final void s() {
this.P.postDelayed(new Runnable() {
@Override
public final void run() {
q.t(q.this);
}
}, 50L);
}
public static final void t(q qVar) {
cc.l.f(qVar, "this$0");
qVar.r("Recognizer destroy");
SpeechRecognizer speechRecognizer = qVar.C;
if (speechRecognizer != null) {
speechRecognizer.destroy();
}
qVar.C = null;
}
private final ComponentName u(Context context) {
ServiceInfo serviceInfo;
List<ResolveInfo> queryIntentServices = context.getPackageManager().queryIntentServices(new Intent("android.speech.RecognitionService"), 0);
cc.l.e(queryIntentServices, "queryIntentServices(...)");
r("RecognitionService, found: " + queryIntentServices.size());
Iterator<T> it = queryIntentServices.iterator();
while (it.hasNext()) {
ServiceInfo serviceInfo2 = ((ResolveInfo) it.next()).serviceInfo;
if (serviceInfo2 != null) {
cc.l.c(serviceInfo2);
r("RecognitionService: packageName: " + serviceInfo2.packageName + ", name: " + serviceInfo2.name);
}
}
ResolveInfo resolveInfo = (ResolveInfo) pb.p.X(queryIntentServices);
if (resolveInfo == null || (serviceInfo = resolveInfo.serviceInfo) == null) {
return null;
}
return new ComponentName(serviceInfo.packageName, serviceInfo.name);
}
private final void v(j.d dVar) {
if (I()) {
dVar.a(Boolean.FALSE);
return;
}
r("Start has_permission");
Context context = this.f10386a;
if (context != null) {
dVar.a(Boolean.valueOf(androidx.core.content.a.checkSelfPermission(context, "android.permission.RECORD_AUDIO") == 0));
}
}
private final void w(j.d dVar) {
if (I()) {
dVar.a(Boolean.FALSE);
return;
}
this.f10395p = Build.VERSION.SDK_INT != this.f10389d || this.f10402w;
r("Start initialize");
if (this.f10397r != null) {
dVar.b("multipleRequests", "Only one initialize at a time", null);
} else {
this.f10397r = dVar;
x(this.f10386a);
}
}
private final void x(Context context) {
String str;
if (context == null) {
o();
return;
}
boolean z10 = true;
this.f10399t = androidx.core.content.a.checkSelfPermission(context, "android.permission.RECORD_AUDIO") == 0;
if ((androidx.core.content.a.checkSelfPermission(context, "android.permission.BLUETOOTH_CONNECT") == 0) && !this.f10404y) {
z10 = false;
}
this.f10405z = z10;
r("Checked permission");
if (this.f10399t) {
str = "has permission, completing";
} else {
Activity activity = this.f10396q;
if (activity != null) {
r("Requesting permission");
String[] strArr = {"android.permission.RECORD_AUDIO"};
if (!this.f10404y) {
strArr = (String[]) pb.i.l(strArr, "android.permission.BLUETOOTH_CONNECT");
}
androidx.core.app.b.e(activity, strArr, this.f10391f);
r("leaving initializeIfPermitted");
}
str = "no permission, no activity, completing";
}
r(str);
o();
r("leaving initializeIfPermitted");
}
private final boolean y(boolean z10) {
if (!z10) {
return false;
}
long currentTimeMillis = System.currentTimeMillis() - this.L;
this.L = System.currentTimeMillis();
return currentTimeMillis >= 0 && currentTimeMillis < 100;
}
private final boolean getF10400u() {
return this.f10400u;
}
@Override
public void onAttachedToActivity(ia.c cVar) {
cc.l.f(cVar, "binding");
this.f10396q = cVar.g();
cVar.i(this);
}
@Override
public void onAttachedToEngine(a.b bVar) {
cc.l.f(bVar, "flutterPluginBinding");
Context a10 = bVar.a();
cc.l.e(a10, "getApplicationContext(...)");
pa.b b10 = bVar.b();
cc.l.e(b10, "getBinaryMessenger(...)");
E(a10, b10);
}
@Override
public void onBeginningOfSpeech() {
}
@Override
public void onBufferReceived(byte[] p02) {
}
@Override
public void onDetachedFromActivity() {
this.f10396q = null;
}
@Override
public void onDetachedFromActivityForConfigChanges() {
this.f10396q = null;
}
@Override
public void onDetachedFromEngine(a.b bVar) {
cc.l.f(bVar, "binding");
this.f10386a = null;
pa.j jVar = this.f10387b;
if (jVar != null) {
jVar.e(null);
}
this.f10387b = null;
}
@Override
public void onEndOfSpeech() {
D(false);
}
@Override
public void onError(int errorCode) {
String str;
long currentTimeMillis = System.currentTimeMillis() - this.M;
int i10 = (7 != errorCode || this.O >= ((float) this.f10393n)) ? errorCode : 6;
r("Error " + errorCode + " after start at " + currentTimeMillis + ' ' + this.N + " / " + this.O);
switch (i10) {
case 1:
str = "error_network_timeout";
break;
case 2:
str = "error_network";
break;
case 3:
str = "error_audio_error";
break;
case 4:
str = "error_server";
break;
case 5:
str = "error_client";
break;
case 6:
str = "error_speech_timeout";
break;
case 7:
str = "error_no_match";
break;
case 8:
str = "error_busy";
break;
case 9:
str = "error_permission";
break;
case 10:
str = "error_too_many_requests";
break;
case 11:
str = "error_server_disconnected";
break;
case 12:
str = "error_language_not_supported";
break;
case 13:
str = "error_language_unavailable";
break;
default:
str = "error_unknown (" + errorCode + ')';
break;
}
J(str);
if (getF10400u()) {
D(false);
}
}
@Override
public void onEvent(int p02, Bundle p12) {
}
@Override
public void onMethodCall(pa.i iVar, j.d dVar) {
cc.l.f(iVar, "call");
cc.l.f(dVar, "rawrResult");
d dVar2 = new d(dVar);
try {
String str = iVar.f11850a;
if (str != null) {
switch (str.hashCode()) {
case -1367724422:
if (!str.equals("cancel")) {
break;
} else {
m(dVar2);
return;
}
case -1198472044:
if (!str.equals("has_permission")) {
break;
} else {
v(dVar2);
return;
}
case -1102508601:
if (!str.equals("listen")) {
break;
} else {
String str2 = (String) iVar.a("localeId");
if (str2 == null) {
str2 = this.Q;
}
String s10 = we.l.s(str2, '_', '-', false, 4, (Object) null);
Boolean bool = (Boolean) iVar.a("partialResults");
if (bool == null) {
bool = Boolean.TRUE;
}
Boolean bool2 = (Boolean) iVar.a("onDevice");
if (bool2 == null) {
bool2 = Boolean.FALSE;
}
Integer num = (Integer) iVar.a("listenMode");
if (num == null) {
dVar2.b("missingOrInvalidArg", "listenMode is required", null);
return;
} else {
O(dVar2, s10, bool.booleanValue(), num.intValue(), bool2.booleanValue());
return;
}
}
case 3540994:
if (!str.equals("stop")) {
break;
} else {
Q(dVar2);
return;
}
case 338410841:
if (!str.equals("locales")) {
break;
} else {
C(dVar2);
return;
}
case 871091088:
if (!str.equals("initialize")) {
break;
} else {
Boolean bool3 = (Boolean) iVar.a("debugLogging");
if (bool3 != null) {
this.f10401v = bool3.booleanValue();
}
Boolean bool4 = (Boolean) iVar.a("alwaysUseStop");
if (bool4 != null) {
this.f10402w = cc.l.a(bool4, Boolean.TRUE);
}
Boolean bool5 = (Boolean) iVar.a("intentLookup");
if (bool5 != null) {
this.f10403x = cc.l.a(bool5, Boolean.TRUE);
}
Boolean bool6 = (Boolean) iVar.a("noBluetooth");
if (bool6 != null) {
this.f10404y = cc.l.a(bool6, Boolean.TRUE);
}
w(dVar2);
return;
}
}
}
dVar2.c();
} catch (Exception e10) {
Log.e(this.f10394o, "Unexpected exception", e10);
dVar2.b("unknown", "Unexpected exception", e10.getLocalizedMessage());
}
}
@Override
public void onPartialResults(Bundle results) {
S(results, false);
}
@Override
public void onReadyForSpeech(Bundle p02) {
}
@Override
public void onReattachedToActivityForConfigChanges(ia.c cVar) {
cc.l.f(cVar, "binding");
this.f10396q = cVar.g();
cVar.i(this);
}
@Override
public boolean onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
cc.l.f(permissions, "permissions");
cc.l.f(grantResults, "grantResults");
if (requestCode != this.f10391f) {
return false;
}
this.f10399t = ((grantResults.length == 0) ^ true) && grantResults[0] == 0;
this.f10405z = (grantResults.length == 0) || grantResults.length == 1 || grantResults[1] != 0 || this.f10404y;
o();
return true;
}
@Override
public void onResults(Bundle results) {
S(results, true);
}
@Override
public void onRmsChanged(final float rmsdB) {
if (rmsdB < this.N) {
this.N = rmsdB;
}
if (rmsdB > this.O) {
this.O = rmsdB;
}
r("rmsDB " + this.N + " / " + this.O);
this.P.post(new Runnable() {
@Override
public final void run() {
q.F(q.this, rmsdB);
}
});
}
}