源码如下:

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. 无法在web服务器上启动调试,此项目在使用一个被配置为使用特定IP地址的网站。请在项目URL中指定计算机名称。

    解决方案:IIS服务器管理-default web site 绑定-选择使用的IP-编辑-IP地址:全部未匹配

  2. 【转】关于UItableViewCell的accessoryType属性

    转载自:http://blog.csdn.net/kmyhy/article/details/6442351 使用的话,例如: cell.accessoryType = UITableViewCell ...

  3. ruby2.0(rails)以后版本的debug

    很喜欢RUBY(RAILS),认识也好久好久了,但是说实话,从来没用ROR写过什么东西,都是小打小闹,做些自娱自乐的东西,碰到什么问题,基本仔细看看,加上几个LOG就找到原因了,从来没想过要DEBUG ...

  4. html常用标签有哪些

    html看似复杂,其实常用的标签并不多,这里总共介绍一些html的常用标签 文字处理: ①标题:<h1> to <h6> ②段落:<p>文字段落</p> ...

  5. Microsoft Accelerator for Windows Azure Alum Azuqua 今天启动

     云最大的一个优势就是,它使开发人员比以往任何时候都更迅速.更灵活.在 Windows Azure 中开发应用程序时,工程师无需考虑架设服务器.规划容量或进行日常维护.相反,他们可以专注于提出假设 ...

  6. java.lang.class.getResource

    静态块,在项目启动的时候就执行,是主动执行的. 静态方法,  是被动执行的,需要被调用才执行. static{         try {             String path = Conf ...

  7. 移动开发语言Swift

    苹果公布了全新的编程语言Swift,Swift继承了Objective-C语言特性,并从Python和Java Script中长处,使Swift更易读.未来swift编程语言的会特大广大的使用 Swi ...

  8. spring注解开发中常用注解以及简单配置

    一.spring注解开发中常用注解以及简单配置 1.为什么要用注解开发:spring的核心是Ioc容器和Aop,对于传统的Ioc编程来说我们需要在spring的配置文件中邪大量的bean来向sprin ...

  9. uml笔记

    把进度放在好了: 活动图与业务流程 对业务流程支持的主要图形就是活动图,活动图的主要目的在陈述活动与活动之间流程控制的转移.

  10. python成长之路10——socketserver源码分析

    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0) 参数一:地址簇 socket.AF_INET ipv4(默认) socket.AF_INE ...