android实习总结

2024-11-07 版权声明 我要投稿

android实习总结(共10篇)

android实习总结 篇1

Xxxxxx大学

专业实习报告

——201X.XX.XX

XXXXXXXXXXX学院 计算机通信

信息技术有限公司 201X.XX.X XXXXXXXXXX XXXX XXXX XXXXXXXX

一、实训地点

XXXXXXXX信息技术有限公司是一家隶属于XXXXXXXX集团主要从事软件开发、技术咨询与服务、IT教育投资、大学生实习实训等业务的民营科技型企业。

二、实训目的

到实际生产中的种种Android

Android现对androidAndroid

Android

android实习可以让我们与时代最目的:

1、培养学生运用所学课程Java语言程序设计的理论知识和技能,分析解决计算机实际应用中的问题的能力。

培养学生在Java语言程序设计的基础上,开发Android应用程序的思想和方法。培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。通过课程设计,要求学生在指导教师的指导下,独立完成课程设计的全部内容 包括:

1、确定开发的程序,收集和调查有关技术资料。

2、按软件工程步骤进行程序设计。

3、对完成的程序进行测试和完善。

4、完成课程设计报告。

三、实训内容

学习实训的内容主要包括如下:

 开发环境:了解了android的起源与发展,学习安装 Eclipse 插件(ADT)学习AndroidSDK包含了开发Android应用所依赖的jar文件、运行环境及相关工具

 Android项目结构:src/ java原代码存放目录 gen/ 自动生成目录 gen 目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。这个文件由Android开发工具自动产生的。res/ 资源(Resource)目录 在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。assets资源目录Android除了提供/res目录存放资源文件外,在/assets目录也可以存放资源文件。AndroidManifest.xml 项目清单文件。

 基础开发

一、1.Activity:是Android系统中的四大组件之一。2.Activity生命周期:void onCreate(Bundle savedInstanceState)void onStart()void onRestart()void onResume()void onPause()void onStop()void onDestroy()这七个方法定义了Activity的完整生命周期

二、Intent: Intent对他要完成操作的一种抽象描述,我们可以用intent来启动一个activity,发起一个broadcast和启动或绑定一个service。Intent使应用程序代码在运行时动态绑定成为可能,这也降低了不同代码之间的耦合性。Intent最常使用的方法是用来启动一个activity。Intent封装了他要执行动作的属性,这些属性最常见的是action和data Intent主要有以下四个重要属性:dssAction:Action属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作。通过setAction()方法或在清单文件AndroidManifest.xml中设置。默认为:DEFAULT。

Data:Data通常是URI格式定义的操作数据。例如:tel://。通过setData()方法设置。

Category:Category属性用于指定当前动作(Action)被执行的环境。通过addCategory()方法或在清单文件AndroidManifest.xml中设置。默认为:CATEGORY_DEFAULT。

Extras:Extras属性主要用于传递目标组件所需要的额外的数据。通过putExtras()方法设置。

三、Service四大主键职业,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。要完成比较耗时的任务;不需要用户界面;

四、BroadcastRecever 生命周期

1.在广播到达接收者时调用onRecever();方法

2.注册广播的几种方式包括:代码注册;项目清单注册;

五、Handler 1.Handler、Message、MessageQueue和Looper之间的关系的关系,Handler的作用: Handler(一个线程可以有多个Handler但是只能有一个Looper), 关系:向消息对列(MessageQueue封装在Looper中)发送消息,Handler在创建时就会关联以个Looper默认关联当前Looper.作用:发送消息(Handler在主线程启动一个子线程,在子线程调用SendMassager(),发送到主线程的HandlerMessage()方法);处理消息(调用HandlerMessage()方法处理)。

 数据存储

一、Sharepreference:保存应用系统的配置信息等的键值存储机制。(使用键值机制:Bundle ContentValues Map JSONObjecdt)

二、存储方式 1)是一种键值存储方式,可以持久化存储变量的值(Sharepreference存储的值都是基本类型的数据)存储的数据是以xml文件的形式存在,存储在/data/data/packagename/shared_prefs目录中文件存储

I/O存储,主要是用于大文件的数据的存取,比如视频、图片等,该中存储方式在使用的过程当中更新比较困难。

文件存储的使用:Activity提供了openFileOutput(name,mode)方法和openFileInput()方法,用于读写文件数据.第一个参数name中不能包含路径分隔符“/”

三、Sqlite

自定义一个数据库的操作类,该类要extends SQLiteOpenHelper类

public class MyHelper extends SQLiteOpenHelper { //类没有实例化,是不能用作父类构造器的参数,必须声明为静态

private static final String name = “china”;//数据库名称 private static final int version = 1;//数据库版本 public MyHelper(Context context){ //第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null,代表使用系统默认的工厂类

super(context, name, null, version);} public void onCreate(SQLiteDatabase db){

//该方法是在第一次实例化数据库操作对象的时候被调用

//可以在其中做一些初始化的工作,比如创建数据库表等

} public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){

//在数据库的版本发生改变的时候会被调用

} }

四、ContentProvider 实现不同应用之间数据的访问和共享: 1)通过实现一个ContentProvider的抽象借口,将本应用的数据完全暴露出去,其中数据是以表的形式暴露的,暴露数据的时候要提供公共的URI。

2)其它应用通过android提供的ContentResolver接口访问ContentProvider暴露的数据。

五、网络存储

一、通过网络提供的存储空间来上传或者是下载那些存储在网络空间的数据信息。

网络编程:分为两种 1)基于Socket的网络编程:该网络编程使用的协议主要是TCP和UDP协议

面试题:TCP和UDP区别:TCP:面向连接 可靠 延时长 效率低UDP:面向无连接 不可靠 延时短 效率高Socket+ServerSocket+TCP(套接字)UDP+DatagrarmSocket+DatagramPackage(数据报)2)基于Http的网络编程:

 该网络编程使用的协议是面向Http协议;  该网络编程是以xml/json格式的数据为载体,来进行相互通信数据;  Android基于http协议的网络编程,使用的标准接口有两个:HttpURLConnection以及apatch的接口HttpClient Http协议通信分为两种方式:get请求方式和post请求方式

六、Xml格式数据解析Json格式数据解析:

Dom解析:dom解析一般是把xml文档转换成一棵文档节点树,存储在内存中

优点:xml文档树在内存中完整存储,可以直接对该文档树的数据和结构进行修改;可以通过解析器去访问节点树上的任何一个节点;Dom解析的API使用简单方便。

缺点:当xml文档比较大的时候,该解析方式消耗内存资源 Sax解析:

优点:对内存的要求较低,方便解析xml的部分;

缺点:当xml文档结构复杂的采用SAX解析,编码过程比较复杂 Pull解析:sdk提供的内置解析方式,解析过程类似于sax解析,节省内存资源,而且比sax解析更加简单方便。

JSON格式数据:(1)key-value键值对象(无序的)(2)数组(有序的)

用到的内容包含:4个类一个异常

JSON格式数据的解析可以使用Google提供的gson解析工具 问题:xml格式数据解析和JSON格式数据解析的比较

四、实训心得:

1通过几个月的android实习,基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。

2通过学习Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。例如: 要的布局(或者控件),在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的 跳转Intent管理,通过Bundle对数据在界面之间进行传输。

4在手机交互式通信服务中,学习了Android手机之间进行短信发送、广播、对广播的监听、服务等,在Service类中没有context,可以通过Handler来每秒反复运行,自动送出系统广播信息,同时在这里我们也知道可以设计一个常用的变量类,设计一个当前的CurrentActivity这个变量进行控制,进行处理。

android实习总结 篇2

自2005年年末《国务院关于大力发展职业教育的决定》发布以来, “顶岗实习”即“2+1”人才培养模式已在全国各高等院校普遍实行。此模式的具体实行方式为:高校学生在校学习4~5个学期, 其余学期到专业对口的指定企业带薪实习并完成一定的生产任务, 使学生得以在真实的生产环境下完成职业技能训练。这种使学生脱离学校, 提前进入企业实习的方式所带来的直接问题就是实习单位遍布全国, 学生实习过程和时间相对较长, 教师无法随时随地对学生进行指导, 学生之间实习的经验体会等不能很好的交流等等。有鉴于此, 在目前互联网普及程度超高的前提下, 渤海船舶职业学院船舶工程系于2007年11月以学院网络服务器为依托搭建了“船舶工程系‘顶岗实习’教学网络平台”, 以网络论坛的形式对外开放, 特设经验丰富的专业教师进行网上教学、辅导, 此举不仅打破了时间和空间上的局限性, 拓展和完善了顶岗实习教学体系和内容, 还大大提高了学生们的实习热情和自主实习能力, 此外还实现了互动、高效、便捷、开放的管理方式。现将相关经验总结如下。

1 针对建设目的确定合理规模、优化布局

网络平台建设首先应针对建设目的确定其规模和布局。“船舶工程系‘顶岗实习’教学网络平台”是专门为顶岗实习服务的一种网络系统, 目的性专一, 没必要盲目仿照各大门户网站投入过多成本, 建设重点应为扩大平台互动性及增加使用人员的认同感。布局方面主要包括平台系统类型设计、网页设计、内容模块设计、检索和信息库设计等, 建设中应注重多元化优化组合, 力求突出主题、层次分明、使用便捷。如平台系统类型除教师答疑和指导模块以外, 还应包括用户管理、学习资源下载、经验交流、通知公告、信息检索等;网页设计不仅要有方便的导航和帮助系统, 版面还要布局合理, 各级网页主题突出, 层次分明;内容模块设计可依据学生专业、实习时间、知识内容特点、同一单位实习人数等进行系统化设计和完善, 例如该平台就按专业不同分设“船舶工程技术”、“船舶舾装工程”和“船舶涂装工程”等五个子模块, 考虑到学生在“中远船务集团”、“渤船重工”等企业实习人数较多, 特设相应子模块, 便于学生有针对性地检索信息。

2 师生共建共管共用、教师注重引导和监督

顶岗实习网络平台应以学生为主要建设主体和使用对象, 师生共建、共管、共用才能更好地发挥网络平台的实践应用效果。网络平台既要有学校和教师的空间, 也要有学生的独立空间, 使每个用户都能产生一定的网络归属感, 力求使每位老师和实习学生都能在该平台中找到自己的“家”, 网站的浏览次数才能不断增加, 从而汇聚人气, 进而大大提高网络平台的使用效率。

由于船舶工程系为学院主干系部, 教学任务繁重, 本系专职教师在完成专业教学和科研任务之余无法长期进行网络平台的建设和维护, 造成更新滞后, 降低了教学平台的使用效果。只有让学生参与到网络平台的建设和管理当中, 充分调动学生的积极性和参与热情, 满足其多元化的学习需求, 使其乐于享用自己的建设成果, 网络平台才能充分发挥作用, 取得更好的教学效果。

自该平台开放以来, 学生对于工作中的问题经常利用手机、数码相机等现场记录, 再上传到平台, 大家共同讨论, 使问题得到了很好的解决;平台中还为学生提供个人空间, 使学生可以将每天的工作心得体会进行保存, 相对于传统的工作日志来说, 这种新形式的网络日志更易被学生接受, 并能提高学生记工作日志的兴趣, 养成良好的工作习惯;平台中还设有学生专用讨论区模块, 在此模块中学生对工作中出现的问题、各船厂实际情况、学生在船厂中实际待遇等展开了积极的讨论, 热门话题人气过千, 跟贴数百, 学生各抒己见, 创造出了一个极好的学习、研究氛围。此外, 教师应加强对学生的引导和监督, 确保学生有正确的学习方向, 保证学生的网络活动内容与实习过程紧密结合。

3 体现船舶专业特色、与实践教学内容相结合

船舶工程系教学课程体系主要包括“船舶工程技术”、“船舶舾装工程”和“船舶涂装工程”等内容。课程研究对象为具体船舶, 实践性很强, 而网络具有虚拟性, 二者存在一定矛盾。网络平台建设必须注重虚拟与现实结合、课内与课外结合、实践教学内容与科学研究结合。为此, 本平台中大量添加多媒体教学和实例教学的内容, 如钢材预处理、分段装配、船舶下水、船舶舾装件安装、船舶涂装等, 均建立了内容丰富的录像和图片信息库。为体现“船舶工程”特色, 增加网络平台的影响力, 建设中以“船舶建造”等内容为主体对其进行补充和包装, 实践证明这些具有非常好的效果, 不仅提高了网络平台的档次和水平, 还增加了人气。更为令人欣喜的是吸引到了许多船舶工程专业人士的加入, 特别是该院的一些老校友, 他们大多数人已成为各船厂的骨干力量, 而他们成功的经验恰恰是现在学生最需要和欠缺的。在平台中, 他们结合自己的经验, 从实际出发, 为应届毕业学生提出了许多宝贵意见, 这样, 学生登陆该平台就等于有多个具有丰富工作经验的老师在身边指导, 从而进一步提高了学生的专业技能水平。

4 动态化管理、开放式运行

渤海船院船舶工程系现有“船舶工程技术”等五个专业, 每年毕业学生为500余人。而“顶岗实习”是使学生都分散进入船厂, 如采用传统的管理模式, 管理混乱、效率低下将不可避免。教学网络平台充分发挥网络的先进、高效、便捷、资源共享等优势, 动态化管理、开放式运行有力地保障了“顶岗实习”教学的顺利开展, 增强了教学效果。目前“船舶工程系‘顶岗实习’教学网络平台”时间上24小时开放, 空间上全方位开放, 使用对象包括学院教师、在校学生、毕业实习学生及相关专业人士, 起到了良好的示范和辐射作用。

5 存在的问题和改进意见

目前“船舶工程系‘顶岗实习’教学网络平台”建设还存在以下问题:一是责权不分, 教师是兼职额外进行工作, 常因科研、教学任务繁重而影响网络平台的建设、维护和运行;二是网络技术水平不够高, 网络平台建设质量还有待提高;三是平台的影响力还应进一步扩大。针对教学网络平台的实际情况和存在的问题, 建议采取以下策略进一步完善网络平台的建设工作:一是配备专职人员管理和建设网络平台;二是加强对专业教师的网络技术培训;三是扩大开放力度, 加强学习和交流;四是重视网络平台的长期管理和运行, 学院出台相关政策鼓励教师和学生积极参与网络平台的建设、管理和维护, 以增加用户数量, 提高使用效率。

参考文献

[1]杨文林.“船舶工程系毕业实践探讨与研究”[Z].渤海船舶职业学院立项课题, 2008, 4.

[2]“船舶工程系网络教学专用平台”存档资料[Z].2007, 11-2009, 3.

临床实习,总结出病患“档期” 篇3

医药科学

我国《医学十二五规划》中指出,加快医学科技发展,对于提高公众健康保障水平,促进医疗卫生体制改革的顺利实施,培育发展生物医药战略性新兴产业具有重要意义。近年来公众对健康的关注日益提高,也使医学相关考研专业逐渐受到重视。不妨来听听学生和老师在各自专业领域学习和研究的故事,让我们对医药科学有一个更加全面理性的认识吧。

2010年秋天,我正式成为中南大学湘雅医学院一名临床医学的研究生。临床医学是研究疾病的病因、诊断、治疗和预后,提高临床治疗水平,促进人体健康的科学,它又细分为内科学、外科学、妇产科学、口腔科学、儿科学等。我所学的主干课程包括《人体解剖学》、《细胞生物学》、《皮肤病学》等。除了在学校掌握医学的理论和方法,通过实习培养临床科研能力与分析能力是医学研究生的唯一途径,2012年起,我就开始跟随住院医师进行临床实习,从中收获了许多成长经验。

超越书本

第一次实习,我虽有初生牛犊不怕虎的冲劲,但一来没有接受临床的检验,二来没有确实的把握,所以不免有些忐忑。而实际情况也远比想象中复杂,照章办事并不一定能见效,还得灵活运应对才行。

医学生入院培训的第一课,是学习医患沟通。“医生坐诊时该不该接电话”是在一次课上播映的模拟场景:门诊大厅,被叫到号的周老伯像中彩似地跑进诊室,还未开口,只听护士喊:“张医生,电话!”医生立即起身要跑出去,情绪急转的周老伯忽地抡起了拳头:“我等了5小时,你1分钟都没看,就要走?”画面定格,同学们七嘴八舌讨论起来——“病人都等这么久了,医生不该去接电话!”“万一真有急事找他怎么办?这个电话可能人命关天!”

电话到底该不该接?按理说,医生坐诊时确实不应该离开诊室,但听了大家的讨论,我也一下子没了主意。这时候,带教医生的总结让我很受用:“首先,应该问清是谁打来的电话。如果是急诊室打来,必须接,因为一条生命可能危在旦夕,需要你出手援救。如果不是急诊室打来,那就必须看完眼前这位病人,再接电话。”

今年8月,我在急诊科实习时遇到一个病人,送来时呼吸衰竭、血压下降……医生、护士立刻投入抢救,但已经很难挽回。最后,医生们开始给他做心脏复苏按压——按规范,要保证每分钟按压90次,保持频率和力度。这活儿,男医生一般做5分钟就满头大汗。于是一群医生轮流上,每5分钟换个人。我怎么也没想到,这按压,竟然会从下午3点一直持续到次日凌晨3点,自始至终,家属都在一旁看着。

每次轮到我上去按压时,都能感觉到手下的身体在变冷。我记得教科书上清楚地写着:心脏按压抢救半小时,如果心跳没恢复,救回来的概率极小。但看前辈们都不停手,我也不敢停。这次非常规的经历告诉我:抢救,有时不只是为病人,也是为了家属——你没法告诉家属,病人已经没救了,因为他们没法接受医生“如此无情”。医生坚持抢救,说是等待奇迹,其实是给家属心理安慰——“我们尽力了。”

医学是活的,我们不能完全按照书本上的流程去给病人治病,有时我们必须考虑病人家属的感受,有时又会面临突发状况,随机应变对医生而言是很重要的。

从被拒绝到被点名

初入科时,无资历无经验的我任务是为老师和病人跑腿、传话。具体如何治,老师一“嘴”揽,我就好比小秘书,一“手”揽:老师说我写,老师不满意再重写,病人有啥事先找我,我再向老师汇报听指示。每天做事小心翼翼,察老师的颜观病人特别是家属的色还得看护士的表情,心一天到晚在半空中悬着。还有就是底气不足、不自信、老觉得自己就是个学生,在病人面前说话也经常脸红。半个月后,对环境和办事流程慢慢熟悉后,我终于可以下病房了,却没想到第一天病人就给我来了个下马威。

“怎么来个实习生给我换药?我不要!”第一次出现在普外科病房,病人们一眼就识别出了我这张新面孔,没过几分钟,统一战线形成:“别让那个新来的学生碰我!”

临床实习,是成为合格医生的关键一步。许多病人不愿给实习生碰,这一出是我实在没有想到的,就连带我的医生也有些着急了:“现在不让他们碰,将来谁能上手术台给你们开刀?”

虽然患者大都拒绝我,但临床经验必须积累,我必须主动争取迈出第一步。两天后,我推着装了碘球纱布等等的小车走到14床患者跟前。“胆囊癌病人,手术后脂肪液化,伤口迟迟长不好,需要每天换药,用盐水抗感染。”每天整理病史,我已把病人们的情况背得很熟。

“怎么又是你?叫医生来,我不要你换药!”14床很坚持。因为每次换药,揭下纱布总会撕扯尚未长好的伤口,每次疼得嗷嗷叫的她更不愿让个新手碰。“其他人都去手术室了,今天病房里只有我。我换药,保证你不疼!”我的态度自信而诚恳。想想医生们做手术不知啥时间才能回,14床勉强同意了。让病房里所有人意外的是,这次换药很顺利,14床真的没喊疼。从此14床每天点名要我换药,直到出院。病房的氣氛也从此变了,每次科室大主任查房,病人们总是毕恭毕敬,主任前脚刚离开,大伙儿就仿佛被“激活”了,热情地将我围住:“拿个橘子吃吧。”“我叫了外卖,你要不要奶茶?”“你QQ号多少?我加你行吗?”有时候看到新入院的病人对我有意见,老病人们也会帮着我说话。

其实,我们在换药、穿刺时,病人说不痛、很满意,并不是因为我的技术比住院医生、主治医生好,而是师兄师姐们要看的病人实在太多,门诊、病房、手术室团团转,连上厕所都要拣空子……所以,他们遇到简单的临床操作,动作不免会快些、“粗暴”些。而我好不容易争取到病人让我上手操作,自然会格外认真、细致。

被病人接受只是第一步,想在临床上得到更大的进步,就得在方方面面积极主动。比如我经常要求参观手术,术前会详细看看病人病历及各项检查,再从科室的资料中看看手术的大概流程,避免上去了什么也看不懂的情况。术后病人肯定要换药拆线,这些也都是实习生可以做的,操作多了,现在的我已经可以做得很熟练。

病患“档期”

在门诊实习时,由于病人特别多,老师很少有空教实习生,这就需要我们自己多看多想,比如在抄处方时多留意老师的用药,可以从处方上学到老师的用药规律,看他是怎么去治疗病人的。此外,病人有时候也会是很好的导师。在妇产科实习时,我所在的病区收进一位患子宫内膜肿瘤的病人,因为一时不知道那肿瘤是良性还是恶性,病人情绪很坏。我试着给她做科普,说些这种病的知识,不料一下子被她问慌了,她提出的问题,比上级医生考我的还多!比如子宫内膜肿瘤是否会诱发高血糖高血脂病?如何预防?在饮食上应注意些什么?这些并发症又会引发什么病症?那些日子,我回家就做一件事:一本一本翻教科书,尽量把子宫内膜癌的相关内容搞清楚,就怕第二天病人提问,自己答不上来。没多久,我对子宫内膜相关病症就了解了个透,这时报告也出来了——“IA”期,是良性。我立刻冲到病房,激动地通报好消息。病人很高兴,我也开心。

而另一次在消化内科实习时,一名病人因消化道出血入院,主治医生给病人进行内镜检查,之后病人被确诊为“直肠粘膜血泡样改变”和“粘膜下蓝色隆起样改变”。但在检查过程中我发现病人的肠道出现畸形,又发现其他一些症状与上述病的症状并不完全符合,但一时我又说不清究竟是什么病。于是下班后我根据观察到的情况去翻教科书,查文献资料,终于在一本医学书中找到符合的病名“蓝色橡皮疱疹痣综合征”。第二天,我把一份“蓝色橡皮疱疹痣综合征”的病例讨论报告交给了主治医生。医生很重视,在一系列检查分析后,最终确认我的结果是对的,从而避免一次误诊,主治医生也对我锲而不舍的求知精神十分赞赏。

在医院的实习期间,常有老医生告诉我们要学会在工作中动脑筋,总结工作规律,这无形中会助我们更高效地工作。时间一长,我发现医院也有特定的工作节奏,比如每天都有一些“档期”会相对集中地迎来某一类病患:傍晚“6点档”是做饭时间,以烫伤、刀具伤病人居多;晚“8点档”,吃完饭了,肠胃病人多,以胰腺炎、胆囊炎为主;晚“10点档”,酒吧族容易酒后滋事受伤和交通意外受伤,来的多是重伤员。这样,就可以事先做好相应准备,应对时也能更加从容不迫。

我的第一次通宵抢救,就是一起“10点档”高速公路事故。那晚,我跟着医生们通宵抢救了7个伤员,本来还有第8个,但在送来医院的路上“走”了。我在凌晨5点走出手术室,2小时后,又准时回到病房上班,就这样连续工作了36个小时。

Android学习总结 篇4

零零碎碎的总结:

1.客户端的功能逻辑不难,UI界面也不难,但写UI花的时间是写功能逻辑的两倍.2.写代码前的思考过程非常重要,即使在简单的功能,也需要在本子上把该功能的运行过程写出来.3.要有自己的知识库,可以是一个工具类,把写过的,看过的好的代码放进去,也可以是一个笔记本软件.因为只有放在知识库里的东西,才是你最重要的财富.4.如果你想做自由职业者,你需要学英语,因为在国外的盈利比国内多很多.如果你想进大公司,好公司,你需要学英语.你想深入学习android,但中文的android文章太少了,你查查百度,到处都是copy来copy去的hellword,所以,你需要学英语.如果你想出国,你需要学英语.5.Http协议要研究透彻.http的信息头有什么信息,分别代表什么,信息体有什么信息,代表什么,都要搞的明明白白.scoket也是一样.6.在eclipse里的layout文件都有graphical Layout.通过这个好好的把UI调整好.7.Android里的junit每次运行都会打包新的apk到设备上跑.效率非常慢.如果是跟android无关的测试,最好自己建立一个单纯的java项目做测试.8.面试的时候不要觉得自己提的薪水太高,物以稀为贵明白吗?不管你的期望薪资多少,都有可能实现,这只是时间问题.9.如果一家小公司通过猎头找到你,即使公司在小,也比外面那些40,50人的公司还要好.不要觉得公司不行,担心会倒闭.放心吧,至少活1年是没问题的.10.不要把自己绑在android上,有空也研究下IOS(最近小弟就准备研究ios,刚买了6本书...).11.移动互联网最少还有10年的快速增长.android最少还有两年的快速增长.走android这条路是不会错的.12.有空多学点开放平台的SDK.比如新浪微博,腾讯微博,淘宝平台,支付宝移动支付平台,快钱移动支付平台等等..这些都是不愁没市场的.13.即使技术再差,也要发布一个应用到market上去.因为这样你才了解做一个应用的逻辑.14.每个月拿到薪水省500-1000元出来.这些钱投在买学习资料,去培训班上课...在培训班,花再多的钱也是值得的.15.你真正的价值在项目经验和对底层的认识上.不要忽略基础知识.16.如果有空把Android的源代码看一下.底层的东西很枯燥,但这些很值得学.17..程序员其实是艺术家.代码重构和设计模式,是非常非常重要的东西,必须要学

18.不要去维护一个项目,要去做一个项目.19.一开始不要轻易去大公司,虽然大公司是可以让你呆一辈子的.但你的起点低,以后成就也低.20:每天早上提前20分钟上班,5分钟把今天的工作计划写好.15分钟用来看各大It论坛的新闻.21:如果以前没做过java,那就把SSH看下,自己搭建一个小服务器.这是为了接私活用.22:PS一定要学,接私活用.23:多下载市面上好的应用,每天都用,只有这样你才能了解市场.现在所有的APK都可以反编译,看源代码麻烦,但看layout和图片很容易,所以....你懂的.24.要有羞耻心.25.老板仅仅要求你把东西做完,需求完成.但你必须对自己要更严格一点.写一段代码,从网上复制一份代码,并不是可以用就行了,你还必须明白他的原理,为什么这样就可以?这才是对你最有用的地方,这也是你今后薪资增长的保证.26.要懂得舍得.移动领域发展太快,必要时必须要用钱换时间.不然你会远远落后别人(我之前花了4000大洋去培训班学IOS三天).27.要明白自己想要什么,什么才能最大性价比提高你的能力.对我来说,能让我提高最大的,就是Android和IOS同时会,并且自己可以做架构设计.28.看android技术书籍最快的学习方法,先通读一次.然后把书本上的demo一个一个写出来.不要觉得太容易不去写.很多东西都是这样,看起来简单,但做起来难.最后再对照自己写出来的程序代码去理解书本的意思.29.应用和游戏是2个方向,没有一个公司会同时做游戏又做应用,即使是外包公司,大多也只做一块.专精一个就可以了.30.每次做完一个项目,要强迫自己做总结,通过这个项目,我学到了什么新技术?犯了哪些

SB错误?

android实习总结 篇5

1、添加权限:AndroidManifest.xml中必须使用许可“Android.permission.INTERNET”,否则会出web page not available错误。

2、在要Activity中生成一个WebView组件:WebView webView = new WebView(this);

3、设置WebView基本信息:

如果访问的页面中有Javascript,则webview必须设置支持Javascript。

webview.getSettings().setJavaScriptEnabled(true);

触摸焦点起作用

requestFocus();

取消滚动条

this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);

4、设置WevView要显示的网页:

互联网用:webView.loadUrl("");本地文件存放在:assets文件中

5、如果希望点击链接由自己处理,而不是新开Android的系统browser中响应该链接。给WebView添加一个事件监听对象(WebViewClient)

并重写其中的一些方法

shouldOverrideUrlLoading:对网页中超链接按钮的响应。

当按下某个连接时WebViewClient会调用这个方法,并传递参数:按下的url

onLoadResource

onPageStart

onPageFinish

onReceiveError

onReceivedHttpAuthRequest6、如果用webview点链接看了很多页以后,如果不做任何处理,点击系统“Back”键,整个浏览器会调用finish()而结束自身,如果希望浏览的网页回退而不是退出浏览器,需要在当前Activity中处理并消费掉该Back事件。

覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法。

public boolean onKeyDown(int keyCoder,KeyEvent event){

if(webView.canGoBack()&& keyCoder == KeyEvent.KEYCODE_BACK){

webview.goBack();//goBack()表示返回webView的上一页面

return true;

}

return false;

android实习总结 篇6

不全但是有一定的代表性

去的几家公司都是外包,项目紧急不会去看你项目上的那些小应用,能干活就行。

外包IBM:考得很基础,但是没真正的经验平时不会去记

1>dip设备独立像素

这个和设备硬件有关,一般为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素

480*320(160dpi):10*10dip = 10*10px 840*480(240dpi): 10*10dip = 15*15px Pixs = dips *(density / 160)2> WVGA、HVGA和QVGA 屏幕标准

3>屏幕适配.(实际项目中不会提供三套drawable图片资源)Android对于屏幕适配的解决方案分析 图片适配:9.png 其他适配: 1.Android将UI设计部分和代码逻辑部分分离开来,独立成一个XML文件,方便开发人员修改。

2.使用的长度单位是密度而不是像素。像素是自适应的大敌,固定了绝对坐标的像素值,就别想再好好安心地让它自个儿适应屏幕了。Android推荐使用dp作为长度单位。dp会根据手机的分辨率而自动调整大小。3.布局器功能强大。Android的布局器分为五种:LinearLayout,提供水平/垂直平铺的布局器;TableLayout,提供行和 列的的布局;FrameLayout,帧布局器,提供分层的布局;AbsoluteLayout,使用绝对坐标来定义控件的位 置;RelativeLayout,布局器中的控件用相对位置来布局。布局器的大小有自适应内容和与父控件相同两种。这些布局器完全可以承担起程序中基本 的布局要求。

4.Android中有一个密度的概念,表示每英寸有多少个显示点。当没有与手机分辨率相匹配的屏幕适配方案时,会根据手机的屏幕密度选取一个最接近的屏幕密度的适配方案,这样会让图片的失真达到最低。

5> Include使用与传参 组件复用

6>横屏竖屏切换处理

主要是切换时生命周期方法(结合你在项目中的应用)

7>应用程序放在真机什么目录下 以及常见的目录有哪些 系统应用程序 system/app 自己安装的应用 data/app

8> 你们项目需求怎么做的,请描述下

奥信面试:(主要是他们公司项目中的东西,演示功能问怎么实现)ImageView点击后更改背景色

Xml:selector + item

下载后回到刚刚的页面更新页面ListView对应Item的图标

1.startActivityForResult

2.下载完成发送广播

从网络上下载大图片

(可以作为项目难点陈述)ListView异步加载图片 +缓存()

Handler + 线程池 + 开启内存缓存(SoftReference)

Handler + 线程池 + 保存文件到SD卡上

书架的实现

平时多线程用到哪些(区分两种方法的特点)Handler

AsyncTask

Canvas画图用法

自定义控件使用(很经常问到)

Android应用程序生命周期(区分与Android组件的生命周期)被请求时实例化,系统内存不足被清理

Activity的启动模式

Standard singleTop singleTask singleInstance 网络7层模型 Tcp/ip(分别位于那一层)

应用层 表示层 会话层 传输层

网络层 数据链路层 物理层

常用设计模式(非重点 能答更好)简单工厂,抽象工厂方法,代理模式,…

华讯财经: 主要是简历上写的项目

由于项目都从头到尾敲的没啥好讲的属于闲聊吹牛的公司。

支付宝面试过程(电面主要问j2ee):

Activity中onCreate(),onStart()方法都会执行为什么不合并为一个方法

Activity的onCreate()中启动Service,那么onCreate()中的代码与Service中onStart()方法中的代码所在线程关系

耗时操作问题(主要考虑线程关系)

项目中的难点

完成!!

Android中MVC设计模式的理解

UI布局相关

android实习总结 篇7

一、环境工程生产实习的性质、目的

生产实习是环境工程专业教学计划中的重要组成部分, 它为实现专业培养目标起着重要作用, 也是为毕业后参加实际工作进行的一次预演。所谓生产实习是指高等学校和中等专业学校学生, 在生产现场以工人、技术员、管理员等身份, 直接参与生产过程, 使专业知识与生产实践相结合的教学形式[4]。在实习中应深入污染治理现场, 认真实习, 获取直接知识, 巩固所学理论, 完成实习指导人 (现场技术人员或班组长) 所布置的各项工作任务, 培养和锻炼独立分析问题和解决问题的能力, 为今后的课程设计和毕业设计积累必要的实际经验。

二、实习的组织形式

生产实习的组织形式通常有两种, 一种是分散实习, 由学生根据自己的兴趣和能力自行联系实习企业单独前往实习单位实习, 实习结束后凭借实习单位鉴定和实习报告取得成绩, 这种方式的缺点是容易流于形式, 学生联系的企业通常与专业相关度不高, 且容易造成放羊式管理, 不利于学生获得真实的工作体验和专业实践经验;另一种是集中实习, 由学校联系相关实习企业, 统一组织学生前往实习, 实习在相对固定的时间和环境内进行, 实习效果比较有保障。

此次生产实习采用集中实习的模式, 由系部组织实习队, 委派带队教师带领实习生在事先联系好的实习单位进行现场生产实习, 学生服从分配, 积极主动的到所派遣工作岗位进行实习, 到岗后要求学生尽快地了解所在实习岗位的组织结构及工艺情况, 主动找实习指导人联系, 服从指导人的安排, 认真工作。

三、实习基地情况

此次生产实习的基地为湖南某冶炼集团。该集团是大型冶炼企业同时也是污染治理的重点单位, 其污染防治设施基本涉及了环境工程中废气、废水、废渣治理的各个方面, 能够使环境工程专业学生比较系统全面地了解本专业生产应用的主要过程和方法。因此, 选择该集团作为本次生产实习的校外基地。

四、生产实习教学程序与成绩评定

1、在实习前, 系部负责对实习学生进行实习动员及安全教育。要求同学们自觉遵守法律、法规、厂纪厂规和学校的各项规章制度, 认真学习, 按社会主义的荣辱观的要求, 做一名遵纪守法的实习生。进入新环境, 要尽快适应新环境的安全要求和岗位工作要求, 自觉参加实习单位的各类培训。

2、学生到达施工实习单位后, 必须接受三级安全教育, 才能允许进入工作岗位。三级教育的三个级别分别是:公司级教育、分厂级安全教育、班组长及兼职安全员对实现学生进行上岗安全教育。

3、学生分批进入不同生产岗位开展实习, 撰写岗位实习日记, 并定期进行岗位轮换。

4、实习结束时学生应按实习大纲的要求, 根据实习日记中所积累的资料, 进行全面的分析和总结, 及时写出实习报告。

5、实习指导老师对实习报告进行批阅, 并由系部组织学生进行实习答辩。

实习指导教师依据现场实习指导人 (现场技术人员或班组长) 评语、实习日记、实习报告、实习出勤表和实习答辩情况, 确定最终实习成绩, 实习成绩按五级分评定 (优、良、中、及格、不及格) 。

五、实习效果分析及经验总结

实习期间实习工作队对学生实施严格的统一管理, 每周利用休息时间组织学生召开工作小结会议, 及时了解学生思想动态, 正确引导学生的实习态度, 调动学生的工作积极性。结合各个实习环节, 针对工厂的实际生产工艺, 组织带队教师和工厂工程师及技术员为学生讲课, 并对学生进行了现场考核, 使学生切实深入生产第一线, 真正了解本专业生产应用的各个方面, 使生产实习保质保量完成。要保证生产实习环节取得良好效果, 作者认为应做到以下几个方面:

l.严格挑选实习基地, 搭建稳定的实习平台

实习单位的选择和建设对生产实习质量的好坏有着绝对重要的影响。生产实习要了解和掌握专业内容、知识十分丰富, 因此, 实习单位的选择应该突出内容的全面性和工艺的先进性。根据环境工程专业特点, 生产实习一般安排在污染较严重的生产企业, 这样可以激励学生为环境污染治理而努力学习, 树立积极性。此外, 实习基地相对稳定, 并且和企业保持密切联系可以为学生最大限度地获取知识提供良好的基础, 为学生顺利完成本专业的生产实习创造良好条件。

2. 改革实习教学模式, 合理安排实习时间

应用型本科大学多为新升本科院校, 缺乏相应的积累和教学经验, 且没有太多成熟的模式可以借鉴, 在如何培养应用型人才的实践创新能力方面存在一些误区, 有些盲目的借鉴和照搬研究型、教学研究型或老本科院校模式, 有些还没有摆脱高职教育技术性、操作性的痕迹。针对这些问题我们改革了实习的教学模式, 把以往单纯车间实习模式及过程改变为有针对性的专题讲课与专题车间生产实习穿插进行、相结合的模式, 把缺乏理论基础的车间实习改变为理论与实际相结合的生产实习环节。在实习过程中, 与企业联合开展课程讲座, 邀请企业专家、工程师与老师、同学进行经验交流, 加强理论与实践的结合, 加深学生对生产工艺的理解。

以往研究性、教学型本科院校的生产实习只是作为实践教学的一个普通环节安排在三年级结束后或四年级开学初进行, 没有将专业课程与实践教学结合其来, 不重视知识体系的建立和积累, 且各学校实习时间相对集中, 企业容纳能力有限。针对这些问题, 我们根据实际情况对教学计划进行调整, 在二年级下学期和三年级上学期提前开设部分专业基础课和专业课, 为生产实习做好业务准备, 让环境工程专业的学生在修完环境工程的基本专业课程, 掌握基本的污染控制基本知识的基础上进行生产实习, 以保证实习效果。另外合理安排实习时间, 将生产实习安排在三年级上半学期相对靠前的4周时间, 从而错开生产实习高峰期。

3. 实习工作组结构合理, 委派骨干专业教师作为带队老师

系部领导对实习工作极为重视, 抽调各岗位精兵强将组成专门的实习工作组, 对实习地点、模式、计划、工作程序、带队老师等进行反复的调研、推敲和论证, 最终形成了安排合理、专业特色突出的生产实习实施方案, 保证了实习工作的顺利完成。

精心选择带队老师, 综合考虑年龄层次、专业结构、性别结构等多方面因素, 选派责任心强、专业能力突出、有实践教学经验的教师组成生产实习教师工作队带领学生深入实习现场。事实证明一支结构合理, 工作能力强, 责任心强的教师工作队是实习工作顺利进行并取得圆满成功的重要保证。

4. 实习动员充分, 准备周详

实习之前实习工作组进行了充分的动员工作和细致周详的准备。首先, 进行思想教育, 明确实习的目的和作用, 激发学生实习的积极性;其次, 组织学生在生产实习前利用图书馆、网络等资源, 查阅实习单位相关生产工艺的技术资料, 做好实习资料准备工作;第三, 指导教师事先根据任务布置实习思考题, 让学生带着问题去实习, 在实践中找到解决问题的方法, 从而触发学生实习的主动性和创造性, 增强实习效果;最后, 在动员会上强调实习的安全工作规范, 介绍实习中将涉及的专业课程内容、操作规程、实习纪律、实习报告的撰写方法、实习单位的产品工艺、企业文化和背景、企业对人才的需求等, 让学生尽快融入到生产实习的状态中去。

5. 实习期间随时关注学生思想动态, 解决相关问题

生产实习的时间较长, 实习期间学生离开了熟悉的校园环境其思想状态波动较大, 他们由刚开始的新奇、跃跃欲试到逐渐适应、习惯、融入工作状态有一个反复的过程, 其间可能遇到一些挫折, 例如与工人师傅交流不畅、现场工作条件恶劣、工作强度大等, 容易产生畏惧、逃避等心理, 影响实习的效果。针对这一情况, 实习带队老师经常组织学生召开小结和动员会, 深入学生寝室谈心, 及时了解学生思想动态, 正确引导学生的实习态度, 关心他们的疾苦, 解答学生在实习中遇到的各种问题, 教给他们与工人师傅打交道的一些基本技巧, 协助他们与厂方和工作班组更好地交流, 调动学生的工作积极性。使整个实习期间学生实习热情高涨, 勤学好问, 取得了良好的实习效果。

6. 严格实习过程管理, 加强实习现场考评

严格的实习过程管理是实习安全和实习效果的保证。由于带队教师人手少, 加强学生的自我管理很有必要。实习期间吸收部分能力突出的学生班干部参加带队教师工作会议, 加强师生沟通;将实习学生根据生产班组分成若干小组, 选择责任心强、有威信的学生担任组长, 充分发挥和调动学生的自我教育、自我管理和自我服务意识。

生产实习的考核是对学生实习效果的检验。考核形式从原来简单的检查实习报告改为实习答辩, 指导老师根据实习报告提出相应问题由学生解答, 考查学生对实习内容和相关工艺流程的掌握情况。另外带队教师跟随学生一起进入生产现场了解工艺过程, 协同工厂工程人员对学生进行了现场考核, 综合考虑学生的出勤情况、平时表现、实习笔记、实习报告等进行打分, 从而保证考核形式相对科学、全面。

六、结语

生产实习是应用型大学人才培养的关键教学环节, 本次实习工作我们通过严格挑选实习基地, 改革实习模式, 强化实习工作教师队伍, 引导学生自我管理, 改进考核模式, 达到了提高学生实践创新能力的目的。根据应用型本科大学的特点, 探索从生产实习的组织模式、教学过程、管理办法等方面全面改革, 有效地提高了生产实习的教学效果, 体现了应用型大学“培养具有现代工程技术能力和人文社科专业素养的、能务实、善创业的应用型高级专门人才”的人才培养目标, 突出了应用型大学“强能力、务实、自立”的特色, 展现了应用型大学生超强的实践动手能力和良好的精神风貌。

摘要:以某应用型本科高校环境工程专业学生的一次生产实习为研究对象, 从组织形式、教学过程、考核方式等方面全面探讨了应用型大学工科专业生产实习环节的改革与实践。

关键词:应用型大学,生产实习,教学改革与实践

参考文献

[1]邓晓荣.两岸应用型大学本科课程设置比较[J].上海第二工业大学学报.2010, 27 (1) :78-81

[2]王洪, 高林, 杨冰.应用型大学是高等教育大众化的必然结果[J].教育与职业.2006 (12) :5-7

[3]肖细元, 郭朝晖, 薛生国.环境工程专业生产实习的问题与探讨[J].教师.2009 (20) :48-49

android实习总结 篇8

六项突破令市场惊喜

新一代Android系统从整体来看,与以往相比有了很大的变化,尤其是界面风格更像是国内某厂商设计的新款UI。但不同的是,Android L并不是徒有其表,在性能上加入了名为Material Design的设计语言,实际功能就是支持新动画、3D视图和实时阴影等。此外,还增加了智能化认证、多任务增强、电池寿命增强等六项突破。

Android L的界面大量加入了“减法”元素设计,与目前Android 4.4 KitKat(奇巧)版本相比有了很大的变化。在这里需要提到的是,Android L的界面设计支持手机、平板、智能电视等全系搭载Android系统的智能设备,好处是不言而喻的,统一的设计风格可以大大降低学习成本,届时将会与iOS系统看齐,培养专属平台的使用习惯。

32个赞的续航提升

智能手机下一个革命性的改变会发生在哪里?除交互体验外,最令消费者期待的恐怕就是续航时间了。智能手机较短的续航时间甚至开辟了移动电源这一全新的产品领域,而在Android L系统中,电池寿命成为其革新的六大功能之一,其在实际使用中究竟能比Android 4.4提升多少呢?

在国外媒体使用Nexus 5作为标准设备的评测中,刷入Android L的Nexus 5坚持了471分钟,刷入Android 4.4的Nexus 5坚持了345分钟,Android L在节能上的提升表现颇为明显。

“Job Scheduler”是谷歌降低安卓耗电量项目中的一项新特性,其工作原理是重新调配第三方程序的唤醒流程来达到省电的目的。谷歌做过一个测试,测试结果表明安卓设备中的程序每被唤醒一次,其设备的储备电量就会被消耗两分钟,这是因为程序唤醒的并不仅仅是屏幕,还有SoC、传感器、网络连接等等。而“Job Scheduler”特性允许开发者能够预先设定好程序唤醒的“运行环境”(如屏幕打开,网络连接开启,并且SoC处在运行状态)。如果符合运行环境,即可唤醒;如果不满足,则等待下一个满足条件的运行环境。

官方也玩个性

android 数据库 总结 篇9

第一步:自己编写一个类 继承 SQLiteOpenHelper,如下

package com.example.wxj2048;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class Dbdao extends SQLiteOpenHelper{ private static final String DBNAME = “mldn.db”; private static final int DBVERSION = 1; private static final String TABNAME = “game2048”; public Dbdao(Context context){ super(context, DBNAME, null, DBVERSION); } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub String sql =“ CREATE TABLE ”+ TABNAME+“ (” + “ id INTEGER ,” + “ score INTEGER ”+ “) ”; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub String sql = “ DROP TABLE IF EXISTS ” + TABNAME; db.execSQL(sql); this.onCreate(db); } public void insert(Integer score){ SQLiteDatabase db = getWritableDatabase; ContentValues values = new ContentValues(); values.put(“id”, 1); values.put(“score”, score); db.insert(TABNAME, null, values); db.close(); } public void delete(){ SQLiteDatabase db = getWritableDatabase(); String[] data = new String[1]; data[0] = “1”; db.delete(TABNAME,“id = ?”,data); db.close(); } public Integer query(){ SQLiteDatabase db = getWritableDatabase(); Cursor c = db.query(TABNAME, null, null, null, null, null, null); c.moveToFirst(); int index = c.getColumnIndex(“score”); String result = c.getString(index); db.close(); return Integer.valueOf(result); }}

第二步;就可以创建 Dbdao 对象,然后使用数据库

我们总结一下 Cursor 的重要方法

close()

关闭游标,释放资源

getColumnCount()

返回所有列的总数

getColumnIndex(String columnName)

返回指定列的名称,如果不存在返回-1

getColumnName(int columnIndex)

从给定的索引返回列名

getColumnNames()

返回一个字符串数组的列名

getCount()

返回Cursor 中的行数

moveToFirst()

移动光标到第一行

moveToLast()

移动光标到最后一行

moveToNext()

移动光标到下一行

访问 Cursor 的下标获得其中的数据

int nameColumnIndex = cur.getColumnIndex(People.NAME);

android实习总结 篇10

前言

本文分五部分:Android电信业务系统、RIL、Telephony APP Framework、Phone APP、Android通话简单流程。

1、Android电信业务系统主要叙述Android整个电信业务系统的软件架构。

2、RIL主要叙述Android Radio Interface Layer相关要点,涉及的代码主要放在hardwareril目录下。

3、Telephony APP Framework主要简述电信业务系统Framework部分代码相关要点,涉及的代码主要放在frameworksbasetelephony目录下。

4、Phone APP主要叙述Android的电话业务模块,涉及的代码主要放在packagesappsPhone目录下。

5、Android通话简单流程主要叙述从上层Phone APP发起电话的函数调用流程。

一、Android电话业务系统

简单的说由三部分组成:Telephony Application(Java)+ Telephony Frameworks(Java)+ RIL(C/C++)

二、RIL RIL(Radio Interface Layer),是Android电信业务系统和底层硬件之间的抽象层,Android提供该层方便用户移植。手机每次请求相应的电信服务,如电话、短信、网络连接等,都是通过AT指令与底层硬件进行交互的,拿电话来讲,用户请求拨打电话,需要向RIL发送相关的请求,接着RIL按照用户的请求,调用相应的AT指令发送接口给底层发送AT指令,完成用户拨打电话的流程。简单的说,对RIL的移植,主要是针对不同的设备针对AT指令做相应的修改。

1、RIL移植层的三个组成部分

1)Vendor RIL 提供AT指令发送接口 2)RIL Daemon 加载RIL相关的库同时初始化RIL,注册RIL相关函数接口。同时,RILD也是上层和底层RIL的调用中转站。3)RIL JNI Layer RIL JNI接口,提供上层Telephony APP Framework调用

2、RIL的初始化流程

加载ril.lib  RIL_Init() RIL_register(),详细可见ridl.c中的main()函数。

3、RIL接口的调用方式

有两种方式:主动请求(Solicited)和被动请求(Unsolicited)1)主动请求

2)被动请求

void(*OnUnsolicitedResponse)(int unsolResponse, const void *data,size_t datalen);

4、涉及的主要源代码文件

1)reference-ril.c  本文件涉及的重要内部函数及功能 requestRadioPower

开启通讯模块 requestQueryNetworkSelectionMode 查询网络模式 requestGetCurrentCalls

获取当前通话 requestDial

请求呼叫 requestWriteSmsToSim

写入短信至SIM卡 requestHangup

挂断电话 requestSignalStrength

获取信号强度 requestRegistrationState

获取卡注册状态 requestOperator

获取运营商名称 requestSendSMS

请求发送短信 requestSetupDataCall

拨号上网 requestSMSAcknowledge

短信回报

requestEnterSimPin

请求输入SIM PIN码 requestSendUSSD

请求USSD业务  本文件提供给ril.cpp调用的外部接口 RIL_Init

RIL初始化 onRequest

AT请求指令接口(异步方式)

getVersion

获取RIL版本号,当前为“android reference-ril 1.0” onUnsolicited

AT请求指令接口(同步方式)

2)ril.cpp 该文件主要提供ril.java调用接口,实现RIL的JNI调用方式、RIL Event管理机制  实现了供上层调用的接口 typedef struct {

int requestNumber;

void(*dispatchFunction)(Parcel &p, struct RequestInfo *pRI);

int(*responseFunction)(Parcel &p, void *response, size_t responselen);} CommandInfo;具体执行的操作可以看头文件ril_commands.h 举一个例子:

拨打电话,对应的requestNumber为RIL_REQUEST_DIAL,对应的dispatchFunction为dispatchDial,对应的responseFunction为responseFunction。 RIL Event管理

与ril_event.cpp的Event接口配合实现RIL Event管理 RIL_startEventLoop rilEventAddWakeup eventLoop ril_event_init ril_event_set ril_event_add ril_event_del 4)rild.c rild的主要初始化工作都在main函数中进行。

5、RIL JNI上层对外接口

SetOnNITZTime

getIccCardStatus

supplyIccPin

supplyIccPuk

supplyIccPin2

supplyIccPuk2

changeIccPin

changeIccPin2

getCurrentCalls

getPDPContextList dial

getIMSI

getIMEI

getIMEISV

hangupConnection

acceptCall

rejectCall

getLastCallFailCause getLastPdpFailCause getLastDataCallFailCause setMute

getMute

getSignalStrength

getRegistrationState getGPRSRegistrationState getOperator

设置网络身份和时区 获取SIM卡状态 输入PIN码 输入PUK码 输入PIN2码 输入PUK2码 修改PIN码 修改PIN2码 获取当前通话 获取PDP列表 拨号

获取IMSI 获取IMEI 获取IMEISV 挂断电话 接听电话 电话拒接

获取Call失败错误码 获取PDP失败错误码 获取拨号连接失败错误码

设置手机静音模式(静音/非静音)获取手机静音模式(静音/非静音)获取信号强度 获取卡注册状态 获取GPRS注册状态 获取运营商 sendDtmf

startDtmf stopDtmf sendSMS deleteSmsOnSim writeSmsToSim

发送DTMF Start DTMF Stop DTMF 发送短信

删除SIM卡短信 保存短信至SIM卡

6、RIL机制

RIL类有三个内部类:RILRequest、RILSender、RILReceiver,这三个内部类共同实现上层的电信业务操作请求。

RILRequest,电信服务请求,上层应用通过该类与RIL JNI层进行消息的交互,同时RIL JNI层也通过该类与RIL底层进行消息的交互; RILSender,实现上层请求的命令发送 RILReceiver,负责接收底层的Response  以下是dial的RIL调用序列 上层调用dial 设置Request请求并发送至RILSender消息处理队列

RILRequest rr = RILRequest.obtain(RIL_REQUEST_DIAL, result);…

send(rr); RILSender消息处理队列消息队列收到EVENT_SEND后往mSocket里边填写相应请求 RILD从mSocket中读取相应的请求为RIL_REQUEST_DIAL,并设置相应的event 执行dispatchDial  onRequest  requestDial发送AT指令

底层给予responseVoid的响应

RILD向mSocket填写相应的响应信息,并往RILReceiver消息队列发送  processResponse processSolicited responseVoid(JNI)

三、Telephony APP Framework概述

电信业务Framework涉及Call、SMS、SIM卡、PDP等,代码分为两个部分,一个是SDK API,一个是平台内部类,不对外开放。这部分简单的说,就是上层电信业务与底层RIL的中间层。

1、Internal Class 1)ADN(Abbreviated Dialing Numbers,缩位拨号)相关的类 AdnRecord AdnRecordCache AdnRecordLoader 2)Call相关的类

Call:基类,GsmCall和CdmaCall都由该基类扩展实现 CdmaCal GsmCall

CallTracker:基类,GsmCallTracker和CdmaCallTracker都由这个基类进行扩展实现 GsmCallTracker: CdmaCallTracker PhoneBase:基类,CDMAPhone和GSMPhone都由这个基类扩展实现 CDMAPhone GSMPhone Phone:电话操作的一些接口 CallerInfo CallerInfoAsyncQuery CallForwardInfo:呼叫转移

CallFailCause:GSM Call失败错误码 CallFailCause:CDMA Call失败错误码 3)数据连接相关类

DataConnection:基类,GsmDataConnection和CdmaDataConnection都基于该类扩展实现 GsmDataConnection CdmaDataConnection DataConnectionTracker:基类,CdmaDataConnectionTracker和GsmDataConnectionTracker都基于该类进行扩展实现 CdmaDataConnectionTracker GsmDataConnectionTracker 4)SIM卡相关类

IccCard:基类,RuimCard和SimCard都由该类进行扩展实现 RuimCard SimCard IccRecords:基类,RuimRecords和SIMRecords都基于该类进行扩展实现 RuimRecords SIMRecords IccProvider IccUtils 5)SMS相关类

SMSDispatcher:实现发送短信

SmsMessageBase:基类,SmsMessage由该类扩展实现 SmsMessage:短信PDU包解析

2、SDK API Class 实现SDK API接口,具体架构见SDK API文档

四、Phone APP Android自带一个Phone App,实现了GSM/CDMA的通话功能,这部分代码放在packagesappsPhone目录下。

Phone APP开机就运行了,可以从AndroidManifest.xml设置的应用权限看出来

。开机做如下初始化工作:

A、初始化Telephony Framework B、Power、Ringer、Keyboard、状态栏、SIM卡的注册工作 C、CallNotifier、PhoneUtils初始化工作 具体可以参见onCreate Phone APP有如下几个重要的类

 PhoneApp requestWakeState:判断手机是否可休眠 wakeUpScreen:唤醒手机

PhoneAppBroadcastReceiver:内部类,可以实时监测手机的状态,飞行模式、蓝牙耳机等。 PhoneUtils 电话基本组件接口,实现电话的一些基本操作,如Dial、Answer、Hangup、Hold等 placeCall:电话呼出 Hangup:挂断电话 answerCall:接听电话

setMute/ setMuteInternal:静音 turnOnSpeaker:免提

showIncomingCallUi:显示来电界面  InCallScreen 该类实现通话界面流程,主要如下:

case R.id.menuAnswerAndHold,保持当前通话并接听: internalAnswerCall  PhoneUtils.answerCall(mPhone)case R.id.menuAnswerAndEnd,结束当前通话并接听:

internalAnswerAndEnd  PhoneUtils.answerAndEndActive(mPhone)case R.id.menuAnswer,接听:

internalAnswerCall  PhoneUtils.answerCall(mPhone)case R.id.menuIgnore,忽略:

internalHangupRingingCall  PhoneUtils.hangupRingingCall(mPhone)case R.id.menuSwapCalls,切换通话:

internalSwapCalls  PhoneUtils.switchHoldingAndActive(mPhone)case R.id.menuMergeCalls,合并通话: PhoneUtils.mergeCalls(mPhone)case R.id.menuManageConference,管理电话会议:

setInCallScreenMode(InCallScreenMode.MANAGE_CONFERENCE)case R.id.menuShowDialpad,显示拨号键盘: onShowHideDialpad  mDialer.openDialer(true)case R.id.menuSpeaker,免提:

onSpeakerClick  PhoneUtils.turnOnSpeaker case R.id.menuBluetooth,蓝牙: onBluetoothClick case R.id.menuMute,静音:

onMuteClick  PhoneUtils.setMute case R.id.menuHold,通话保持: onHoldClick case R.id.menuAddCall,添加通话: PhoneUtils.startNewCall(mPhone)case R.id.menuEndCall,结束通话: internalHangup  PhoneUtils.hangup(mPhone) DTMFTwelveKeyDialer 该类实现DTMF processDtmf:发送DTMF clearDigits:清除DTMF键码 startDtmfTone:播放DTMF Tone stopDtmfTone:停止播放DTMF Tone  CallNotifier 继承于Handler,用来实时监测通话状态并通知Phone Application,如PHONE_NEW_RINGING_CONNECTION(来电),PHONE_INCOMING_RING(来电响铃),PHONE_DISCONNECT(通话挂断),PHONE_BATTERY_LOW(电池电量低),具体相对应的处理可参见handleMessage  CallFeaturesSetting 实现通话设置,此外该类包含一个内部类VoiceMailProviderSettings用来实现语音信箱的设置

 CallCard/ InCallTouchUi 这两个类都是继承于FrameLayout,Phone用来实现通话自身的布局需求。

updatePhotoForCallState:更新替代图片(如果通话号码有设置特定代替图片的)updateDisplayForConference:通话UI更新(用于电话会议)updateDisplayForPerson:通话UI更新

getCallFailedString:获取通话失败错误字符串 displayOnHoldCallStatus:显示通话保持UI displayMainCallStatus:更新通话UI updateState:更新通话状态(供外部类调用) BluetoothHandsfree/BluetoothHeadsetService 实现通话蓝牙耳机功能,其实现核心是BluetoothHeadsetService,在PhoneApp 创建的时候会启动它。BluetoothHeadsetService 通过接收底层蓝牙服务的状态消息来改变自身状态,同时它也会监听通话的状态变化。onBluetoothEnabled:开启蓝牙设备 onBluetoothDisabled:关闭蓝牙设备 connectHeadset:连接蓝牙设备 audioOn:开启audio audioOff:关闭audio redial:通过蓝牙设备重播电话 updateBatteryState:更新电池强度 updateSignalState:更新信号强度

五、Android通话简单流程

1、拨打流程(以电话本入口为例)

进入电话本,以某个联系人发起呼叫,此时进入TwelveKeyDialer类的onClick函数case R.id.dialButton分支,启动OutgoingCallBroadcaster Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//以新的TASK启动 OutgoingCallBroadcaster发出Broadcast Announcement sendOrderedBroadcast(broadcastIntent, PERMISSION,new OutgoingCallReceiver(), null, Activity.RESULT_OK, number, null);收到Broadcast后,进入OutgoingCallReceiver中的doReceive启动InCallScreen 进入internalResolveIntent mInCallInitialStatus = internalResolveIntent(getIntent());placeCall PhoneUtils.placeCallVia/ PhoneUtils.placeCall  Connection cn = phone.dial(number);Phone是Interface,所属的dial接口是在PhoneBase的子类GSMPhone中实现 进入GsmCallTracker类中的dial函数 mCT.dial(newDialString);调用CommandsInterface的dial接口

cm.dial(pendingMO.address, clirMode, obtainCompleteMessage());CommandsInterface的dial接口是在RIL.java中实现的 调用JNI接口dial ……后续就是RIL JNI与libril的交互过程,见RIL机制

2、来电流程

CallNotifier的消息处理队列会收到PHONE_NEW_RINGING_CONNECTION onNewRingingConnection响铃或震动(来电自动接听也在里边处理)显示来电界面InCallScreen PhoneUtils.showIncomingCallUi();

3、来电处理

 接听

internalAnswerCall

PhoneUtils.answerCall(mPhone)

关闭来电铃声等,进入接听流程phone.acceptCall()调用GsmCallTracker的acceptCall mCT.acceptCall();调用CommandsInterface acceptCall 接口 cm.acceptCall(obtainCompleteMessage())

调用RIL JNI接口acceptCall向底层发送请求

……后续就是RIL JNI与libril的交互过程,见RIL机制  挂断

 internalHangup  PhoneUtils.hangup(mPhone) 调用GsmCallTracker的handup 调用CommandsInterface hangupConnection接口

cm.hangupConnection(conn.getGSMIndex(), obtainCompleteMessage());调用RIL JNI接口hangupConnection向底层发送挂断请求 ……后续就是RIL JNI与libril的交互过程,见RIL机制  通话保持恢复

PhoneUtils.switchHoldingAndActive(mPhone) 添加一个新通话,实现多方通话 PhoneUtils.startNewCall(mPhone)

Android_Phone源代码来电流程解读

***************************CallNotifier***************************

本类extends Handler并且implements CallerInfoAsyncQuery.OnQueryCompleteListener

电话状态改变之后本类会接到Message,然后本Handler通过Message的不同,进入不同的case:

然后调用不同的方法处理各种状态改变。

同时实现了OnQueryCompleteListener接口,当来电的时候会帮助执行查询操作,比如查询并调用

Ringer设置响铃方式。

当来电时,本类会接受到一个PHONE_NEW_RINGING_CONNECTION(Message.what),然后调用对应的方法

onNewRingingConnection(),该方法又会调用startIncomingCallQuery()方法,该方法就查询用户

设置的铃声(可能是系统的,也可能是用户自定义的),如果查询完成则直接调用onQueryComplete().假如执行超时的话,将会发送一个延时Message,延时后将默认调用系统的铃声。

假如在延时发送Message过程中Query已经完成,由于CallNotifier实现了OnQueryCopleteListener,就会自动调用onQueryComplete()方法,该方法将会首先把可能存在的延时Message给Remove,以防止

再次设置铃声。接着调用onCustomRingQueryComplete()方法。然后该方法里面会调用Ringer的ring()

方法启动响铃。

********************************Ringer*************************** Ringer的ring()方法会启动相应的响铃方式。

响铃之后将会又Message发送,其内容为PHONE_STATE_CHANGED

*******************************InCallScreen**********************

InCallScreen将会接受到发送的PHONE_STATE_CHANGED消息,然后调用onPhoneStateChanged()方法

该方法将更新屏幕,CallNotifier的onCustomRingQueryComplete里也会通过PhoneUtils.showIncomingCallUi()

来启动InCallScreen屏幕。然后由InCallScreen处理,处理方式与前面打电话的大体一致,不过该类第一次调用时执行了

上一篇:迁户委托书下一篇:课堂教学的趣味性从哪里来