这是一个安卓智能聊天机器人的源码,采用了仿微信的风格设计,调用的是图灵机器人的API,能够实现智能聊天、讲故事、讲笑话、查天气、查公交等丰富的功能。
下面是代码片段,想要源码的小伙伴可在下面链接下载:
001 |
http://www.itlanbao.com/preview.aspx#1,0 ?
|
002 |
?? |
003 |
import java.util.ArrayList;
|
004 |
|
005 |
import java.util.List;
|
006 |
?? |
007 |
import android.app.Activity;
|
008 |
import android.content.Context;
|
009 |
import android.os.Bundle;
|
010 |
import android.os.Handler;
|
011 |
import android.os.Message;
|
012 |
import android.text.TextUtils;
|
013 |
import android.view.View;
|
014 |
import android.view.Window;
|
015 |
import android.view.inputmethod.InputMethodManager;
|
016 |
import android.widget.EditText;
|
017 |
import android.widget.ListView;
|
018 |
import android.widget.Toast;
|
019 |
?? |
020 |
import com.example.android_robot_01.bean.ChatMessage;
|
021 |
import com.example.android_robot_01.bean.ChatMessage.Type;
|
022 |
import com.zhy.utils.HttpUtils;
|
023 |
?? |
024 |
public class MainActivity extends Activity
|
025 |
{ |
026 |
???? ???/**
|
027 |
???? ?? ?* 展示消息的listview
|
028 |
???? ?? ?*/
|
029 |
???? ???private ListView mChatView;
|
030 |
???? ???/**
|
031 |
???? ?? ?* 文本域
|
032 |
???? ?? ?*/
|
033 |
???? ???private EditText mMsg;
|
034 |
???? ???/**
|
035 |
???? ?? ?* 存储聊天消息
|
036 |
???? ?? ?*/
|
037 |
???? ???private List mDatas = new ArrayList();
|
038 |
???? ???/**
|
039 |
???? ?? ?* 适配器
|
040 |
???? ?? ?*/
|
041 |
???? ???private ChatMessageAdapter mAdapter;
|
042 |
?? |
043 |
???? ???private Handler mHandler = new Handler()
|
044 |
???? ???{
|
045 |
???? ?? ?? ?? ? public void handleMessage(android.os.Message msg)
|
046 |
???? ?? ?? ?? ? {
|
047 |
???? ?? ?? ?? ?? ?? ?? ?ChatMessage from = (ChatMessage) msg.obj;
|
048 |
???? ?? ?? ?? ?? ?? ?? ?mDatas.add(from);
|
049 |
???? ?? ?? ?? ?? ?? ?? ?mAdapter.notifyDataSetChanged();
|
050 |
???? ?? ?? ?? ?? ?? ?? ?mChatView.setSelection(mDatas.size() - 1);
|
051 |
???? ?? ?? ?? ? };
|
052 |
???? ???};
|
053 |
?? |
054 |
???? ???<a href="http://home.51cto.com/index.php?s=/space/5017954" target="_blank">@Override</a>
|
055 |
???? ???protected void onCreate(Bundle savedInstanceState)
|
056 |
???? ???{
|
057 |
???? ?? ?? ?? ? super.onCreate(savedInstanceState);
|
058 |
???? ?? ?? ?? ? requestWindowFeature(Window.FEATURE_NO_TITLE);
|
059 |
???? ?? ?? ?? ? setContentView(R.layout.main_chatting);
|
060 |
???? ?? ?? ?? ???? |
061 |
???? ?? ?? ?? ? initView();
|
062 |
???? ?? ?? ?? ???? |
063 |
???? ?? ?? ?? ? mAdapter = new ChatMessageAdapter(this, mDatas);
|
064 |
???? ?? ?? ?? ? mChatView.setAdapter(mAdapter);
|
065 |
?? |
066 |
???? ???}
|
067 |
?? |
068 |
???? ???private void initView()
|
069 |
???? ???{
|
070 |
???? ?? ?? ?? ? mChatView = (ListView) findViewById(R.id.id_chat_listView);
|
071 |
???? ?? ?? ?? ? mMsg = (EditText) findViewById(R.id.id_chat_msg);
|
072 |
???? ?? ?? ?? ? mDatas.add(new ChatMessage(Type.INPUT, "我是小貅貅,很高兴为您服务"));
|
073 |
???? ???}
|
074 |
?? |
075 |
???? ???public void sendMessage(View view)
|
076 |
???? ???{
|
077 |
???? ?? ?? ?? ? final String msg = mMsg.getText().toString();
|
078 |
???? ?? ?? ?? ? if (TextUtils.isEmpty(msg))
|
079 |
???? ?? ?? ?? ? {
|
080 |
???? ?? ?? ?? ?? ?? ?? ?Toast.makeText(this, "您还没有填写信息呢...", Toast.LENGTH_SHORT).show();
|
081 |
???? ?? ?? ?? ?? ?? ?? ?return;
|
082 |
???? ?? ?? ?? ? }
|
083 |
?? |
084 |
???? ?? ?? ?? ? ChatMessage to = new ChatMessage(Type.OUTPUT, msg);
|
085 |
???? ?? ?? ?? ? to.setDate(new Date());
|
086 |
???? ?? ?? ?? ? mDatas.add(to);
|
087 |
?? |
088 |
???? ?? ?? ?? ? mAdapter.notifyDataSetChanged();
|
089 |
???? ?? ?? ?? ? mChatView.setSelection(mDatas.size() - 1);
|
090 |
?? |
091 |
???? ?? ?? ?? ? mMsg.setText("");
|
092 |
?? |
093 |
???? ?? ?? ?? ? // 关闭软键盘
|
094 |
???? ?? ?? ?? ? InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
095 |
???? ?? ?? ?? ? // 得到InputMethodManager的实例
|
096 |
???? ?? ?? ?? ? if (imm.isActive())
|
097 |
???? ?? ?? ?? ? {
|
098 |
???? ?? ?? ?? ?? ?? ?? ?// 如果开启
|
099 |
???? ?? ?? ?? ?? ?? ?? ?imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT,
|
100 |
???? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? InputMethodManager.HIDE_NOT_ALWAYS);
|
101 |
???? ?? ?? ?? ?? ?? ?? ?// 关闭软键盘,开启方法相同,这个方法是切换开启与关闭状态的
|
102 |
???? ?? ?? ?? ? }
|
103 |
?? |
104 |
???? ?? ?? ?? ? new Thread()
|
105 |
???? ?? ?? ?? ? {
|
106 |
???? ?? ?? ?? ?? ?? ?? ?public void run()
|
107 |
???? ?? ?? ?? ?? ?? ?? ?{
|
108 |
???? ?? ?? ?? ?? ?? ?? ?? ?? ???ChatMessage from = null;
|
109 |
???? ?? ?? ?? ?? ?? ?? ?? ?? ???try
|
110 |
???? ?? ?? ?? ?? ?? ?? ?? ?? ???{
|
111 |
???? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? from = HttpUtils.sendMsg(msg);
|
112 |
???? ?? ?? ?? ?? ?? ?? ?? ?? ???} catch (Exception e)
|
113 |
???? ?? ?? ?? ?? ?? ?? ?? ?? ???{
|
114 |
???? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? from = new ChatMessage(Type.INPUT, "服务器挂了呢...");
|
115 |
???? ?? ?? ?? ?? ?? ?? ?? ?? ???}
|
116 |
???? ?? ?? ?? ?? ?? ?? ?? ?? ???Message message = Message.obtain();
|
117 |
???? ?? ?? ?? ?? ?? ?? ?? ?? ???message.obj = from;
|
118 |
???? ?? ?? ?? ?? ?? ?? ?? ?? ???mHandler.sendMessage(message);
|
119 |
???? ?? ?? ?? ?? ?? ?? ?};
|
120 |
???? ?? ?? ?? ? }.start();
|
121 |
?? |
122 |
???? ???}
|
123 |
?? |
124 |
} |
?
??????? 了解更多请点击:http://www.itlanbao.com/codes.aspx#1,0
?
?
?
原文:http://yichen9867.iteye.com/blog/2244911