百度翻译接口

  1. public class TranslateAcy extends Activity implements OnClickListener {  
  2.     private String BaiduTrans = "http://openapi.baidu.com/public/2.0/bmt/translate";  
  3.     private String Client_id = "S7874h7McC7avmbWtPFkCOgc";  
  4.   
  5.     @Override  
  6.     protected void onCreate(Bundle savedInstanceState) {  
  7.         super.onCreate(savedInstanceState);  
  8.         setContentView(R.layout.activity_main);  
  9.         initView();  
  10.     }  
  11.   
  12.     public void initView() {  
  13.         findViewById(R.id.btn_trans).setOnClickListener(this);  
  14.     }  
  15.   
  16.     private Handler insHandler = new Handler() {  
  17.         @Override  
  18.         public void handleMessage(Message msg) {  
  19.             // TODO Auto-generated method stub  
  20.             switch (msg.what) {  
  21.             case 0:  
  22.                 String word = msg.getData().getString("word");  
  23.                 ((EditText) findViewById(R.id.et_second)).setText(word);  
  24.                 break;  
  25.   
  26.             default:  
  27.                 break;  
  28.             }  
  29.         }  
  30.     };  
  31.   
  32.     /**  
  33.      * 翻译  
  34.      */  
  35.     private void transEnTo() {  
  36.         // path: http://fanyi.baidu.com/#en/zh/  
  37.         String putword = ((EditText) findViewById(R.id.et_first)).getText()  
  38.                 .toString();  
  39.         try {  
  40.             // 对中文字符进行编码,否则传递乱码  
  41.             putword = URLEncoder.encode(putword, "utf-8");  
  42.             URL url = new URL(BaiduTrans + "?client_id=" + Client_id + "&q="  
  43.                     + putword + "&from=auto&to=zh");  
  44.   
  45.             URLConnection con = url.openConnection();  
  46.             con.connect();  
  47.             InputStreamReader reader = new InputStreamReader(  
  48.                     con.getInputStream());  
  49.             BufferedReader bufread = new BufferedReader(reader);  
  50.             StringBuffer buff = new StringBuffer();  
  51.             String line;  
  52.             while ((line = bufread.readLine()) != null) {  
  53.                 buff.append(line);  
  54.             }  
  55.             // 对字符进行解码  
  56.             String back = new String(buff.toString().getBytes("ISO-8859-1"),  
  57.                     "UTF-8");  
  58.             String str = JsonToString(back);  
  59.             Message msg = new Message();  
  60.             msg.what = 0;  
  61.             Bundle bun = new Bundle();  
  62.             bun.putString("word", str);  
  63.             msg.setData(bun);  
  64.             insHandler.sendMessage(msg);  
  65.   
  66.             reader.close();  
  67.             bufread.close();  
  68.         } catch (Exception e) {  
  69.             // TODO Auto-generated catch block  
  70.             e.printStackTrace();  
  71.         }  
  72.     }  
  73.   
  74.     /**  
  75.      * 获取jsoon中翻译的内容  
  76.      *   
  77.      * @param jstring  
  78.      * @return  
  79.      */  
  80.     private String JsonToString(String jstring) {  
  81.         try {  
  82.             JSONObject obj = new JSONObject(jstring);  
  83.             JSONArray array = obj.getJSONArray("trans_result");  
  84.             obj = array.getJSONObject(0);  
  85.             String word = obj.getString("dst");  
  86.             return word;  
  87.         } catch (JSONException e) {  
  88.             // TODO Auto-generated catch block  
  89.             e.printStackTrace();  
  90.         }  
  91.         return "";  
  92.     }  
  93.   
  94.     /**  
  95.      * 访问网络线程  
  96.      */  
  97.     private void tranThread() {  
  98.         new Thread() {  
  99.             public void run() {  
  100.                 transEnTo();  
  101.             };  
  102.         }.start();  
  103.     }  
  104.   
  105.     @Override  
  106.     public void onClick(View v) {  
  107.         // TODO Auto-generated method stub  
  108.         switch (v.getId()) {  
  109.         case R.id.btn_trans:  
  110.             tranThread();  
  111.             break;  
  112.   
  113.         default:  
  114.             break;  
  115.         }  
  116.     }  
  117. }  
  118. 运行效果:


    说明:

           1.我这里使用了自动识别,所以可以中英文互译。其规则:

    [html]  view plain copy print ?
    1. 自动识别的规则  
    2.     当源语言为非中文时,目标语言自动设置为中文。当源语言为中文时,目标语言自动设置为英文。  
    3.     如下例:   
    4.     1)源语言识别为中文,则翻译方向为“中 -> 英”   
    5.     2)源语言识别为英文,则翻译方向为“英 -> 中”   
    6.     3)源语言识别为日文,则翻译方向为“日 -> 中”   
            2.用get请求发送中文的时候,需要转码,开始的时候以为百度提供的接口,就没考虑那么多,其实是需要你处理的。

    [html]  view plain copy print ?
    1. // 对中文字符进行编码,否则传递乱码  
    2.             putword = URLEncoder.encode(putword, "utf-8");  

猜你喜欢

转载自blog.csdn.net/wo0123456789wo/article/details/37765909