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手机的过程 ...
随机推荐
- 第二天(CSS 选择器)
1.常用的CSS选择器 类型选择器: 例如: p { color : red ; } 后代选择器: 例如: h2 span { font-weight : bold ; ...
- MVC-03 控制器(2)
五.ActionResult解说 ActionResult的继承图: 类型 Controller辅助方法 用途帮助 ContentResult Content 回传一个用户自定义的文字属性 Empty ...
- MyEclipse 怎样手动编译整个项目
去掉自动编译的对勾,项目上就有build project,在菜单project->>build automatically. MyEclipse 菜单 Project->Build ...
- InfoQ文章
http://www.infoq.com/cn/presentations/log-platform-construction-weipinhui https://github.com/Telesco ...
- 用于COB工艺的PCB设计指导
绑定角度尽量在45°之内,多于这个角度,绑定时候,银线不好打入焊盘.而且打入焊盘的尾部可能短路到相邻的焊盘,绑定焊盘之间的间距一般在4MIL为极限,半场的工艺一般就这样了.而且焊盘离被绑定的IC引脚最 ...
- (C#)Windows Shell 编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令
原文(C#)Windows Shell 编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令 (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:( ...
- HDU 1294 Rooted Trees Problem
题目大意:求有n个节点的树有几种? 题解:http://www.cnblogs.com/keam37/p/3639294.html #include <iostream> typedef ...
- IOS开发新手教程(一)-数据类型和运算符
OC语法入门(一) 数据类型和运算符 1.1凝视 凝视和其它语言一样,同意单行 ,多行凝视,一份规范的代码里面须要有一些正式的凝视,例如以下凝视: /* 这是多行 凝视 */ //这是多行凝视 OC语 ...
- 大一C语言结课设计之《简单计算器》
/*===============================================*\ ** 设计目的:简单计算器,计算形如10*(20.2-30.6)+5.0/2的表达式值 ** 简 ...
- sql server中的系统数据库
1.master数据库 master是SQL Server中最重要的数据库,是整个数据库服务器的核心.用户不能直接修改该数据库,如果损坏了master数据库,整个SQL Server服务器将不能工作. ...