月清空的博客

先看下帮助文档吧。

接口帮助文档

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

活动:

public class TranslateAcy extends Activity implements OnClickListener {private String BaiduTrans = "";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: #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=""xmlns:tools=""android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><EditTextandroid:id="@+id/et_first"android:layout_width="match_parent"android:layout_height="wrap_content"android:ems="10" ><requestFocus /></EditText><Buttonandroid:id="@+id/btn_trans"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="翻译" /><EditTextandroid: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");

趁着有脾气装潇洒,有本钱耍个性,

月清空的博客

相关文章:

你感兴趣的文章:

标签云: