百度翻译接口

先看下帮助文档吧。

接口帮助文档


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

活动:

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张图片

百度翻译接口_第2张图片


说明:

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

    自动识别的规则
        当源语言为非中文时,目标语言自动设置为中文。当源语言为中文时,目标语言自动设置为英文。
        如下例: 
        1)源语言识别为中文,则翻译方向为“中 -> 英” 
        2)源语言识别为英文,则翻译方向为“英 -> 中” 
        3)源语言识别为日文,则翻译方向为“日 -> 中” 

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

// 对中文字符进行编码,否则传递乱码
			putword = URLEncoder.encode(putword, "utf-8");


你可能感兴趣的:(百度翻译)