gpt4 book ai didi

java - Microsoft翻译API,Translate.execute()方法在android中不调用

转载 作者:太空宇宙 更新时间:2023-11-04 13:35:43 24 4
gpt4 key购买 nike

我正在尝试制作一个使用某些 API 进行翻译的 Android 应用程序(现在我使用 Microsoft API - microsoft-translator-java-api-0.6.2-jar-with-dependency.jar )

我已经为单个字符串完成了此操作,但我想翻译一些 pdf 文件。有人知道如何将 PDF 发送给这位翻译人员并获取翻译后的结果吗?

public class FirstFrag extends MainNavigation.SectionFrag {

private Button translate;

String translatedText;

public FirstFrag(){
super();
}
public static FirstFrag newInstance(Context c, int section){
FirstFrag ret = new FirstFrag();
ret.setSection(section);
return ret;
}

@Override
public void afterCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

super.afterCreateView(inflater, container, savedInstanceState);
setContentView(R.layout.first_frag_layout);

translate = (Button) findViewById(R.id.btnProgressBar);
translate.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {

translate.setEnabled(false);
new TranslateFromBing().execute();

}
});
}

@Override
protected void onRetryClicked() {}

// Async Task Class
class TranslateFromBing extends AsyncTask<String, String, String> {

@Override
protected void onPreExecute() {
super.onPreExecute();
}


@Override
protected String doInBackground(String... f_url) {

Translate.setClientId("MY CLIENT ID");
Translate.setClientSecret("MY CLIENT SECRET");

translatedText = null;
try {
translatedText = Translate.execute("Bonjour le monde", Language.FRENCH, Language.ENGLISH);
} catch (Exception e) {
e.printStackTrace();
}

return null;
}


protected void onProgressUpdate(String... progress) {

}

@Override
protected void onPostExecute(String file_url) {
Toast.makeText(getActivity().getApplicationContext(), "Translation complete", Toast.LENGTH_LONG).show();

TextView translated = (TextView) findViewById(R.id.translatedText);
if(translatedText != null) {
translated.setText(translatedText);
}
else {
translated.setText("ERROR HERE");
}
}
}

最佳答案

您正在调用 UI 线程上调用的方法内部的 execute 。我不知道这个 API,但它很可能确实与服务器通信,如果它立即返回数据 - 而不是通过某种回调,那么它可能正在进行 HTTP 通信。

这在android下是不允许的,你应该在AsyncTask中调用这个api。

另一件事是,您应该分析 logcat - 它应该为您提供有关问题所在的额外提示。您在 try/catch 中调用 execute 的事实可能是因为您收到 android.os.NetworkOnMainThreadException

关于java - Microsoft翻译API,Translate.execute()方法在android中不调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31720947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com