1. 说明
android的后台运行在很多service,它们在系统启动时被SystemServer开启,支持系统的正常工作,比如 MountService监听是否有SD卡安装及移除,ClipboardService提供剪切板功能,PackageManagerService提 供软件包的安装移除及查看等等,应用程序可以通过系统提供的Manager接口来访问这些Service提供的数据,以下将说明他们的工具流程
2. 举例说明基本流程
以android系统支持sensor(传感器)实例来说明框架层的service和manager是如何配合工作的
1) 什么是sensor
sensor是传感器, 比如控制横竖屏切换利用的就是重力传感器(gsensor), 还有accelerator sensor可取得x, y, z三个轴上的加速度(应用如平衡球, 小猴吃香蕉等)
2) 应用程序调用(以下为关键代码)
sensorManager=(SensorManager)getSystemService(context.SENSOR_SERVICE);
lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
sensorManager.registerListener(sensorListener, lightSensor, SensorManager.SENSOR_DELAY_NORMAL);
3) Manager层
a) 提供给应用程序调用的接口,同实与Service交互,实现功能
frameworks/base/core/java/android/hardware/SensorManager.java
4) Service层
a) 开机时就运行的管理Sensor的后台服务
frameworks/base/services/java/com/android/server/SensorService.java
b) snesor后台服务需要的JNI,通过它与系统级交互
frameworks/base/services/jni/com_android_server_SensorService.cpp
5) 系统层
a) 传感器的头文件,硬件提供商按此文件的定义实现其功能
hardware/libhardware/include/hardware/sensors.h
b) 传感器的系统层实现,与内核交互,此处通常是硬件提供商提供的
hareware/libsensors
6) 内核及硬件层
内核访问硬件,同时以设备文件等方式提供给上层控制接口和传感器数据
3. 系统层实现
1) frameworks/base/core/java/android/*Manager.java 对应用的接口
2) frameworks/base/core/jni/ 对应用的接口的JNI
3) frameworks/base/services/java/com/android/server/ 后台服务
4) frameworks/base/services/jni/ JNI与系统层接口
5) hardware/libhardware/include/ 系统层头文件
6) hardware/libxxx 系统库支持
7) 内核支持
4. 应用程序如何使用
1) 查看系统提供哪些服务
find frameworks/base/core/java/android/ -name *Manager.java
此处可以看到调用系统提供服务的入口
2) 一般register listener,事件发生时都收到回调
5. 新建一个service(以froyo为例)
1) 接口:接口供应用调用
frameworks/base/core/java/android/app/ContextImpl.java 加服务名与Manager对应
frameworks/base/core/java/android/content/Context.java 加服务名定义
2) Manager:提供服务对应的调用接口
frameworks/base/core/java/android/app/StartXXXXManager.java 实现调用接口
frameworks/base/core/java/android/app/IXXXXManager.aidl 定义调用接口
frameworks/base/Android.mk 加入aidl的编译
3) service:提供后台服务支持
frameworks/base/services/java/com/android/server/XXXXService.java 服务实现
frameworks/base/services/java/com/android/server/SystemServer.java 启动服务
摘自:http://yueguc.iteye.com/blog/775339
分享到:
相关推荐
这里我们将深入探讨“android系统自带闹钟源码”中的关键知识点,以帮助理解其工作原理,并从中学习如何优化和扩展相关功能。 1. **AlarmManager服务**:AlarmManager是Android系统提供的一种用于调度定时任务的...
《安卓Android源码——系统原理与开发要点详解》是一份深度剖析Android操作系统的培训资料,旨在帮助开发者深入了解Android系统的内部工作原理以及优化开发流程。这份资料涵盖了从Android系统的架构到具体开发实践的...
这份源码包含了Android操作系统如何与硬件接口交互,如何处理图像数据,以及如何提供用户界面来控制相机功能。 在Android系统中,相机服务是一个系统级服务,名为`CameraService`,它位于`frameworks/base/services...
第3章“Android的Linux内核与驱动程序”,介绍Android内核的特点、Android中使用的专用驱动程序、Android系统可能使用的标准设备驱动。 第4章“Android的底层库和程序”,介绍Android系统的基础程序,以本地程序...
这个"安卓9.0系统自带settings系统设置apk源码"提供了深入理解Android系统设置实现的绝佳机会。Android 9.0,也被称为Pie(馅饼),是Android操作系统的一个重大更新,引入了许多新功能和性能改进。下面将详细介绍这...
本资源"Android 自带应用蓝牙源代码"提供了Android系统内置蓝牙应用的原始代码,让我们有机会深入理解其工作原理和实现细节。 首先,蓝牙源代码会涵盖以下几个关键部分: 1. **BluetoothAdapter**: 这是Android ...
总的来说,深入研究`Android2.2自带apk安装器源码`能够为开发者提供宝贵的见解,帮助他们更好地理解Android系统的底层工作原理,提升应用程序的开发和维护能力。同时,这也是一个很好的机会去学习如何遵循Android...
#### 四、Service的创建与使用 - **创建Service类**:首先需要定义一个继承自`Service`的类,并重写必要的方法,比如`onCreate()`、`onStartCommand()`、`onBind()`等。 - **声明Service**:在`AndroidManifest.xml...
本篇将深入探讨Android 2.3.1版本中自带的联系人应用源码,帮助开发者了解其背后的实现原理,提升自己的Android应用开发能力。 一、整体架构 Android 2.3.1系统中的联系人应用源码,主要由四大模块组成:数据存储...
在这个项目中,我们将深入探讨Android自带闹钟程序的源码,了解其工作原理和实现细节。 首先,让我们从整体结构上来看这个源码。"AlarmClock"通常包含多个组件,如Activity、Service、BroadcastReceiver以及相关...
Android 4.4系统源码是开发者深入了解Android操作系统工作原理的重要资源,对于系统级开发者、应用开发者以及希望优化性能或定制系统的爱好者来说,都是不可或缺的学习资料。这份源码包含了从底层驱动到上层应用程序...
8. **服务(Service)**:为了在后台持续录音,SoundRecorder可能使用了Android的`Service`组件。服务可以在用户界面关闭后继续运行,使得录音可以不受用户界面交互的影响。 9. **通知(Notifications)**:当录音在...
本文将深入解析"android短信源码",主要关注Android系统自带的MMS( Multimedia Messaging Service,多媒体信息服务)应用的实现。在这个名为`platform_packages_apps_mms-master`的压缩包文件中,包含了完整的MMS...
本课程"mooc_android_lesson16_Service音乐播放器"聚焦于如何利用Service来实现一个简单的音乐播放器,让学生深入理解Service的工作原理以及如何与UI交互。 首先,我们来看一下如何通过Button进行界面布局。在...
开发者可能使用了OkHttp、Volley等网络库进行数据传输,或者直接使用了Android自带的HttpURLConnection。此外,为了实现实时流媒体,可能还会使用到如FFmpeg这样的库进行编解码处理。 接着,视频的播放功能可能会...
每次Android系统更新都会带来新的API和特性,samples会及时跟进,提供这些新功能的使用示例,如Material Design、AndroidX库、Kotlin语言支持等,让开发者能够快速适应并利用最新的Android技术。 总结来说,...
总之,"安卓Android源码——KickFlyBug2.zip" 提供了一个探索和学习Android系统的机会,无论是对新手还是经验丰富的开发者,都能从中获益。通过理解和修改源码,开发者能够更有效地解决问题,创造出更加出色的应用...
以上就是使用Android自带下载工具DownloadManager的基本流程。通过DownloadManager,你可以实现后台下载,即使用户离开应用,下载任务也会继续进行,极大地提高了用户体验。同时,它还支持断点续传和自动重试,确保...
本文将深入探讨Android自带的语音识别功能,解析其背后的原理和技术细节。 首先,Android的语音识别主要依赖于Google语音服务(Google Speech Recognition Service),这是一个云端服务,能够将用户的语音转化为...
在深入探讨基于Android自带的bctest.c来实现简单Binder应用程序的Demo时,我们首先需要了解Android系统中Binder通信机制的基本概念和工作原理。Binder是Android系统中用于进程间通信(IPC)的一种机制,它使得不同...