安卓開發—使用有道翻譯
阿新 • • 發佈:2019-01-23
首先申請介面,開啟,有道翻譯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();
}
}
}
這樣就完成了,如果有問題可以在下面評論交流哦