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("\n", "");
 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

时间: 2024-11-24 11:45:31

Android智能聊天机器人的相关文章

Android学习之智能聊天机器人(图灵机器人)

今天我们来分享一个有趣的应用:Android版的智能聊天机器人 开发工具:Eclipse 开发时间:2015/07/07 所用技术:图灵机器人API  网络通信之异步请求 接口回调  自定义Adapter 下面我将详细叙述开发的步骤: 第一步:申请图灵机器人的API KEY 方法很简单,只需要在图灵机器人API官网注册一个账号,注册成功之后,会显示一个API KEY 图灵机器人API 账号注册网址:图灵机器人 注册成功后,点击平台接入,认真看一下API接入的流程 第二步:开始创建工程进行编码,首

【智能聊天机器人】小花猫的成长之路——1.初生

大家好,我是大花猫~ 为了响应慕女神MM的号召,我也来把最近开始学习HTML5移动webApp开发的一些心得和经验分享出来~ 先自我介绍一下,我是一枚位于魔都上海的处女座Android攻城狮(- - )~ 一次机缘巧合情况下来到慕课网,并跟着<慕课网2048私人定制>这个教学视频学着写了一个属于我自己的2048(升职版),又在机缘巧合情况下参加了慕课举办的2048源码比赛,又机缘巧合下拿了一等奖!0.0 ! 从此爱上了慕课网~~~ -------以上为开场白,下面进入主题-------- 我这

安卓智能聊天机器人开发(二)

接上一篇文章<安卓智能聊天机器人开发(一)>,晚上继续写. 在上一篇文章中,已经实现了对网络数据的获取和处理封装,这篇文章来讲下如何嵌入到安卓应用中. 先看下效果图: 从上面两张图我们可以发现,这个聊天布局其实就是一个ListView,只不过它和传统的ListView有些区别,因为它使用了多Item样式布局 首先,先来分析下基础布局: 这个界面是由3个布局文件组成,分别是主布局,发送消息样式布局,接收消息样式布局 先来看下主布局: 这里是对应的主布局代码: 1 <RelativeLayo

【源码分享下载】Android 智能问答机器人的实现

Android 智能问答机器人的实现 服务分类: 服务类API 使用服务: 图灵机器人 功能分类: 娱乐 支持平台: Android 运行环境: Android 开发语言: Java 开发工具: Eclipse 源码大小: 1.94MB 下载地址:http://www.devstore.cn/code/info/117.html 源码简介 Android 智能机器人的实现,可以和机器人聊天,以及查询各种服务,公交等. 源码片段 源码运行截图

【智能聊天机器人】小花猫的成长之路——2.&quot;萌&quot;芽

?嗨,大家好,我是大花猫,我又来喽~ ?上期心得为大家介绍了一下我家的"小花猫"君,很高兴有不少同学都给它点了赞!^_^ 那我就开始教大家如何制作一个属于自己的智能聊天机器人小伙伴~ 哈哈~ ?PS:由于种种原因,我的心得暂时由"奋斗在路上"这位大哥帮忙发出来~ 请见谅~ ?-------以上依然为开场白,下面进入主题-------- ?今天的主题名称叫- "萌"芽,顾名思义,是要给大家介绍"小花猫"最初的样子:萌字加了个引号

智能聊天机器人

智能聊天机器人 功能 1.打开网站 2.查询菜谱 3.查询酒店 4.查看视频 5.查看小说 6.查询火车 7.查询公交 8.软件下载 9.语音智能识别输入 10.查询天气 11.陪你聊天 Download app.apk Thanks for 1.图灵智能机器人平台:http://www.tuling123.com/ 2.讯飞科大:http://open.voicecloud.cn/ 3.Goole Volley:http://developer.android.com/intl/zh-cn/t

智能聊天机器人实现(源码+解析)

前言: 之前写了一篇  <美女图片采集器 (源码+解析)> 得到了众多朋友的支持, 发现这样系列的教程还是挺受欢迎的, 也激励我继续写下去. 也在那一篇文章中提过, 美女图片采集只是我先前那个完整APP中的一个功能罢了, 还有其他几个比较好玩的尚未开源, 之后有时间会逐一写篇教程. 今天带来的是智能聊天机器人实现(源码+解析), 和上一篇教程一样, 当你没有女朋友的时候, 可以用它来打发时间.这里的API是图灵机器人提供的, 实现一个十分强大的机器人. 具体功能包括: ? 支持聊天对话.智能问

使用图灵机器人高速开发智能聊天机器人

聊天机器人如今已经成为一个流行的话题.不管微信公共帐号,还是qq聊天机器人,能够智能交互聊天的机器人帐号越来越多.相信非常多开发者也想自己实现这样一个好玩的智能聊天机器人. 以下就给广大的技术开发人员提供一个通过图灵机器人简单高速得实现这样一个智能聊天机器人的方法. 先看一下图灵机器人官方体验页的截图.相信大家会很感兴趣: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGFtY2hlbg==/font/5a6L5L2T/fontsize/400/fi

【智能聊天机器人】小花猫的成长之路——3.雏形(让你立马拥有一个自己的智能聊天机器人)

大家好,今天不废话了,直接来给大家分享一下如何实现一个网页版智能聊天机器人的基本功能,也就是标题说的:雏形. 首先,上一篇文章已经提过了小花猫的大脑:图灵机器人API接口的介绍.获取和使用.(我为了写心得,特地申请了一个新的KEY) 点击下边的链接试试吧: http://www.tuling123.com/openapi/api?key=bad38ba658622caef62828496c662135&userid=0&info=你好 嘿嘿,是不是看到了一些令人激动的回复信息啦?修改inf