`protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
inputToTranslate = findViewById(R.id.inputToTranslate);
translatedTv = findViewById(R.id.translatedTv);
Button translateButton = findViewById(R.id.translateButton);
translateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (checkInternetConnection()) {
//If there is internet connection, get translate service and start translation:
getTranslateService();
translate();
} else {
//If not, display "no connection" warning:
translatedTv.setText(getResources().getString(R.string.no_connection));
}
}
});
}
public void getTranslateService() {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
try (InputStream is = getResources().openRawResource(R.raw.my_secret)) {
//Get credentials:
final GoogleCredentials myCredentials = GoogleCredentials.fromStream(is);
//Set credentials and get translate service:
TranslateOptions translateOptions = TranslateOptions.newBuilder().setCredentials(myCredentials).build();
Translate translate = (Translate) translateOptions.getService();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
public void translate() {
//Get input text to be translated:
originalText = inputToTranslate.getText().toString();
Translation translation = translate.translate(originalText, Translate.TranslateOption.targetLanguage("tr"), Translate.TranslateOption.model("base"));
translatedText = translation.getTranslatedText();
//Translated text and original text are set to TextViews:
translatedTv.setText(translatedText);
}
public boolean checkInternetConnection() {
//Check internet connection:
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
//Means that we are connected to a network (mobile or wi-fi)
connected = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED;
return connected;
}
`目前我正在尝试使用云翻译 api 构建语言翻译应用程序,但是 我遇到了这个错误。
E/AndroidRuntime: 致命异常: main 进程:com.myclou.cloud,PID:21288 java.lang.NullPointerException:尝试调用接口方法 'com.google.cloud.translate.Translation com.google.cloud.translate.Translate.translate(java.lang.String, com.google.cloud.translate.Translate$TranslateOption [])' 在空对象引用上 在 com.my.cloud.MainActivity.translate(MainActivity.java:84) 在 com.my.cloud.MainActivity$1.onClick(MainActivity.java:49) 在 android.view.View.performClick(View.java:7892) 在 android.widget.TextView.performClick(TextView.java:16219) 在 com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1202) 在 android.view.View.performClickInternal(View.java:7869) 在 android.view.View.-$$Nest$mperformClickInternal(未知来源:0) 在 android.view.View$PerformClick.run(View.java:30880) 在 android.os.Handler.handleCallback(Handler.java:942) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loopOnce(Looper.java:226) 在 android.os.Looper.loop(Looper.java:313) 在 android.app.ActivityThread.main(ActivityThread.java:8757) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)