0

我是 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,即无效值的错误请求。

4

1 回答 1

0

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)具有目标语言的正确值。

我已经测试了这种方法,它对我有用。

于 2019-01-28T10:50:15.690 回答