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