有人可以给我一个使用android studio中的rest进行翻译api调用的示例吗?

时间:2019-01-27 15:33:44

标签: google-cloud-platform google-translate android-studio-3.3

我是Android编程的新手,我几乎不了解android。

我需要做的是使用针对我的Capstone项目的Google Cloud Translate API翻译文本。有没有新的方法,如果有,有人可以给我确切的示例代码吗?下面的代码是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 :(得分:0)

要在Android Studio项目中使用Google Translation API,请首先在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的{​​{1}}类的onCreate(...)中,添加:

setContentView(...)

这将纠正错误:

  

...原因:android.os.NetworkOnMainThreadException ...

最后确保您拥有:

  • 在项目中启用了if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); }
  • Translation API中使用的setLanguage变量对于目标语言具有正确的值。

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