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手机的过程 ...
随机推荐
- ORA-12514(TNS:监听程序当前无法识别...)
记录: ORA-12514(TNS:监听程序当前无法识别...)的解决方案 在安装ORACLE 11G 过程中由于配置的原因,安装过程中报了如下错误: 按照安装提示执行后面的操作后,打开PL/SQ ...
- css伪类伪元素
在CSS中,模式(pattern)匹配规则决定哪种样式规则应用于文档树(document tree)的哪个元素.这些模式叫着选择符(selector). 一条CSS规则(rule)是选择符{属性:值; ...
- 高效操作DOM
DOM树与Render树 这个应该都是知道的.就是用户请求HTML下来后,浏览器渲染引擎的基本工作中两个概念. copy一张图,流程大概就是:解析html构建DOM树,渲染树构建,渲染树布局,绘制渲染 ...
- ASP.NET jQuery 随笔 使用allValidator插件简单实现客户端验证功能
首先放出该插件的下载地址:http://pan.baidu.com/s/1Aa3yD,里面有帮助文档,详细了解可以自行下载学习,本章只讲解一些基本的验证功能,页面代码如下: <%@ Page L ...
- 【android开发】小说阅读器
新人开发理念 1 activity 是每个功能页面的入口 2 动画效果需要配合资源文件中,动画的定义 3 文件的读取是有权限控制的 4 布局应该尽量简单,这样才能让程序跑的飞快 前记 重新开始一个新的 ...
- ArcSde for Oracle服务注册
1.首先安装ArcSde,安装完成之后在dos命令窗口运行如下命令: sdeservice -o create -d oracle,instance -p sde -i port; 参数说明: ins ...
- C++ Primer 学习笔记_75_模板与泛型编程 --模板定义
模板与泛型编程 --模板定义 引言: 所谓泛型程序就是以独立于不论什么特定类型的方式编写代码.使用泛型程序时,我们须要提供详细程序实例所操作的类型或值. 模板是泛型编程的基础.使用模板时能够无须了解模 ...
- ASP.NET中IsPostBack的理解
IsPostBack是Page类的一个属性,返回值为一个布尔值. 一般放在Page_Load事件中, 是指是否第一次调用这个页面.当页面是第一次打开时其值为False,若当前页面为一个提交后的页面其值 ...
- 记载abp中Dbcontext的疑问
q:abp中httpcontext如何在一次请求中保证获取的是相同的实例. 大牛的原话: LifestylePerWebRequest does not works good with async. ...
- Register/unregister a dll to GAC
gacutil /i "C:\Test.dll"gacutil /u "Test"