Android--智能机器人聊天

本文介绍了如何在Android上利用图灵机器人API实现智能聊天功能,包括获取与解析JSON数据、封装数据、实现布局和适配器,以及处理点9图片和添加欢迎语等步骤。
摘要由CSDN通过智能技术生成

借助API,可快速实现在安卓手机上的与智能机器人聊天的功能。大体的步骤有:1、异步请求数据;2、解析json数据;3、封装数据;4、实现布局;
源代码下载地址:http://download.csdn.net/detail/leyezhiqiu/9471571
实现效果如下图:
效果图

下面一一介绍。

1、在浏览器上获取与机器人对话的数据。

1)打开图灵机器人官网,注册账号www.tuling123.com/openapi 。
2)登录账号,记录下官方分配给账号的key。
3)在账号中查看获得数据的格式,如get的请求方式格式:http://www.tuling123.com/openapi/api?key=XXX&info=XXXXX&userid=XXXXXXX
4)在浏览器上测试能否通过get方式获得对应数据。

2、在Android工程中获取数据。

1)编写异步通信类HttpData.java:发送请求,获取数据,读取数据。

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.os.AsyncTask;

/**
 * 异步通信类
 * 
 * @author mingyue
 * 
 */
public class HttpData extends AsyncTask<String, Void, String> {
   

    private HttpClient httpClient;
    private HttpGet httpGet;
    private HttpResponse httpResponse; // 获取请求返回的数据
    private HttpEntity httpEntity;// 创建http实体
    private InputStream in; // 将获取到的数据转化为流文件
    private HttpGetDataListener listener;// 实现自定义的HttpGetDataListener接口,并且构造化传递参数
    private String url;

    public HttpData(String url, HttpGetDataListener listener) {
        this.url = url;
        this.listener = listener;
    }

    @Override
    protected String doInBackground(String... params) {
  // 实现接口后重写此方法,此方法的作用是:发送get请求后,获取数据
        try {
            httpClient = new DefaultHttpClient();// 实例化客户端
            httpGet = new HttpGet(url);// 使用get方式,通过发送URL来请求
            httpResponse = httpClient.execute(httpGet); // 通过客户端发送请求
            httpEntity = httpResponse.getEntity();// 通过httpResponse对象获取数据

            in = httpEntity.getContent();// 获取实体的具体内容
            BufferedReader br = new BufferedReader(new InputStreamReader(in));// 获取到具体内容后,通过缓冲区进行读取

            String line = null; // 读取数据
            StringBuffer sb = new StringBuffer();// 储存所有数据
            while ((line = br.readLine()) != null) { // 读取缓冲区的数据
                sb.append(line); // 存储数据到StringBuffer中
            }
            return sb.toString();// 转换为String类型
        } catch (Exception e) {
        }
        return null;
    }

    /**
     * 重写此方法,通过这方法获取数据
     */
    @Override
    protected void onPostExecute(String result) {
        listener.getDataUrl(result);// 返回数据
        super.onPostExecute(result);
    }

}

2)由于要将获取到的数据传递给其它页面,所有这里新建一个接口,采用回调的方式。
//HttpGetDataListener.java

public interface HttpGetDataListener {
    void getDataUrl(String data);
}

3)在MainActivity中实现HttpGetDataListener接口,测试能否获得数据。
具体代码如下:

public class MainActivity extends Activity implements HttpGetDataListener{
   

    private HttpData httpData;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        httpData = (HttpData) new HttpData(
                "http://www.tuling123.com/openapi/api?key=XXXXX&info=北京",
                this).execute();//execute()启动异步通信,注意:XXXXX应该是在步骤1获取的key值
    }

    /**
    *实现抽象方法
    */
    @Override
    public void getDataUrl(String data) {
        System.out.println(data);
    }
}

4)运行代码,在logcat中能看到相关的json数据,则说明数据获取成功。
图1

3、解析json数据。

在MainActivity.java中编写parseText()方法,解析数据,在getDataUrl()方法中调用parseText()方法。
代码如下:

    @Override
    public void getDataUrl(String data) {
        System.out.println(data);
        parseText(data);
    }

    public void parseText(String str){
        try {
            JSONObject jb = new JSONObject(str);
            System.out.println(jb.getString(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值