百度翻译接口

来源:互联网 发布:能帮人找东西的软件 编辑:程序博客网 时间:2024/06/05 10:24

先看下帮助文档吧。

接口帮助文档


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

活动:

public class TranslateAcy extends Activity implements OnClickListener {private String BaiduTrans = "http://openapi.baidu.com/public/2.0/bmt/translate";private String Client_id = "S7874h7McC7avmbWtPFkCOgc";@Overrideprotected 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() {@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubswitch (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 blocke.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 blocke.printStackTrace();}return "";}/** * 访问网络线程 */private void tranThread() {new Thread() {public void run() {transEnTo();};}.start();}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (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");


0 0