AndroidThing学习之路(一)

来源:互联网 发布:数字卦的算法 编辑:程序博客网 时间:2024/06/12 00:40

Android Things 是个什么东西

先到官网上看看:

https://developer.android.google.cn/things/index.html

点进去就可以看到了,你会看到学好英语的重要性;

https://developer.android.google.cn/things/preview/download.html

这个是开发版的下载地址,在后面的开发中会使用到;

Bringing Device Production to Everyone

这是开始对Android Things 的简介:大体的意思就是:每个人都可以开发设备产品;(我哥口号是不是很高大上啊!)

发布时间:

在看看一张图片:

Android Things 的架构和一些小的知识点

小的知识点:

>
1.Android Things是谷歌为Google Brillo更改名称后的新版系统,后者是谷歌在2015年宣布的一款物联网操作系统。尽管Brillo的核心是Android系统,但是它的开发和部署明显不同于常规Android开发。
>
2.Brillo把C++作为主要开发环境,而Android Things则面向所有Java开发者,不管开发者有没有移动开发经验。
>
3.开发者可以针对物联网设备使用工具包。Android Studio是最常用的Android集成开发环境,它基于IntelliJ IDEA开源社区版本,支持通过Android Things进行物联网开发。应用开发的生命周期几乎和移动开发相同。
>
4.Android Things系统支持原始Android SDK中的一个子集,不支持需要用户输入或者需要地图、搜索以及登录等验证凭证的应用程序接口(API)。
>
5.和Android手机的OTA无线升级一样,开发者可以通过谷歌已经在其产品和服务中使用过的相同OTA基础设施,推送谷歌提供的系统更新和定制应用升级。
>
6.谷歌推荐开发者在最初原型设计和开发时使用微型电脑“树莓派3”、英特尔微型可穿戴设备“爱迪生”(Edison)以及恩智浦半导体的Pico平台。谷歌会在Android Things正式发布前增加更多认证设备。
>
7.包括云消息传递服务Firebase在内的谷歌云平台组件能够轻易与Android Things整合。开发者可以利用多个云服务进行存储、状态管理以及发送消息。
>
8.Android Things整合了物联网设备通讯平台Weave。Weave Server是用来处理设备注册、命令传送、状态存储以及与谷歌助手等谷歌服务整合的云服务。Weave SDK将嵌入到设备中进行本地和远程通讯。
>
9.Nest智能家居设备使用的协议Nest Weave将成为Weave的一个子集。这两种协议都基于IPV6网络协议Thread,后者原本是为建立本地无线网状网络而设计的网络协议。
>
10.不管有没有Android Things,开发者都可以使用Weave,因为它是一个独立协议,可以作为Zigbee协议、Z-Wave协议以及蓝牙Bluetooth Smart协议的替代选择。

系统的架构

图片展示图:

系统架构的简介:

支持的开发版

图片展示:

主要介绍树莓派的开发:
简介一下子开发版:

之后就还需要的硬件有 面包板和公对公和公对母,和母对母的线.加上需要的电阻和面包板等配件;最最重要的是传感器和其他的想对应的硬件等.

简介之后就是开发环境的搭建

Android Things 是面向的是Java 的开发者,在前面引用的小的知识点中有看到.开发的工具也和开发app没什么大的区别;

注意点:

第一点就是: buildtools的版本是在 API的版本在24或者在24以上;
第二点: 编译的版本也需要的APPI 的版本也是在api的版本在24上

第三点: 创建Android Things的项目需要在gradle中设置下面的配置

配置一: Android Thing是的依赖:

// Android Things 的依赖provided 'com.google.android.things:androidthings:0.1-devpreview'

配置二: 在清单文件中设置共享的library

<!--设置共享的库--><use-library   android:name="com.google.android.things"/>

配置Activity的action的筛选器

<!-- Launch activity automatically on boot -->    <intent-filter>        <action android:name="android.intent.action.MAIN"/>        <category android:name="android.intent.category.IOT_LAUNCHER"/>        <category android:name="android.intent.category.DEFAULT"/>    </intent-filter>

第四点: 就是AS的版本最低支持的是2.2的版本

开始开发

System Image Downloads 下载

我们在前面设置过一个是开发者的镜像文件的地址,我们直接进去根据相应的开发版下载开发镜像并设置的到里面.(这里选择树莓派3)

树莓派3的简介:

https://developer.android.google.cn/things/hardware/raspberrypi.html

各种开发版的镜像的下载地址:

https://developer.android.google.cn/things/preview/download.html

下载之后开始使用镜像烧录器烧到内存卡中

上传烧录器到博客中:

需要的话在我的博客的下载地址里面就有:

下载的连接地址: https://superb-dca2.dl.sourceforge.net/project/win32diskimager/Archive/win32diskimager-1.0.0-install.exe

具体的步骤和安装系统的安装镜像差不多.

上面只是烧录到SD卡中我们需要启动系统

连接hdmi接口用于启动的显示界面

之后背面插入SD卡.插入网线,之后插入电源并且通电.

完成之后会显示当前这个设备的IP地址.此时表示的就是系统启动成功了!

连接开发版开始运行项目

连接开发板的注意事项:

第一需要首先是把开发版连接到路由器上,获取到开发版的ip地址;

这里我们的设置的地址就是:192.168.247.101:5555

ip地址就是: 192.168.247.101 默认的端口就是 5555;

连接开发版的命令:

adb connect ip+pornt

adb connect 192.168.247.101

默认的端口就是5555;

出现: connected to 192.168.247.101:5555 此时表示的就是连接设备成功.

可以开始运行我们设置的以一个物联网的项目.

常用的adb命令

哈哈!实验了这么多的adb命令,忽然发现自己在进入 shell 之后使用 ctrl +c 不能退出,需要记忆一下。输入exit就可以了!

再来一个命令行清屏:

输入 cls 哈哈哈,世界和平!

代码展示:

C:\Users\Administrator>adb shellshell@cancro:/ $130|shell@cancro:/ $130|shell@cancro:/ $130|shell@cancro:/ $130|shell@cancro:/ $130|shell@cancro:/ $130|shell@cancro:/ $130|shell@cancro:/ $130|shell@cancro:/ $130|shell@cancro:/ $130|shell@cancro:/ $130|shell@cancro:/ $ exit

C:\Users\Administrator>

http://blog.csdn.net/fenggit/article/details/47700953

adb全称: Android Debug Brige(桥) 俗称: Android dubug 调式桥

查看连接的设备: adb devices(注意是devices)

登录Android的终端 adb shell

出现vbox86p:/#: (模拟器直接获取到了root权限)

真机测试的结果:

输入 adb shell 之后出现的是: shell@cancro:/$

我们需要再次输入 su 来获取root权限
出现: 1|shell@cancro:/$

当有多个设备在线的时候怎么登录指定的设备的终端

C:\Users\Administrator>adb devicesList of devices attached1d06513 device8410023b        device

上面的代码中我有两个真机在线;第一个是获取到root权限的开发机

第二个是调式模式的手机(没有root)

1.进入指定设备的终端 adb -s 设备名称(不用最后的device) shell

之后出现的: C:\Users\Administrator>adb -s 8410023b shell
shell@natrium:/ $

再次输入 su来获取root

出现 /system/bin/sh: su: not found

对于第一个设备: 进入 adb -s 第一个设备 shell

出现: shell@cancro:/$ 再次输入 su

出现: 1|shell@cancro:/$

root@cancro:/ #

表示获取了超级权限。

安装apk的指令 adb install 安装的路劲 (最好不需要中文)

获取设备的序列号: adb get-serialno(最后是L,不是1;单个连接的时候有效);

设备是不是在线 : adb get-state(device表示设备在线;单个连接的时候有效,参数主要有三个,分别是device、offline(离线)、bootloader)

2.杀死adb服务进程

adb kill-server 终止adb的服务进程
adb start-server 重启adb服务进程

adb root 以root的权限重启adb服务

adbliatview获取硬件的信息(真机测试)

  1. 使用adb 来获取手机连接无线的MAC地址 adb shell cat /sys/class/net/wlan0/address(注意的是wlan后面是零不是字母o)

C:\Users\Administrator>adb shell cat /sys/class/net/wlan0/address
14:f6:5a:9d:98:48

  1. 使用adb获取连接手机的cpu信息

adb shell cat /proc/cpuinfo 获取wifi的mac地址

C:\Users\Administrator> adb shell cat /proc/cpuinfoProcessor       : ARMv7 Processor rev 1 (v7l)processor       : 0BogoMIPS        : 38.40processor       : 1BogoMIPS        : 38.40processor       : 2BogoMIPS        : 38.40processor       : 3BogoMIPS        : 38.40Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivtCPU implementer : 0x51CPU architecture: 7CPU variant     : 0x2CPU part        : 0x06fCPU revision    : 1Hardware        : Qualcomm MSM8974PRO-ABRevision        : 0000Serial          : 0000000000000000

3.获取手机属性和手机的配置信息

adb shell cat /sysytem/build.prop

结果一大段,仔细看也能看出一些我们熟悉的

ro.build.version.sdk=19ro.build.version.codename=RELro.build.version.release=4.4.4

4.获取wifi的配置信息

abd shell cat /data/misc/wifi/*.conf

需要root权限

  1. 查看进程列表

adb shell ps

6.查看后台的服务信息

adb shell service list

7.查看设备的存贮的设备名称

adb shell ls mnt

我使用的是小米测试机,展示的结果如下:

C:\Users\Administrator>adb shell ls mntasecmedia_rwobbsdcardsecureshell

8.将System挂载为可读写的分区

adb remount(为什么我的权限不够)

9.adb push文件到手机

adb push 【文件的地址】+ 【推送的地址】/mnt/sdcard/

C:\Users\Administrator>adb push C:\Users\Administrator\Desktop\2017-06-28_112931.png /mnt/sdcard/[100%] /mnt/sdcard/2017-06-28_112931.png

我们在上面的adb命令中查询到了 设备的存贮的名称,(adb shell ls mnt)

查看存贮文件下面的命令:(例如查看sdcardd的文件列表)

根据我手机查看,sdcard在mnt/sdcard/只是一个快捷方式,里面的内容和 adb shell ls sdcard/下面的内容一致

第一次展示的是mnt/sdcard/下面的文件

C:\Users\Administrator>adb shell ls mnt/sdcard/2.rar2017-06-28_112931.png360360Log5.2AiguoRobotAlarmsAndroidAndroidStudyBaiduAs35cb91f7BaiduMapBaiduMapSDKBaiduMapSDKNewBaiduNaviSDKCloudDriveDCIMDownloadFutureFamilyGDTDOWNLOADHBKuaiShuoMIUIMiMarketMobMoviesMusicNotificationsPicturesPodcastsQQBrowserQTAudioEngineQiYiVideo_LocalRenrenRingtonesSINCEVOICESogouSpeechViaFlyXMCSeeXMFamilyXMSmartHomeamapbackupbackupsbaidubaiduTTSchongdongcn.inbot.padbotpad_48.apkcom.example.funsdkdemocom.tencent.mobileqqdatadianxindoudouetouchevcardfileImg.jpgfrespeechresultiFlyIMElauncher_bg.jpglibsmi_drivemipushmscneteaseobboraypeiyingeramdumpsinovoicesmsnssogouspeechcloudsystemtbstemptencenttest.jpgtest.pngtexttospeechtmptracesunisoundvoice_assistvoicenotewzzyyxiaoixunfeiyeelinkyoumicache鏂囧瓧杞闊充繚瀛樿闊?

之后进入的 sdcard/ adb shell ls sdcard/

C:\Users\Administrator>adb shell ls sdcard/2.rar2017-06-28_112931.png360360Log5.2AiguoRobotAlarmsAndroidAndroidStudyBaiduAs35cb91f7BaiduMapBaiduMapSDKBaiduMapSDKNewBaiduNaviSDKCloudDriveDCIMDownloadFutureFamilyGDTDOWNLOADHBKuaiShuoMIUIMiMarketMobMoviesMusicNotificationsPicturesPodcastsQQBrowserQTAudioEngineQiYiVideo_LocalRenrenRingtonesSINCEVOICESogouSpeechViaFlyXMCSeeXMFamilyXMSmartHomeamapbackupbackupsbaidubaiduTTSchongdongcn.inbot.padbotpad_48.apkcom.example.funsdkdemocom.tencent.mobileqqdatadianxindoudouetouchevcardfileImg.jpgfrespeechresultiFlyIMElauncher_bg.jpglibsmi_drivemipushmscneteaseobboraypeiyingeramdumpsinovoicesmsnssogouspeechcloudsystemtbstemptencenttest.jpgtest.pngtexttospeechtmptracesunisoundvoice_assistvoicenotewzzyyxiaoixunfeiyeelinkyoumicache鏂囧瓧杞闊充繚瀛樿闊?

pull文件(将手机的文件拉到电脑上)

格式: adb pull [文件在手机中的地址] [电脑上保存的地址]

我们这次将上次push进去的文件重命名之后到处到桌面

第一步: shell登录
adb shell

第二步 : 我们就进入 cd [空格] mnt/sdcard/ (sdcard是一个文件夹,要进入到里面)

第三部: 重命名 rename [需要重命名的文件名称.类别] [空格] [新的文件名.类别]

C:\Users\Administrator>adb shellshell@cancro:/ $ cd mnt/sdcard/shell@cancro:/mnt/sdcard $ rename test.png test1.png

第三步 pull到桌面

C:\Users\Administrator>adb pull /mnt/sdcard/test1.png c:\Users\Administrator\Desktop\[100%] /mnt/sdcard/test1.png

10.删除文件

第一步: 进入文件目录 执行adb rm(remove) [文件的名称.类别]

删除 test1.png

注意: 进入后直接文件夹之后直接使用 rm 和使用重命名 rename是一样的

1|shell@cancro:/mnt/sdcard $ rm test1.pngshell@cancro:/mnt/sdcard $ exitC:\Users\Administrator>adb shell ls sdcard/

11.综合的:

adb创建(目录)文件夹;设置文件夹(目录)他的权限,最后删除(目录)文件夹;同时给这个test目录push一个text文件,查看这个文件

第一步: 创建目录在mnt/obb/ 最后的结构是 /mnt/obb/test/text.txt

创建目录: 进入obb进行创建

C:\Users\Administrator>adb shellshell@cancro:/ $ cd mnt/obb/127|shell@cancro:/mnt/obb $ mkdir testmkdir failed for test, Permission denied255|shell@cancro:/mnt/obb $ suroot@cancro:/mnt/obb # mkdir testC:\Users\Administrator>adb shell ls mnt/obb/test

第二步,push 文件 test.txt;

C:\Users\Administrator>adb push C:\Users\Administrator\Desktop\text.txt /mnt/obb/adb: error: failed to copy 'C:\Users\Administrator\Desktop\text.txt' to '/mnt/obb/text.txt': Permission denied

权限不够
我们直接push到sdcarad中

第三部: 查看文件

格式; adb shell cat [文件的完全路劲] 会将文件的内容展示到命令行,让我们查看.

C:\Users\Administrator>adb shell cat mnt/sdcard/text.txtceshi的文件夹C:\Users\Administrator>

第四部: 设置 mnt/obb/test的权限

格式:adb shell 进入相应的目录 之后执行命令 chmod 777/666/665 文件夹或者是文件名称.类别

C:\Users\Administrator>adb shellshell@cancro:/ $ suroot@cancro:/ #root@cancro:/ # cd  mnt/obb/root@cancro:/mnt/obb # chmod 777 testroot@cancro:/mnt/obb # chmod 666 testroot@cancro:/mnt/obb #

最后在手机上查看权限,第一次是 rwxrwxrwx
后一次是: rw-rw-rw-

adb修改文件权限的解释

第一点也是对最基础的知识点的复习:

二进制和八进制和十进制十六进制的定义:

进制是是一种进位制: 二进制表示的就是在数运算的时候逢二进; 八进制表示就是逢八进一,十进制就是逢十进一;十六进制就是逢十六进一;

第二点就是: 进制的由来:

二进制: 计算机中的任何数据都是以二进制的形式存在的,也就是0和1来表示的;

八进制: 由于使用二进制过于的长,人们使用三位的二进制数通过一个运算表示一位, 八进制的由来,三位的最大值是7,也就是二进制数为111;后面会直接进制之间的转化,最小是0,对应的二进制数是000;具体的转化请看下面.

十六进制: 八进制还是挺长的,使用同样的思想,能不能将四位的二进制表示为 一位;十六进制的诞生了!

十六进制也就是四个二进制 最大1111,十六进制最大就是f;十六进制表示的f转化为十进制就是15;最小就是0000;也就是0

十进制: 十进制也就是我们经常说到的整数就是十进制.

第三点: 进制的数据表现形式:

二进制: 组成0和1 是以0b开头,(B可以大小写)

八进制: 组成的部分是0到7(原因就是三位二进制表示一个八进制,最大的八进制就是是哪个111的二进制,表示的也就是7,最小是000也就是0); 开头就是0开头

十六进制: 十六进制是开头是以 0x开始的;组成是0到f数字是0到9,a到f,最大是1111,十六进制也就是f

十进制: 我们常见的整数就是十进制.

第四点:进制之间的转化:

哈哈!傻逼了吧!
* 2^0=1;任何非零的整数的o次幂都是一;*

任何进制转化为十进制

转化的原理;
第一个就是系数 也就是需要转化的进制数;
基数:需要转化的机制数是哪个进制 二进制那么基数就是二,八进制表示的基数就是8;十六进制数表示的基础就是16

权数: 去除进制数的开头;从右边开始进行全数的编号,一次是o开始.

计算的格式: 每一个系数*基数^对应的权数编号=结果(十进制数的结果)

第一解释: 八进制的组成是0到2,表示八进制最大的二进制是111,转化为十进制就是 1*2^2+1*2^1+1*2^0=4+2+1=7;
同理就是0;

0100(去除开始八进制就是100)转化为十进制就是: 1*8^2+0+0=64

十六进制转化为十进制:

ox100(一ox开头是一个十六进制数) 1*16^2+0+0=256

十进制转化为任意进制数

转化的原理:(除积倒余)
要转化的系数,除积就是需要转化为那种进制数,十进制数转化为二进制数,那么这个除积就是2;直道商为零,所得余数进行倒序反转.

打开画图的命令行: mspaint

十进制 100转化为二进制和八进制和十六进制:

十进制转化为其他进制数-除积倒序取余

#### 快速进行进制之间的转化 ####

8421码进行转化!

权限的解释: rwx r表示的是可read w表示的而是write x表示的是可执行的, rwx表示可读可写可执行; -表示没有这个权限
我们将具有权限写为1

那么 rwxrwxrwx 就是111 111 111 (都具有)
将其中的一个111 转化为十进制 7 也就是777的由来

看看 rw-rw-rw- 110110110,分别转化 666 二级制110 转化为十进制是6 二进制111转化为十进制是7,

命令行打开计算器 calc

安装开发的应用

Android Things 只允许安装一个应用,在安装其他应用时候确保卸载已经安装的应用.

adb 卸载应用: adb uninsatll [packagename]