我正在尝试创建一个将使用某些API进行翻译的Android应用程序(现在我使用的是Microsoft API - microsoft-translator-java-api-0.6.2-jar-with-dependencies.jar)
我已经为单个String做了这个,但我想翻译一些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");
}
}
}
答案 0 :(得分:0)
您正在调用UI线程上调用的execute
内部方法。我不知道这个API,但它很可能与服务器通信,如果它立即返回数据 - 而不是通过某种回调,那么它可能正在进行HTTP通信。
在android下不允许这样做,你应该在AsyncTask中调用这个api。
另一件事是,您应该分析logcat - 它应该为您提供有关错误的其他提示。您在try / catch中调用execute
的事实可能是因为您获得了android.os.NetworkOnMainThreadException
。