Android高级工程师面试实战,Android 垃圾分类APP(3),腾讯Android开发面试凉凉

/**

  • 打开网络设置界面

*/

public static void openSetting(Activity activity) {

Intent intent = new Intent(“/”);

ComponentName cn = new ComponentName(“com.android.settings”, “com.android.settings.WirelessSettings”);

intent.setComponent(cn);

intent.setAction(“android.intent.action.VIEW”);

activity.startActivityForResult(intent, 0);

}

}

位置如下:

在这里插入图片描述

这里还需要一个在mvplibrary模块的AndroidManifest.xml中添加一个权限

添加位置如下

在这里插入图片描述

下面打开BaseActivity,在里面写入一个方法:

/**

  • 检查当前是否打开网络

*/

protected boolean hasNetwork() {

return (NetworkUtils.isNetWorkAvailable(context));

}

这么写的好处是,只要Activity继承了BaseActivity,那么就可以直接使用这个hasNetwork()方法去判断当前是否有网络。

下面就可以到MainActivity中去使用了。还记得之前是在哪里发起请求新闻数据的吗?

就在initView方法中,通过

mPresenter.getTrashNews(10);

发起网络请求,那么只要判断这里就可以了。

if (hasNetwork()) {//有网络

//请求垃圾分类新闻数据

mPresenter.getTrashNews(10);

} else {//无网络

//加载默认数据

}

那么怎么去加载默认的数据呢?首先我们需要拿到默认的数据。

这个我已经拿到了,在Constant类中增加一个常量,代码如下:

/**

  • 默认新闻数据 无网络时加载

*/

public static final String LOCAL_NEWS_DATA =“{\n” +

" “code”: 200,\n" +

" “msg”: “success”,\n" +

" “newslist”: [\n" +

" {\n" +

" “id”: “a448c7cc172e1156b35fb266f96c49cf”,\n" +

" “ctime”: “2021-04-17 08:44”,\n" +

" “title”: “21项行政执法权将下放基层 垃圾不分类等行为将由街道乡镇直接处罚”,\n" +

" “description”: “来源:北京日报  原标题:21项行政执法权将下放基层垃圾不分类等行为将由街道乡镇直接处罚  今后,餐饮单位向消费者主动提供一次性用品、单位和个人未按规定分类”,\n" +

" “source”: “垃圾分类新闻”,\n" +

" “picUrl”: “http://n.sinaimg.cn/sinakd20210417s/233/w676h357/20210417/e0e5-knvsnuf8545017.jpg”,\n" +

" “url”: “http://news.sina.com.cn/c/2021-04-17/doc-ikmyaawc0158409.shtml”\n" +

" },\n" +

" {\n" +

" “id”: “854fd9faf85e0ebeb588aca038cf5893”,\n" +

" “ctime”: “2021-04-17 06:42”,\n" +

" “title”: “践行分类理念 上虞成立生活垃圾分类“百人宣讲团””,\n" +

" “description”: “4月16日下午,一支由100名宣讲师组成,来自各乡镇街道、部门单位、社区(行政村)、大学人员组成的上虞区生活垃圾分类讲师团正式成立。讲师团将通过宣传环保理念、普”,\n" +

" “source”: “垃圾分类新闻”,\n" +

" “picUrl”: “http://n.sinaimg.cn/sinakd20123/40/w480h360/20210416/e35f-knvsnuf8043448.jpg”,\n" +

" “url”: “http://k.sina.com.cn/article_7505202169_1bf584bf902000uczm.html”\n" +

" },\n" +

" {\n" +

" “id”: “dde5b1a220c6957e8c60ca9f55ec8403”,\n" +

" “ctime”: “2021-04-17 07:17”,\n" +

" “title”: “垃圾不分类由街道乡镇直接处罚!北京21项行政执法权将下放基层”,\n" +

" “description”: "  原标题:垃圾不分类由街道乡镇直接处罚!北京21项行政执法权将下放基层  今后,餐饮单位向消费者主动提供一次性用品、单位和个人未按规定分类投放生活垃圾、在",\n" +

" “source”: “垃圾分类新闻”,\n" +

" “picUrl”: “http://n.sinaimg.cn/sinakd2021417s/602/w1280h922/20210417/0d27-knvsnuf8495071.jpg”,\n" +

" “url”: “http://news.sina.com.cn/c/2021-04-17/doc-ikmxzfmk7288291.shtml”\n" +

" },\n" +

" {\n" +

" “id”: “3034adf78105d4a3ca53f1d5f14c53ef”,\n" +

" “ctime”: “2021-04-17 07:36”,\n" +

" “title”: “老旧小区垃圾分类咋推进?南京玄武区“公交式”流动收集提供新思路”,\n" +

" “description”: “中国江苏网讯(记者聂龙妃)在南京市玄武区梅园新村街道的兰园19号楼旁的围墙上,有一张垃圾分类流动运输车时间表:每天早中晚3次收运,每个点位停靠5分钟,流运路线”,\n" +

" “source”: “垃圾分类新闻”,\n" +

" “picUrl”: “http://n.sinaimg.cn/sinakd20210417s/233/w676h357/20210417/e0e5-knvsnuf8545017.jpg”,\n" +

" “url”: “http://k.sina.com.cn/article_5675440730_152485a5a0200134ph.html”\n" +

" },\n" +

" {\n" +

" “id”: “80f5a70563073544de441634f763af70”,\n" +

" “ctime”: “2021-04-16 23:12”,\n" +

" “title”: “海口美兰:“小手拉大手”开展垃圾分类宣传”,\n" +

" “description”: “为引导辖区青少年学生践行垃圾分类,增强环保意识。4月15日,海口美兰区在三江镇开展新时代文明实践垃圾分类主题宣传活动,让垃圾分类以“小手拉大手”的形式走进千家万”,\n" +

" “source”: “垃圾分类新闻”,\n" +

" “picUrl”: “http://n.sinaimg.cn/sinakd20123/40/w480h360/20210416/e35f-knvsnuf8043448.jpg”,\n" +

" “url”: “http://k.sina.com.cn/article_7517400647_1c0126e47059010dn9.html”\n" +

" },\n" +

" {\n" +

" “id”: “c50d760bc5fe5e09144d02914a87f009”,\n" +

" “ctime”: “2021-04-16 20:41”,\n" +

" “title”: “评选十佳社区、招募形象大使 济南将举办系列垃圾分类宣传推广活动”,\n" +

" “description”: “大众网·海报新闻记者张稳通讯员蒋霞济南报道《济南市生活垃圾减量与分类管理条例》将于5月1日正式实施,记者从济南市城管局获悉,为贯彻济南市人大常委会贯彻”,\n" +

" “source”: “垃圾分类新闻”,\n" +

" “picUrl”: “http://n.sinaimg.cn/sinakd2021416s/320/w640h480/20210416/bd3f-knvsnuf7747977.png”,\n" +

" “url”: “http://k.sina.com.cn/article_2620088113_9c2b5f310200137ds.html”\n" +

" },\n" +

" {\n" +

" “id”: “a5fb207c5c46a0ac10e5630201264b53”,\n" +

" “ctime”: “2021-04-16 20:41”,\n" +

" “title”: “济南垃圾分类新进展:每300户左右设置1处集中分类投放点”,\n" +

" “description”: “大众网·海报新闻记者张稳济南报道4月16日上午,济南市召开2021年第一季度城市管理综合考评讲评暨城市品质提升百日攻坚行动推进会。会议部署了垃圾分类有关工”,\n" +

" “source”: “垃圾分类新闻”,\n" +

" “picUrl”: “http://n.sinaimg.cn/sinakd2021416s/450/w750h500/20210416/d2c4-knvsnuf7747865.jpg”,\n" +

" “url”: “http://k.sina.com.cn/article_2620088113_9c2b5f310200137dr.html”\n" +

" },\n" +

" {\n" +

" “id”: “a8291cec82765336a1ca075f23c96fc7”,\n" +

" “ctime”: “2021-04-16 20:47”,\n" +

" “title”: “老旧小区空间小垃圾分类亭房难落地,南京玄武这个小区试点“公交化收运””,\n" +

" “description”: “扬子晚报网4月16日讯(通讯员诸海路实习生娄渊泽记者张可)南京玄武区梅园街道的兰园片区属于典型的老旧小区,里面有18栋居民楼、500户居民。由于空间有”,\n" +

" “source”: “垃圾分类新闻”,\n" +

" “picUrl”: “http://n.sinaimg.cn/sinakd20210416s/300/w720h380/20210416/7b74-knvsnuf7769851.jpg”,\n" +

" “url”: “http://k.sina.com.cn/article_1653603955_628ffe73020012poo.html”\n" +

" },\n" +

" {\n" +

" “id”: “d8b40fa53a7f4dedeff9abbbd0e71754”,\n" +

" “ctime”: “2021-04-16 21:00”,\n" +

" “title”: “垃圾分类举手之劳 循环利用变废为宝(图)”,\n" +

" “description”: "  大江网/大江新闻客户端讯通讯员刘美菊报道:为深入推进生活垃圾分类工作,倡导绿色生态、健康环保的生活方式,增强社区居民对垃圾分类知识的了解,积极参与到垃圾分",\n" +

" “source”: “垃圾分类新闻”,\n" +

" “picUrl”: “http://n.sinaimg.cn/sinakd2021416s/74/w500h374/20210416/35bb-knvsnuf7798675.png”,\n" +

" “url”: “http://k.sina.com.cn/article_1767961804_6960f4cc02000swdh.html”\n" +

" },\n" +

" {\n" +

" “id”: “b239d2bfc3265df7985dfd583b19fa3e”,\n" +

" “ctime”: “2021-04-16 21:01”,\n" +

" “title”: “南京玄武区开展垃圾流动收运试点 老旧小区垃圾分类问题化难为易”,\n" +

" “description”: “老旧的院落,狭窄的街巷,这便是玄武区梅园新村街道兰园社区的样貌。作为拥有500多户居民的小区,兰园社区每天都会产生三、四十桶生活垃圾。近两年,垃圾分类作为南京市”,\n" +

" “source”: “垃圾分类新闻”,\n" +

" “picUrl”: “http://n.sinaimg.cn/sinakd2021416s/170/w554h416/20210416/7134-knvsnuf7837985.png”,\n" +

" “url”: “http://k.sina.com.cn/article_5675440730_152485a5a0200134gq.html”\n" +

" }\n" +

" ]\n" +

“}\n”;

这个数据是Json字符串,那么我们可以通过Gson将Json字符串转为实体,就好了。那么就这么来写。

if (hasNetwork()) {//有网络

//请求垃圾分类新闻数据

mPresenter.getTrashNews(10);

} else {//无网络

//加载默认数据

TrashNewsResponse response = new Gson().fromJson(Constant.LOCAL_NEWS_DATA, TrashNewsResponse.class);

mList.clear();

mList.addAll(response.getNewslist());

mAdapter.notifyDataSetChanged();

}

就是这么的简单。当然这里也不是这样就完了,你还需要在设置一下轮播图的显示,之前我没有设置这个轮播图的背景,那么它就是默认的主题背景色,因为它是放在CollapsingToolbarLayout下的。而现在当我没有网络自然轮播图也不能加载网络图片,此时就会显示你设置的背景图。这里我网上找到了一个还不错。

在这里插入图片描述

嗯,然后在activity_main.xml的banner控件中设置。

在这里插入图片描述

这样就好了。下面你可以运行一下了。

在这里插入图片描述

嗯,效果还是比较明显的。

下面还差一步,那就是对于每日一次的处理判断处理。

逻辑就是在有网络的情况下判断是否为当天第一次请求,是的话则请求数据,然后保存数据到数据库,不是的话就从数据库中取数据。

打开mvplibrary下的build.gradle,添加如下依赖:

//Android SQLite操作框架

api ‘org.litepal.guolindev:core:3.1.1’

然后Sync Now。

下面在app模块下的assets新建一个litepal.xml文件,里面的代码如下:

<?xml version="1.0" encoding="utf-8"?>

这里对应的是一个新闻表News,在model包下建一个News类,里面的代码如下:

package com.llw.goodtrash.model;

import org.litepal.crud.LitePalSupport;

/**

  • 新闻表

  • @author llw

*/

public class News extends LitePalSupport {

private String ctime;

private String title;

private String description;

private String source;

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

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

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

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

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

最后

我这里整理了一份完整的学习思维以及Android开发知识大全PDF。

当然实践出真知,即使有了学习线路也要注重实践,学习过的内容只有结合实操才算是真正的掌握。

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

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

我这里整理了一份完整的学习思维以及Android开发知识大全PDF。

[外链图片转存中…(img-wP7KOUkq-1712404814217)]

当然实践出真知,即使有了学习线路也要注重实践,学习过的内容只有结合实操才算是真正的掌握。

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

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

标题“51单片机通过MPU6050-DMP获取姿态角例程”解析 “51单片机通过MPU6050-DMP获取姿态角例程”是一个基于51列单片机(一种常见的8位微控制器)的程序示例,用于读取MPU6050传感器的数据,并通过其内置的数字运动处理器(DMP)计算设备的姿态角(如倾斜角度、旋转角度等)。MPU6050是一款集成三轴加速度计和三轴陀螺仪的六自由度传感器,广泛应用于运动控制和姿态检测领域。该例程利用MPU6050的DMP功能,由DMP处理复杂的运动学算法,例如姿态融合,将加速度计和陀螺仪的数据进行整合,从而提供稳定且实时的姿态估计,减轻主控MCU的计算负担。最终,姿态角数据通过LCD1602显示屏以字符形式可视化展示,为用户提供直观的反馈。 从标签“51单片机 6050”可知,该项目主要涉及51单片机和MPU6050传感器这两个关键硬件组件。51单片机基于8051内核,因编程简单、成本低而被广泛应用;MPU6050作为惯性测量单元(IMU),可测量设备的线性和角速度。文件名“51-DMP-NET”可能表示这是一个与51单片机及DMP相关的网络资源或代码库,其中可能包含C语言等适合51单片机的编程语言的源代码、配置文件、用户手册、示例程序,以及可能的调试工具或IDE项目文件。 实现该项目需以下步骤:首先是硬件连接,将51单片机与MPU6050通过I2C接口正确连接,同时将LCD1602连接到51单片机的串行数据线和控制线上;接着是初始化设置,配置51单片机的I/O端口,初始化I2C通信协议,设置MPU6050的工作模式和数据输出速率;然后是DMP配置,启用MPU6050的DMP功能,加载预编译的DMP固件,并设置DMP输出数据的中断;之后是数据读取,通过中断服务程序从DMP接收姿态角数据,数据通常以四元数或欧拉角形式呈现;再接着是数据显示,将姿态角数据转换为可读的度数格
MathorCup高校数学建模挑战赛是一项旨在提升学生数学应用、创新和团队协作能力的年度竞赛。参赛团队需在规定时间内解决实际问题,运用数学建模方法进行分析并提出解决方案。2021年第十一届比赛的D题就是一个典型例子。 MATLAB是解决这类问题的常用工具。它是一款强大的数值计算和编程软件,广泛应用于数学建模、数据分析和科学计算。MATLAB拥有丰富的函数库,涵盖线性代数、统计分析、优化算法、信号处理等多种数学操作,方便参赛者构建模型和实现算法。 在提供的文件列表中,有几个关键文件: d题论文(1).docx:这可能是参赛队伍对D题的解答报告,详细记录了他们对问题的理解、建模过程、求解方法和结果分析。 D_1.m、ratio.m、importfile.m、Untitled.m、changf.m、pailiezuhe.m、huitu.m:这些是MATLAB源代码文件,每个文件可能对应一个特定的计算步骤或功能。例如: D_1.m 可能是主要的建模代码; ratio.m 可能用于计算某种比例或比率; importfile.m 可能用于导入数据; Untitled.m 可能是未命名的脚本,包含临时或测试代码; changf.m 可能涉及函数变换; pailiezuhe.m 可能与矩阵的排列组合相关; huitu.m 可能用于绘制回路图或流程图。 matlab111.mat:这是一个MATLAB数据文件,存储了变量或矩阵等数据,可能用于后续计算或分析。 D-date.mat:这个文件可能包含与D题相关的特定日期数据,或是模拟过程中用到的时间序列数据。 从这些文件可以推测,参赛队伍可能利用MATLAB完成了数据预处理、模型构建、数值模拟和结果可视化等一列工作。然而,具体的建模细节和解决方案需要查看解压后的文件内容才能深入了解。 在数学建模过程中,团队需深入理解问题本质,选择合适的数学模
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值