2024年Android Wear开发步骤,15个经典面试问题及回答思路视频

本文讨论了Android工程师如何通过面试题集、系统化的学习资源和加入技术交流社群来提升技能,强调了知识体系化和团队合作的重要性。
摘要由CSDN通过智能技术生成

最后

希望大家能有一个好心态,想进什么样的公司要想清楚,并不一定是大公司,我选的也不是特大厂。当然如果你不知道选或是没有规划,那就选大公司!希望我们能先选好想去的公司再投或内推,而不是有一个公司要我我就去!还有就是不要害怕,也不要有压力,平常心对待就行,但准备要充足。最后希望大家都能拿到一份满意的 offer !如果目前有一份工作也请好好珍惜好好努力,找工作其实挺累挺辛苦的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

5. 手机通过USB连接电脑,执行命名

adb forward tcp:4444 localabstract:/adb-hub

adb connect localhost:4444

6. 在手机的AndroidWear应用上,可以看到连接状态已经变为

Host: connected

Target: connected

创建Android Wear项目

AndroidWear 应用程序直接在穿戴设备设备上运行,可以访问其上的传感器与GPU。这些应用程序与其他设备的程序一样使用Android SDK开发,但是在UI设计商上、使用的功能上有很大的区别。以下是穿戴设备应用程序与手持设备应用程序的最大区别:

1. 系统执行超时时间。如果穿戴设备应用展示了一个Activity,并且用户没有与Activity进行交互,设备就会进入睡眠。当设备被唤醒,

穿戴设备显示的是 Home界面而不是 Activity界面。如果需要持续的显示一些内容,可以创建一个通知在Context Stream显示。

2. 穿戴设备应用相对手持设备应用来说,安装包体积较小,功能较少。他们仅仅显示一些主要的UI界面,相当于是手持设备APP的子集。

通常,应该尽可能的将执行操作的功能放在手持设备应用上,然后返回操作的结果到 穿戴设备应用。

3. 用户不能直接下载穿戴设备应用,而是要将穿戴设备应用绑定到手持设备应用上。当用户安装手持设备应用,系统会

自动安装穿戴设备应用到穿戴设备。如果是开发调试,可以直接安装穿戴设备应用。

4. 穿戴设备应用支持大多数的API,但是,不支持以下API:

android.webkit; android.print; android.app.back; android.appwidget; android.hardware.usb;

一个包含穿戴设备应用的组合手持设备应用同样需要发布到 Googleplay。Android Wear不支持 GooglePlay ,所以用户下载组合手持设备应用,会自动同步 穿戴设备应用到穿戴设备设备上。手持设备应用可以用来做繁重计算的操作、网络操作、或者其他操作,最后将结果返回到穿戴设备应用上。

创建穿戴设备应用项目与普通Android项目一样,运行AndroidStudio后点击start a new Android Stuidio project,然后会打开创建应用的向导,一步步next完成即可。但是需要注意,创建时同时勾选 Phone and Tablet与Wear,如图:

当创建操作完成后,AndroidStudio创建一个新的项目包含2个模块,mobile 与wear如图 24.11。现在的这个项目就包含穿戴设备与手持设备的APP,可以创建 Activity、Service、自定义布局、等等。在手持设备,主要用来做大部分的繁重操作,例如 网络通信、进程间通信、大量的用户交互等。当这些操作完成,可以使用Notification或同步数据到穿戴设备上。

在开发过程中,可以像以前一样,直接安装应用到穿戴设备,使用 adb install 或者 AndroidStudio上的Play按钮。当项目完成、准备发布应用给用户,应该将穿戴设备应用嵌入到手持设备应用。当用户在GooglePlay上下载、安装应用后,连接手机的穿戴设备设备会自动安装穿戴设备应用。

注意:在平常开发中使用的是 Debug 签名,穿戴设备应用不会自动安装到手表上,只有通过签名后才可以自动安装。点击Studio的菜单 Build,选择Generate Signed APK…进行签名。

运行后的效果如图所示,至此,开发环境就搭建好了。

手持设备与穿戴设备的通知同步

一个Android的手持设备(平板或手机)与AndroidWear设备连接后,手持设备会自动将通知发送到穿戴设备上。通知会以卡片的形式显示在穿戴设备的ContextStream上。然而,为了给用户最好的体验,开发者应该添加穿戴设备特定的功能到通知上。从以下几点来看下如何同时为穿戴设备与手持设备创建通知。

  1. 创建通知

  2. 支持语音输入的通知

  3. 添加多页面到通知

  4. 堆叠通知

创建通知

使用NotificationCompat.Builder来创建一个可以往手持设备与穿戴设备同时发出的通知。当使用这个类创建的通知,系统会自动的显示通知在不同的平台。使用NotificationCompat.Builder 类需要在 mobile 的 build.gradle文件中加上一行代码来引用 v4包,如下所示。

compile ‘com.android.support:support-v4:21.0.3’

创建、显示的方式与之前Android中的方式无异,具体代码如下:

NotificationCompat.Builder builder = new

NotificationCompat.Builder(this);

builder.setSmallIcon(R.drawable.ic_launcher);

builder.setContentTitle(“标题”);

builder.setContentText(“内容”);

Intent i = new Intent();

i.setClass(this, ReplayActivity.class);

PendingIntent intent =

PendingIntent.getActivity(MainActivity.this, 0, i,

PendingIntent.FLAG_UPDATE_CURRENT);

builder.setContentIntent(intent);

NotificationManagerCompat mgr =

NotificationManagerCompat.from(this);

mgr.notify((int)(Math.random()*1000), builder.build());

当通知显示在手持设备上时,同时也会显示在穿戴设备上。在穿戴设备上向右滑动的时候,就会取消通知显示,同时,在手持设备上也会取消通知显示。在穿戴设备上左划,就会显示 ‘Open on phone’,点击后,则手持设备端会打开PendingIntent 所对应的组件,如下图所示

除了通过 setContentIntent() 定义主要的操作之外,还可以使用addAction()来添加其他的操作。在mgr.notify() 之前加入以下代码:

Intent actionIntent = new Intent();

i.setClass(this, ReplayActivity.class);

PendingIntent actionPendingIntent =

PendingIntent.getActivity(MainActivity.this, 0, i,

PendingIntent.FLAG_UPDATE_CURRENT);

//添加ActionButton

//参数分别为:1 图标;2 文字;3 点击跳转界面

builder.addAction(R.drawable.ic_launcher, “ActionButton”,

actionPendingIntent);

在手持设备上,Action会以一个附加按钮的形式显示在Notification 上(展开通知可以看到),在穿戴设备上,当用户左划的划的时候,就能看到以大按钮的形式展示的Action,当用户点击按钮的时候,Action所指的Intent 会在手持设备上调用。效果如图所示

如果你需要与手持设备区分,Action操作只在穿戴设备上有效,则需要使用 WearableExtender.addAction() 方法。注意,一旦使用这种方法添加Action,穿戴设备就不会显示通过NotificationCompat.Builder.addAction()添加的Action。同样,使用这个方式添加的Action不会在手持设备上显示。

//创建 只在 Wearable 端显示的Action

NotificationCompat.Action action = new

NotificationCompat.Action.Builder(R.drawable.ic_launcher,

“Wearable Only Notification”, intent).build();

//添加Action到通知上

builder.extend(new NotificationCompat

.WearableExtender().addAction(action));

可以使用 “Big View ”样式往通知中插入更多的附加文字内容。在手持设备上,用户展开通知才可以看到“Big View”内容。在穿戴设备上,“Big View”是默认显示出来的。可以通过调用 NotificationCompat.Builder对象的 setStyle()方法来设置扩展的内容,比如传递BigTextStyle或者InboxStyle的对象。具体代码如下:

//大视图样式 可以使用BigTextStyle InboxStyle

NotificationCompat.BigTextStyle style = new

NotificationCompat.BigTextStyle();

//内容太多的话,需要点击Wearable通知,下拉滚动显示

style.bigText(“大视图内容-大视图内容-大视图内容-大视图内容-大视图内”

+“容-大视图内容-大视图内容-大视图内容-大视图内容-大视图内容-大视图”

+“内容-大视图内容-大视图内容-大视图内容-大视图内容-大视图内容”);

builder.setContentIntent(intent);

builder.setStyle(style);

//设置Wearable 通知背景

builder.setLargeIcon(BitmapFactory.decodeResource(

getResources(), R.drawable.ic_launcher));

可以调用通知的setLargeIcon() 方法来添加一个大的图片到任意的通知上。这个图片会以背景图片的形式显示到穿戴设备上,运行效果如下图所示:

如果需要添加穿戴设备特有的属性到通知上,例如,指定附加内容的页数,让用户通过语音输入等,就需要使用NotificationCompat.WearableExtender类。具体的使用步骤如下:

1. 创建WearableExtender对象,设置穿戴设备通知特有的属性。

2. 创建NotificationCompat.Builder对象,设置一些属性。

3. 调用extend() 将WearableExtender对象传入,设置属性到通知上。

4. 调用build() 构建Notification

例如:如果要隐藏穿戴设备通知卡片上的图标,可以使用下面的代码:

NotificationCompat.WearableExtender extender = new

NotificationCompat.WearableExtender();

//设置背景

extender.setBackground(BitmapFactory.decodeResource(

getResources(), R.drawable.background));

//隐藏 小图标

extender.setHintHideIcon(true);

注意:使用setbackground() 设置背景图片时,如果背景不能滚动需要400x400像素的图片,如果背景能滚动则需要使用640*400 像素的图片。并将这些图片放入 drawable的nodpi 目录下。最后,必须使用 NotificationManagerCompat对象来发出通知,不然使用NotificationCompat.WearableExtender没有效果。

支持语音输入的通知

假如手持设备的通知上包含文字输入的功能,例如回复邮件,正常情况下手持设备上会启动一个Activity来输入文字。然而,当通知显示在穿戴设备上时,没有键盘输入,你可以使用RemoteInput让用户口述回复,或者使用提供预定义的文本消息回复。当用户以声音,或者预定义的文本信息作为回答,系统会将答复添加进通知的Intent中,然后在手持设备上打开Intent对应的组件。

创建支持语音输入的RemoteInput.Builder对象添加到通知中,这个类的构造器需要传递一个字符串作为作为语音输入的key,稍后用于检出输入的文字。除允许声音输入外,可以提供5个预定义的文本消息,让用户选择以快速回复。

代码如下:

private static final String EXTRA_VOICE_REPLY =

“extra_voice_reply”;

String[] choices = {“吃过了”, “还没吃”, “你请我啊”, “我要吃麻辣烫”};

//EXTRA_VOICE_REPLY 为检出语音输入文本的Key

RemoteInput input = new RemoteInput.Builder(EXTRA_VOICE_REPLY)

.setLabel(“吃饭了么?”) //设置 提问

.setChoices(choices) //设置 预定义文本作为快速回复

.build();

设置语音输入,可以使用addRemoteInput()方法添加RemoteInput对象到Action,让通知支持语音回复。

代码如下:

//创建Intent,用于接收回复

Intent actionIntent = new Intent();

i.setClass(this, ReplayActivity.class);

PendingIntent actionPendingIntent =

PendingIntent.getActivity(MainActivity.this, 0, i,

PendingIntent.FLAG_UPDATE_CURRENT);

最后

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长。而不成体系的学习效果低效漫长且无助。时间久了,付出巨大的时间成本和努力,没有看到应有的效果,会气馁是再正常不过的。

所以学习一定要找到最适合自己的方式,有一个思路方法,不然不止浪费时间,更可能把未来发展都一起耽误了。

如果你是卡在缺少学习资源的瓶颈上,那么刚刚好我能帮到你。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

NT);

最后

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长。而不成体系的学习效果低效漫长且无助。时间久了,付出巨大的时间成本和努力,没有看到应有的效果,会气馁是再正常不过的。

所以学习一定要找到最适合自己的方式,有一个思路方法,不然不止浪费时间,更可能把未来发展都一起耽误了。

如果你是卡在缺少学习资源的瓶颈上,那么刚刚好我能帮到你。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值