打開軟件,小靈機器人會自動發出歡迎語(這是設置好的,隨機出現)
html
正常對話
java
當發送英語等其它語言會翻譯它
android
還能夠發送表情等圖片
apache
還有其餘智能對話(由於虛擬機內輸入不了漢語,沒法展現)json
這款APP的目的很簡單,就是與機器人聊天
能夠經過它來獲取天氣、百科等人工智能回覆的消息,而且能夠在必定程度上完成與人的交流而不是涉及知識上的問答
更加人性化的設計加強了用戶的可用性api
(1. 從圖靈官網註冊並獲取圖靈API用於實現小靈機器人的智能回覆
註冊平臺:圖靈機器人
服務器
註冊登錄後,便可得到本身的API用於開發等選項app
(2. 搭建Android環境
(3. 異步請求數據:經過使用圖靈機器人API在Android平臺獲取數據dom
import android.os.AsyncTask; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; public class HttpDate extends AsyncTask<String,Void,String> { private HttpClient mHttpClient; private HttpGet mHttpGet;//請求方式 private HttpResponse mHttpResponse;//獲取請求的返回 private HttpEntity mHttpEntity;//http的實體 private InputStream in;//轉換成流文件作處理 private HttpGetDateListener listener; private String url; public HttpDate(String url,HttpGetDateListener listener){ this.url=url; this.listener=listener; } public HttpDate(String url){ this.url = url; } @Override protected String doInBackground(String... strings) { try { mHttpClient = new DefaultHttpClient();//實例化客戶端 mHttpGet = new HttpGet(url);//get方式請求 mHttpResponse = mHttpClient.execute(mHttpGet);//經過客戶端發送 mHttpEntity = mHttpResponse.getEntity();//獲取數據 in = mHttpEntity.getContent();//數據轉換成流文件 BufferedReader br = new BufferedReader(new InputStreamReader(in));//經過緩衝區讀取 String line = null;//獲取數據 StringBuffer sb = new StringBuffer();//儲存全部的數據 while ((line = br.readLine()) != null) {//讀取數據 sb.append(line); } return sb.toString(); } catch (Exception e) { } return null; } @Override protected void onPostExecute(String s) { listener.getDateUrl(s); super.onPostExecute(s); } }
(4. json數據解析:將json數據解析從而獲取須要內容,以便顯示在對話框異步
public void parseText(String str) { try { JSONObject jb = new JSONObject(str); // System.out.println(jb.getString("Code")); // System.out.println(jb.getString("text")); ListDate listDate= new ListDate(jb.getString("text"),ListDate.RECEIVER,getTime()); lists.add(listDate); adapter.notifyDataSetChanged(); } catch (JSONException e) { e.printStackTrace(); } }
從異步請求得到的信息當中提取出所須要的內容,並將其加入到列表中
(5. 佈局實現
這一步也很重要
不一樣於其它頁面的佈局,聊天頁面的佈局要實現對話的上下滾動,而不是靜止的東西
每一次發送消息和收到回覆,都須要判斷當前應該加載機器人仍是用戶頭像
(6. 點9圖片的設置:防止對話框圖片由於承載內容文字過多而致使變形、失真
點9圖片是Android自帶的功能,這樣的設計會更加人性化
(7. 添加歡迎語
private String getRandomWelcomeTips(){//隨機出現歡迎語 String welcome_tip = null; welcome_array = this.getResources().getStringArray(R.array.welcome_tips); int index = (int) (Math.random()*(welcome_array.length-1)); welcome_tip = welcome_array[index]; return welcome_tip; }
歡迎語是實現設置好的幾種隨機出現一個,從而提升用戶的興趣
(8. 添加時間
private String getTime(){ currentTime = System.currentTimeMillis(); SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); Date curDate = new Date(); String str = format.format(curDate); if (currentTime - oldTime >= 5*60*1000){ oldTime = currentTime; return str; }else { return ""; } }
更加人性化的設置,告訴用戶當前時間
而且設置了5分鐘後發送消息再次顯示時間
(9. 其它細節
a. 輸入框在發送完內容以後應該自動清空,不清空會對用戶輸入形成不便
直接將其設置爲空便可
sendtext.setText("");
b. 輸入框發送的內容要去掉換行和空格,不然小靈機器人可能會不理解
String dropk = content_str.replace(" ","");//去掉空格 String droph = dropk.replace("\n","");//去掉換行
經過替代方法完成便可
若是學有餘力的話
這款APP還有許多能夠開發的選項,好比: