Android 百度翻译api接口调用

Boss说 我们的软件必须国际化 要五国翻译,额 如果拼音也算一种的话 那是六国

调用接口识别目标想翻译成哪一国语言

    private void getTranslate(String L) {
        new Thread(L) {
            public void run() {
                Message msg = new Message();
                Bundle data = new Bundle();
                String  longuage = "";
                if(tolonguage == "to_ch"){
                  longuage = HttpUtil.translate(add_sub.getText().toString(), HttpUtil.LONGUAGE_ZH);
                }else if(tolonguage == "to_jp"){
                    longuage =   HttpUtil.translate(add_sub.getText().toString(), HttpUtil.LONGUAGE_JP);
                }else if(tolonguage == "to_en"){
                    longuage =   HttpUtil.translate(add_sub.getText().toString(), HttpUtil.LONGUAGE_EN);
                }else if(tolonguage == "to_kor"){
                    longuage =   HttpUtil.translate(add_sub.getText().toString(), HttpUtil.LONGUAGE_KOR);
                }else if(tolonguage == "to_fra"){
                    longuage =   HttpUtil.translate(add_sub.getText().toString(), HttpUtil.LONGUAGE_FRA);
                }
                data.putString("value", longuage);
                msg.setData(data);
                // 发送一个消息 更新界面。
                handler.sendMessage(msg);
            };
        }.start();
    }

网络请求 返回json 并解析

    /*
    中文	zh
    英语	en
    日语	jp
    法语	fra
    韩语	kor
    */
    public static String LONGUAGE_ZH = "zh";
    public static String LONGUAGE_JP = "jp";
    public static String LONGUAGE_EN = "en";
    public static String LONGUAGE_KOR = "kor";
    public static String LONGUAGE_FRA = "fra";
	
    public static String translate(String source, String language) {
        String api_url;
        try {
            api_url = new StringBuilder("http://openapi.baidu.com/public/2.0/bmt/translate?client_id=" + appkey + "&q=" + URLEncoder.encode(source, "utf-8") + "&from=auto&to=" + URLEncoder.encode(language, "utf-8")).toString();

            String json = Url2Json(api_url);
            LanguageMode translateMode = JSON.parseObject(json, LanguageMode.class);
            if (translateMode != null && translateMode.getTrans_result() != null && translateMode.getTrans_result().size() == 1) {
                return translateMode.getTrans_result().get(0).getDst();
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

根据URL解析成字符串 并返回

	
    public static String Url2Json(String http) {
        URL url;
        try {
            url = new URL(http);
            HttpURLConnection conn = (HttpURLConnection) url
                    .openConnection();

            conn.setRequestMethod("POST");
            // ANR
            conn.setConnectTimeout(4000);
            int code = conn.getResponseCode();
            if (code == 200) {

                InputStream stream = conn.getInputStream();
                String fromStream = StreamTools.readFromStream(stream);
                return fromStream;
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
	

输入流InputStream 返回字符串

	
	   /**
     * @param is 输入流
     * @return String 返回的字符串
     * @throws IOException
     */
    public static String readFromStream(InputStream is) throws IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len = 0;
        while ((len = is.read(buffer)) != -1) {
            baos.write(buffer, 0, len);
        }
        is.close();

        String result = URLDecoder.decode(baos.toString(), "UTF-8");
        baos.close();
        return result;
    }
	
	
解析json 所用到的 model
	
	package com.minitalk.model;
	 
	import java.io.Serializable;
	import java.util.List;
	 
	public class LanguageMode implements Serializable{

	  String from,to;

	  public String getFrom() {
		return from;
	  }
	  public void setFrom(String from) {
		this.from = from;
	  }
	  public String getTo() {
		return to;
	  }
	  public void setTo(String to) {
		this.to = to;
	  }

	  List<trans_result> trans_result;


	  public class trans_result implements Serializable{
		String dst,src;
	 
		public String getDst() {
		  return dst;
		}
	 
		public void setDst(String dst) {
		  this.dst = dst;
		}
	 
		public String getSrc() {
		  return src;
		}
	 
		public void setSrc(String src) {
		  this.src = src;
		}
	 
	  }
		public List<trans_result> getTrans_result() {
			return trans_result;
		}
		public void setTrans_result(List<trans_result> trans_result) {
			this.trans_result = trans_result;
		}
	  

	}
	

恩 具体的操作就是这样 主要涉及json解析 和网络访问 都挺简单 拼音目前可以同开源框架pinyin4j 实现 可是boss 说要带声调的 目前虽然有些进展但还不完善就不放出来了

Table of Contents