Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 谷歌语音到文本API-android应用程序崩溃_Java_Android_Google Api_Speech Recognition_Google Speech Api - Fatal编程技术网

Java 谷歌语音到文本API-android应用程序崩溃

Java 谷歌语音到文本API-android应用程序崩溃,java,android,google-api,speech-recognition,google-speech-api,Java,Android,Google Api,Speech Recognition,Google Speech Api,我是新手,我尝试使用本文中提到的谷歌语音到文本API。我遵循了他们提到的步骤,并在创建服务帐户后将credentials.json放在所需的文件夹中。我生成了一个签名的apk在android设备上运行,但每次我说了什么,它就崩溃了。我检查了日志,它给了我这个错误: --------- beginning of crash 02-12 12:35:22.504 29178 29178 E AndroidRuntime: FATAL EXCEPTION: main 02-12 12:35:2

我是新手,我尝试使用本文中提到的谷歌语音到文本API。我遵循了他们提到的步骤,并在创建服务帐户后将
credentials.json
放在所需的文件夹中。我生成了一个签名的apk在android设备上运行,但每次我说了什么,它就崩溃了。我检查了日志,它给了我这个错误:

    --------- beginning of crash
02-12 12:35:22.504 29178 29178 E AndroidRuntime: FATAL EXCEPTION: main
02-12 12:35:22.504 29178 29178 E AndroidRuntime: Process: com.google.cloud.examples.speechrecognition, PID: 29178
02-12 12:35:22.504 29178 29178 E AndroidRuntime: java.lang.NoSuchMethodError: No static method decodeBase64(Ljava/lang/String;)[B in class Lorg/apache/commons/codec/binary/Base64; or its super classes (declaration of 'org.apache.commons.codec.binary.Base64' appears in /system/framework/org.apache.http.legacy.boot.jar)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.google.api.client.util.Base64.decodeBase64(Base64.java:101)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.google.api.client.util.PemReader.readNextSection(PemReader.java:106)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.google.api.client.util.PemReader.readFirstSectionAndClose(PemReader.java:135)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.google.auth.oauth2.ServiceAccountCredentials.privateKeyFromPkcs8(ServiceAccountCredentials.java:296)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.google.auth.oauth2.ServiceAccountCredentials.fromPkcs8(ServiceAccountCredentials.java:286)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.google.auth.oauth2.ServiceAccountCredentials.fromJson(ServiceAccountCredentials.java:210)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.google.auth.oauth2.GoogleCredentials.fromStream(GoogleCredentials.java:174)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.google.auth.oauth2.GoogleCredentials.fromStream(GoogleCredentials.java:141)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.google.cloud.examples.speechrecognition.MainActivity$mSpeechClient$2$1$1.getCredentials(MainActivity.kt:62)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.google.cloud.examples.speechrecognition.MainActivity$mSpeechClient$2$1$1.getCredentials(MainActivity.kt:45)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.google.api.gax.rpc.ClientContext.create(ClientContext.java:140)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.google.cloud.speech.v1.stub.GrpcSpeechStub.create(GrpcSpeechStub.java:94)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.google.cloud.speech.v1.stub.SpeechStubSettings.createStub(SpeechStubSettings.java:126)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.google.cloud.speech.v1.SpeechClient.<init>(SpeechClient.java:144)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.google.cloud.speech.v1.SpeechClient.create(SpeechClient.java:126)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.google.cloud.examples.speechrecognition.MainActivity$mSpeechClient$2.invoke(MainActivity.kt:61)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.google.cloud.examples.speechrecognition.MainActivity$mSpeechClient$2.invoke(MainActivity.kt:45)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.google.cloud.examples.speechrecognition.MainActivity.getMSpeechClient(Unknown Source:7)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.google.cloud.examples.speechrecognition.MainActivity.onResume(MainActivity.kt:101)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1363)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at android.app.Activity.performResume(Activity.java:7444)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3805)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3870)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1788)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:106)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at android.os.Looper.loop(Looper.java:164)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at android.app.ActivityThread.main(ActivityThread.java:7036)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at java.lang.reflect.Method.invoke(Native Method)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
02-12 12:35:22.504 29178 29178 E AndroidRuntime:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
-----------崩溃开始
02-12:35:22.504 29178 29178 E AndroidRuntime:致命异常:main
02-12:35:22.504 29178 29178 E AndroidRuntime:Process:com.google.cloud.examples.speechrecognition,PID:29178
02-12:35:22.504 29178 29178 E AndroidRuntime:java.lang.NoSuchMethodError:No static method decodeBase64(Ljava/lang/String;)[Lorg/apache/commons/codec/binary/Base64类中的B;或其超类(在/system/framework/org.apache.http.legacy.boot.jar中出现“org.apache.commons.codec.binary.Base64”声明)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.google.api.client.util.Base64.decodeBase64(Base64.java:101)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.google.api.client.util.PemReader.readNextSection(PemReader.java:106)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.google.api.client.util.PemReader.readfirstsection和close(PemReader.java:135)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.google.auth.oauth2.ServiceAccountCredentials.privateKeyFromPkcs8(ServiceAccountCredentials.java:296)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.google.auth.oauth2.ServiceAccountCredentials.fromPkcs8(ServiceAccountCredentials.java:286)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.google.auth.oauth2.ServiceAccountCredentials.fromJson(ServiceAccountCredentials.java:210)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.google.auth.oauth2.GoogleCredentials.fromStream(GoogleCredentials.java:174)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.google.auth.oauth2.GoogleCredentials.fromStream(GoogleCredentials.java:141)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.google.cloud.examples.speechrecognition.MainActivity$mSpeechClient$2$1$1.getCredentials(MainActivity.kt:62)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.google.cloud.examples.speechrecognition.MainActivity$mSpeechClient$2$1$1.getCredentials(MainActivity.kt:45)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.google.api.gax.rpc.ClientContext.create(ClientContext.java:140)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.google.cloud.speech.v1.stub.GrpcSpeechStub.create(GrpcSpeechStub.java:94)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.google.cloud.speech.v1.stub.SpeechStubSettings.createStub(SpeechStubSettings.java:126)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.google.cloud.speech.v1.SpeechClient.(SpeechClient.java:144)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.google.cloud.speech.v1.SpeechClient.create(SpeechClient.java:126)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.google.cloud.examples.speechrecognition.MainActivity$mSpeechClient$2.invoke(MainActivity.kt:61)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.google.cloud.examples.speechrecognition.MainActivity$mSpeechClient$2.invoke(MainActivity.kt:45)
02-12:35:22.504 29178 29178 E AndroidRuntime:at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.google.cloud.examples.speechrecognition.MainActivity.getMSpeechClient(未知来源:7)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.google.cloud.examples.speechrecognition.MainActivity.onResume(MainActivity.kt:101)
02-12:35:22.504 29178 29178 E AndroidRuntime:at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1363)
02-12:35:22.504 29178 29178 E AndroidRuntime:at android.app.Activity.performResume(Activity.java:7444)
02-12:35:22.504 29178 29178 E AndroidRuntime:at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3805)
02-12:35:22.504 29178 29178 E AndroidRuntime:at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3870)
02-12:35:22.504 29178 29178 E AndroidRuntime:at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1788)
02-12:35:22.504 29178 29178 E AndroidRuntime:at android.os.Handler.dispatchMessage(Handler.java:106)
02-12:35:22.504 29178 29178 E AndroidRuntime:at android.os.Looper.loop(Looper.java:164)
02-12:35:22.504 29178 29178 E AndroidRuntime:at android.app.ActivityThread.main(ActivityThread.java:7036)
02-12:35:22.504 29178 29178 E AndroidRuntime:at java.lang.reflect.Method.invoke(本机方法)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
02-12:35:22.504 29178 29178 E AndroidRuntime:com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)

我应该如何解决这个问题?

可能是您没有添加包含以下内容的库:org.apache.commons.codec.binary.Base64

您可以创建自己的方法:

解码数据:

    // decode data from base 64
    private static byte[] decodeBase64(String dataToDecode)
    {
        byte[] dataDecoded = Base64.decode(dataToDecode, Base64.DEFAULT);
        return dataDecoded;
    }
    //enconde data in base 64
    private static byte[] encodeBase64(byte[] dataToEncode)
    {
        byte[] dataEncoded = Base64.encode(dataToEncode, Base64.DEFAULT);
        return dataEncoded;
    }
编码数据:

    // decode data from base 64
    private static byte[] decodeBase64(String dataToDecode)
    {
        byte[] dataDecoded = Base64.decode(dataToDecode, Base64.DEFAULT);
        return dataDecoded;
    }
    //enconde data in base 64
    private static byte[] encodeBase64(byte[] dataToEncode)
    {
        byte[] dataEncoded = Base64.encode(dataToEncode, Base64.DEFAULT);
        return dataEncoded;
    }

希望有帮助。

如果您使用proguard并混淆代码,可能会发生这种情况。请检查是否有任何需要添加的内容,或者在发布版本部分输入
minifyEnabled false
以查看错误是否已解决。在发布版本部分
minifyEnabled false
中已存在此代码作为示例我已经从他们的Github存储库下载了这个链接。那么我应该在哪里添加这个呢?