zoukankan      html  css  js  c++  java
  • Android智能聊天机器人

    http://www.tuling123.com/       注册一个账号,申请一个KEY值。此网站也有文档,可以查看。

      1 package com.tulingdemo;
      2 
      3 import java.text.SimpleDateFormat;
      4 import java.util.ArrayList;
      5 import java.util.Date;
      6 import java.util.List;
      7 import org.json.JSONException;
      8 import org.json.JSONObject;
      9 import com.tulingdemo.R;
     10 import android.app.Activity;
     11 import android.os.Bundle;
     12 import android.view.View;
     13 import android.view.View.OnClickListener;
     14 import android.widget.Button;
     15 import android.widget.EditText;
     16 import android.widget.ListView;
     17 
     18 public class MainActivity extends Activity implements HttpGetDataListener,
     19         OnClickListener {
     20 
     21     private HttpData httpData;
     22     private List<ListData> lists;
     23     private ListView lv;
     24     private EditText sendtext;
     25     private Button send_btn;
     26     private String content_str;
     27     private TextAdapter adapter;
     28     private String[] welcome_array;
     29     // 做比对时间;老时间
     30     private double currentTime = 0, oldTime = 0;
     31 
     32     @Override
     33     protected void onCreate(Bundle savedInstanceState) {
     34         super.onCreate(savedInstanceState);
     35         setContentView(R.layout.activity_main);
     36         initView();
     37     }
     38 
     39     private void initView() {
     40         lv = (ListView) findViewById(R.id.lv);
     41         sendtext = (EditText) findViewById(R.id.sendText);
     42         send_btn = (Button) findViewById(R.id.send_btn);
     43         lists = new ArrayList<ListData>();
     44         send_btn.setOnClickListener(this);
     45         adapter = new TextAdapter(lists, this);
     46         lv.setAdapter(adapter);
     47         ListData listData;
     48         listData = new ListData(getRandomWelcomeTips(), ListData.RECEIVER,
     49                 getTime());
     50         lists.add(listData);
     51     }
     52 
     53     /** 用户第一次进入,随机获取欢迎语 */
     54     private String getRandomWelcomeTips() {
     55         String welcome_tip = null;
     56         welcome_array = this.getResources()
     57                 .getStringArray(R.array.welcome_tips);
     58         int index = (int) (Math.random() * (welcome_array.length - 1));
     59         welcome_tip = welcome_array[index];
     60         return welcome_tip;
     61     }
     62 
     63     @Override
     64     public void getDataUrl(String data) {
     65         parseText(data);
     66     }
     67 
     68     public void parseText(String str) {
     69         try {
     70             JSONObject jb = new JSONObject(str);
     71             // System.out.println(jb.getString("code"));
     72             // System.out.println(jb.getString("text"));
     73             ListData listData;
     74             listData = new ListData(jb.getString("text"), ListData.RECEIVER,
     75                     getTime());
     76             lists.add(listData);
     77             adapter.notifyDataSetChanged();
     78         } catch (JSONException e) {
     79             e.printStackTrace();
     80         }
     81     }
     82 
     83     @Override
     84     public void onClick(View v) {
     85         getTime();
     86         content_str = sendtext.getText().toString();
     87         sendtext.setText("");
     88         // 去掉空格
     89         String dropk = content_str.replace(" ", "");
     90         // 去掉回车
     91         String droph = dropk.replace("
    ", "");
     92         ListData listData;
     93         listData = new ListData(content_str, ListData.SEND, getTime());
     94         lists.add(listData);
     95         if (lists.size() > 30) {
     96             for (int i = 0; i < lists.size(); i++) {
     97                 // 移除数据
     98                 lists.remove(i);
     99             }
    100         }
    101         adapter.notifyDataSetChanged();
    102         httpData = (HttpData) new HttpData(
    103                 "http://www.tuling123.com/openapi/api?key=6af9822f5491fadfc142b53818bbd63a&info="
    104                         + droph, this).execute();
    105     }
    106 
    107     /** 获取时间 */
    108     private String getTime() {
    109         currentTime = System.currentTimeMillis();
    110         SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    111         Date curDate = new Date();
    112         String str = format.format(curDate);
    113         // 如果超过5分钟.
    114         if (currentTime - oldTime >= 5 * 60 * 1000) {
    115             oldTime = currentTime;
    116             return str;
    117         } else {
    118             return "";
    119         }
    120 
    121     }
    122 }

    activity_main.xml

     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     android:orientation="vertical" >
     6 
     7     <!-- 
     8          android:transcriptMode="alwaysScroll" 自动向下一直滚动。
     9      -->
    10     <ListView
    11         android:id="@+id/lv"
    12         android:layout_width="fill_parent"
    13         android:layout_height="0dp"
    14         android:layout_weight="1"
    15         android:divider="@null"
    16         android:listSelector="@android:color/transparent"
    17         android:transcriptMode="alwaysScroll" />
    18 
    19     <LinearLayout
    20         android:layout_width="fill_parent"
    21         android:layout_height="wrap_content"
    22         android:orientation="horizontal" >
    23 
    24         <EditText
    25             android:id="@+id/sendText"
    26             android:layout_width="0dp"
    27             android:layout_height="wrap_content"
    28             android:layout_weight="1" />
    29         
    30         <Button 
    31             android:id="@+id/send_btn"
    32             android:layout_width="wrap_content"
    33             android:layout_height="wrap_content"
    34             android:text="@string/send" />
    35     </LinearLayout>
    36 
    37 </LinearLayout>
     1 package com.tulingdemo;
     2 
     3 import java.util.List;
     4 import com.tulingdemo.R;
     5 import android.content.Context;
     6 import android.view.LayoutInflater;
     7 import android.view.View;
     8 import android.view.ViewGroup;
     9 import android.widget.BaseAdapter;
    10 import android.widget.RelativeLayout;
    11 import android.widget.TextView;
    12 
    13 public class TextAdapter extends BaseAdapter {
    14 
    15     private List<ListData> lists;
    16     private Context mContext;
    17     private RelativeLayout layout;
    18 
    19     public TextAdapter(List<ListData> lists, Context mContext) {
    20         this.lists = lists;
    21         this.mContext = mContext;
    22     }
    23 
    24     @Override
    25     public int getCount() {
    26         return lists.size();
    27     }
    28 
    29     @Override
    30     public Object getItem(int position) {
    31         return lists.get(position);
    32     }
    33 
    34     @Override
    35     public long getItemId(int position) {
    36         return position;
    37     }
    38 
    39     @Override
    40     public View getView(int position, View convertView, ViewGroup parent) {
    41         
    42         LayoutInflater inflater = LayoutInflater.from(mContext);
    43         
    44         if (lists.get(position).getFlag() == ListData.RECEIVER) {
    45             layout = (RelativeLayout) inflater.inflate(R.layout.leftitem, null);
    46         }
    47         if (lists.get(position).getFlag() == ListData.SEND) {
    48             layout = (RelativeLayout) inflater
    49                     .inflate(R.layout.rightitem, null);
    50         }
    51         TextView tv = (TextView) layout.findViewById(R.id.tv);
    52         TextView time = (TextView) layout.findViewById(R.id.time);
    53         tv.setText(lists.get(position).getContent());
    54         time.setText(lists.get(position).getTime());
    55         return layout;
    56     }
    57 
    58 }

    leftitem.xml     接受信息

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <RelativeLayout 
     3     xmlns:android="http://schemas.android.com/apk/res/android"
     4     android:layout_width="match_parent"
     5     android:layout_height="match_parent" >
     6 
     7     <TextView
     8         android:id="@+id/time"
     9         android:layout_width="fill_parent"
    10         android:layout_height="wrap_content"
    11         android:gravity="center_horizontal" />
    12 
    13     <ImageView
    14         android:id="@+id/iv"
    15         android:layout_width="70dp"
    16         android:layout_height="70dp"
    17         android:layout_below="@id/time"
    18         android:padding="10dp"
    19         android:src="@drawable/robot" />
    20 
    21     <TextView
    22         android:id="@+id/tv"
    23         android:layout_width="wrap_content"
    24         android:layout_height="wrap_content"
    25         android:layout_below="@id/time"
    26         android:layout_marginRight="50dp"
    27         android:layout_toRightOf="@id/iv"
    28         android:background="@drawable/aio_friend_bg_nor_11"
    29         android:gravity="center" />
    30 
    31 </RelativeLayout>

    rightitem.xml      发送信息

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <RelativeLayout 
     3     xmlns:android="http://schemas.android.com/apk/res/android"
     4     android:layout_width="match_parent"
     5     android:layout_height="match_parent" >
     6 
     7     <TextView
     8         android:id="@+id/time"
     9         android:layout_width="fill_parent"
    10         android:layout_height="wrap_content"
    11         android:gravity="center_horizontal" />
    12 
    13     <ImageView
    14         android:id="@+id/iv"
    15         android:layout_width="70dp"
    16         android:layout_height="70dp"
    17         android:layout_alignParentRight="true"
    18         android:layout_below="@id/time"
    19         android:padding="10dp"
    20         android:src="@drawable/visitor" />
    21 
    22     <TextView
    23         android:id="@+id/tv"
    24         android:layout_width="wrap_content"
    25         android:layout_height="wrap_content"
    26         android:layout_below="@id/time"
    27         android:layout_marginLeft="50dp"
    28         android:layout_toLeftOf="@id/iv"
    29         android:background="@drawable/aio_user_bg_nor_11"
    30         android:gravity="center" />
    31 
    32 </RelativeLayout>
     1 package com.tulingdemo;
     2 
     3 import java.io.BufferedReader;
     4 import java.io.InputStream;
     5 import java.io.InputStreamReader;
     6 import org.apache.http.HttpEntity;
     7 import org.apache.http.HttpResponse;
     8 import org.apache.http.client.HttpClient;
     9 import org.apache.http.client.methods.HttpGet;
    10 import org.apache.http.impl.client.DefaultHttpClient;
    11 import android.os.AsyncTask;
    12 
    13 public class HttpData extends AsyncTask<String, Void, String>{
    14 
    15     private HttpClient mHttpClient;
    16     private HttpGet mHttpGet;
    17     private HttpResponse mHttpResponse;
    18     private HttpEntity mHttpEntity;
    19     private InputStream in;
    20     private HttpGetDataListener listener;
    21     
    22     private String url;
    23     public HttpData(String url,HttpGetDataListener listener) {
    24         this.url = url;
    25         this.listener = listener;
    26     }
    27     
    28     @Override
    29     protected String doInBackground(String... params) {
    30         try {
    31             mHttpClient = new DefaultHttpClient();
    32             mHttpGet = new HttpGet(url);
    33             mHttpResponse = mHttpClient.execute(mHttpGet);
    34             mHttpEntity = mHttpResponse.getEntity();
    35             in = mHttpEntity.getContent();
    36             BufferedReader br = new BufferedReader(new InputStreamReader(in));
    37             String line = null;
    38             StringBuffer sb = new StringBuffer();
    39             while ((line = br.readLine()) != null) {
    40                 sb.append(line);
    41             }
    42             return sb.toString();
    43         } catch (Exception e) {
    44         }
    45         return null;
    46     }
    47     @Override
    48     protected void onPostExecute(String result) {
    49         listener.getDataUrl(result);
    50         super.onPostExecute(result);
    51     }
    52 }
    1 package com.tulingdemo;
    2 
    3 public interface HttpGetDataListener {
    4     void getDataUrl(String data);
    5 }
     1 package com.tulingdemo;
     2 
     3 public class ListData {
     4     
     5     public static final int SEND = 1;      // 发送
     6     public static final int RECEIVER = 2;  // 接收
     7     private String content;
     8     // 标识,判断是左边,还是右边。
     9     private int flag;    
    10     private String time;
    11     
    12     public ListData(String content,int flag,String time) {
    13         setContent(content);
    14         setFlag(flag);
    15         setTime(time);
    16     }
    17     
    18     public String getContent() {
    19         return content;
    20     }
    21     public void setContent(String content) {
    22         this.content = content;
    23     }
    24     public int getFlag() {
    25         return flag;
    26     }
    27     public void setFlag(int flag) {
    28         this.flag = flag;
    29     }
    30     public String getTime() {
    31         return time;
    32     }
    33     public void setTime(String time) {
    34         this.time = time;
    35     }
    36 }

    strings.xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <resources>
     3 
     4     <string name="app_name">小灵机器人</string>
     5     <string name="hello_world">Hello world!</string>
     6     <string name="action_settings">Settings</string>
     7     <string name="send">发送</string>
     8     
     9     <!-- 欢迎语 -->
    10     <string-array name="welcome_tips">
    11         <item>主人,奴婢在此等候多时了</item>
    12         <item>主人,近来一切可好</item>
    13         <item>亲爱的,我想死你了</item>
    14         <item>欢迎归来,我亲爱的主人</item>
    15         <item>我是小灵机器人,很高兴为您服务</item>
    16     </string-array>
    17 
    18 </resources>

    完整代码下载:http://pan.baidu.com/s/1pJJR8JD

  • 相关阅读:
    Android smali 语法
    iOS 发布计费点测试
    how-to-stop-non-jailbroken-pirates-theory
    shell script
    文章收藏
    NB BAT批量读取图片文件属性
    JAVA LUHN
    MAC NDK 编译 Cocos2dx 问题
    Mac 下解压缩安装Android ndk bin 文件
    MVC Json输出调试信息
  • 原文地址:https://www.cnblogs.com/androidsj/p/3996465.html
Copyright © 2011-2022 走看看