原创
2016-11-15
逆流的鱼yuiop
何俊林
何俊林
何俊林
微信号 DriodDeveloper
功能介绍 个人原创 android 技术干货,问题深度总结,FrameWork源码解析,插件化研究,最新开源项目推荐
彩蛋来了,这是两位朋友公司的招聘,腾讯Qzone的MagiLu,步步高张总(张明云),玩知乎对两位肯定不会陌生,两位都是知乎下优秀回答者,有想去深圳和东莞工作的筒子们,机会来了,和大牛面试沟通,肯定会有收获,下面是具体要求,(PS:不要被招聘信息的某些要求吓到了,招聘要求,一般是期待的,你懂的,工作就是主要看眼缘,大家都聊得来,恭喜你,肯定有戏!)
腾讯Qzone团队招聘Android工程师
1. Android开发工程师(深圳):
工作职责:
负责手机Qzone android终端应用的架构设计;
负责手机Qzone android版本现有功能的维护及新功能模块的开发;
负责定位并解决现有模块存在的问题;
负责承担版本的系统设计、性能及内存调优工作。
基本要求:
本科及以上学历,计算机或相关专业;
2年以上相关工作经验;
熟悉android手机平台开发,有1年以上的应用程序开发经验;
精通C/C++、JAVA或Objective C;
基础扎实,精通常用数据结构与算法;
熟悉TCP/IP协议和网络编程相关知识者优先。
岗位投递:
如果您对上述岗位有兴趣,可以私信我,一定第一时间给您答复。
可发送简历至:magilu325@gmail.com
关于Qzone :
Qzone 是中国最大的社交网络,是腾讯集团的核心平台之一,目前Qzone的月活跃账户数达到6.68亿,Qzone智能终端月活跃账户数达到5.68亿。从2005年至今,Qzone见证了国内互联网的蓬勃发展,期间行业风云变幻,但我们的业务仍不断向前发展。希望更多的朋友能够加入我们,因为我们希望:
让你的梦想,与亿万用户相连
步步高教育电子社招Android应用开发工程师
需要找工作的小伙伴们看过来,只要你足够优秀,下面的要求都可以对你不做要求。
简历投递地址:zmywly8866@gmail.com,投递格式如下:
标题:应聘Android应用开发工程师+姓名+工作年限+联系方式,比如“应聘Android应用开发工程师+张明云+5年+138**”;
邮件内容:简历的附件。
一、招聘信息:
招聘岗位:
Android应用开发工程师
岗位职责:
负责Android平台应用软件的研发、测试、维护。
基于需求完成软件设计文档。
岗位要求:
具备扎实的Java编程基础,良好的编程习惯。
熟悉Android开发平台的框架原理和Android SDK及底层API调用,熟悉主流开源项目的原理和使用方法。
熟练掌握Android的基本类库、界面设计、数据存储等基础知识,以及主流设备的适配。
对终端产品的UI/UE有独到的见解与认识,追求良好的用户体验。
有独立开发过Android APP的优先考虑。
积极、沟通顺畅、对新技术感兴趣。
对应用开发有追求,注重细节和体验,有志于开发优秀用户体验的产品。
二、其它信息:
1、关于公司:
2、关于产品:
3、工作地点:
广东 东莞 长安镇
4、简历投递邮箱:
zmywly8866@gmail.com,投递格式如下:
标题:应聘Android应用开发工程师+姓名+工作年限+联系方式,比如“应聘Android应用开发工程师+张明云+5年+138**”;
邮件内容:简历附件。
5、工作体验:
6、其它:
招聘人数不限;
招聘截止时间11月30日;
工作年限没有限制,只看实力;
有意愿从事Android开发相关岗位都可以投递,投递时注明求职意向;
关于职业发展:只要你足够优秀,你可以在公司进一步从事系统应用开发、SystemUI、FrameWork层的开发。
好,正文开始,Camera2框架,是对Camera更灵活,在很多命名上,Google都用Camera2,如Camera2Client,说明,这是一次大的改动。否则可以在原来CameraClient上改动。
Agenda:
getSystemService(Context.CAMERA_SERVICE)
CameraManager.getCameraIdList()
ICameraService.aidl
ICameraService.cpp
camera2中从Java层到C++层,以获取摄像头数目为例。
1.当我们获取摄像头时,会调用 CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE); 而在最早的Camera类中,是通过openCamera,传到jni中android_hardware_Camera.cpp的openCamera,再向下到达Camera.cpp中,而在Camera2中,换了一种形式,通过getSystemService方法,根据传入的NAME来取得对应的Object,然后转换成相应的服务对象。这里传入的是Context.CAMERA_SERVICE
Android的后台运行在很多service,它们在系统启动时被SystemServer开启,支持系统的正常工作,相应的名字会注册到SystemServer中,当外部须要用到这些服务时,就会通过getSystemService(xxx.name)获取对应的服务。
传入的Name | 返回的对象 | 说明 |
---|---|---|
WINDOW_SERVICE | WindowManager | 管理打开的窗口程序 |
LAYOUT_INFLATER_SERVICE | LayoutInflater | 取得xml里定义的view |
ACTIVITY_SERVICE | ActivityManager | 管理应用程序的系统状态 |
POWER_SERVICE | PowerManger | 电源的服务 |
ALARM_SERVICE | AlarmManager | 闹钟的服务 |
NOTIFICATION_SERVICE | NotificationManager | 状态栏的服务 |
KEYGUARD_SERVICE | KeyguardManager | 键盘锁的服务 |
LOCATION_SERVICE | LocationManager | 位置的服务,如GPS |
SEARCH_SERVICE | SearchManager | 搜索的服务 |
VEBRATOR_SERVICE | Vebrator | 手机震动的服务 |
CONNECTIVITY_SERVICE | Connectivity | 网络连接的服务 |
WIFI_SERVICE | WifiManager | Wi-Fi服务 |
TELEPHONY_SERVICE | TeleponyManager | 电话服务 |
当通过getSystemService(Context.CAMERA_SERVICE)获取到CameraManager后,通过调用anager.getCameraIdList()方法,获取到可用的摄像头列表。
再看下getOrCreateDeviceIdListLocked方法,返加的是list
看下CameraManagerGlobal.get().getCameraService()方法,
下面开始连接Camera相关服务
以上代码总结为当把mCameraService返回到getCameraService,这样就建立了C/S模型,Service是实际背后操作者,他们通信就是binder,这样整个过程就清楚了。
接下来看下这个ICameraService.aidl,位于frameworks\base\core\java\android\hardware下
以上就有一个getNumberOfCameras,获取对应的摄像头是多少个。通过onTransact,最后来到ICameraService.cpp中,位于\frameworks\av\camera包下
这样一个从java到c++层过程就完成了,后面的过程就是c++中进行。后面继续分析。
第一时间获得博客更新提醒,以及更多android干货,源码分析,欢迎关注我的微信公众号,扫一扫下方二维码或者长按识别二维码,即可关注。
阅读