Google Speech-to-Text API - сбой приложения Android - PullRequest
0 голосов
/ 12 февраля 2019

Я новичок в этом, и я пытался использовать Google Speech-to-Text 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)

Как мне решить эту проблему?

1 Ответ

0 голосов
/ 12 февраля 2019

Может быть, у вас нет добавленной библиотеки, которая содержит: 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;
    }

Надеюсь, это поможет.

...