腾讯公益赛个人冲刺博客15(2024.6.3)

今天开始写后端的主类界面,去图灵机器人买了密钥和接口,今天只写了一部分,还看不出效果
复制代码
package com.java.ffshixun;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class MainActivity extends AppCompatActivity {
    private ListView listView;
    private ChatAdapter adapter;
    private List<ChatBean> chatBeanList;//存放所有聊天数据的集合
    private EditText et_send_msg;
    private Button btn_send;
    //接口地址
    private static final String WEB_SITE="http://www.tuling123.com/openapi/api";
    //唯一key,该key的值是从官网注册账号获取的,注册地址为:http://www.tuling123.com/
    private static final String KEY="b7f13cd027d5469fbd586940c0adbe83";
    private String sendMsg;//发送的信息
    private String welcome[];//存储欢迎信息
    private MHandler mHandler;
    public static final int MSG_OK=1;//获取数据

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        chatBeanList=new ArrayList<ChatBean>();
        mHandler=new MHandler();
        //获取内置的欢迎信息
        welcome=getResources().getStringArray(R.array.welcome);
        initView();//初始化界面控件

    }
    public void initView(){
        listView=(ListView)findViewById(R.id.list);
        et_send_msg=(EditText)findViewById(R.id.et_send_msg);
        btn_send=(Button)findViewById(R.id.btn_send);
        adapter=new ChatAdapter(chatBeanList,this);
        listView.setAdapter(adapter);
        btn_send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sendData();//点击发送按钮,发送信息
            }
        });
        et_send_msg.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent keyEvent) {
                if (keyCode==KeyEvent.KEYCODE_ENTER && keyEvent.getAction()==
                KeyEvent.ACTION_DOWN){
                    sendData();//点击Enter键也可以发送信息
                }
                return false;
            }
        });
        int position=(int)(Math.random()*welcome.length-1);//获取一个随机数
        showData(welcome[position]);//用随机数获取机器人的首次聊天信息
    }
    private void sendData(){
        sendMsg=et_send_msg.getText().toString();//获取你输入的信息
        if(TextUtils.isEmpty(sendMsg)){//判断是否为空
            Toast.makeText(this,"您还未输入任何信息哦",Toast.LENGTH_LONG).show();
            return;
        }
        et_send_msg.setText("");
        //替换空格和换行
        sendMsg=sendMsg.replaceAll(" ","").replaceAll("\n","").trim();
        ChatBean chatBean=new ChatBean();
        chatBean.setMessage(sendMsg);
        chatBean.setState(chatBean.SEND);//SEND表示自己发送的信息
        chatBeanList.add(chatBean);//将发送的信息添加到chatBeanList集合中
        adapter.notifyDataSetChanged();//更新ListView列表
        getDataFromServer();//从服务器获取机器人发送的信息
    }

    private void getDataFromServer(){
        OkHttpClient okHttpClient=new OkHttpClient();
        Request request =new Request.Builder().url(WEB_SITE+"?key="+KEY+"&info="+sendMsg).build();
        Call call=okHttpClient.newCall(request);
        //开启异步线程访问网络
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String res=response.body().string();
                Message msg=new Message();
                msg.what=MSG_OK;
                msg.obj=res;
                mHandler.sendMessage(msg);
            }
        });
    }


    
}
复制代码

 

posted @   记得关月亮  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示