我是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,错误的请求,它是无效值。
答案 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
变量对于目标语言具有正确的值。我已经测试了这种方法,并且对我有用。