Android Jetpack是一组软件组件,库,工具和指南,可帮助开发强大的Android应用程序。由Google在2018年推出的Jetpack包含现有的android支持库,android体系结构组件以及一个单独的模块化实体,另外还添加了Android KTX库。如今,Google Play商店中近99%的应用程序都使用Android Jetpack库。 android jetpack的行为区域涵盖了那些库,这些库使用户可以通过UI与应用程序进行交互。该组件集成了标准的Android服务,例如通知,下载,权限,共享,助手等。本文详细介绍了Behavior组件的每个库。 Jetpack包含大量库,这些库以相互协作的方式构建,并构成了强大的移动应用程序。它的软件组件分为4类:
- 基础组件
- 建筑构件
- 行为成分
- UI组件
此外,以下是所有“行为”组件的列表:
- 下载管理器
- 媒体和播放
- 权限
- 通知事项
- 分享分享
- 切片
在应用程序中包含Android Jetpack库的方法
- 在应用程序项目的build.gradle文件中添加google仓库。
allprojects {
repositories {
google()
jcenter()
}
}
- 所有Jetpack组件都可在Google Maven存储库中获得,并将它们包括在build.gradle文件中
allprojects {
repositories {
jcenter()
maven { url ‘https://maven.google.com’ }
}
}
行为成分
1.下载管理器
DownloadManager是Android中的一项系统服务,可帮助您在后台线程中下载大文件。移动设备在本地下载和存储文件的能力非常重要且必不可少,因为它并不吸引用户始终保持互联网连接。此外,持续的互联网使用会更快耗尽设备的电池并导致成本增加。 DownloadManager类仅处理HTTP下载, 并且它负责避免连接问题,如果设备重新启动,则可以继续下载,如果文件崩溃,则可以重试。由于它是一项系统服务,因此用户可以简单地开始下载并收听广播事件以处理完成的下载。
一种。初始化DownloadManager
与其他任何系统服务一样,DownloadManager是使用getSystemService()方法初始化的。然后将结果对象转换为DownloadManager类。
private void initializeDownloadManager() {
downloadManager= (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
}
b。创建下载请求
用户的HTTP请求在Request类中定义,该类是DownloadManager的内部类。
DownloadManager.Request request=new
DownloadManager.Request(Uri.parse(“https://media.geeksforgeeks.org/wp-content/cdn-uploads/gfg_200x200-min.png”));
request.setTitle(“GfG_logo”)
.setDescription(“File is downloading…”)
.setDestinationInExternalFilesDir(this,
Environment.DIRECTORY_DOWNLOADS,fileName)
.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
C。排队下载
要使下载入队(将下载请求添加到下载管理器的队列中),请使用enqueue()方法。该队列由系统自动处理,并返回下载ID 。
downLoadId=downloadManager.enqueue(request);
d。删除/删除下载的文件:
为了从下载管理器中删除/删除下载的文件,将调用remove()方法,并将文件的下载ID作为参数传递给它。
private void deleteDownloadedFile(){
downloadManager.remove(downLoadId);
}
2.媒体和播放
Jetpack为Android多媒体框架提供了向后兼容的API。随附的媒体库可帮助开发人员将音频,视频和图像文件集成到应用程序中。此外,回放库允许android应用使用会话和媒体控制器回放视频和音频。 MediaPlayer API可以访问和播放来自应用程序资源(原始资源),文件系统中独立文件或来自网络连接的数据流的媒体文件。下面提到的类用于在Android框架中播放声音和视频:
- MediaPlayer:主要API,负责播放音频和视频
- AudioManager:管理设备上的音频源和音频输出(音量控制)。
Android框架为开发人员在应用程序中使用媒体播放器类型提供了多种选择:
- 媒体播放器:这是一款干净的播放器,具有基本功能,它支持最常用的音频视频格式以及数据源。该播放器的简单易用的界面使其适用于许多使用情况。但是,它支持最少的自定义。
- ExoPlayer:一种开源软件,支持高性能功能和自适应流技术,例如DASH和HLS 。
- YouTube:对于那些应用程序精确播放来自YouTube平台的视频的用例,开发人员可以考虑集成此API。
- 定制媒体播放器:为了设计一种完全定制的媒体播放器,以满足应用程序的确切需求,可以使用低级媒体API,例如MediaCodec,MediaDRM和AudoTrack。
要使用MediaPlayer设计应用程序,必须在清单文件中进行一些适当的声明才能使用关联的功能。
一种。要使用MediaPlayer流式传输任何基于网络的内容,该应用必须请求网络访问
b。为了防止屏幕变暗或处理器在应用程序运行MediaPlayer时休眠,该应用必须请求唤醒锁定权限
3.权限
“行为”组件的此区域容纳一个权限系统,以及一组针对Android应用程序中某些任务的预定义权限。几乎每个应用程序都向用户请求一些权限。例如,如果应用程序需要网络访问权限才能执行任务,它将为用户定义权限。开发人员在其清单文件中声明应用程序的权限,并且代码必须处理两种情况,即用户接受和拒绝所请求的权限。此外,该文件还可以定义其他权限,这些权限将用于限制对特定组件的访问。
在API 23之后,Android系统中的请求权限的概念已发生了很大变化。最初,应用程序在安装时会向用户请求所有权限。在发布API级别23之后,应用程序会在运行时寻求权限。借助Android系统中这种新的权限模型,用户可以为某个任务授予对应用程序的一次性权限,而不必选择“始终允许” 。系统权限中存在不同级别,其中之一是保护级别。以下是任何许可的两个重要保护级别:
- 正常:就用户的隐私以及执行需要其他应用程序参与的任务而言,属于此类别的一组权限是安全的。默认情况下,将这种类型的许可授予应用程序。为设备/应用程序设置时区是正常权限的一个示例。
- 危险:此类权限针对用户的私人信息,例如,读取用户的联系数据的权限。这些权限也可能影响其他应用程序的操作。通常,该应用会在运行时请求危险的权限。
权限组:寻求用户选择授予或拒绝权限的危险权限分为9组。进行此类分组的目的是帮助用户通过单个操作授予组件所需的所有权限,而不是一个个地选择。例如,对于用户而言,一次授予与联系人的编辑相关的所有权限,而不是分别授予查看,编辑和添加联系人的访问权限,是很方便的。以下是权限组表:
Permission |
Group Description |
---|---|
Calendar | Managing calendars |
Contacts | Managing contacts |
Location | Current device location |
Camera | Taking photos and recording videos |
Phone | Dialing and managing phone calls |
SMS | Sending and viewing messages |
Microphone | Audio recording |
Storage | Accessing photos, media, and files |
Body Sensors | Pulse rate, heart rate, and similar kind of data |
4.通知
生成通知是当今移动应用程序最有益的功能之一。其主要目的是通知用户有关应用程序内发生的事件的信息。通过以正确的方式使用它,该实用程序可以提高用户使用该应用程序的动机。 Andriod从一开始就提供了Notification服务,并且在一段时间内不断发展。开发人员可以在通知区域中容纳各种图像和按钮,从而使其更具表现力。不仅手机,而且Android TV和可穿戴设备还使用通知功能来控制其媒体操作。以下是通常使用的通知类型:
- 来自其他用户的交流
- 适时且内容丰富的任务提醒
通知用户的方式:设备可以吸引用户的注意力,并可以将到达的通知告知用户。以下是执行相同操作的方法:
- 播放声音或振动
- 显示状态栏图标
- 在锁定屏幕上显示通知
- 闪烁设备的LED
- 通知可以显示在当前屏幕上
5.分享
在当今世界,人类非常依赖于移动应用程序。用户需要与同事,家人或朋友共享日常重要信息。此信息可以采用文本,图像或其他文档文件的形式。因此,Android应用程序具有相互通信和集成的能力非常重要。行为组件的共享部门负责与不同的应用程序共享和接收内容。 ShareActionProvider类用于执行共享内容和信息的任务。
为了简化跨各种应用程序共享信息的过程,Android使用了Intent 及其相关的附加功能。在Android中,用户可以通过两种方式在应用之间共享数据:
一种。使用Android共享表:这是一个对话框,当用户发出共享操作请求时,它会出现在屏幕上。设备上所有可用的应用程序以及与共享功能兼容的应用程序都以片状结构显示在屏幕上。此共享表的主要目的是在应用程序外部和/或直接向其他用户发送信息/内容。
b。使用Android Intent Resolver:主要用于在设备上可用的不同应用程序内共享文件。例如,打开设备上的电子邮件文件并要求用户选择其首选的邮件应用程序。
6.切片
Android提供了一种新技术来以Slices的形式显示远程内容。它是UI组件,用于显示从应用程序到Google搜索应用程序或其他平台(例如Google Assistant或Google Assistant设备)中的内容。作为Jetpack的一部分,它具有Android 4.4(API 19)的向后兼容性。开发人员发现此模块非常有益,因为通过使用Slices提供应用程序数据,用户可以使用Google Search或Assistant查找有关该应用程序的信息。此外,Android Jetpack有助于使用能够在应用程序外部显示应用程序数据的Slices创建灵活的UI模板。
在Android项目中, SliceProvider类允许应用程序生成将在系统空间中显示的内容。 SliceProvider是Content Provider的扩展,而Slice是在Content Provider的顶部构建的。开发人员可以基于内容URI从应用程序中托管各种切片。该应用程序将接收内容URI,然后选择构建并呈现在用户面前所需的切片类型。当应用程序需要显示切片时,将调用onBindSlice()方法。此方法基于作为输入接收的内容URI返回基于切片的数据。要更新切片,将调用notifyChange()方法。诸如Google Assistant或Google Search之类的Android搜索应用程序称为SlicePresenter。 SlicePresenter通过调用系统API以及Slice URI来获取Slice。