练习前可查看百度文档: http://developer.baidu.com/wiki/index.php?title=帮助文档首页/百度翻译/翻译API


在使用前,你需要在开发者帐号中创建应用,来获取授权码,这样才能正常的使用提供的接口。

活动:



[html]  view plain copy print ?
  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. }  

布局:

[html]  view plain copy print ?
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <EditText  
  8.         android:id="@+id/et_first"  
  9.         android:layout_width="match_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:ems="10" >  
  12.   
  13.         <requestFocus />  
  14.     </EditText>  
  15.   
  16.     <Button  
  17.         android:id="@+id/btn_trans"  
  18.         android:layout_width="wrap_content"  
  19.         android:layout_height="wrap_content"  
  20.         android:text="翻译" />  
  21.   
  22.     <EditText  
  23.         android:id="@+id/et_second"  
  24.         android:layout_width="match_parent"  
  25.         android:layout_height="wrap_content"  
  26.         android:ems="10" />  
  27.   
  28. </LinearLayout>  

运行效果:


说明:

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

[html]  view plain copy print ?
  1. 自动识别的规则  
  2.     当源语言为非中文时,目标语言自动设置为中文。当源语言为中文时,目标语言自动设置为英文。  
  3.     如下例:   
  4.     1)源语言识别为中文,则翻译方向为“中 -> 英”   
  5.     2)源语言识别为英文,则翻译方向为“英 -> 中”   
  6.     3)源语言识别为日文,则翻译方向为“日 -> 中”   

        2.用get请求发送中文的时候,需要转码,开始的时候以为百度提供的接口,就没考虑那么多,其实是需要你处理的。

3.翻译其他语种需求 , 参考如下语种编码:


源码下载 : http://download.csdn.net/detail/qq_25835645/9117263



Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐