我是靠谱客的博主 虚拟糖豆,最近开发中收集的这篇文章主要介绍一个最小物联网系统设计方案及源码——Android客户端Android开发,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

加上之前的部分,我们算是把开源的地方做了一个遍,因为Windows Phone需要在Windows 8上开发的原因,加上我没有Macbook以及iPhone,所以在这里只会有一个Android的示例。当然,原因上也是一样的,相信这些也不会很难。

原理上和Raspberry PI的原理很像,也就是GET数据,然后解析,也和服务端差不多。当然在最开始的代码里有拨打电话、发短信等等功能,只是我们似着简化系统为我们想要的理想化模型。

源码地址Home-Anywhere

Android开发

写在这里的原因是,因为我也不太擅长,所以也给不了多少指导。只是我试着去写过这样一个程序,有了几个版本,所以算是知道怎样去开发,但是相比较于专业于我的人还是有很多不足,所以希望懂得的人给些建议和意见。

浅析

我们需要的库和在Raspberry PI上的类似,如果你不需要的话,可以看看之前的文章:

最小物联网系统(七)——与服务器通讯

因为CSDN上发这些文章已经没有足够的必要,在之前的部分文章实在上是针对这部分写的, 只是在自己的博客上梳理了一遍。

我们还要做的事情就是有一个RESTful的库,以及解析JSON用的。

于是就有了下面两个

RESTclient

这个类的原文在calling-web-services-in-android-using-httpclient,专门用于REST用的,如果熟悉的人我想一看就知道了。

GSON

这个库来自于Google,一个不错的库。

所以我们就构成了开发所需的两部分基础。

Android

关于Android开发环境的配置这个网上有,最简单的办法是直接下载一个Android Studio。

下面只是列举一些代码以及可能会遇到的问题。

Android 4.0 Web问题

如在源码里看到的那样,

    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
            .detectDiskReads()
            .detectDiskWrites()
            .detectNetwork()   // or .detectAll() for all detectable problems
            .penaltyLog()
            .build());
    StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
            .detectLeakedSqlLiteObjects()
            .detectLeakedClosableObjects()
            .penaltyLog()
            .penaltyDeath()
            .build());


这部分用于Android 4.0的网络,2.*可以不需要。

JSONObject 以及 JSONArray

会产生下面这些代码的原因是下载下来的JSON数据是类似于二维数组,所以需要转换,下面的代码有些丑陋,但是可能工作得很好。

 JSONArray jArray = new JSONArray(client.getResponse());
JSONObject jObj=jArray.getJSONObject(0);

handlerData的由来

public GsonBuilder gsonb = new GsonBuilder();
public Gson gson = gsonb.create();
typePhoData phoData;

public handlerData(JSONObject jObj){
    phoData = gson.fromJson(jObj.toString(),
            typePhoData.class);
}
public int get_id(){
    return phoData.id;
}

public double get_sensors1(){
    return phoData.sensors1;
}

public double get_sensors2(){
    return phoData.sensors2;
}

public double get_temperature(){
    return phoData.temperature;
}

public int get_led1(){
    return phoData.led1;
}

public class typePhoData{
    public int led1;
    public double temperature;
    public double sensors1;
    public double sensors2;
    public int    id;
}


在某些程度上,我好像将这些代码给复杂化了,直接放在原文里可能会好一点,不过造成这种错觉的主要原因可能是受JAVA语言的影响,不过从软件工程的某些角度上来说,这样应该会好一点。 其他的:

  • typePhoData的命名可能有些不尽人意,但是暂时没有想到一个合适的
  • 用过几天Ruby后,似乎这个不算是一个问题
  • 如果你要修改的话,相信这个接口也不难,也许比原来的简单,前提是你看过原来的代码。

整理完闭。

REST POST

如果你需要POST,又懒得去看原文,那么POST代码在下面,只是因为我暂时没有时间去研究Android里面的这些,以及怎样继续这个项目,因为最小的话,似乎已经不再需要添加任何东西了

    RestClient clientPost = new RestClient(url);
            clientPost.AddParam("temperature", "23.1");
            clientPost.AddParam("led", "true");
            clientPost.AddParam("title", "from android");
            clientPost.AddParam("more", "nEW tESET");
            try {
                    clientPost.Execute(RequestMethod.POST);
                    if(client.getResponseCode()!=200){
                            vshow.setText(clientPost.getErrorMessage());
                    }
                    String response2 = clientPost.getResponse();
                    vshow.setText(response2.toString());
            } catch (Exception e) {
                    vshow.setText(e.toString());
            }


大致上是类似的,注意一下都是字符就行了。


348100589

BBS:http://bbs.phodal.com


最后

以上就是虚拟糖豆为你收集整理的一个最小物联网系统设计方案及源码——Android客户端Android开发的全部内容,希望文章能够帮你解决一个最小物联网系统设计方案及源码——Android客户端Android开发所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部