先看下帮助文档吧。
接口帮助文档
在使用前,你需要在开发者帐号中创建应用,来获取授权码,这样才能正常的使用提供的接口。
活动:
public class TranslateAcy extends Activity implements OnClickListener { private String BaiduTrans = "http://openapi.baidu.com/public/2.0/bmt/translate"; private String Client_id = "S7874h7McC7avmbWtPFkCOgc"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } public void initView() { findViewById(R.id.btn_trans).setOnClickListener(this); } private Handler insHandler = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub switch (msg.what) { case 0: String word = msg.getData().getString("word"); ((EditText) findViewById(R.id.et_second)).setText(word); break; default: break; } } }; /** * 翻译 */ private void transEnTo() { // path: http://fanyi.baidu.com/#en/zh/ String putword = ((EditText) findViewById(R.id.et_first)).getText() .toString(); try { // 对中文字符进行编码,否则传递乱码 putword = URLEncoder.encode(putword, "utf-8"); URL url = new URL(BaiduTrans + "?client_id=" + Client_id + "&q=" + putword + "&from=auto&to=zh"); URLConnection con = url.openConnection(); con.connect(); InputStreamReader reader = new InputStreamReader( con.getInputStream()); BufferedReader bufread = new BufferedReader(reader); StringBuffer buff = new StringBuffer(); String line; while ((line = bufread.readLine()) != null) { buff.append(line); } // 对字符进行解码 String back = new String(buff.toString().getBytes("ISO-8859-1"), "UTF-8"); String str = JsonToString(back); Message msg = new Message(); msg.what = 0; Bundle bun = new Bundle(); bun.putString("word", str); msg.setData(bun); insHandler.sendMessage(msg); reader.close(); bufread.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 获取jsoon中翻译的内容 * * @param jstring * @return */ private String JsonToString(String jstring) { try { JSONObject obj = new JSONObject(jstring); JSONArray array = obj.getJSONArray("trans_result"); obj = array.getJSONObject(0); String word = obj.getString("dst"); return word; } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } return ""; } /** * 访问网络线程 */ private void tranThread() { new Thread() { public void run() { transEnTo(); }; }.start(); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.btn_trans: tranThread(); break; default: break; } } }
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/et_first" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" > <requestFocus /> </EditText> <Button android:id="@+id/btn_trans" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="翻译" /> <EditText android:id="@+id/et_second" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" /> </LinearLayout>
说明:
1.我这里使用了自动识别,所以可以中英文互译。其规则:
自动识别的规则 当源语言为非中文时,目标语言自动设置为中文。当源语言为中文时,目标语言自动设置为英文。 如下例: 1)源语言识别为中文,则翻译方向为“中 -> 英” 2)源语言识别为英文,则翻译方向为“英 -> 中” 3)源语言识别为日文,则翻译方向为“日 -> 中”2.用get请求发送中文的时候,需要转码,开始的时候以为百度提供的接口,就没考虑那么多,其实是需要你处理的。
// 对中文字符进行编码,否则传递乱码 putword = URLEncoder.encode(putword, "utf-8");