精华内容
下载资源
问答
  • 智能家居-安卓app控制嵌入式软硬件开发视频教程
  • 基于安卓智能家居手机APP开发代码,不喜勿喷,用的eclipse开发。
  • 物联网项目app软件开发IOS小程序定制安卓硬件嵌入式智能家居工业域正在不断扩大,但如果没有强大的物联网开发人员团队就无法做到这一点。如果您想知道如何进入该领域,就请从这篇文章开始。什么是物联网开发人员?...

    物联网项目app软件开发IOS小程序定制安卓硬件嵌入式智能家居工业域正在不断扩大,但如果没有强大的物联网开发人员团队就无法做到这一点。如果您想知道如何进入该领域,就请从这篇文章开始。

    c497e6c901551e49c5f16b15b6bca39c.png

    什么是物联网开发人员?

    物联网开发人员的工作可能涉及很多方面,比如安全、网络、系统工程、云编程和硬件设备编程等。由于这个职位相对较新,因此无论您对哪个方面特别感兴趣,则都会有很大的空间来拓展自己的职业生涯。

    尽管没有必要也不可能掌握所有方面的专业知识,但对于物联网开发人员来说,至少一定程度上熟悉物联网项目的各个方面仍然很重要。物联网开发是一项高度协作的工作,因此您自己或您的团队与从事硬件或设计开发的人员协作,无疑是正确的选择。

    物联网开发流程的各个阶段

    c497e6c901551e49c5f16b15b6bca39c.png

    要了解成为一名合格的物联网开发人员所必需的技能,您首先需要对物联网开发流程有一个基本了解。这样,您就可以了解开发人员参与流程的所有要点,甚至还能确定您想专门从事的细分领域。

    物联网在以消费者需求节奏来开发和迭代产品方面提出了独特的挑战。这是因为它将硬件开发与软件开发相结合。

    物联网开发流程需要一支由经验丰富且协调一致的软件开发人员、产品经理、机械工程师、电气工程师、UI / UX设计师等组成的团队,以及时交付产品,并在产品发布后继续对其进行改进。

    通过使用敏捷物联网开发框架,我们的团队确定了物联网开发流程中的10个步骤,可用于指导每个项目:

    1、验证和限制

    在第一阶段,将验证您对项目的假设,并克服所有可能遇到的限制(预算、时间表、人员等)。例如:您的项目需要机器学习吗?您需要定制硬件开发吗?

    2、产品开发路线图

    从头开始制定计划,确保每个人对产品的目标都是一致的。作为开发人员,您需要了解软件是如何与硬件交互的、开发时间表以及团队的开发方向。

    3、消除硬件风险

    此阶段将消除硬件设计中的未知因素,并要求您与工程师合作,提出并回答以下问题:

    ▲是否可以以可接受的精度水平测量/控制X?

    ▲在预期的操作环境中是否可以接收无线网络?

    4、模拟与仿真

    此阶段涉及构建硬件的粗糙原型,您不需要自己动手,因为它需要机械工程技能。实际上,许多物联网设备主要使用预先组装好的板材,并在板上连接了传感器,因此构建并不完全是从头开始。在这里,Breadboards板和alligator 夹是您的好伙伴。重要的是,您组装在一起的硬件可以正常运行。

    此外,您还要从应用程序方面入手,使用测试工具来模拟硬件在完全构建后如何与软件进行交互。您还将开始围绕设备配置、身份验证、固件更新以及在Web后端和设备之间传递基本消息而构建关键组件。

    5、完善原型

    在此阶段,您的原型应完全连接到Web。要做到这一点,您需要具备编程技能,以从物联网设备的传感器读取数据并将其发送到服务器。您还需要有人对服务器进行编程,以便接收和存储来自设备的数据。(来源物联之家网)这需要了解诸如Ruby、Elixir、Python、C#、Java或Type之类的服务器语言,并熟悉数据库查询语言——SQL和NoSQL。

    最后,您需要通过网页或应用向用户显示数据和消息。这意味着您需要具备Type 、HTML、CSS等Web开发语言以及React或Vue等框架方面的经验。

    b24068fbee5e4b2eb9cdb7f1f57eb6c9.png

    6、微加工

    在此步骤中,您的硬件团队将创建自定义印刷电路板和3D打印机械外壳/组件。他们会将这些分发给开发人员,以便可以使用实际的硬件进行测试。

    7、首次生产

    在最初的生产过程中,您将创建大约100台产品,可以将它们分发给一组测试人员。用户测试在物联网中的重要性与在常规软件开发中一样重要,因为物联网涉及物理硬件成本。如果发生进一步的问题,就不能再轻易更改它。

    在此阶段,您应该会收到可用于迭代改进的反馈。如果需要更改硬件,则软件开发团队可能会暂停,或者在解决问题期间您可能会被要求处理其他功能开发。

    8、真正生产

    此阶段将生产1000台或更多产品,此时您应该已经与制造商合作完成任何必要的自定义配置或软件校准。您也可以与早期的采用者合作,以获取有关产品使用的反馈。

    9、进入市场的生产排程

    您已经准备好发布产品了。现在,您可以开发其他产品以添加到您的物联网系统中,或者您可以考虑延长产品使用寿命和提高价值的方法,因为它已经投放市场。例如,您是否可以使用产品传感器已经收集到的数据在应用程序中提供新的见解?

    10、数字孪生技术仿真

    最后,为了收集更准确的产品反馈,您可以创建一个数字孪生——物理对象的虚拟复制品,可用于测试和实验产品。数字孪生还可以减少拥有和支持产品的终生成本。

    物联网开发人员的必备技能

    现在,您已经掌握了物联网开发流程的所有要点,接下来还需要知道开发人员的必备技能:

    1、人工智能、机器学习和数据科学

    企业越来越认识到人工智能、机器学习和数据科学在自动化流程、从数据中提取更多知识和见解,以及做出更明智决策方面的价值。

    因为物联网产品本质上经常收集大量数据,所以对于物联网开发人员来说,了解需要使用哪些技术来帮助企业最大化数据的价值至关重要。

    2、嵌入式系统工程

    即使您没有直接参与物联网设备的编程,或者您没有计算机工程学位,您也应该了解传感器如何工作以及硬件如何与软件交互的基础知识。您可以尝试使用Raspberry Pi来了解其工作原理。

    3、网络与安全

    成功的物联网解决方案依赖于跨安全网络的有效通信。为了确保连接性,开发人员应该熟悉OSI堆栈和物联网中使用的通信协议(如MQTT)。

    此外,您应该遵循物联网安全的最佳实践,如固件安全、客户端SSL以及保护设备本身。

    4、移动应用开发知识

    事实上,在物联网中,您需要具备一些网络开发知识,这样您就可以创建与您的“东西”或设备相连的应用程序。(来自iothome)此外,由于大量连网设备被智能手机控制,因此,当今一些最受欢迎的物联网开发人员在移动开发方面(iOS和Android)都拥有非常丰富的经验。

    5、用户体验(UX)和用户界面(UI)设计

    您的物联网产品可以具有完美的连接性,并可以使用完美的代码进行编程,但是,如果使用起来很麻烦,那么所有这些都将失去意义。而这就是用户体验和用户界面设计的用武之地。

    尽管您不必是物联网UX/UI设计专家(尤其是考虑到物联网设计的复杂性),但在整个物联网项目中,与软件和硬件设计人员的协作将是必不可少的。

    6、物联网开发框架、语言和技术

    要成为物联网开发人员,您可能需要精通以下方法、框架、语言和技术:

    方法:

    ▲敏捷开发

    ▲精益开发

    ▲极限编程

    框架:

    ▲Ruby on Rails

    ▲Phoenix

    ▲Nerves

    ▲React

    ▲React Native

    云服务:

    ▲AWS IoT

    ▲Microsoft Azure IoT

    ……………

    语言:

    ▲Ruby

    ▲Elixir

    ▲Python

    ▲C/C++

    ▲C#

    ▲Type

    ▲HTML

    ▲CSS

    总结

    现在是进入物联网开发领域的最激动人心的时刻,有趣的是,您可以亲自参与并见证该领域在未来几年的蓬勃发展。如果这篇文章中的内容听起来跟您一样,并且您有兴趣加入物联网开发人员团队,那么恭喜您,您将开启前途无量的物联网职业生涯新篇章。

    延伸阅读:

    什么是物联网软件开发的主要挑战?如何应对?

    忘记数据科学,以下是物联网需要的5项工作技能

    高薪物联网职业生涯所需的十大技能

    在物联网项目中取得成就所需的技术技能

    物联之家网(http://www.iothome.com)是一个领先的物联网科技媒体平台,致力于提供高质量、客观的物联网及相关科技内容、资讯及新闻。我们对炒作和杂音不感兴趣,我们只关注物联网技术的真正商业应用。我们希望听到最好的案例研究,希望看到来自各种规模供应商(尤其是初创公司)的最佳解决方案,并看看是否能够解决我们当前物联网的部署障碍。我们是跨越不同行业观察物联网的科技资讯媒体。

    展开全文
  • 安卓手机的APP客户端控制智能家电实现的小案例 本文章所需工具在文章末尾,请君自取,所用工具Android studio。 家居模拟器程序介绍 本程序实现了客厅、卧室、厨房三个房间的智能设备,包括:光亮传感器、LED灯...

    智能家电工具介绍与客户端开发:

    此文章教程内容:
    用安卓手机的APP客户端控制智能家电实现的小案例
    本文章所需工具在文章末尾,请君自取,所用工具Android studio。
    在这里插入图片描述

    家居模拟器程序介绍 本程序实现了客厅、卧室、厨房三个房间的智能设备,包括:光亮传感器、LED灯、温度传感器、风扇等。
    本程序模拟现在比较流程的智能设备,能够自动接入WIFI。通过手机、平板等安装的APP,自动发现这些智能设备。智能设备既可以自主广播数据(定时或者自身状态改变),也可以根据请求返回设备的状态。例如:光亮传感器,当光线亮度发生变化时会自动广播自己的当前状态。而温度传感器,则会每隔10秒钟自动广播自己的当前状态。而风扇和LED灯,既可以通过模拟程序控制,也可以通过手机和平板控制。
    程序的使用: 运行程序后,点击“启动设备”按钮,启动TCP服务器。 手机、平板通过TCP连接到模拟程序,即可进行通信。 通信协议:
    (1)通信协议采用JSON格式
    (2)模拟程序广播的数据格式:[{“Device”: “D0001”, “Value”: “50”,
    “Value2”: “xx”},> …]。其中,Device为设备编号,D001代表光亮传感器,D0002代表LED灯,D0003代表温度传感器,D0004代表风扇。Value、Value1表示设备状态值。
    (3)模拟程序接收的数据格式:[{“Device”: “D0001”, “Value”: “50”}, {“Device”:
    “D0001”},
    …]。如果存在Value、Value1属性,则表示设置指定的设备状态。如果不存在Value、Value1属性,则表示获取指定设备的状态。
    (4)发现设备的数据格式:[]。即可返回智能设备的信息。

    此处的智能设备有灯光,厨房的风扇,还有光线传感器,温度
    点击启动设备即可启动,现在智能家居等待着客户端的连接,连接成功就会显示接收到某个客户端以及受到客户端发来的消息

    客户端测试工具:

    在这里插入图片描述
    此客户端的协议类型默认为:TCP Client
    远程主机默认为分配给智能家电的ip地址,或者用本地ip也可,即127.0.0.1
    连接的智能家电的端口为1981,然后点击连接,发送[]\r\n
    上面的智能家电显示客户端发送 “[]” 即可返回智能家电的设备信息
    \r\n代表的是换行的意思,此客户端也默认发送消息换行
    在这里插入图片描述
    Device代表的是id号码
    type代表设备的类型
    value代表的是设备的状态,比如风扇的开关,空调的温度,
    valuel代表的是辅助状态,因为空调可以具有温度也可以具有湿度,所以只能家居具有多种状态

    下面在eclipse中采用socket的方式建立与智能家电的连接

    实现代码(步骤中有有正确的解释):
    i

    
    ```java
    mport java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.Socket;
    
    public class TcpClient {
    	public static void main(String[] args) {
    		try {
    //			采用socket建立链接,连接的IP为本地连接
    //			用localhost或者127.0.0.1的本地IP地址,端口号为1981
    			Socket socket = new Socket("127.0.0.1",1981);
    //			读取智能家电传送来的json信息
    			BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    //			将信息写入到智能家电
    			BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
    //			采用线程休眠,在读取之后休眠3秒钟
    			Thread.sleep(3000);
    //			智能家电提示用[]\r\n与其建立连接,此处将其写入
    			writer.write("[]\r\n");
    //			采用每次的写入进行一次刷新
    			writer.flush();
    //			刷新一次休眠0.5秒钟
    			Thread.sleep(500);
    //			将数据的每一行读取出来放到控制台进行显示
    			String line = reader.readLine();
    			System.out.println(line);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    

    在这里插入图片描述

    举个列子,控制灯泡的打开;

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.Writer;
    import java.net.Socket;
    
    public class TcpClient {
    	public static void main(String[] args) {
    		try {
    //			采用socket建立链接,连接的IP为本地连接
    //			用localhost或者127.0.0.1的本地IP地址,端口号为1981
    			Socket socket = new Socket("127.0.0.1",1981);
    //			读取智能家电传送来的json信息
    			BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    //			将信息写入到智能家电
    			BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
    //			采用线程休眠,在读取之后休眠3秒钟
    			Thread.sleep(3000);
    //          向智能家电传入json数据来控制灯的开启(on:开启;off:关闭;)   
    			writer.write("[{\"Device\":\"D0002\",\"Value\":\"on\"}]\r\n");
    			writer.flush();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    }
    

    接下来是在Android studio中画开关的图纸,布局采用的是线性布局

    在这里插入图片描述
    在这里插入图片描述
    实现代码:
    在xml中:
    首先修改xml文件中的Activity标签,将主页的设置为另外的Activity文件(如果此处新建Activity,否则不需要下面的步骤),然后申请网络权限,因为连接网络不是危险权限,所以不需要动态申请(此处很重要)
    在这里插入图片描述
    在这里插入图片描述
    在java文件中的实现代码:
    i

    import androidx.appcompat.app.AppCompatActivity;
    
    import android.gesture.GestureUtils;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.Socket;
    
    public class DeciceTestActivity extends AppCompatActivity implements View.OnClickListener {
        //    声明连接按钮的变量与输入输出流的变量
        private Button connectButton;
        private BufferedReader reader;
        private BufferedWriter writer;
        private Socket socket;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_decice_test);
    //        绑定事件
            findViewById(R.id.connect_button).setOnClickListener(this);
            findViewById(R.id.disconnect_button).setOnClickListener(this);
            findViewById(R.id.find_device_button).setOnClickListener(this);
            findViewById(R.id.led_on_button).setOnClickListener(this);
            findViewById(R.id.led_off_button).setOnClickListener(this);
            findViewById(R.id.low_button).setOnClickListener(this);
            findViewById(R.id.middle_button).setOnClickListener(this);
            findViewById(R.id.height_button).setOnClickListener(this);
            findViewById(R.id.stop_space).setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            if (v.getId() == R.id.connect_button) {
    //            连接服务器
                connectToServer();
    
            } else if (v.getId() == R.id.disconnect_button) {
    //            断开服务器
                disconnectFromServer();
    
            } else if (v.getId() == R.id.find_device_button) {
    //            查询设备
                findDevices();
            } else if (v.getId() == R.id.led_on_button) {
    //            开灯
                ledTurn("on");
            } else if (v.getId() == R.id.led_off_button) {
    //            关灯
                ledTurn("off");
            }else if(v.getId() == R.id.low_button){
                lowspace();
            }else if(v.getId() == R.id.middle_button){
                midelespace();
            }else if(v.getId() == R.id.height_button){
                heighspace();
            }else if (v.getId() == R.id.stop_space){
                stopspace();
            }
    
    
        }
    
        //    连接到服务器
        private void connectToServer() {
            if (socket != null) {
                Toast.makeText(this, "已经连接到服务器", Toast.LENGTH_LONG).show();
                return;
            }
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        Socket socket = new Socket("192.168.1.9", 1981);
                        reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                        writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
    
                        new Thread(new Runnable() {
                            @Override
                            public void run() {
                                String line;
                                try {
                                    while ((line = reader.readLine()) != null) {
                                        Log.d("TEST", line);
                                    }
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                            }
                        }).start();
                    } catch (IOException e) {
                        e.printStackTrace();
                        Log.d("TEST", "连接服务器错误");
                    }
                }
            }).start();
    
        }
    
        //    断开连接
        private void disconnectFromServer() {
            if (socket == null) {
                Toast.makeText(this, "请连接服务器", Toast.LENGTH_LONG).show();
                return;
            }
            if (writer != null) {
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (socket != null) {
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        //    查询智能设备
        private void findDevices() {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        writer.write("[]\r\n");
                        writer.flush();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    
        /**
         * 设置LED开或者关
         */
        private void ledTurn(String status) {
            if (socket != null){
                Toast.makeText(this,"还未连接服务器",Toast.LENGTH_LONG).show();
                return;
            }
    
            final String message = "[{\"Device\":\"D0002\",\"Value\":\""+ status +"\"}]\r\n";
    
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        writer.write(message);
                        writer.flush();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    //    风扇低速
        private void lowspace(){
            if (socket != null){
                Toast.makeText(this,"还未连接服务器",Toast.LENGTH_LONG).show();
                return;
            }
    
            final String message = "[{\"Device\":\"D0004\",\"Type\":null,\"Value\":\"low\",\"Value1\":null}]\r\n";
    
            new  Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        writer.write(message);
                        writer.flush();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    //    风扇中速
        private void midelespace(){
            if (socket != null){
                Toast.makeText(this,"还未连接服务器",Toast.LENGTH_LONG).show();
                return;
            }
    
            final String message = "[{\"Device\":\"D0004\",\"Type\":null,\"Value\":\"middle\",\"Value1\":null}]\r\n";
    
            new  Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        writer.write(message);
                        writer.flush();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    //    风扇高速
        private void heighspace(){
            if (socket != null){
                Toast.makeText(this,"还未连接服务器",Toast.LENGTH_LONG).show();
                return;
            }
    
            final String message = "[{\"Device\":\"D0004\",\"Type\":null,\"Value\":\"high\",\"Value1\":null}]\r\n";
    
            new  Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        writer.write(message);
                        writer.flush();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
    
        }
    
    //    停止风扇
        private void stopspace(){
            if (socket != null){
                Toast.makeText(this,"还未连接服务器",Toast.LENGTH_LONG).show();
            }
    
            final String message = "[{\"Device\":\"D0004\",\"Type\":null,\"Value\":\"off\",\"Value1\":null}]\r\n";
    
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        writer.write(message);
                        writer.flush();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
    
                }
            }).start();
        }
    
    }
    

    最后晒两张运行图:
    在这里插入图片描述
    在这里插入图片描述
    文中所需工具链接:
    链接:https://pan.baidu.com/s/1PNlswFcqDLwdGyQFik52uw
    提取码:jdad

    展开全文
  • 【实例简介】安卓开发app源码,解压编译即可生成app,具有socket通信基本功能,显示服务器发送的传感器数据,如温湿度等,可以下达控制指令,进行智能控制。【实例截图】【核心代码】Android智能家居└── Android...

    【实例简介】

    安卓开发app源码,解压编译即可生成app,具有socket通信基本功能,显示服务器发送的传感器数据,如温湿度等,可以下达控制指令,进行智能控制。

    【实例截图】

    【核心代码】

    Android智能家居

    └── Android应用源码SartHome智能家居通过socket通信连接单片机实现控制

    ├── SartHome

    │   ├── AndroidManifest.xml

    │   ├── gen

    │   │   └── com

    │   │   └── example

    │   │   └── sarthome

    │   │   ├── BuildConfig.java

    │   │   └── R.java

    │   ├── ic_launcher-web.png

    │   ├── libs

    │   │   └── android-support-v4.jar

    │   ├── proguard-project.txt

    │   ├── project.properties

    │   ├── res

    │   │   ├── drawable-hdpi

    │   │   │   ├── backgroud.jpg

    │   │   │   ├── back.jpg

    │   │   │   ├── blue.jpg

    │   │   │   ├── btn.xml

    │   │   │   └── ic_launcher.png

    │   │   ├── drawable-mdpi

    │   │   │   └── ic_launcher.png

    │   │   ├── drawable-xhdpi

    │   │   │   └── ic_launcher.png

    │   │   ├── drawable-xxhdpi

    │   │   │   └── ic_launcher.png

    │   │   ├── layout

    │   │   │   ├── activity_login.xml

    │   │   │   └── dialog.xml

    │   │   ├── menu

    │   │   │   └── main.xml

    │   │   ├── values

    │   │   │   ├── dimens.xml

    │   │   │   ├── strings.xml

    │   │   │   └── styles.xml

    │   │   ├── values-sw600dp

    │   │   │   └── dimens.xml

    │   │   ├── values-sw720dp-land

    │   │   │   └── dimens.xml

    │   │   ├── values-v11

    │   │   │   └── styles.xml

    │   │   └── values-v14

    │   │   └── styles.xml

    │   └── src

    │   └── com

    │   └── example

    │   └── sarthome

    │   └── LoginActivity.java

    ├── 源码说明.txt

    └── 说明.htm

    23 directories, 28 files

    展开全文
  • 安卓开发app源码,解压编译即可生成app,具有socket通信基本功能,显示服务器发送的传感器数据,如温湿度等,可以下达控制指令,进行智能控制。
  • 安卓开发笔记——APP闪退解决方案

    千次阅读 2019-04-02 17:02:31
    笔者在开发一个智能家居APP的过程中,遇到APP闪退的情况,将日志打印出来: 怀疑可能是布局文件的问题,最后发现是由于在布局文件中View中的"V“误敲成了小写: 将布局相关内容改正过来即可,APP就可以重新...

    笔者在开发一个智能家居APP的过程中,遇到APP闪退的情况,将日志打印出来:

    在这里插入图片描述在这里插入图片描述

    怀疑可能是布局文件的问题,最后发现是由于布局的View中的“V”误敲成了小写:

    在这里插入图片描述
    将布局相关内容改正过来即可,APP就可以重新启动,日志提示在开发过程中有着十分重要的作用。

    展开全文
  • 更重要的是除了开发板外,我们还提供调试好的mcu源代码,手机app安卓,IOS源代码,入手即可开发物联网项目,更是新手学习之利器!据多年开发经验写了从零快速开发教程,同时本教程将持续更新新的技术。 一键配网,...
  • 推动了安卓另一个领域,包括智能电视和智能家居,以及可穿戴设备的大量使用,但是这些设备上的开发并不是和传统手机开发一样,特别是焦点控制和用户操作TV上有很大的区别,本系列博文主要用TV播放器的实现去了解下在...
  • 推动了安卓另一个领域,包括智能电视和智能家居,以及可穿戴设备的大量使用,但是这些设备上的开发并不是和传统手机开发一样,特别是焦点控制和用户操作体验风格上有很大的区别,本系列博文主要用TV播放器的实现去...
  • 安卓平台开发

    2018-03-01 17:34:07
    实现智能家居开发设计,通过一个app实现,智能空调,只能锁,电视,冰箱等的一体控制
  • 推动了安卓另一个领域,包括智能电视和智能家居,以及可穿戴设备的大量使用,但是这些设备上的开发并不是和传统手机开发一样,特别是焦点控制和用户操作体验上有很大的区别,本系列博文主要通过用TV播放器的实现去...
  • 目录 1.ESP8266原理图及外设接法 2.下载工程和工程准备 3.编写LED及继电器控制代码 4.编写温湿度读取函数 ...12.使用安卓开源框架的APP控制 源代码: 简介: 这一篇博客是接着上一篇往下写的,地址:h...
  • 家居模拟器程序介绍 本程序实现了客厅、卧室、厨房三个房间的智能设备,包括:光亮传感器、LED灯、温度传感器、风扇等。 本程序模拟现在比较流程的智能设备,能够自动接入WIFI。通过手机、平板等安装的APP,自动发现...
  • 将闲置手机变成可以利用的智能家居设备,比如在家里面通过手机App控制另一台手机的手电筒开和关(当做电灯泡)等等操作。先从最简单的功能开始研究,控制手电筒开始。 二、手机手电筒所在App定位 将手机usb调试...
  • 最近在公司,需要开发一款智能家居APP,用到MUI框架,首先就是环境搭建,写好的APP页面,怎么跑在模拟器上运行? 我的开发环境: HBuilder版本:9.0.2.201803061935 逍遥安卓:5.2.2 逍遥安卓需要开启USB调试模式...
  • 关于语音识别,国内已经有比较好的公司推出相关的服务了,比如百度免费的离在线融合语音...在智能家居 APP 开发中常需要在没法联网的设备识别一些比较简单的命令词,百度的离在线融合语音识别识别率还不错,不过在.
  • 调接口,到github找控件,能够独立完成APP,《安卓英雄汇》《安卓开发艺术之旅》《安卓高级进阶》看起来也不费劲,完成的APP有7个左右,但是最近突然发现自己遇到很尴尬的事情,突然发现APP开发的活其实不多,...
  • zigbee智能家居+wifi(智能网关)+Android APP 独家珍藏免费分享—智能家居控制系统完整设计方案 智能手表不要买,自己也可以DIY制作(制作资料开源) 重金购买的国赛机密资料 — 智能家居原理图、程序(软硬件开源,...
  • PocketSpinnx实例代码.zip

    2019-12-25 20:22:21
    离线语音识别的开源项目——CMU PocketSpinnx,在安卓开发中的使用。在智能家居 APP 开发中常需要在没法联网的设备识别一些比较简单的命令词,百度的离在线融合语音识别识别率还不错
  • 这次带来的是Android的App开发全新教程,带你走走怎么实现原生开发,从零代码java开发一款智能家居的APP,此教程完全是接入机智云的SDK,所有接入机智云的设备都可以被控制!由于机智云的产品丰富多彩,各种无厘头的...
  • 学科竞赛作品整理2

    2017-10-27 00:24:00
    基于安卓APP开发的(原创)智能家居远程语音控制系统 转载于:https://www.cnblogs.com/pengwenzheng/p/7740626.html
  • 个人BUG收集

    2016-05-27 15:46:01
    不知不觉做安卓也有一段时间了,虽然已跨越了入行水平,开发起金融类的APP不算难,但还是觉得没学到什么新的知识,除了金融类的APP,其他知识点接触得少,如直播、车载、地图、智能家居等。觉得这样下去不行,只会...
  • ESP8266制作简单wifi风扇控制器

    千次阅读 2015-09-04 22:37:06
    ESP8266价格十分便宜,在非严格要求的环境下是完全能满足要求的,智能家居内各节点设备均可利用此模块实现,而且它还有自己的开发环境,编译的程序直接写入8266,从而可以省略外部单片机控制。在此使用其最简单的...

空空如也

空空如也

1 2
收藏数 31
精华内容 12
关键字:

安卓智能家居app开发