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获取硬件的信息(真机测试)
- 使用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
- 使用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权限
- 查看进程列表
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]
- AndroidThing学习之路(一)
- EVC学习之路 一
- .net 学习之路 一
- PHP(学习之路一)
- WebService学习之路一
- Android学习之路一
- 学习opencv之路一
- lua学习之路(一)
- C#学习之路一
- 学习Android之路一
- Java学习之路一
- MySQL学习之路一
- WebService学习之路一
- JVM学习之路(一)
- ruby学习之路(一)
- maven 学习之路一
- Python学习之路【一】
- python学习之路一
- TestLink学习一:Windows搭建Apache+MySQL+PHP环境
- 如何在Python中实现RFM分析
- 统计学习笔记九----EM算法
- Java Socket小案例(2) 上传文本
- JMS基本概念简介
- AndroidThing学习之路(一)
- URG和PSH
- python 文件系统
- Web前端 基础知识总结(Javascript篇)
- JavaScript-数组
- 医院设置(多源最短路径--Floyd算法)
- 位操作基础篇之位操作全面总结
- 解决php编译报错configure: error: Cannot find OpenSSL's <evp.h>
- 云客Drupal8源码分析之有向无环图及依赖处理