Android Things 开发入门,面试宝典

本文介绍了树莓派支持的总线类型,重点讲解了GPIO接口的应用以及如何刷写AndroidThings到开发板。同时,提供了AndroidThings操作指南,包括通过USB和网络连接设备,以及adb命令的使用。最后,文章涉及了Android开发的权限管理、用户驱动和面试准备要点。
摘要由CSDN通过智能技术生成

请原谅我不会搞笑还胡说的坏毛病。

树莓派支持的总线类型: GPIO,I2C,I2S,SPI,PWM,UART

关于总线我也不是专业的。以我的理解就是为了控制不同的硬件设备,而对电信号做不同的处理而划分的标准。这里我们先混个脸熟,后面用的最多的是GPIO,也就是以名称BCM开通的针脚,后面我们会通过名称去控制这个针脚上的设备。 关于总线详细的介绍,大家可以参考下这篇文章: https://blog.csdn.net/haima1998/article/details/18729929

如何刷写ats到树莓派开发板上

关于这方面的介绍,网上还是挺多的,我搜了一下最不缺的就是这类文章,所以这里就不做详细介绍了,简单介绍下 步骤:

  1. 进入android things console,创建属于自己硬件的rom,这是google的云管理平台(在这里可以创建硬件设备的rom,发布ota更新等) 地址为: https://partner.android.com/things/console/

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2. 通过软件刷写rom到内存卡上,这里推荐使用Etcher这个软件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个软件的使用还是很简单的,一键式的。 3. 刷写完成后通电,插入显示器,不出什么意外就可以正常开机了 至此刷写rom的工作就完成了

  1. 这里推荐另一种更简便的方式:使用官方提供工具的:android-things-setup-utility 下载地址: https://partner.android.com/things/console/#/tools 解压完了以后如图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可以根据自己的平台选择操作。

如何操作Android Things

由于物联网设配的特殊性,我们没有像安卓一样的触摸屏和按键等外设来操作设备,所以我们需要通过如下两种方式去连接设备。

1.通过usb转ttl设备直接连接

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

具体如何操作,可以自行百度

2.通过局域网连接(推荐方式) 先让ats设备连接到路由器,这里推荐连接显示器鼠标键盘可视化操作连接网络等操作,连接上显示器如下图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

常用的adb 命令

通过这些命令我们可以更好的管理和使用ats

  1. 连接AndroidThings adb connect
  2. 断开AndroidThings adb disconnect
  3. 关机 adb shell reboot -p 4.卸载应用 adb shell uninstall 使用adb connect 命令连接到ats设备后就可以像开发app一样用android studio去开发部署和调试了。

Demo展示及硬件搭建-light

这是一个操作LED让其闪烁的demo, 我们通过这个demo来介绍基本的操作硬件的方法 先看下最终效果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

硬件搭建步骤:

  1. 通过面包板串联一个电阻和一个LED灯并连接到面包板的正极
  2. 面包板的正极连接到树莓派一个GPIO总线端口
  3. LED另一个针脚通过跳线连接到树莓派的GROUND针脚上 附上我的连接图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

至此硬件模块的搭建就完毕了。

更直观一点的参考如下官方图片:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里需要着重说明是:Ground为地线,用来模拟零电压线,GPIO总线端口可以根据所加的电阻以及LED选择不同的电压,我这里选择的是电压3.3v名为BCM2的端口

light代码分析

public class LightActivity extends Activity {
Handler mHandler;
PeripheralManager mPeripheralManager;
Gpio mLightGpio;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_light);
mHandler = new Handler();
mPeripheralManager = PeripheralManager.getInstance();
try {
mLightGpio = mPeripheralManager.openGpio(“BCM2”);
mLightGpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW);
mHandler.post(mBlinkRunnable);
} catch (IOException e) {
e.printStackTrace();
}
}

private Runnable mBlinkRunnable = new Runnable() {
@Override
public void run() {
try {
if (mLightGpio == null)
return;
mLightGpio.setValue(!mLightGpio.getValue());
mHandler.postDelayed(mBlinkRunnable, 1000);
} catch (IOException e) {

}
}
};

@Override
protected void onDestroy() {
super.onDestroy();
if (mLightGpio != null) {
try {
mLightGpio.close();
mLightGpio = null;
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

代码不多,就全贴上去了,下面我们分析下代码。

mPeripheralManager=PeripheralManager.getInstance();
mLightGpio= mPeripheralManager.openGpio(“BCM2”);

我们通过PeripheralManager单例后调用openGpio方法,传入的参数为GPIO端口对应的名称,这样就拿到这个端口控制对象Gpio的一个实例mLightGpio。

mLightGpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_HIGH);

这句话代码有两个作用:1.设置电平方向为输出方向;2设置初始电平为高电平并立即激活。 这句代码执行后,LED会变为常亮状态。 我们还可以通过以下三行代码实现跟上面一句同样的效果:

//设置电平方向为输出方向,设置初始电平为低电平并立即激活
mLightGpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW);
//设置激活状态为高电平
mLightGpio.setActiveType(Gpio.ACTIVE_HIGH)
//进行激活
mLightGpio.setValue(true);

在mBlinkRunnable中通过 mLightGpio.setValue(!mLightGpio.getValue()) 来循环改变电平的激活状态来实现LED的闪烁,至此LED就可以blingbling的闪了。

最后看下ats项目和标准安卓有和区别 主要区别有两点:

  1. ats项目权限不需要用户动态授权,直接在manifest中声名即可,如访问GPIO总线端口以及下面需要讲到的注册用户驱动所需要的权限
  1. ats项目部署到硬件后可以设置其意外关闭重启和开机自启动,这样可以保证物联网设备的高可用状态,不至于程序崩溃导致设备无法使用 具体步骤只需要在入口Activity加入如下intent-filter:

用户驱动-userdriver

所谓用户驱动就是ats允许你把相应的硬件的电信号转化成系统事件,比如按钮的点按事件注册成系统的键盘按键事件,温度感应器的电信号注册成系统已存在的感应器事件,这样各个组件都可以很方便的使用标准的framework api去操作硬件了。

举个栗子

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

img
img

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V:vip204888 备注Android获取(资料价值较高,非无偿)
img

最后,面试前该准备哪些资源复习?

其实客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

这里再分享一下我面试期间的复习路线:(以下体系的复习资料是我从各路大佬收集整理好的)

《Android开发七大模块核心知识笔记》

面试字节两轮后被完虐,字节面试官给你的技术面试指南,请查收

面试字节两轮后被完虐,字节面试官给你的技术面试指南,请查收

《960全网最全Android开发笔记》

面试字节两轮后被完虐,字节面试官给你的技术面试指南,请查收

《379页Android开发面试宝典》

历时半年,我们整理了这份市面上最全面的安卓面试题解析大全
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

  • 9
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值