1. 程式人生 > >安卓開發—使用有道翻譯

安卓開發—使用有道翻譯

首先申請介面,開啟,有道翻譯API首頁:
這裡寫圖片描述

點選我是開發者:
這裡寫圖片描述

填寫相應的資訊,拿到請求的資料:
這裡寫圖片描述

在這裡,大家可以試試這個介面

請求結果:

{"translation":["你好"],"basic":{"us-phonetic":"hɛˈlo, hə-","phonetic":"hə'ləʊ; he-","uk-phonetic":"hə'ləʊ; he-","explains":["n. 表示問候, 驚奇或喚起注意時的用語","int. 喂;哈羅","n. (Hello)人名;(法)埃洛"]},"query":"hello","errorCode":0,"web":[{"value
":["你好","您好","hello"],"key":"Hello"},{"value":["凱蒂貓","暱稱","匿稱"],"key":"Hello Kitty"},{"value":["哈樂哈樂","樂扣樂扣"],"key":"Hello Bebe"}]
}
{
    "translation":[
        "你好"
    ],
    "basic":{
        "us-phonetic":"hɛˈlo, hə-",
        "phonetic":"hə'ləʊ; he-",
        "uk-phonetic":"hə'ləʊ; he-",
        "explains
":[ "n. 表示問候, 驚奇或喚起注意時的用語", "int. 喂;哈羅", "n. (Hello)人名;(法)埃洛" ] }
, "query":"hello", "errorCode":0, "web":[ { "value":[ "你好", "您好", "hello" ], "key":"Hello"
}, { "value":[ "凱蒂貓", "暱稱", "匿稱" ], "key":"Hello Kitty" }, { "value":[ "哈樂哈樂", "樂扣樂扣" ], "key":"Hello Bebe" } ]
}

準備工作做好了,開始寫邏輯;
首先,我們要使用Rxvolley網路框架:http://rxvolley.mydoc.io/
(詳細可以看看)

使用RxVolley,需要在你的build.gradle檔案中加入

compile ‘com.kymjs.rxvolley:rxvolley:1.1.4’

一個介面,一個activity

介面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/ic_background"
    >

    <TextView
        android:id="@+id/mean"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:textSize="12dp" />


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:gravity="center">
        <EditText
            android:id="@+id/in"
            android:layout_width="300dp"
            android:layout_height="wrap_content" />
        <Button
            android:id="@+id/sure"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:text="@string/fanyi"/>

    </LinearLayout>
</LinearLayout>

邏輯

public class MainActivity extends AppCompatActivity {

    private TextView  mean;
    private EditText in;
    private Button sure;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        initView();
    }

    private void initView() {
        mean=(TextView)findViewById(R.id.mean);
        in=(EditText)findViewById(R.id.in);
        sure=(Button)findViewById(R.id.sure);

        //為Button新增點選事件
        sure.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                /*
                1、獲取輸入框的內容
                2、判斷輸入是否為空
                3、拼接api
                4、向伺服器傳送請求
                5、解析資料
                6、在頂部顯示
                 */
                //1、獲取輸入框的內容
                String s=in.getText().toString();
                //判斷輸入是否為空
                if(s==null){
                    Toast.makeText(MainActivity.this,"輸入框不能為空",Toast.LENGTH_LONG).show();
                }
                //輸入為空
                //3.拼接url
                 String a= "http://fanyi.youdao.com/openapi.do?keyfrom=aaa123ddd&key=336378893&type=data&doctype=json&version=1.1&q="+s;
                //4.向伺服器傳送請求,使用rxvolley網路框架

                //get請求簡潔版實現
                RxVolley.get(a, new HttpCallback() {
                    @Override
                    public void onSuccess(String t) {
                        Loger.debug("請求到的資料:" + t);
                        eJson(t);
                    }
                });

                }

            }
        );

    }



    //解析資料並顯示
    private void eJson(String json){

        try{
            JSONObject jsonObject = new JSONObject(json);
            JSONObject object = jsonObject.getJSONObject("basic");




            String  s="美式發音"+ object.getString("us-phonetic")+"\n"+
                    "英式發音"+object.getString("uk-phonetic")+"\n"+
                    "釋義:"+"\n"+object.getString("explains")+"\n"+"網路釋義:"+"\n";


            JSONArray ja = jsonObject.getJSONArray("web");
            for (int i = 0; i < ja.length(); i++) {
                JSONObject jsonObject3 = (JSONObject) ja.get(i);
                s=s+jsonObject3.getString("value")+"\n";
                s=s+jsonObject3.getString("key")+"\n";
            }



            //在頂部顯示
            mean.setText(s);


        }
        catch (Exception e){
            e.printStackTrace();

        }


    }

}

這樣就完成了,如果有問題可以在下面評論交流哦