源码如下:

package com.wyl.jqr;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder; import com.example.tulinjiqiren.R;
import com.google.gson.Gson; import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView; public class MainActivity extends ActionBarActivity {
Button btn;
Button btn2;
EditText et;
TextView tv;
myHandler handler = new myHandler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button)findViewById(R.id.btn01);
btn2 = (Button)findViewById(R.id.btn02);
et = (EditText)findViewById(R.id.editText01);
tv = (TextView)findViewById(R.id.textview02);//用来赋值
MyOnclickListener l = new MyOnclickListener();
btn.setOnClickListener(l);
btn2.setOnClickListener(l);
} class MyOnclickListener implements OnClickListener{
@Override
public void onClick(View view) {
if(view.getId()==R.id.btn01){
//1.获取录入的问题
String question = et.getText().toString();
//2.访问网络
//主线程不能够访问网络,由此,需要借助开启新线程和handler的方式
myThread myThread = new myThread();
myThread.start();
System.out.println("发送请求的线程:"+Thread.currentThread().getName());
}else if(view.getId()==R.id.btn02){
//清空edittext
System.out.println("清楚的线程:"+Thread.currentThread().getName());
et.setText("");
}
}
}
class myHandler extends Handler{
@Override
public void handleMessage(Message msg) {
String daan = (String)msg.obj;
if(daan == "" || daan.equals(null)){
daan = "暫時不支持該轉換";
}
System.out.println("myHandler()方法的线程:"+Thread.currentThread().getName());
tv.setText(daan);
}
}
class myThread extends Thread{ @Override
public void run() {
//访问网络
System.out.println("run()的线程:"+Thread.currentThread().getName());
String APIKEY = "e59219b3f450256c2a3da7157ae651f2";
String INFO;
String getURL;
URL getUrl;
String question = et.getText().toString();//获取前台的问题
try {
INFO = URLEncoder.encode(question, "utf-8");//需要改造
getURL = "http://www.tuling123.com/openapi/api?key=" + APIKEY + "&info=" + INFO;
getUrl = new URL(getURL);
HttpURLConnection connection = (HttpURLConnection) getUrl.openConnection();
connection.connect(); // 取得输入流,并使用Reader读取
BufferedReader reader = new BufferedReader(new InputStreamReader( connection.getInputStream(), "utf-8"));
StringBuffer sb = new StringBuffer();
String line = "";
while ((line = reader.readLine()) != null) {
sb.append(line);
}
reader.close();
// 断开连接
connection.disconnect();
System.out.println("获取到的答案"+sb);
//sb是json格式的,需要做轉化,
Gson gson = new Gson();
String sb2 = sb.toString();
System.out.println("sb2的值:"+sb2);
myBean rtn = gson.fromJson(sb2, myBean.class);
System.out.println("rtn的值:"+rtn);
String text = rtn.getText();
System.out.println("text的值:"+text);
//因为本线程workThread,不能够直接把值返回到UI中,所以把答案放到队列里,
Message msg = handler.obtainMessage();
msg.obj = text;//把轉化後的答案綁定到msg上
handler.sendMessage(msg);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} }
}
}

  myBean.java

因为用到了Gson来解析,所以根据返回的json字符串的key来写一个bean。

package com.wyl.jqr;

public class myBean {
String code;
String text;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
} }

  

  

Android,机器狗应用的更多相关文章

  1. 弹框在UC浏览器或者Android机器上会被顶上去

    弹框在UC浏览器或者Android机器上会被顶上去 可以通过监听resize事件 this.height = $(document).height(); window.addEventListener ...

  2. cocoslua3.17 android机器上播放音效不全

    开发过程中遇到一个问题,一个8秒的音效,在android机器上播放不完就结束了:网上说是由于android播放音效的内存限制的:原因知道了,那怎么解决呢? 通过各种搜索查找发现还是解决不了问题,然后自 ...

  3. 实例源码--Android手机狗(防盗)源码

      下载源码   技术要点: 1. SharedPreferences数据保存 2. SIM卡状态监 听 3. 发短信.发邮 箱.获取通讯信息 4. 源码带详细的 中文注释 ...... 详细介绍: ...

  4. 检测android机器是否有GPS模块

    public boolean hasGPSDevice(Context context) { final LocationManager mgr = (LocationManager)context. ...

  5. 【Mac】【已解决】连接Android机器提示“此电脑不能读取您插入的磁盘”

    出现的报错提示页面截图如下: 解决方案: 下载“Android File Transfer.dmg”安装在Mac. 打开USB调试,连接手机即可读取手机磁盘.   下载链接:https://www.t ...

  6. appium+python自动化60-windows上同时启动多个appium服务,让多个android机器并行运行

    前言 做android自动化的时候,启动一个appium服务,只能匹配一个手机去自动化执行.有时候想同一套代码,可以在不同的手机上执行,测下app在不同手机上兼容性. 这就需要启动多个appium服务 ...

  7. android机器时间不同步导致网络请求出错

    转自: https://blog.csdn.net/DeMonliuhui/article/details/82226601 获取网页时间代替系统时间 根据下列代码,我们就可以获取任何一个网址的时间( ...

  8. 第二章 Android系统与嵌入式开发

    第二章 Android系统与嵌入式开发 第二章首先要先了解Android和嵌入式Lnux系统有什么区别和联系,嵌入式Linux系统是在嵌入式设备中运行Linux系统:Android系统是在嵌入式设备中 ...

  9. 各种Android手机Root方法

    Root的介绍  谷歌的android系统管理员用户就叫做root,该帐户拥有整个系统至高无上的权利,它可以访问和修改你手机几乎所有的文件,只有root才具备最高级别的管理权限.我们root手机的过程 ...

随机推荐

  1. JSP内置对象----response

    response 对象   当客户访问一个服务器的页面时,会提交一个HTTP 请求,服务器收到请求时,返回HTTP 响应.request 对象获取客户请求提交的信息,  与request对象相对应的对 ...

  2. codeforces 374D. Inna and Sequence 线段树

    题目链接 给m个数, n个操作, 一个数列, 初始为空.一共有3种操作, 在数列末尾加0, 加1, 或删除位置为a[i]的数, a[i]为初始给的m个数, 如果a[i]大于数列长度, 那么什么也不发生 ...

  3. ios 学习笔记(8) 控件 按钮(UIButton)的使用方法

    在实际开发中,对于开发者来说,更多的还是使用“自定义”按钮.将“按钮”对象的类型设置成UIButtonTypeCustom.这样一来,按钮的所有元素都将由开发者来配置和自定义. 对于一个自定义按钮来说 ...

  4. # void :;

    href="#"---->top 连续点击的时候会出bug javascri中的void是一个操作符,该操作符指定要计算一个表达式但是不返回值. javascript:voi ...

  5. C#使用Windows API 隐藏/显示 任务栏 (FindWindowEx, ShowWindow)

    原文 C#使用Windows API 隐藏/显示 任务栏 (FindWindowEx, ShowWindow) 今天,有网友询问,如何显示和隐藏任务栏? 我这里,发布一下使用Windows API 显 ...

  6. 10003 Cutting Sticks(区间dp)

      Cutting Sticks  You have to cut a wood stick into pieces. The most affordable company, The Analog ...

  7. artdialog的图片,标题,以及关闭按钮不显示的问题

    因其它css样式文件中包含“div{ overflow:hidden; }”引起的artdialog的图片,标题,以及关闭按钮不显示的问题: 如下图: 解决办法:在artdialog的样式文件顶部添加 ...

  8. powershell 生成随机用户信息

    #生成随机用户信息,包括姓名.QQ.邮箱,手机号 $nameArr=@('一','丁','三','专','世','业','丝','中','丰','临','丹','丽','举','乃','义', '乐' ...

  9. hdu3416 Marriage Match IV【最短路+最大流】

    转载请注明出处,谢谢:http://www.cnblogs.com/KirisameMarisa/p/4297581.html   ---by 墨染之樱花 题目链接:http://acm.hdu.ed ...

  10. DevExpress ASP.NET 使用经验谈(4)-CriteriaOperator的使用

    上一节中,我们已经介绍了,使用CriteriaOperator表达式,获取对象数据. CriteriaOperator criteria = CriteriaOperator.Parse(" ...