本项目主要实现的是即时智能聊天的功能,主要用的是图灵机器人作为服务端网站,对客户端发送的信息进行处理以及回复,其效果如下图所示(由于资源是网上找的卡通形象,故整体效果比较的卡通):若有需要代码的可以去http://download.csdn.net/detail/q394895302/9104417下载(编码方式UTF-8),有问题的地方请指出,共同学习。

该项目应用于Android 4.0以上版本,主要目的是为了熟悉Android 常用UI控件,网络链接,以及用消息处理机制实现客户端与服务端的通讯。

其部分代码如下:

此部分代码主要是为了链接服务端即图灵智能机器人

<span style="font-size:18px;"><span style="font-size:18px;">/*** 发送一个消息,并得到返回的消息* * @param msg* @return*/public static ChatMessgeBean sendMsg(String msg) {ChatMessgeBean message = new ChatMessgeBean();String url = setParams(msg);String res = doGet(url);Gson gson = new Gson();Result result = gson.fromJson(res, Result.class);if (result.getCode() > 400000 || result.getText() == null|| result.getText().trim().equals("")) {message.setMsg("该功能等待开发...");} else {message.setMsg(result.getText());}message.setType(Type.INPUT);message.setDate(new Date());return message;}/*** 拼接Url* * @param msg* @return*/private static String setParams(String msg) {try {msg = URLEncoder.encode(msg, "UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}return URL + "?key=" + API_KEY + "&info=" + msg;}/*** Get请求,获得返回数据* * @param urlStr* @return*/private static String doGet(String urlStr) {URL url = null;HttpURLConnection conn = null;InputStream is = null;ByteArrayOutputStream baos = null;try {url = new URL(urlStr);conn = (HttpURLConnection) url.openConnection();conn.setReadTimeout(5 * 1000);conn.setConnectTimeout(5 * 1000);conn.setRequestMethod("GET");if (conn.getResponseCode() == 200) {is = conn.getInputStream();baos = new ByteArrayOutputStream();int len = -1;byte[] buf = new byte[128];while ((len = is.read(buf)) != -1) {baos.write(buf, 0, len);}baos.flush();return baos.toString();} else {throw new CommonException("服务器连接错误!");}} catch (Exception e) {e.printStackTrace();throw new CommonException("服务器连接错误!");} finally {try {if (is != null)is.close();} catch (IOException e) {e.printStackTrace();}try {if (baos != null)baos.close();} catch (IOException e) {e.printStackTrace();}conn.disconnect();}}</span></span>

该部分代码就是主要的聊天实现的主体部分:

<span style="font-size:18px;"><span style="font-size:18px;">private ListView mMsgList;// 展示消息的listviewprivate EditText mSendMsgEdit;// 文本域private List<ChatMessgeBean> mList = new ArrayList<ChatMessgeBean>();// 存储聊天消息private ChatMessgeBeanAdapter mAdapter;// 适配器private Handler mHandler = new Handler() {public void handleMessage(android.os.Message msg) {ChatMessgeBean from = (ChatMessgeBean) msg.obj;mList.add(from);mAdapter.notifyDataSetChanged();mMsgList.setSelection(mList.size() - 1);};};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_chatting);initView();mAdapter = new ChatMessgeBeanAdapter(this, mList);mMsgList.setAdapter(mAdapter);}private void initView() {mMsgList = (ListView) findViewById(R.id.chat_listView);mSendMsgEdit = (EditText) findViewById(R.id.chat_send_msg_edit);mList.add(new ChatMessgeBean(ChatMessgeBean.Type.INPUT,"我是潴潴壞寶唄,很高兴为您服务"));}public void sendMessage(View view) {final String msg = mSendMsgEdit.getText().toString();if (TextUtils.isEmpty(msg)) {Toast.makeText(this, "您还没有填写信息呢...", Toast.LENGTH_SHORT).show();return;}ChatMessgeBean to = new ChatMessgeBean(Type.OUTPUT, msg);to.setDate(new Date());mList.add(to);mAdapter.notifyDataSetChanged();mMsgList.setSelection(mList.size() - 1);mSendMsgEdit.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() {ChatMessgeBean from = null;try {from = HttpConnectionUntil.sendMsg(msg);} catch (Exception e) {from = new ChatMessgeBean(Type.INPUT, "服务器挂了呢...");}Message message = Message.obtain();message.obj = from;mHandler.sendMessage(message);};}.start();}/*** 自定义适配器*/class ChatMessgeBeanAdapter extends BaseAdapter {private LayoutInflater mInflater;private List<ChatMessgeBean> mDatas;public ChatMessgeBeanAdapter(Context context, List<ChatMessgeBean> datas) {mInflater = LayoutInflater.from(context);mDatas = datas;}@Overridepublic int getCount() {return mDatas.size();}@Overridepublic Object getItem(int position) {return mDatas.get(position);}@Overridepublic long getItemId(int position) {return position;}/*** 接受到消息为1,发送消息为0*/@Overridepublic int getItemViewType(int position) {ChatMessgeBean msg = mDatas.get(position);return msg.getType() == Type.INPUT ? 1 : 0;}@Overridepublic int getViewTypeCount() {return 2;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ChatMessgeBean ChatMessgeBean = mDatas.get(position);ViewHolder viewHolder = null;if (convertView == null) {viewHolder = new ViewHolder();if (ChatMessgeBean.getType() == Type.INPUT) {convertView = mInflater.inflate(R.layout.activity_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.activity_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(ChatMessgeBean.getMsg());viewHolder.createDate.setText(ChatMessgeBean.getDateStr());return convertView;}
</span></span>

上述的练习主要是实现线程间的通讯以及网络连接,对Android的UI控件的使用;实现客户端与服务端的即时通讯,故没有对聊天的内容进行保存,退出聊天界面后再次进入时之前的内容将不会被保存。由于主要是为了实现聊天功能,故登录界面的信息是被设置好的,点击记住密码是将会实现自动登录,下次打开应用时将直接进入主界面,跳过登录界面和引导界面。上述的界面中对于More更多里面的功能没有实现,只是为了对界面进行包装,使其不显得太单调所以。

Android即时智能聊天软件相关推荐

  1. javauniapp+SpringBoot即时通讯聊天软件源码

    uniapp+SpringBoot即时通讯聊天软件源码,前端使用uniapp,后端使用SpringBoot. 手机端使用uniapp实现,目前仅支持安卓端和iOS端,小程序端和H5端暂未做适配. 下载 ...

  2. 树莓派4B与Android之缘——Android应用MiniChat聊天软件

    基本介绍和总体架构 一. 应用介绍 (一)基本介绍 MiniChat是一款聊天软件,你可以通过此软件进行聊天, 本应用集成了融云模块,从而实现集成通讯.主要功能是账号注册,登录,好友添加,好友间发送文 ...

  3. 仿QQ即时通讯聊天软件Windows新版可定制客户端演示

    一款跨平台可定制的 P2P 即时通信聊天系统,为电子商务网站及各行业门户网站和企事业单位提供"一站式"定制解决方案,打造一个稳定,安全,高效,可扩展的即时通信系统,支持在线聊天.视 ...

  4. Android p2p局域网聊天软件的实现

    最近做了个Android 端的局域网聊天软件.简单说一下思路: 首先由于是局域网的p2p,所以没有后台服务器.但是传文件,发信息用的是tcp,tcp前提是建立连接.我们都知道tcp建立连接时需要双方的 ...

  5. LoveChat(爱聊天)独立部署即时通讯聊天软件

    lovechat(爱聊天)是一款独立服务器部署的即时通讯解决方案,可以帮助你快速拥有一套自己的移动社交.企业办公的多功能业务产品.独立部署!加密通道!牢牢掌握通讯信息! 这是一款类似微信的聊天软件,并 ...

  6. Android Socket IQ聊天软件 之 聊天气泡编码步骤讲解

    之前我们说到了关于IQ聊天软件的局域网聊天测试,今天给大伙说说气泡的生成和编码,这不是第三方的东西,是自己 开发的,需要整合布局和容器来实现,其实当你看到源码后,就会觉得很简单,不信你跟着我往下看 首 ...

  7. 融云 php sdk下载,Android 即时语音聊天工具 开发

    使用融云SDKphp 1. 功能需求分析html 1.1 核心功能需求:java * 即时通信android * 文字聊天git * 语音聊天github 1.2 辅助功能需求:数据库 * 注册.登陆 ...

  8. 安卓开发环信即时通信,聊天软件-可实现单聊群聊

    最近花了一个星期的时间在B站跟着老师学了环信即时聊天工具的使用 附上学习网站:https://www.bilibili.com/video/BV1cW411V7yd?p=1 附上自己的代码 https ...

  9. 可以在线定制的安卓即时通聊天软件

    信贸通微聊版一款即时通讯系统,可以和电脑安装版,IOS苹果版直接互通.同样也可以量身定制成您的即时通讯软件.开发的差不多了,分享出来请码友们给些意见和建议. 用户注册 可以通过微信和QQ一键快速绑定注 ...

  10. 语音聊天工具 android,Android 即时语音聊天工具 开发

    使用融云SDK 1. 功能需求分析 1.1 核心功能需求: * 即时通讯 * 文字聊天 * 语音聊天 1.2 辅助功能需求: * 注册.登录 * 好友添加功能 * 好友关系管理 2. 融云即时通讯平台 ...

最新文章

  1. 2020卫星参数表大全_王者荣耀比较秀的名字 2020年比较骚气比较浪的王者荣耀名字大全...
  2. 根文件系统挂载过程分析
  3. BZOJ 3781: 小B的询问 [莫队]
  4. 【收藏】Vue中ref和$refs的介绍及使用
  5. HDU 1427 速算24点
  6. 译: 3. RabbitMQ Spring AMQP 之 Publish/Subscribe 发布和订阅
  7. (四)maven之查找jar包坐标,选择jar包版本
  8. Netty 采用NIO 而非AIO 的理由
  9. 文件处理_月隐学python第21课
  10. 前端如何实现网络速度测试功能_分析Web前端测试要点,从架构原理上进行分析,希望大家能够掌握...
  11. ladp3 获取属性_Ldap3库使用方法(四)
  12. printf打印二进制_优雅地打印 HEX 数据
  13. JavaScript ES5之Object.create函数详解
  14. Node.js:简单的node服务器ajax请求
  15. 如何通过a链接实现图片下载
  16. ICANN拟删旧国别域名 含英国gb苏联su塞黑cs
  17. PDF文件电子签名怎么做?分享一个好用的签名工具
  18. ARM官方汇编与ARM GNU汇编中的伪操作
  19. 如何搭建简易又安全的企业内部文件服务器?
  20. dz论坛ucenter打不开mysql,Discuz! X3搬家后UCenter出现UCenter info: MySQL Query Error解决方案...

热门文章

  1. 渗透之——Metasploit自定义FTP扫描模块
  2. Linux下的Ruby2.7.0下载
  3. 如果U盘中了文件夹隐藏病毒,怎么办?
  4. Apache——阿帕奇简介
  5. 【已测】开源PHP个人导航网站源码,有后台
  6. GreenPlum常用数值计算函数
  7. 凸透镜成像实验软件_凸透镜成像模拟实验软件介绍
  8. 天涯明月刀java_天涯明月刀61副本 天涯明月刀副本详情介绍
  9. 基于飞桨PaddlePaddle的地标检索识别夺竞赛双料大奖,获奖方案全解析
  10. iphone 4 到iphone 6s plus的屏幕尺寸