转载

智能机器人的快速实现

借助图灵机器人提供的API,可让你的APP变得更聪明,更智能1.ChatMessage

package com.example.android_robot_01.bean; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; public class ChatMessage { /**  * 消息类型  */ private Type type ; /**  * 消息内容  */ private String msg; /**  * 日期  */ private Date date; /**  * 日期的字符串格式  */ private String dateStr; /**  * 发送人  */ private String name; public enum Type {  INPUT, OUTPUT } public ChatMessage() { } public ChatMessage(Type type, String msg) {  super();  this.type = type;  this.msg = msg;  setDate(new Date()); } public String getDateStr() {  return dateStr; } public Date getDate() {  return date; } public void setDate(Date date) {  this.date = date;  DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  this.dateStr = df.format(date); } public String getName() {  return name; } public void setName(String name) {  this.name = name; } public Type getType() {  return type; } public void setType(Type type) {  this.type = type; } public String getMsg() {  return msg; } public void setMsg(String msg) {  this.msg = msg; } }  

2.CommonException

 package com.example.android_robot_01.bean;  public class CommonException extends RuntimeException { public CommonException() {  super();  // TODO Auto-generated constructor stub } public CommonException(String detailMessage, Throwable throwable) {  super(detailMessage, throwable);  // TODO Auto-generated constructor stub } public CommonException(String detailMessage) {  super(detailMessage);  // TODO Auto-generated constructor stub } public CommonException(Throwable throwable) {  super(throwable);  // TODO Auto-generated constructor stub } }  

3.ChatMessageAdapter

package com.example.android_robot_01; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import com.example.android_robot_01.bean.ChatMessage; import com.example.android_robot_01.bean.ChatMessage.Type; public class ChatMessageAdapter extends BaseAdapter { private LayoutInflater mInflater; private List<ChatMessage> mDatas; public ChatMessageAdapter(Context context, List<ChatMessage> datas) {  mInflater = LayoutInflater.from(context);  mDatas = datas; } @Override public int getCount() {  return mDatas.size(); } @Override public Object getItem(int position) {  return mDatas.get(position); } @Override public long getItemId(int position) {  return position; } /**  * 接受到消息为1,发送消息为0  */ @Override public int getItemViewType(int position) {  ChatMessage msg = mDatas.get(position);  return msg.getType() == Type.INPUT ? 1 : 0; } @Override public int getViewTypeCount() {  return 2; } @Override public View getView(int position, View convertView, ViewGroup parent) {  ChatMessage chatMessage = mDatas.get(position);  ViewHolder viewHolder = null;  if (convertView == null)  {   viewHolder = new ViewHolder();   if (chatMessage.getType() == Type.INPUT)   {    convertView = mInflater.inflate(R.layout.main_chat_from_msg,      parent, false);    viewHolder.createDate = (TextView) convertView      .findViewById(R.id.chat_from_createDate);    viewHolder.content = (TextView) convertView      .findViewById(R.id.chat_from_content);    convertView.setTag(viewHolder);   } else   {    convertView = mInflater.inflate(R.layout.main_chat_send_msg,      null);    viewHolder.createDate = (TextView) convertView      .findViewById(R.id.chat_send_createDate);    viewHolder.content = (TextView) convertView      .findViewById(R.id.chat_send_content);    convertView.setTag(viewHolder);   }  } else  {   viewHolder = (ViewHolder) convertView.getTag();  }  viewHolder.content.setText(chatMessage.getMsg());  viewHolder.createDate.setText(chatMessage.getDateStr());  return convertView; } private class ViewHolder {  public TextView createDate;  public TextView name;  public TextView content; } }  

4.MainActivity

package com.example.android_robot_01; import java.util.ArrayList; import java.util.Date; import java.util.List; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.TextUtils; import android.view.View; import android.view.Window; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.ListView; import android.widget.Toast; import com.example.android_robot_01.bean.ChatMessage; import com.example.android_robot_01.bean.ChatMessage.Type; import com.zhy.utils.HttpUtils; public class MainActivity extends Activity { /**  * 展示消息的listview  */ private ListView mChatView; /**  * 文本域  */ private EditText mMsg; /**  * 存储聊天消息  */ private List<ChatMessage> mDatas = new ArrayList<ChatMessage>(); /**  * 适配器  */ private ChatMessageAdapter mAdapter; private Handler mHandler = new Handler() {  public void handleMessage(android.os.Message msg)  {   ChatMessage from = (ChatMessage) msg.obj;   mDatas.add(from);   mAdapter.notifyDataSetChanged();   mChatView.setSelection(mDatas.size() - 1);  }; }; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  requestWindowFeature(Window.FEATURE_NO_TITLE);  setContentView(R.layout.main_chatting);  initView();  mAdapter = new ChatMessageAdapter(this, mDatas);  mChatView.setAdapter(mAdapter); } private void initView() {  mChatView = (ListView) findViewById(R.id.id_chat_listView);  mMsg = (EditText) findViewById(R.id.id_chat_msg);  mDatas.add(new ChatMessage(Type.INPUT, "我是小貅貅,很高兴为您服务")); } public void sendMessage(View view) {  final String msg = mMsg.getText().toString();  if (TextUtils.isEmpty(msg))  {   Toast.makeText(this, "您还没有填写信息呢...", Toast.LENGTH_SHORT).show();   return;  }  ChatMessage to = new ChatMessage(Type.OUTPUT, msg);  to.setDate(new Date());  mDatas.add(to);  mAdapter.notifyDataSetChanged();  mChatView.setSelection(mDatas.size() - 1);  mMsg.setText("");  // 关闭软键盘  InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);  // 得到InputMethodManager的实例  if (imm.isActive())  {   // 如果开启   imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT,     InputMethodManager.HIDE_NOT_ALWAYS);   // 关闭软键盘,开启方法相同,这个方法是切换开启与关闭状态的  }  new Thread()  {   public void run()   {    ChatMessage from = null;    try    {     from = HttpUtils.sendMsg(msg);    } catch (Exception e)    {     from = new ChatMessage(Type.INPUT, "服务器挂了呢...");    }    Message message = Message.obtain();    message.obj = from;    mHandler.sendMessage(message);   };  }.start(); } }  
正文到此结束
Loading...