android架构

android SD卡自动挂载

跟風遠走 提交于 2020-01-16 20:34:54
http://www.cnblogs.com/jqyp/archive/2012/01/02/2310077.html SD card porting 一、进程启动和配置文件的分析 vold的全称是volume daemon。实际上是负责完成系统的CDROM, USB大容量存储,MMC卡等扩展存储的 挂载任务自动完成的守护进程。它提供的主要特点是支持这些存储外设的热插拔。在Android上的这个 vold系统和GNU/Linux的之间存在很大的差异,这里主要是分析Android上的vold系统的处理过程。 自Android 2.2开始,vold又做了大改动,升级为vold 2.0,之前的配置文件是 system/etc/vold.conf,vold 2.0变为system/etc/vold.fstab。 1、启动vold 在init.rc中启动VOLD这个守护线程和创建socket的命令如下: ? service vold /system/bin/vold socket vold stream 0660 root mount ioprio be 2  2、配置vold.fstab vold.fstab文件的格式是: ? Format: dev_mount <label> <mount_point> <part> <sysfs_path1...> label: -Label for

高通camera结构(摄像头基础介绍)

本秂侑毒 提交于 2020-01-16 13:50:48
摄像头基础介绍 一、摄像头结构和工作原理. 拍摄景物通过镜头,将生成的光学图像投射到传感器上,然后光学图像被转换成电信号,电信号再经过模数转换变为数字信号,数字信号经过DSP加工处理,再被送到电脑中进行处理,最终转换成手机屏幕上能够看到的图像。 数字信号处理芯片DSP(DIGITAL SIGNAL PROCESSING)功能:主要是通过一系列复杂的数学算法运算,对数字图像信号参数进行优化处理,并把处理后的信号通过USB等接口传到PC等设备。DSP结构框架:   1. ISP(image signal processor)(镜像信号处理器)   2. JPEG encoder(JPEG图像解码器)   3. USB device controller(USB设备控制器) 常见的摄像头传感器类型主要有两种, 一种是CCD传感器 (Chagre Couled Device),即电荷耦合器 。 一种是CMOS传感器 (Complementary Metal-Oxide Semiconductor)即互补性金属氧化物半导体 。 CCD的优势在于成像质量好,但是制造工艺复杂,成本高昂,且耗电高。在相同分辨率下,CMOS价格比CCD便宜,但图像质量相比CCD来说要低一些。CMOS影像传感器相对CCD具有耗电低的优势,加上随着工艺技术的进步,CMOS的画质水平也不断地在提高

Android动态加载代码技术

末鹿安然 提交于 2020-01-16 02:32:07
在开发Android App的过程当中,可能希望实现插件式软件架构,将一部分代码以另外一个APK的形式单独发布,而在主程序中加载并执行这个APK中的代码。 实现这个任务的一般方法是: // 加载类cls Context pluginContext = mainContext.createPackageContext(PLUGIN_PKG, Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE); ClassLoader loader = pluginContext.getClassLoader(); Class<?> cls = loader.loadClass(CLASS_NAME); // 通过反射技术,调用cls中的方法,下面是一个示例,实际代码因情况而定 Object obj = cls.newInstance(); Method method = cls.getDeclaredMethod("someMethod"); method.invoke(obj); 但是,这个方法在Android 4.1及之后的系统中存在一些问题:对于收费应用,Google Play会将其安装在一个加密目录之下(具体就是/data/app-asec),而不是一个普通目录之下(具体就是/data/app)

Android类动态加载技术

[亡魂溺海] 提交于 2020-01-15 06:37:23
帮助我们实现插件接口,主要是评论部分. 建立插件工程,导入插件接口.jar,需要选择user library并且勾选下面的system library,这样打出的apk是不包含插件接口的. 为了访问因此成员,需要改变类搜索顺序,选择项目属性->Java Build Path->Order and Export,把所建立的User Libraries移到Android SDK的上面 转自: http://www.blogjava.net/zh-weir/archive/2011/10/29/362294.html Android 类动态加载技术 Android 应用开发在一般情况下,常规的开发方式和代码架构就能满足我们的普通需求。但是有些特殊问题,常常引发我们进一步的沉思。我们从沉思中产生顿悟,从而产生新的技术形式。 如何开发一个可以自定义控件的 Android 应用?就像 eclipse 一样,可以动态加载插件;如何让 Android 应用执行服务器上的不可预知的代码?如何对 Android 应用加密,而只在执行时自解密,从而防止被破解?…… 熟悉 Java 技术的朋友,可能意识到,我们需要使用类加载器灵活的加载执行的类。这在 Java 里已经算是一项比较成熟的技术了,但是在 Android 中,我们大多数人都还非常陌生。 类加载机制 Dalvik 虚拟机如同其他 Java

安居客Android项目架构演进

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-15 05:10:38
本文已授权微信公众号 AndroidDeveloper 独家发布。 入职安居客三年从工程师到Team Leader,见证了Android团队一路走来的发展历程。因此有心将这些记录下来与大家分享,也算是对自己三年来一部分工作的总结。希望对大家有所帮助,更希望能得到大家宝贵的建议。 一、三网合并 三年前入职时安居客在业务上刚完成了三网合并(新房、二手房、好租和商业地产多个平台多个网站合成现在的anjuke.com,这在公司的历史上称之为三网合并),因此app端也将原先的新房、二手房、好租和商业地产多个app合并成为了现在的安居客app。所谓的合并也差不多就是将多个项目的代码拷贝到了一起组成了新的Anjuke Project。下面这张图能更加直观的呈现当时的状况。 这一时期代码结构混乱、层次不清,各业务技术方案不统一,冗余代码充斥项目的各个角落;甚至连基本的包结构也是胡乱不堪,项目架构更是无从谈起。大家只不过是不停地往上堆砌代码添加新功能罢了。于是我进入公司的第一件事就是向Leader申请梳理了整个项目的结构。 而后随着项目的迭代,我们不断引入了Retrofit、UniversalImageLoader、OKHttp、ButterKnife等一系列成熟的开源库,同时我们也开发了自己的UI组件库UIComponent、基础工具库CommonUtils、基于第三方地图封装的MapSDK

年后面临跳槽or春招?来看看Android高级工程师在杭州找工作的点点滴滴

情到浓时终转凉″ 提交于 2020-01-14 05:12:32
前言 今天讲讲我之前在杭州面试的经历,给大家年后跳槽和应届生的春招一个参考,带来一点帮助。 我从 14 年毕业到现在一直待一个三线城市,就用 C 市 代替吧。地方很小,适合居住,但不适合 it 开发,城市很小、圈子很小,it 不发达,想要在 it 上面有出路的还是得去北上广深大城市。我在这个城市呆了三年左右由于自己的一些私事所以趁机就出来想找个大城市呆呆,原本打算去其他城市的,后来稀里糊涂的来到了杭州,在朋友这呆了半个月,直到找到工作。我是 17 年 3 月 25 号就辞职了,递交了辞职申请之后然后就跑去云南玩了一圈之后才想到要找工作的,然后就来杭州了,以上就是大概背景,接下来就写写关于在杭州找一份关于 Android 开发的工作中所遇到的人和事,不看不知道,原来世界真的很大各种人都有,果真印证了一句话: 林子大了,什么鸟都有 。 简历 面试之前,当然得准备一份简历啦,我的简历是当年刚毕业的时候写的一份简历,这里面用到的模板是 乔布简历 http://cv.qiaobutang.com/ 里面的简历模板不错(哈哈,这不是给它打广告的,我一直用这个,感觉不错就推荐了)。 简历模板找到了,下面就是内容了,俗话说,要想找到好工作,一个好的简历必不可少的。 因为公司越大的话,投递的人肯定越多,HR 筛选的时间就少了,所以简历有亮点就能打动HR,这样才能有面试资格

Android实战简单新闻客户端(1)---主界面设计

微笑、不失礼 提交于 2020-01-12 16:23:50
模仿实例地址: SimpleNews 前言这是github开源项目,原项目有四个模块。我这里之模仿其中 一个(新闻)。学会MD开发和MVP架构。 主页布局: 这里主要使用了toolbar和DrawerLayout实现导航条以及侧滑的效果。 当然为了填充侧滑栏,又使用了NavigationView这个控件。 toolbar和DrawerLayout 我已经在前面的博客文章介绍过了: android–UI—侧滑drawerLayout android–UI–导航条toolbar NavigationView实践 使用ToolBar代替ActionBar的时候,首先去掉Actionbar 修该主题: <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> 为了使用NavigationView

Android的架构主体演变

一世执手 提交于 2020-01-12 15:20:01
Android的架构主体演变 在过去Android一直在MVC、MVP中探索。在2019基本没有谁再去纠结这两个架构了,因为Android的Jetpack提供了MVVM架构,说到MVVM架构我第一时间想到刚刚毕业的时候,在WPF的window开发中使用到MVVM的数据绑定。如果你是一个初学者我的建议是直接忽略MVP架构,直接入门MVC,开发MVVM。 最佳架构 对于MVVM,google提供了Jetpack组件。成为Android最佳架构实践。可以通过以下网址学习和探索:https://developer.android.com/jetpack 。Jetpack组件已经植入了Android的SDK,从这一点可以看出最佳架构不是徒有空名的,那些还在观念意识上不接受的就快点转换思维吧。 学习Jetpack中的设计思想 公司的主体Android架构已经切换到了MVVM结构了,而且App运行良好,优势也渐渐凸显。在这里我和大家分享一下我眼中的Jetpack组件值得学习的切入点主要有两点:构建对象管理器、数据绑定。 构建对象管理器 对于对象的生成和销毁的管理一直以来都是各大架构的一个主题功能。归根结底就是一个工厂模式,在Jetpack中我们也看到这个设计模式的应用,在ViewModelProviders和RepositoryProviders。先不看这个两个类的实现

WebRTC Android 编译

笑着哭i 提交于 2020-01-12 05:32:13
一 、前言 WebRTC 名称源自网页即时通信(英语:Web Real-Time Communication)的缩写。谷歌收购并开源支持 网页浏览器 进行实时语音对话或视频对话的 API 。它于2011年6月1日开源并在 Google 、 Mozilla 、 Opera 支持下被纳入 万维网联盟 的W3C推荐标准。 如果不修改 webrtc 相关源码,建议不要去折腾编译这个源码工程,光下载源码就够你头疼的。 可以直接引用已经编译好的中央库(Maven或者Gradle): 官方推荐: compile 'org.webrtc:google-webrtc:1.0.+' (+ 换成对应版本号,一定要去上面网址里面查询是否存在该版本,版本号查询地址: https://bintray.com/google/webrtc/google-webrtc ) 官网地址 : https://webrtc.org 。 二、环境准备 1、WebRTC 编译暂时支持 linux 平台,所以需要有一个 linux 系统或模拟器 2、设置代理,这一步不做过多介绍,需要注意的是需要在终端设置代理,这一步也是比较坑的一步,大家可以搜一下怎么设置 3、下载 depot_tools:git clone https://chromium.googlesource.com/chromium/tools/depot_tools

Android JNI(一)——NDK与JNI基础

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-11 06:54:02
前言 ndk开发是高级Android 开发必备的技能,也是很多Android开发工程师难以逾越的门槛,因此,学习ndk开发已经是高级Android必备技能,所以我尝试把自己ndk开发经验记录下来,不知之处,请大家多做指教。 导读 在Android OS上开发应用程序,Google提供了两种开发包:SDK和NDK。大家都知道SDK是基于Java开发的,ndk则是基于C/C++。不过,Android 平台从一开就已经支持了C/C++了。Google从一开始就说明Android也支持JNI编程方式,也就是第三方应用完成可以通过JNI调用自己的C动态度。于是NDK就应运而生了。 你可以从Google官方查阅到有许多关于SDK的优秀书籍、文章作为参考,但是Google提供的NDK资源,相对于SDK还是比较少的。本系列文章主要是用于,自己记录自学NDK的经验,并且希望能够帮助到哪些想学习NDK的朋友。 好了,下面我们一步一步的认识SDK吧。 了解什么是ndk 为什么使用NDK NDK到SO JNI的调用 什么是NDK NDK 其中NDK的全拼是:Native Develop Kit。我们可以去官网查看 Android NDK 具体的介绍,大致意思如下图: 英文意思如下: The Android NDK is a toolset that lets you implement parts of