笔记63 | 个人项目“易来”开发记录《一》

前言

快过春节,手里的项目都已经完结,空出大量的咸鱼时间,本着生命不止,折腾不息的学习热情,想做一个练手的东西,最好是能联网玩玩!于是“易来”就这么来了!


准备工作

  1. 聚合数据 这个网站是一个提供API数据接口的网站,有付费和免费的申请,免费的只能申请一个接口,我登录我2年前申请的账号,发现已经申请了QQ号码测凶吉,回想应该是当时申请了,不知道怎么使用,就一直放在这。
  2. FastJson FastJson是阿里巴巴提供的一个开源Json处理工具包,除了知道它性能棒棒哒之外,一无所知!!!
  3. Volley 我对这大兄弟较熟,每次想做加载图片的就会想到这哥们!

实现

搭界面这种社会主义初期阶段的代码就不好意思贴了,况且况且况且况且(是不是感觉有辆火车呼啸而来?得了,我就这么。。)况且(突然不知道况且是什么意思了)这界面简单!!

  1. 拿到输入的数字:
numbtest_edit = (EditText) findViewById(R.id.numbtest_edit);numbtest_edit.setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)}); String numba = numbtest_edit.getText().toString();

我这里限制了可输入的字符长度,当拿到用户输入的信息后,通过点击测试按钮,就可以将number发送到聚合数据请求结果;

  1. 请求并接受数据:
private String urlq = "http://japi.juhe.cn/qqevaluate/qq?key=9eaeef7698c0d064*****e00a&qq=";private void getString(final String ed) {        String url=urlq+ed;//组合成请求的url        StringRequest request = new StringRequest(url,                 new Listener<String>() {            @Override            public void onResponse(String string) {                try {                    dealData(string,ed);//拿到结果                } catch (Exception e) {                }            }        }, new Response.ErrorListener() {            @Override            public void onErrorResponse(VolleyError arg0) {            }        });        Volley.newRequestQueue(this).add(request);    }

这个是volly的请求和接受数据方法,一气呵成,对于我们这种后排学生的好胜过了仓老师!

3.解析:

protected void dealData(String string,String ed)  {        try {            JSONObject jsonObject = new JSONObject(string);            //Log.i("md","md: "+jsonObject.get("error_code")+":"+jsonObject.get("reason"));            if(jsonObject.getInt("error_code")==0){//返回正常的信息                JSONObject data = jsonObject.getJSONObject("result");                  String currentLocation = data.getString("data");                 JSONObject jsonObject1 = new JSONObject(currentLocation);                numbtest_result_info.setText(getText(R.string.numbtest_result_info3).toString()+ed+"\n"+"\n"+                        getText(R.string.numbtest_result_info1).toString()+jsonObject1.optString("conclusion")+"\n"+"\n"+                        getText(R.string.numbtest_result_info2).toString()+jsonObject1.optString("analysis"));            }else{                //返回错误提示                numbtest_result_info.setText(getText(R.string.numbtest_result_info3).toString()+ed+"\n"+"\n"+                        getText(R.string.numbtest_result_info1).toString()+ getText(R.string.numbtest_result_info4).toString()+"\n"+"\n"+                        getText(R.string.numbtest_result_info2).toString()+jsonObject.get("reason"));            }        } catch (JSONException e) {            e.printStackTrace();        }    }

因为数据简单,用 importorg.json.JSONObject官方自带的JSON解析就足够了,如果是很复杂的数据的话。。我就不玩了。。

  1. 细节添加: 4.1 添加网络检测:
 <receiver android:name="com.evan.lift.utils.ConnectionChangeReceiver" >            <intent-filter>                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />            </intent-filter>        </receiver>

注册这个广播,当机器的网络发生变化时,就会收到广播,检测网络状态!

4.2 检测网络

private Timer mTimer = null;    private TimerTask mTimerTask = null;    /*     * 全局定时器     */    private void onTime(final String s) {        if (this.mTimerTask!=null) {            this.mTimerTask.cancel();        }        if (this.mTimer==null) {            this.mTimer=new Timer();        }        this.mTimerTask=new TimerTask() {            @Override            public void run() {                        //            }        };        this.mTimer.schedule(mTimerTask, 200, 2000);    }

当网络发送变得时就启动一个定时器来监控网络连接状态:

netWorks = NetworkAvalible.isNetworkAvalible(getApplication());

4.3 还一些其他的UI信息,例如请求与接收到回执信息这个时间差里显示的网络连接信息可以根据请求与接受回执的方法中添加;

原文发布于微信公众号 - 项勇(xiangy_life)

原文发表时间:2018-01-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏菩提树下的杨过

silverlight获取外部数据的另一种选择:FluorineFx

Silverlight从其它系统获取外部数据的常规途径无非下面2种: 1、直接远程加载文本或xml文件 (直接请求ashx/aspx,然后在ashx/aspx上...

1865
来自专栏Flutter入门到实战

最全的BAT大厂面试题整理

版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/c70989bd5f29

1442
来自专栏哲学驱动设计

三层的困惑

这个问题困惑我已经很久了,从开始学习。NET到现在…… 写三层的时候,遇到这样的情况怎么办? User{     int UserId,     Strin...

1885
来自专栏.NET后端开发

深入理解DIP、IoC、DI以及IoC容器

摘要 面向对象设计(OOD)有助于我们开发出高性能、易扩展以及易复用的程序。其中,OOD有一个重要的思想那就是依赖倒置原则(DIP),并由此引申出IoC、DI以...

3328
来自专栏逸鹏说道

.Net中的AOP系列之构建一个汽车租赁应用(下)

相似地,我们也要在Redeem方法中添加,这里不做了,省略。问题越来越明显了,横切关注点基本上占据了这个方法的一半代码。但是我们还没有做完,我们需要讨论一下异常...

3546
来自专栏非著名程序员

Android 插件化突破应用市场无法上广告的问题

先简单的描述一下在广告方面遇到的问题. 开发一款App有了一定的用户量之后通常会想接入第三方广告来实现变现, 然而在很多市场不让这类带广告的App上架,除非接的...

2226
来自专栏Android常用基础

Rxjava2-小白入门(三)

继续上篇的Rxjava2的入门实例,把剩下的运用Rxjava的实例讲下,首先要说名下本文会用到Rxbinding的知识,他相当于Rxjava的辅助工具,在引入他...

1322
来自专栏Java技术栈

史上最全 BAT 大厂面试题整理!(速度收藏)

3034
来自专栏分布式系统进阶

一个有限状态机的C++实现

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invi...

5265
来自专栏腾讯Bugly的专栏

深入理解 ButterKnife,让你的程序学会写代码

前言 话说我们做程序员的,都应该多少是个懒人,我们总是想办法驱使我们的电脑帮我们干活,所以我们学会了各式各样的语言来告诉电脑该做什么——尽管,他们有时候也会误会...

3936

扫码关注云+社区