кто-нибудь может привести пример вызова API translate с использованием rest in android studio? - PullRequest
0 голосов
/ 27 января 2019

Я новичок в программировании Android, я почти ничего не знаю об Android.

Что мне нужно сделать, это перевести текст с помощью Google Cloud Translate API для моего проекта Capstone.Есть ли какие-нибудь новые методы, если есть, кто-нибудь может дать мне точный пример кода?Код ниже - библиотека 1.55.0.

        TranslateOptions options = TranslateOptions
                .newBuilder()
                .setApiKey(API_KEY)
                .build();

        Translate translate = options.getService();
        //gets the word to be translated
        final Translation translation =
                translate.translate(inputText.getText().toString().trim(), Translate.TranslateOption.targetLanguage(setLanguage));

        textViewHandler.post(new Runnable() {
            @Override
            public void run() {
                if (outputText != null) {
                    outputText.setText(translation.getTranslatedText().trim());
                }
            }
        });

Я ожидал, что результатом будет переведенный текст, но вместо этого он воспроизводит ошибку 400, неверный запрос, который является недопустимым значением.

1 Ответ

0 голосов
/ 28 января 2019

Чтобы использовать Google Translation API в проекте Android Studio, сначала добавьте в AndroidManifest.xml разрешение на доступ к Интернету.Потому что вы собираетесь использовать Интернет для перевода.

<manifest ...>

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        ...
    </application>
</manifest>

Добавьте некоторые зависимости в build.gradle.Я столкнулся с некоторыми незначительными проблемами в файле Gradle, поэтому мне пришлось добавить еще несколько вещей, чтобы исправить их, конечный результат должен выглядеть примерно так:

android {
    ...
    defaultConfig {
        ...
        multiDexEnabled true
    }
    packagingOptions {
        exclude 'META-INF/INDEX.LIST'
    }
}
dependencies {
    ...
    compile 'com.google.cloud:google-cloud-translate:1.59.0'
    implementation 'com.android.support:multidex:1.0.3'
}

В MainActivity, в onCreate(...) класс после setContentView(...) добавить:

if (android.os.Build.VERSION.SDK_INT > 9) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }

Это исправит ошибку:

... Причина: android.os.NetworkOnMainThreadException ...

Наконец, убедитесь, что у вас:

  • Включено Translation API в вашем проекте.
  • Переменная setLanguage, используемая в Translate.TranslateOption.targetLanguage(setLanguage), имеетправильное значение для целевого языка.

Я проверил этот метод, и он работал для меня.

...