Android Telephony Architecture

合集下载

android是什么

android是什么

What is Android?Android is a software stack for mobile devices that includes an operating system,middleware and key applications.The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.————————————————————————————安卓是什么?安卓是一个包含操作系统、中间件和关键应用的软件栈。

安卓二次开发套件提供了使用Java 编程语言在安卓平台上开发应用程序的工具和应用程序接口。

FeaturesApplication framework enabling reuse and replacement of componentsDalvik virtual machine optimized for mobile devicesIntegrated browser based on the open source WebKit engineOptimized graphics powered by a custom2D graphics library;3D graphics based on the OpenGL ES1.0specification(hardware acceleration optional)SQLite for structured data storageMedia support for common audio,video,and still image formats(MPEG4,H.264,MP3, AAC,AMR,JPG,PNG,GIF)GSM Telephony(hardware dependent)Bluetooth,EDGE,3G,and WiFi(hardware dependent)Camera,GPS,compass,and accelerometer(hardware dependent)Rich development environment including a device emulator,tools for debugging, memory and performance profiling,and a plugin for the Eclipse IDE————————————————————————————————————功能特性:使组件能够被重用和替换的应用程序框架。

telephonyconnectionservice 示例 -回复

telephonyconnectionservice 示例 -回复

telephonyconnectionservice 示例-回复什么是TelephonyConnectionService?TelephonyConnectionService是一种服务,它可以让用户在进行多种通话(例如语音通话、视频通话等)时进行多任务操作,这意味着该服务可以在不中断通话的情况下执行其他任务。

这个服务主要是针对移动设备上的电话应用开发的,是Android的一个重要功能。

TelephonyConnectionService主要有哪些功能?TelephonyConnectionService主要有以下功能:1. 建立和维护通话:TelephonyConnectionService可以允许用户与其他人建立通话,包括语音通话、视频通话等,并可以在通话中继续执行其他任务。

2. 通话控制:TelephonyConnectionService可以让用户在通话中控制通话的状态,例如挂断、静音、免提等。

3. 通话记录:在通话结束后,TelephonyConnectionService会记录通话的信息,例如通话时间、通话方、通话类型等信息,以便用户进行查看、管理、分析等操作。

4. 通话扩展:TelephonyConnectionService可以允许第三方开发者进行扩展,例如增加新的通话功能、自定义通话处理等。

5. 统一接口:TelephonyConnectionService提供了一个统一的接口,使得各种通话方式可以通过相同的方式进行处理。

如何使用TelephonyConnectionService?使用TelephonyConnectionService需要一定的开发经验,可以参照以下步骤进行:1. 继承ConnectionService类,并实现其中的方法,例如onCreateOutgoingConnection()、onCreateIncomingConnection()等。

这些方法可以用于建立、管理通话等功能。

Android应用架构外文翻译

Android应用架构外文翻译

Android Application Architectureauthor:Lars V ogel1、AndroidManifest.xmlThe components and settings of an Android application are described in the file AndroidManifest.xml. For example all Activities and Services of the application must be declared in this file.It must also contain the required permissions for the application. For example if the application requires network access it must be specified here.<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="de.vogella.android.temperature"android:versionCode="1"android:versionName="1.0"><application android:icon="@drawable/icon"android:label="@string/app_name"><activity android:name=".Convert"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="UNCHER" /></intent-filter></activity></application><uses-sdk android:minSdkVersion="9" /></manifest>The package attribute defines the base package for the Java objects referred to in this file. If a Java object lies within a different package, it must be declared with thefull qualified package name.Google Play requires that every Android application uses its own unique package. Therefore it is a good habit to use your reverse domain name as package name. This will avoid collisions with other Android applications.android:versionName and android:versionCode specify the version of your application. versionName is what the user sees and can be any String.versionCode must be an integer. The Android Market determine based on the versionCode, if it should perform an update of the applications for the existing installations. You typically start with "1" and increase this value by one, if you roll-out a new version of your application.The tag <activity> defines an Activity, in this example pointing to the Convert class in the de.vogella.android.temperature package. An intent filter is registered for this class which defines that this Activity is started once the application starts (action android:name="android.intent.action.MAIN"). The category definition category android:name="UNCHER" defines that this application is added to the application directory on the Android device.The @string/app_name value refers to resource files which contain the actual value of the application name. The usage of resource file makes it easy to provide different resources, e.g. strings, colors, icons, for different devices and makes it easy to translate applications.The "uses-sdk" part of the "AndroidManifest.xml" file defines the minimal SDK version for which your application is valid. This will prevent your application being installed on devices with older SDK versions.2、R.java and ResourcesThe " gen " directory in an Android project contains generated values. R.java is a generated class which contains references to certain resources of the project.These resources must be defined in the "res" directory and can be XML files, icons or pictures. You can for example define values, menus, layouts or animations via XML files.If you create a new resource, the corresponding reference is automatically created in R.java via the Eclipse ADT tools. These references are static int values and defineID's for the resources.The Android system provides methods to access the corresponding resource via these ID's.For example to access a String with the R.string.yourString ID, you would use the getString(R.string.yourString)) method.R.java is automatically created by the Eclipse development environment, manual changes are not necessary and will be overridden by the tooling.3、AssetsWhile the res directory contains structured values which are known to the Android platform, the assets directory can be used to store any kind of data. You access this data via the AssetsManager which you can access the getAssets() method.AssetsManager allows to read an assets as InputStream with the open() method.// Get the AssetManagerAssetManager manager = getAssets();// Read a Bitmap from Assetstry {InputStream open = manager.open("logo.png");Bitmap bitmap = BitmapFactory.decodeStream(open);// Assign the bitmap to an ImageView in this layoutImageView view = (ImageView) findViewById(R.id.imageView1);view.setImageBitmap(bitmap);} catch (IOException e) {e.printStackTrace();}4、Activities and LayoutsThe user interface for Activities is defined via layouts. The layout defines the included Views (widgets) and their properties.A layout can be defined via Java code or via XML. In most cases the layout is defined as an XML file.XML based layouts are defined via a resource file in the /res/layout folder. This file specifies the ViewGroups, Views, their relationship and their attributes forthis specific layout.If a View needs to be accessed via Java code, you have to give the View a unique ID via the android:id attribute. To assign a new ID to a View use @+id/yourvalue. The following shows an example in which a Button gets the "button1" ID assigned.<Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Show Preferences" ></Button>By conversion this will create and assign a new yourvalue ID to the corresponding View. In your Java code you can later access a View via the method findViewById(R.id.yourvalue).Defining layouts via XML is usually the preferred way as this separates the programming logic from the layout definition. It also allows the definition of different layouts for different devices. You can also mix both approaches.5、Reference to resources in XML filesIn your XML files, for example your layout files, you can refer to other resources via the @ sign.For example, if you want to refer to a color which is defined in a XML resource, you can refer to it via @color/your_id. Or if you defined a "hello" string in an XML resource, you could access it via @string/hello.6、Activities and LifecycleThe Android system controls the lifecycle of your application. At any time the Android system may stop or destroy your application, e.g. because of an incoming call. The Android system defines a lifecycle for Activities via predefined methods. The most important methods are:onSaveInstanceState() - called if the Activity is stopped. Used to save data so that the Activity can restore its states if re-startedonPause() - always called if the Activity ends, can be used to release resource orsave dataonResume() - called if the Activity is re-started, can be used to initialize fields7、Configuration ChangeAn Activity will also be restarted, if a so called "configuration change" happens.A configuration change happens if an event is triggered which may be relevant for the application. For example if the user changes the orientation of the device (vertically or horizontally). Android assumes that an Activity might want to use different resources for these orientations and restarts the Activity.In the emulator you can simulate the change of the orientation via CNTR+F11.You can avoid a restart of your application for certain configuration changes via the configChanges attribute on your Activity definition in your AndroidManifest.xml. The following Activity will not be restarted in case of orientation changes or position of the physical keyboard (hidden / visible).<activity android:name=".ProgressTestActivity"android:label="@string/app_name"android:configChanges="orientation|keyboardHidden|keyboard"> </activity>8、ContextThe class android.content.Context provides the connections to the Android system. It is the interface to global information about the application environment. Context also provides access to Android Services, e.g. the Location Service. Activities and Services extend the Context class and can therefore be used as Context.Android应用架构作者:Lars Vogel(拉尔斯·沃格尔)1、AndroidManifest.xml一个Android应用程序的组件和设置描述文件中的AndroidManifest.xml。

Android平台架构及特性

Android平台架构及特性

Android平台架构及特性Android平台架构及特性 Android系统的底层是建⽴在Linux系统之上,改平台由操作系统、中间件、⽤户界⾯和应⽤软件四层组成,它采⽤⼀种被称为软件叠层(Software Stack)的⽅式进⾏构建。

好处:这种软件叠层结构使得层与层互相分离,明确各层的分⼯,这种分⼯保证了层与层之间的低耦合,当下层内或者层下发⽣改变时,上层应⽤程序⽆需任何改变。

下图显⽰Android系统的体系结构:1.应⽤程序层(Application) Android平台不仅仅是操作系统,也包含了许多应⽤程序,诸如SMS短信客户端程序、电话拨号程序、图⽚浏览器、Web浏览器等应⽤程序。

这些应⽤程序都是⽤Java语⾔编写的,并且这些应⽤程序都是可以被开发⼈员开发的其他应⽤程序所替换,这点不同于其他⼿机操作系统固化在系统内部的系统软件,更加灵活和个性化。

我们编写的主要是这⼀层上的应⽤程序。

2.应⽤程序架构层(Application Framework) 应⽤程序框架层是我们从事Android开发的基础,很多核⼼应⽤程序也是通过这⼀层来实现其核⼼功能的,该层简化了组件的重⽤,开发⼈员可以直接使⽤其提供的组件来进⾏快速的应⽤程序开发,也可以通过继承⽽实现个性化的拓展。

Android应⽤程序框架提供了⼤量的API供开发者使⽤。

a) Activity Manager(活动管理器)管理各个应⽤程序⽣命周期以及通常的导航回退功能b) Window Manager(窗⼝管理器)管理所有的窗⼝程序c) Content Provider(内容提供器)使得不同应⽤程序之间存取或者分享数据d) View System(视图系统)构建应⽤程序的基本组件e) Notification Manager(通告管理器)使得应⽤程序可以在状态栏中显⽰⾃定义的提⽰信息f) Package Manager(包管理器)Android系统内的程序管理g)Telephony Manager(电话管理器)管理所有的移动设备功能h)Resource Manager(资源管理器)提供应⽤程序使⽤的各种⾮代码资源,如本地化字符串、图⽚、布局⽂件、颜⾊⽂件等i)Location Manager(位置管理器)提供位置服务j)XMPP Service(XMPP服务)提供Google Talk服务3.系统运⾏库层: 1)函数库(Libraries) 函数是应⽤程序框架的⽀撑,是连接应⽤程序框架层与Linux内核层的重要纽带。

Android应用架构外文翻译

Android应用架构外文翻译

Android Application Architectureauthor:Lars V ogel1、AndroidManifest.xmlThe components and settings of an Android application are described in the file AndroidManifest.xml. For example all Activities and Services of the application must be declared in this file.It must also contain the required permissions for the application. For example if the application requires network access it must be specified here.<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="de.vogella.android.temperature"android:versionCode="1"android:versionName="1.0"><application android:icon="@drawable/icon"android:label="@string/app_name"><activity android:name=".Convert"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="UNCHER" /></intent-filter></activity></application><uses-sdk android:minSdkVersion="9" /></manifest>The package attribute defines the base package for the Java objects referred to in this file. If a Java object lies within a different package, it must be declared with thefull qualified package name.Google Play requires that every Android application uses its own unique package. Therefore it is a good habit to use your reverse domain name as package name. This will avoid collisions with other Android applications.android:versionName and android:versionCode specify the version of your application. versionName is what the user sees and can be any String.versionCode must be an integer. The Android Market determine based on the versionCode, if it should perform an update of the applications for the existing installations. You typically start with "1" and increase this value by one, if you roll-out a new version of your application.The tag <activity> defines an Activity, in this example pointing to the Convert class in the de.vogella.android.temperature package. An intent filter is registered for this class which defines that this Activity is started once the application starts (action android:name="android.intent.action.MAIN"). The category definition category android:name="UNCHER" defines that this application is added to the application directory on the Android device.The @string/app_name value refers to resource files which contain the actual value of the application name. The usage of resource file makes it easy to provide different resources, e.g. strings, colors, icons, for different devices and makes it easy to translate applications.The "uses-sdk" part of the "AndroidManifest.xml" file defines the minimal SDK version for which your application is valid. This will prevent your application being installed on devices with older SDK versions.2、R.java and ResourcesThe " gen " directory in an Android project contains generated values. R.java is a generated class which contains references to certain resources of the project.These resources must be defined in the "res" directory and can be XML files, icons or pictures. You can for example define values, menus, layouts or animations via XML files.If you create a new resource, the corresponding reference is automatically created in R.java via the Eclipse ADT tools. These references are static int values and defineID's for the resources.The Android system provides methods to access the corresponding resource via these ID's.For example to access a String with the R.string.yourString ID, you would use the getString(R.string.yourString)) method.R.java is automatically created by the Eclipse development environment, manual changes are not necessary and will be overridden by the tooling.3、AssetsWhile the res directory contains structured values which are known to the Android platform, the assets directory can be used to store any kind of data. You access this data via the AssetsManager which you can access the getAssets() method.AssetsManager allows to read an assets as InputStream with the open() method.// Get the AssetManagerAssetManager manager = getAssets();// Read a Bitmap from Assetstry {InputStream open = manager.open("logo.png");Bitmap bitmap = BitmapFactory.decodeStream(open);// Assign the bitmap to an ImageView in this layoutImageView view = (ImageView) findViewById(R.id.imageView1);view.setImageBitmap(bitmap);} catch (IOException e) {e.printStackTrace();}4、Activities and LayoutsThe user interface for Activities is defined via layouts. The layout defines the included Views (widgets) and their properties.A layout can be defined via Java code or via XML. In most cases the layout is defined as an XML file.XML based layouts are defined via a resource file in the /res/layout folder. This file specifies the ViewGroups, Views, their relationship and their attributes forthis specific layout.If a View needs to be accessed via Java code, you have to give the View a unique ID via the android:id attribute. To assign a new ID to a View use @+id/yourvalue. The following shows an example in which a Button gets the "button1" ID assigned.<Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Show Preferences" ></Button>By conversion this will create and assign a new yourvalue ID to the corresponding View. In your Java code you can later access a View via the method findViewById(R.id.yourvalue).Defining layouts via XML is usually the preferred way as this separates the programming logic from the layout definition. It also allows the definition of different layouts for different devices. You can also mix both approaches.5、Reference to resources in XML filesIn your XML files, for example your layout files, you can refer to other resources via the @ sign.For example, if you want to refer to a color which is defined in a XML resource, you can refer to it via @color/your_id. Or if you defined a "hello" string in an XML resource, you could access it via @string/hello.6、Activities and LifecycleThe Android system controls the lifecycle of your application. At any time the Android system may stop or destroy your application, e.g. because of an incoming call. The Android system defines a lifecycle for Activities via predefined methods. The most important methods are:onSaveInstanceState() - called if the Activity is stopped. Used to save data so that the Activity can restore its states if re-startedonPause() - always called if the Activity ends, can be used to release resource orsave dataonResume() - called if the Activity is re-started, can be used to initialize fields7、Configuration ChangeAn Activity will also be restarted, if a so called "configuration change" happens.A configuration change happens if an event is triggered which may be relevant for the application. For example if the user changes the orientation of the device (vertically or horizontally). Android assumes that an Activity might want to use different resources for these orientations and restarts the Activity.In the emulator you can simulate the change of the orientation via CNTR+F11.You can avoid a restart of your application for certain configuration changes via the configChanges attribute on your Activity definition in your AndroidManifest.xml. The following Activity will not be restarted in case of orientation changes or position of the physical keyboard (hidden / visible).<activity android:name=".ProgressTestActivity"android:label="@string/app_name"android:configChanges="orientation|keyboardHidden|keyboard"> </activity>8、ContextThe class android.content.Context provides the connections to the Android system. It is the interface to global information about the application environment. Context also provides access to Android Services, e.g. the Location Service. Activities and Services extend the Context class and can therefore be used as Context.Android应用架构作者:Lars Vogel(拉尔斯·沃格尔)1、AndroidManifest.xml一个Android应用程序的组件和设置描述文件中的AndroidManifest.xml。

Android-Modem

Android-Modem
1、概述
Android RIL(Radio Interface Layer)提供了无线硬件设备与电话服务之间的抽象层。下 图 1 展示了 RIL 在 Android 体系中的位置。
图1 Android RIL 位于应用程序框架与内核之间,分成了两个部分,一个部分是 rild,它负责 socket 与应用程序框架进行通信。另外 一个部分是 Vendor RIL,这个部分负责向下与 radio 进行通信。 对于 RIL 的 java 框架部分,也被分成两个部分,一个是 RIL 模块,这个模块主要与下层 的 rild 进行通信,另外 一个是 phone 模块,这个模块直接暴露电话功能结构给应用开发用
2、L4、REX 、AMSS 之间的关系
L4 是 一 个 微 内 核 程 序 , 高 通 的 L4 提 供 了 操 作 系 统 最 基 本 的 操 作 , 包 括 Address Space Support( 地 址 空 间 支 持 ),IPC (Inter-Process Communication, 进 程 间 通 讯 ), 和 Scheduling( 调 度 ) 等 。 REX 是 在 L4 之 上 封 装 的 服 务 ,是 一 个 抢 占 式 ,多 任 务 的 RTOS ,所 有 的 任 务 都 以 task 的 形 式 存 在 , REX 提 供 包 括 任 务 创 建 ,同 步 ,互 斥 ,计 时 器 ,中 断 控 制 等 功 能 的 API ,这 里 的 task 实 际 上 就 是 我 们 的 线 程 ,每 个 task 对 应 着 一 个 线 程 。 REX 维 护 一 个 task list( 双 向 链 表 ) , 始 终 运 行 高 优 先 级 的 task 。 products 里 面 所 有 的 服 务 包 括 3g 协 议 栈 等 都 是 以 task 的 形 式 跑 在 rex 之 上 的 。 AMSS― ― 高 级 的 移 动 用 户 软 件 (Advanced Mobile Subscriber Software) 技 术 。 AMSS 源 代 码 实 际 上 是 QC BREW(Binary Runtime Environment For Wireless) 平 台 的 的 底 层 部 分 , 去 掉 了 为 应 用 程 序 提 供 接 口 的 AEE(application execution environment) 部 分 , 高 通 平 台 基 本 上 都 是 采 用 的 这 样 的 架 构 。

Android Phone模块基本介绍

Android Phone模块电话管理是Android 系统支持的重要的业务之一,提供接听电话,收发短信、电话薄、网络事件监听、读取用户信息等功能。

从下到上可以分为四层:硬件驱动层、RIL daemon层、Telephony框架实现层、 PHONE 应用层,下层为上层提供服务,每层之间采用不同的通讯方式交互。

RIL daemon层实现为单独的一个开机启动的进程(rild命令),通过AT命令硬件驱动层交互,Telephony JAVA框架实现层包括一个RIL抽象层,RIL抽象层中通过一个本地socket与RIL daemon层(rild)交互,Phone应用层通过Binder机制与Telephony框架交互。

一 Telephony框架Telephony框架系统类图如下图:Telephony框架层为应用层和框架层的其它服务提供Telephony服务,提供了如下几个服务:PhoneInterfaceManager服务,是ITelephony接口的实现,IccSmsInterfaceManager短消息服务,是Isms接口的实现;IccPhoneBookInterfaceManager电话本服务,是IIccPhoneBook接口的实现;PhoneSubInfo提供用户信息读取服务,是IPhoneSubInfo接口的实现;TelephonyRegistry提供应用层的消息登记服务,是ITelephonyRegistry接口的实现。

应用程序通过以下几个客户端对象使用Telephony框架提供的服务。

应用程序可以在SmsManager单例对象(通过SmsManager类的getDefault函数返回SmsManager单例对象)中访问IccSmsInterfaceManager服务,用来收发短信。

通过IccProvider一个内容提供对象提供对IccPhoneBookInterfaceManager服务的访问,读取和管理电话本。

Android架构基本知识


对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力通根1保据过护生管高产线中工敷资艺设料高技试中术卷0资配不料置仅试技可卷术以要是解求指决,机吊对组顶电在层气进配设行置备继不进电规行保范空护高载高中与中资带资料负料试荷试卷下卷问高总题中2体2资配,料置而试时且卷,可调需保控要障试在各验最类;大管对限路设度习备内题进来到行确位调保。整机在使组管其高路在中敷正资设常料过工试程况卷中下安,与全要过,加度并强工且看作尽护下1可都关能可于地以管缩正路小常高故工中障作资高;料中对试资于卷料继连试电接卷保管破护口坏进处范行理围整高,核中或对资者定料对值试某,卷些审弯异核扁常与度高校固中对定资图盒料纸位试,置卷.编工保写况护复进层杂行防设自腐备动跨与处接装理地置,线高尤弯中其曲资要半料避径试免标卷错高调误等试高,方中要案资求,料技编试5术写卷、交重保电底要护气。设装设管备置备4线高动调、敷中作试电设资,高气技料并中课3术试且资件、中卷拒料中管包试绝试调路含验动卷试敷线方作技设槽案,术技、以来术管及避架系免等统不多启必项动要方方高式案中,;资为对料解整试决套卷高启突中动然语过停文程机电中。气高因课中此件资,中料电管试力壁卷高薄电中、气资接设料口备试不进卷严行保等调护问试装题工置,作调合并试理且技利进术用行,管过要线关求敷运电设行力技高保术中护。资装线料置缆试做敷卷到设技准原术确则指灵:导活在。。分对对线于于盒调差处试动,过保当程护不中装同高置电中高压资中回料资路试料交卷试叉技卷时术调,问试应题技采,术用作是金为指属调发隔试电板人机进员一行,变隔需压开要器处在组理事在;前发同掌生一握内线图部槽纸故内资障,料时强、,电设需回备要路制进须造行同厂外时家部切出电断具源习高高题中中电资资源料料,试试线卷卷缆试切敷验除设报从完告而毕与采,相用要关高进技中行术资检资料查料试和,卷检并主测且要处了保理解护。现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

基于Android的多功能备忘录的设计与实现毕业设计论文

本课题研究的多功能备忘录的设计开发是为了最大程度上便当人们记录生活中的重要事情。该备忘录除了具备记事本最基本的增删改查功能外,还拥有个性化的闹铃实时提醒功能,能对每一笔记录分别设置分歧的闹钟提醒。录音记事功能、拍照记事功能以及录像记事功能,使用户能随时随刻记录下重要信息。
关键词:安卓,备忘录,多媒体,闹钟
2.1.1 Android的功能特征
应用轨范架构:应用轨范体系结构包含了很多分歧类型的基础组件。通过直接调用相应的组件来进行应用轨范的开发,可大大减少开发应用轨范的工作量,使得开发过程更简便更快。
强大的绘图能力:在APP里所提供的绘图功能分为2D与3D两种类型。针对2D绘图,Android提供了一套特有的类库(SGL);针对3D绘图,使用的则是OpenGLES1.0规范的类库。它们是一种非常快的图形引擎,且支持硬件加速。
[2]深入了解android平台,学习android开发技术,熟练掌握java编程语言,并能熟练使用其中的主要技术。对项目进行设计分析,完成配套的功能结构。
[3]熟悉并进行开发环境的搭建与配置,为开发项目奠定基础。
[4]熟悉Android中的SQLiteDatabase类,使用该类完成对数据的增删改查。
本科生毕业设计(论文)
题目:基于Android的多功能备忘录
的设计与实现
姓名:
学号:221000304
学院:数计与计算机科学(软件)学院
专业:软件工程
年级:
指导教师:(签名)
2014年5月23日
福州大学本科生毕业设计(论文)诚信承诺书
毕业设计(论文)题目
中文:基于android的多功能备忘录的设计与实现
外文:The design and implementation of multi-functional memo based on android

QXDM培训-2

QXDM over view
Testing Department-FT 2012-08-10 Yunfeng.lius@
1
1 2 3 4
安装
连接QXDM和配置 抓QXDM log
浏览分析QXDM log
QXDM缩写 QUALCOMM Extensible Diagnostic Monitor (QXDM) Qualcomm Product Support Tool (QPST?) 2.7
DRM
WAP HTTP
SIP
VPN
SQL DB
CSR
PMIC EL lamp G sensor LCM
Audio CapSense Camera Touch Screen
OneNAND Headphone amplifier Proximity sensor Framebuffer
Flash LED Speaker amplifier Keypad Blacklight
3rd party Java applications MIDP2 .0 Other JSRs Sync Document transfer SDK Device/mo dem emulator & greenphone Launcher Multitasking Document manager Speed dial Contacts Calendar Tasks Voice notes Media player Image viewer Email SMS Camera Games Personalizati on Dialer/ (Cellular/V oIP) Call History SIM tookit Package manager Backup Settings Help browser Date/Time Power Mgr 3rd party Native applications E.g. office IM Plugin manager Handwriting keyboard
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

RIL.java
199 public final class RIL extends BaseCommands implements CommandsInterface {
1861
public void getPreferredNetworkType(Message response) {
1862
RILRequest rr = RILRequest.obtain(
CommandsInterface.java
27
public interface CommandsInterface {
1332
void getPreferredNetworkType(Message response);
BaseCommands.java
36 public abstract class BaseCommands implements CommandsInterface {
Android Telephony Architecture
Jun_Yang
Mar 23 2012
Agenda
1. Structure 2. Telephony Framework 3. Setup Data Connection 4. Net Status Notification 5. Q&A
void getPreferredNetworkType(Message response);
...
Telephony Framework
The default telephony application could use makeDefaultPhones() and getDefaultPhone() in the class PhoneFactory to obtain the unique instance of Phone. The code below shows how this be done.
PhoneProxy.java
57
public PhoneProxy(Phone phone) {
58
mActivePhone =face = ((PhoneBase)mActivePhone).mCM;
67
mCommandsInterface.registerForRadioTechnologyChanged(
68
this, EVENT_RADIO_TECHNOLOGY_CHANGED, null);
69
}
...
549
public void getPreferredNetworkType(Message response) {
550
mActivePhone.getPreferredNetworkType(response);
551
}
Telephony Framework
The class PhoneBase has a member mCM of the type CommandsInterface. And this is assigned in the constructor of GSMPhone.
GSMPhone.java
CDMAPhone
BaseCommands (abstarct class)
RILJ
PhoneProxy
PhoneFactory
extends
implements
call
Telephony Framework
Internal Telephony Packages:
frameworks/base/telephony/java/com/android/internal/telephony
135
sProxyPhone = new PhoneProxy(new GSMPhone(context,
1
sCommandsInterface, sPhoneNotifier));
137
} else if (phoneType == Phone.PHONE_TYPE_CDMA) {
Telephony Framework
...
130
sCommandsInterface =
new RIL(context, networkMode, cdmaSubscription);
132
int phoneType = getPhoneType(networkMode);
1
if (phoneType == Phone.PHONE_TYPE_GSM) {
The internal packages are used for Android default telephony application - Phone.apk, and the open packages are for any 3rd party telephony applications.
packages/apps/Phone/src/com/android/phone/PhoneApp.java
410
public void onCreate() {
...
425
if (phone == null) {
426
// Initialize the telephony framework
427
RIL_REQUEST_XXX and RIL_UNSOLE_XXX are defined the same in RILC and Framework
Setup Data Connection
Dataconnection.java maintained a dataconnection state machine
Phone.java
44 public interface Phone {
326
String getPhoneName();
332
int getPhoneType();
1
void setPreferredNetworkType(int networkType, Message response);
1
114
public CommandsInterface mCM;
...
203
protected PhoneBase(PhoneNotifier notifier, Context context, CommandsInterface ci,
204
boolean unitTestMode) {
207
mLooper = Looper.myLooper();
1
mCM = ci;
...
757
public void getPreferredNetworkType(Message response) {
758
mCM.getPreferredNetworkType(response);
759
}
Telephony Framework
All the telephony functionalities which need sending AT command to RIL daemon should be achieved by the the interface CommandsInterface. And the class RIL implements this interface. Moreover, RIL also extends the abstract class BaseCommands to provide unsolicited result code to default telephony application.
1863
RILConstants.RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE, response);
1867
send(rr); //call sender and send to target
Telephony Framework
This figure show how RILJ communicates with RILC
Structure
Java Application
Java Framework
RIL Kernel
Phone.apk, Mms, Settings...
android.telephony.*
com.android.internal.telephony.* RIL.java
socket “rild”
The public interface Phone is used to control the phone. The abstract class PhoneBase implements this interface. And the class GSMPhone extends this abstract class.
Telephony framework contains a set of telephony API for applications. There are two categaries of JAVA pacakges in telephony framework:
1.The internal telephony packages com.android.internal.telephony.*,
Telephony Framework
This figure show the relationship of these Classes
Phone (interface)
PhoneBase (abstract class)
CommandsInterface (interface)
相关文档
最新文档