Android,机器狗应用
源码如下:
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,机器狗应用的更多相关文章
- 弹框在UC浏览器或者Android机器上会被顶上去
弹框在UC浏览器或者Android机器上会被顶上去 可以通过监听resize事件 this.height = $(document).height(); window.addEventListener ...
- cocoslua3.17 android机器上播放音效不全
开发过程中遇到一个问题,一个8秒的音效,在android机器上播放不完就结束了:网上说是由于android播放音效的内存限制的:原因知道了,那怎么解决呢? 通过各种搜索查找发现还是解决不了问题,然后自 ...
- 实例源码--Android手机狗(防盗)源码
下载源码 技术要点: 1. SharedPreferences数据保存 2. SIM卡状态监 听 3. 发短信.发邮 箱.获取通讯信息 4. 源码带详细的 中文注释 ...... 详细介绍: ...
- 检测android机器是否有GPS模块
public boolean hasGPSDevice(Context context) { final LocationManager mgr = (LocationManager)context. ...
- 【Mac】【已解决】连接Android机器提示“此电脑不能读取您插入的磁盘”
出现的报错提示页面截图如下: 解决方案: 下载“Android File Transfer.dmg”安装在Mac. 打开USB调试,连接手机即可读取手机磁盘. 下载链接:https://www.t ...
- appium+python自动化60-windows上同时启动多个appium服务,让多个android机器并行运行
前言 做android自动化的时候,启动一个appium服务,只能匹配一个手机去自动化执行.有时候想同一套代码,可以在不同的手机上执行,测下app在不同手机上兼容性. 这就需要启动多个appium服务 ...
- android机器时间不同步导致网络请求出错
转自: https://blog.csdn.net/DeMonliuhui/article/details/82226601 获取网页时间代替系统时间 根据下列代码,我们就可以获取任何一个网址的时间( ...
- 第二章 Android系统与嵌入式开发
第二章 Android系统与嵌入式开发 第二章首先要先了解Android和嵌入式Lnux系统有什么区别和联系,嵌入式Linux系统是在嵌入式设备中运行Linux系统:Android系统是在嵌入式设备中 ...
- 各种Android手机Root方法
Root的介绍 谷歌的android系统管理员用户就叫做root,该帐户拥有整个系统至高无上的权利,它可以访问和修改你手机几乎所有的文件,只有root才具备最高级别的管理权限.我们root手机的过程 ...
随机推荐
- JSP内置对象----response
response 对象 当客户访问一个服务器的页面时,会提交一个HTTP 请求,服务器收到请求时,返回HTTP 响应.request 对象获取客户请求提交的信息, 与request对象相对应的对 ...
- codeforces 374D. Inna and Sequence 线段树
题目链接 给m个数, n个操作, 一个数列, 初始为空.一共有3种操作, 在数列末尾加0, 加1, 或删除位置为a[i]的数, a[i]为初始给的m个数, 如果a[i]大于数列长度, 那么什么也不发生 ...
- ios 学习笔记(8) 控件 按钮(UIButton)的使用方法
在实际开发中,对于开发者来说,更多的还是使用“自定义”按钮.将“按钮”对象的类型设置成UIButtonTypeCustom.这样一来,按钮的所有元素都将由开发者来配置和自定义. 对于一个自定义按钮来说 ...
- # void :;
href="#"---->top 连续点击的时候会出bug javascri中的void是一个操作符,该操作符指定要计算一个表达式但是不返回值. javascript:voi ...
- C#使用Windows API 隐藏/显示 任务栏 (FindWindowEx, ShowWindow)
原文 C#使用Windows API 隐藏/显示 任务栏 (FindWindowEx, ShowWindow) 今天,有网友询问,如何显示和隐藏任务栏? 我这里,发布一下使用Windows API 显 ...
- 10003 Cutting Sticks(区间dp)
Cutting Sticks You have to cut a wood stick into pieces. The most affordable company, The Analog ...
- artdialog的图片,标题,以及关闭按钮不显示的问题
因其它css样式文件中包含“div{ overflow:hidden; }”引起的artdialog的图片,标题,以及关闭按钮不显示的问题: 如下图: 解决办法:在artdialog的样式文件顶部添加 ...
- powershell 生成随机用户信息
#生成随机用户信息,包括姓名.QQ.邮箱,手机号 $nameArr=@('一','丁','三','专','世','业','丝','中','丰','临','丹','丽','举','乃','义', '乐' ...
- hdu3416 Marriage Match IV【最短路+最大流】
转载请注明出处,谢谢:http://www.cnblogs.com/KirisameMarisa/p/4297581.html ---by 墨染之樱花 题目链接:http://acm.hdu.ed ...
- DevExpress ASP.NET 使用经验谈(4)-CriteriaOperator的使用
上一节中,我们已经介绍了,使用CriteriaOperator表达式,获取对象数据. CriteriaOperator criteria = CriteriaOperator.Parse(" ...