Android 聊天机器人应用:使用 QingYunKe API 实现简单对话功能
package com.example.pg_helper;/n/nimport android.os.AsyncTask;/nimport android.os.Bundle;/nimport android.view.View;/nimport android.widget.EditText;/nimport android.widget.LinearLayout;/nimport android.widget.ProgressBar;/nimport android.widget.TextView;/nimport android.widget.Toast;/n/nimport androidx.appcompat.app.AppCompatActivity;/n/nimport org.json.JSONException;/nimport org.json.JSONObject;/n/nimport java.io.BufferedReader;/nimport java.io.InputStreamReader;/nimport java.io.UnsupportedEncodingException;/nimport java.net.HttpURLConnection;/nimport java.net.URL;/nimport java.net.URLEncoder;/n/npublic class ChatActivity extends AppCompatActivity {/n/n private EditText inputEditText;/n private LinearLayout chatLayout;/n private ProgressBar progressBar;/n/n @Override/n protected void onCreate(Bundle savedInstanceState) {/n super.onCreate(savedInstanceState);/n setContentView(R.layout.activity_chat);/n/n inputEditText = findViewById(R.id.inputEditText);/n chatLayout = findViewById(R.id.chatLayout);/n progressBar = findViewById(R.id.progressBar);/n }/n/n public void onSendClick(View view) {/n String message = inputEditText.getText().toString().trim();/n if (!message.isEmpty()) {/n // 显示加载提示/n progressBar.setVisibility(View.VISIBLE);/n // 添加用户的消息到对话布局/n addMessageToChatLayout('User: ' + message);/n // 异步发送请求给API,并处理响应/n new ChatRequestTask().execute(message);/n } else {/n // 显示错误提示/n Toast.makeText(this, 'Please enter a message', Toast.LENGTH_SHORT).show();/n }/n }/n/n private void addMessageToChatLayout(String message) {/n TextView textView = new TextView(this);/n textView.setText(message);/n chatLayout.addView(textView);/n/n // 滚动到最新的聊天记录/n chatLayout.post(new Runnable() {/n @Override/n public void run() {/n chatLayout.scrollTo(0, chatLayout.getBottom());/n }/n });/n }/n/n/n private class ChatRequestTask extends AsyncTask<String, Void, String> {/n/n @Override/n protected String doInBackground(String... params) {/n String message = params[0];/n try {/n // 构建API请求URL/n String url = 'http://api.qingyunke.com/api.php?key=free&appid=0&msg=' + URLEncoder.encode(message, 'UTF-8');/n/n // 发送GET请求给API,并获取响应/n HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();/n connection.setRequestMethod('GET');/n/n BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));/n StringBuilder response = new StringBuilder();/n String line;/n while ((line = reader.readLine()) != null) {/n response.append(line);/n }/n reader.close();/n/n return response.toString();/n } catch (Exception e) {/n e.printStackTrace();/n }/n return null;/n }/n/n @Override/n protected void onPostExecute(String response) {/n // 隐藏加载提示/n progressBar.setVisibility(View.GONE);/n/n if (response != null) {/n try {/n // 解析API响应/n JSONObject jsonObject = new JSONObject(response);/n String reply = jsonObject.getString('content');/n // 添加机器人的回复到对话布局/n addMessageToChatLayout('Bot: ' + reply);/n // 清空输入框/n inputEditText.setText('');/n // 滚动到最新的聊天记录/n chatLayout.post(new Runnable() {/n @Override/n public void run() {/n chatLayout.scrollTo(0, chatLayout.getBottom());/n }/n });/n } catch (JSONException e) {/n e.printStackTrace();/n // 显示错误提示/n Toast.makeText(ChatActivity.this, 'Failed to parse response', Toast.LENGTH_SHORT).show();/n }/n } else {/n // 显示错误提示/n Toast.makeText(ChatActivity.this, 'Failed to get response', Toast.LENGTH_SHORT).show();/n }/n }/n/n/n }/
原文地址: https://www.cveoy.top/t/topic/cHWy 著作权归作者所有。请勿转载和采集!