暑假做業——小靈機器人

APP界面展現

  1. 打開軟件,小靈機器人會自動發出歡迎語(這是設置好的,隨機出現)
    html

  2. 正常對話
    java

  3. 當發送英語等其它語言會翻譯它
    android

  4. 還能夠發送表情等圖片
    apache

  5. 還有其餘智能對話(由於虛擬機內輸入不了漢語,沒法展現)json

APP功能介紹

這款APP的目的很簡單,就是與機器人聊天
能夠經過它來獲取天氣、百科等人工智能回覆的消息,而且能夠在必定程度上完成與人的交流而不是涉及知識上的問答
更加人性化的設計加強了用戶的可用性api

APP開發總覽

APP工程包展現

APP開發過程

(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的開發

若是學有餘力的話
這款APP還有許多能夠開發的選項,好比:

  • 支持語音輸入,回覆
  • 支持服務器存儲,實現帳號登陸
  • 支持頭像、聊天背景、聊天氣泡的更換
    等等更加人性化的設計

參考資料

極客學院

相關文章
相關標籤/搜索