{//事件捕獲 class MHandler extends Handler{ @Override public void dispatchMessage(Message msg){ super.dispatchMessage(msg); switch(msg.what){ case MSG_OK: if(msg.obj!=null){ String vlResult=(String)msg.obj; paresData(vlResult); } break; } } } private void paresData(String JsonData){ //Json解析 try{ JSONObject obj=new JSONObject(JsonData); String content=obj.getString("text");//獲取的機器人資訊 int code=obj.getInt("code");//伺服器狀態碼 updateView(code,content); }catch (JSONException e){ e.printStackTrace(); showData("主人,你的網路不好哦"); } } private void showData(String message){ ChatBean chatBean=new ChatBean(); chatBean.setMessage(message); chatBean.setState(ChatBean.RECEIVE);//機器人傳送的訊息 chatBeanList.add(chatBean);//將機器人傳送的訊息新增到chatBeanList集合中 adapter.notifyDataSetChanged(); } private void updateView(int code,String content){ //code有很多形狀,在此例舉幾種。 switch (code){ case 4004: showData("主人,今天我累了,我要休息了,明天再來找我耍吧"); break; case 40005: showData("主人,你說的是火星語嗎?"); break; case 40006: showData("主人,我今天要去約會哦,改天再聊哦。"); break; case 40007: showData("主人,明天再和你耍啦,我感冒了,嗚嗚嗚。。。"); break; default: showData(content); break; } } protected long exitTime;//記錄第一次點選時的時間 @Override public boolean onKeyDown(int keyCode,KeyEvent event){ if (keyCode==KeyEvent.KEYCODE_BACK &&event.getAction()==KeyEvent.ACTION_DOWN){ if ((System.currentTimeMillis()-exitTime)>2000){ Toast.makeText(MainActivity.this,"再按一次退出聊天程式",Toast.LENGTH_SHORT).show(); exitTime=System.currentTimeMillis(); }else { MainActivity.this.finish(); System.exit(0); } return true; } return super.onKeyDown(keyCode,event); }