Android玩乐系列:修改汇编代码支持原生高清来电大头贴(一)

本文探讨了Android系统中实现全屏来电大头贴的三种方法:第三方软件覆盖、集成于ROM的拨号面板及原生支持。分析了各方案优缺点,并介绍了联系人头像管理软件HDContactPhotos。

本文分三篇。本篇重在介绍“全屏来电大头贴”的问题,想直接切入技术细节的请径直前往篇二:

http://blog.csdn.net/aimingoo/article/details/7939116



1、Android手机中的来电大头贴

=======
来电大头贴其实包括来电去电两种状态,只是通常都称作“来电大头贴”。这个功能有三种实现方法,包括:
 - A:使用第三方的软件,在来去电时显示出大头贴遮盖在原生的拔号面板上面;
 - B:少数开发商提供的ROM中,集成了带大头贴功能的拔号面板软件;
 - C:在现有的ROM的拔号面板中,原生支持大头贴功能。


首先谈谈为什么大头贴支持起来这么难。这是因为在Android原生系统中,联系人头像大小的标准是96x96,强制是正方形的。这个标准的一部分原因是:Android的手机联系人与Google联系人支持同步,而Google的在线联系人就是这个标准。


一些情况下,可以在手机的联系人中存储高画质的联系的,但是一旦该帐户与Google帐户同步,则联系人的头像品质立即就下降了。这一问题是Google整体的机制导致的,我们这里不谈。所以,也必须先强调,本文中讨论的“高画质来电大头贴”可能会受到Android手机上的Google帐户同步的影响,建议关掉同步功能。


因为这一标准的缘故,所以Android手机中的“联系人”功能在设置头像时,打开的剪切框都是正方形的,而且保存到联系人数据库中时,图片也会自动降低品质。显然,缘于这些因素,要实现“全屏来电大头贴”就必须绕开原生的联系人和拨号面板工具。


这里补充一点,在Android中,“联系人”是指Contacts.apk,而“拨号面板”是指的Phone.apk。两者一般是相互独立的,可以各自更换。但由于它们事实上都使用较特殊的签名并且直接依赖ROM中的framework,所以不同ROM之间很难做到通用。




2、不同实现方案的思路
=======
上面提到过三种方案,这里再进一步地详细解释一下。


首先,A方案是最常见的。在谷歌市场中就能搜索出一大堆。例如:
  - 来电全屏大头贴:Full Screen Caller ID
  - HD Caller ID Pro高清来电
  - BIG! caller ID来电大头贴
  - 视频来电大头贴:Video Caller Id
  - Ultimate_Call_Screen_HD
等等。如前所述的,这类软件自带一个联系人管理的功能,用于设定“哪些人需要显示大头贴”。一般来说,考虑到一致性的体验,对于“未设置大头贴”人则显示默认的大头贴。


由于A方案本质上是通过“遮盖在原生的拔号面板”来实现的,所以它实际上天生存在两个问题。其一,它总是比原生的拔号面板弹出来得要晚一点,操作过程相当不流畅;其二,由于它遮盖了原来的拨号面板,所以它必须自己再实现一个“接听”界面。这后者,其实又催生了另外一种市场:各种大头贴软件都提供自己的接听界面Theme,电子市场也因此一度火爆。


最后,一般来说,大头贴软件的通话功能并没有原生的拔号面板完整,所以也就通常会提供一个“一键切换到原生面板”的功能。总而言之,A方案基本上就是在原来的拨号面板上做一层皮,揭开了或是没遮好的时候,都会不那么“好看”。


然而B方案呢?却实在不常见,因为只有少数ROM生产商有能力提供在Phone.apk上面的开发。我目前注意到的有:
  - Lewa OS采用了将联系人、短信和通话管理功能集成在一个PIM.apk中的方案,并基于此而实现了大头贴功能;
  - Miui手机在联系人管理中集成了大头贴管理,并在拔号面板上实现了大头贴显示。


总的来说,要在拔号面板上动手脚风险还是挺大的,并且如果要动这个手脚,还得提供一整套的通话功能。综合上面观察,B方案通常都被实现为一个折衷方案:
  - B1:在Contacts.apk中集成一个联系人功能,方便用户为联系人设定(或不设定)大头贴;
  - B2:当Phone.apk检测到呼入时,如果在B1功能中设定了大头贴,则在通话界面背景中显示大头贴。
显然这涉及到Android手机功能的两个重要功能的改动,这也是“只有少数ROM生产商”在做的原因。


那么B方案有什么问题呢?也有两点。其一,通常会在系统的联系人之外独立实现大头贴的管理功能,亦即是联系人头像是一个,放在Android系统的内部数据库中,而大头贴又是另外一个,放在单独的图片文件夹中;其二,这些ROM中的大头贴功能无法通用,依赖相应ROM中大量改动过的framework。


第三种方案:基于原生拔号面板(以及联系人)功能来实现“全屏、高画质大头贴”,是我们接下来要讨论的。它主要的目的就是通过极少的代价,使得ROM发烧友可以快速地集成一些“有大头贴功能的”拨号面板到自己喜欢的ROM中去。




3、基础
=======
首先,我们要知道“系统内置的联系人数据库”其实是可以存放高画质的头像的,只是当联系人与Google联系人同步时才会导致这些头像被自动降低品质。此其一。其二,内置数据的存取接口并没有要求联系人头像必须是正方形,而只是联系人软件(Contacts.apk)实现的联系人编辑功能在指定头像时,强调地要求选框为正方形而已!


好的,有了这两个前提,我们就来找找能“给联系人添加高清头像”功能的软件。电子市场中其实确实有两款这样的好货,而且名字还很相近:
  - HD Contacts
  - HD Contact Photos(或Contact_Photos_Updater)
后者有两个名字,Contact_Photos_Updater这个名字是在xda论坛中使用的,作者也主要是在xda中发布和更新这个软件。


这两个软件使用起来还是有一些问题的。但,就目前我们要做的事情来说,后者(HD Contact Photos)基本能满足要求。它提供一个独立的头像管理功能,尽管这些头像也被保存在磁盘目录中,但只要你“同步”一下,那么这些头像都到系统库中去了,而原始目录中的删除掉也没关系。——当然,建议你还是留下来,做个备份也不错。


有了HD Contact Photos这个软件,“向系统库中写大头贴”就算(暂时地)解决了,我们后面主要讨论“如何在通话面板中显示大头贴”的问题。而在此之前,我先对这两款“写大头贴”的软件作些备注:
  - 两款软件功能和界面都比较接近,但后者(HD Contact Photos)完整得多。
  - 前者(HD Contacts)不能用于ICS,并且它有个BUG:联系人必须先设置一个头像,才能“修改成”大头像。
  - 两个软件都只能将头像设置成正方形,前者(HD Contacts)要修正起来很麻烦,后者比较容易。
  - 后者(HD Contact Photos)其实有限制图片大小,但修正起来比较容易。


所以事实上本文中也会提供一个后者(HD Contact Photos)的修改版本,否则仍然达不到我们的目的。


附件先贴两个修改效果:

【点心vv-ice定制版本】


【Lezo定制版本】



代码转载自:https://pan.quark.cn/s/8ce4326d996e 对于在 CentOS 7 系统中修改网卡配置文件后无法使设置生效的情况,经过实践验证,可以通过使用 nmcli 命令来进行调整。完成修改之后,需要重新启动虚拟机以使更改生效,这样操作流程即告完成。如果设置仍然无法生效,则表明虚拟机在启动过程中所获取的 IP 地址配置并非针对 eth0,此时可以对其它网卡的配置文件进行修改或将其移除。在 CentOS 7 系统中,网络配置的管理机制与早期版本存在差异,主要体现为采用了 Network Manager 服务来负责网络接口的管理。在某些情形下,尽管修改了 `/etc/sysconfig/network-scripts` 目录下的 `ifcfg-eth0` 文件,但网络配置却未能即时生效。此类问题的发生通常源于 CentOS 7 采用了不同于以往的配置读取方法。接下来将具体阐述如何借助 nmcli 命令来处理这挑战。 以 root 用户身份登录系统并打开终端界面。nmcli 是 Network Manager 提供的命令行界面工具,它支持在命令行环境下执行网络连接的建立、编辑、查询及管理任务。针对修改 eth0 网卡配置的需求,可以遵循以下步骤进行操作: 1. 导航至 `/etc/sysconfig/network-scripts` 目录: ``` cd /etc/sysconfig/network-scripts ``` 2. 检查该目录内是否存在 `ifcfg-eth0.bak` 文件,该备份文件可能是先前调整配置时遗留下来的,若存在可能造成冲突。若发现该文件,可以选择将其删除: ``` [root@localhost netw...
代码转载自:https://pan.quark.cn/s/46fd08fb879c 网管教程 从入门到精通软件篇 ★。★详尽的xp修复控制台指令及其应用!!! 放入xp(2000)的光盘,安装时选择R,执行修复! Windows XP(涵盖 Windows 2000)的控制台指令是在系统遭遇某些意外状况时的种极具效用的诊断、检测以及恢复系统功能的工具。笔者确实直期望能够将这方面的指令进行归纳,此次由老范辛苦整理了这份极具价值的秘籍。 Bootcfg bootcfg 命令用于启动配置与故障恢复(对大多数计算机而言,即 boot.ini 文件)。 带有特定参数的 bootcfg 命令仅在运用故障恢复控制台时方可使用。能够在命令行界面下运用带有不同参数的 bootcfg 命令。 用法: bootcfg /default 设定默认引导选项。 bootcfg /add 向引导清单中增添 Windows 安装。 bootcfg /rebuild 重复整个 Windows 安装流程并让用户选择需添加的项目。 注意:运用 bootcfg /rebuild 之前,应先借助 bootcfg /copy 命令备份 boot.ini 文件。 bootcfg /scan 探查用于 Windows 安装的全部磁盘并展示结果。 注意:这些结果被静态存储,并用于当前会话。若在当前会话期间磁盘配置发生变动,为获取更新的探查结果,必须先重启计算机,然后再次探查磁盘。 bootcfg /list 列示引导清单中已有的项目。 bootcfg /disableredirect 在启动引导程序中禁用重定向。 bootcfg /redirect [ PortBaudRrate] |[ useBio...
代码下载链接: https://pan.quark.cn/s/fc524f791b68 AA制程,即Active Alignment,被理解为主动对准,是种用于确定零部件装配中相对位置的方法。在摄像头封装阶段,涉及图像传感器、镜座、马达、镜头、线路板等多个部件的重复组装,而传统的封装设备如CSP及COB等,均是依据设备设定的参数进行零部件的移动装配,因而零部件的叠加误差会逐渐增大,最终在摄像头上表现为拍照最清晰的位置可能偏离画面中心、四边清晰度不均等现象。伴随智能手机和其他高端电子产品的普及,摄像头模组的性能正日益受到重视。高分辨率、卓越的低光表现以及稳定视频输出是现代用户所期望的。在摄像头模组的制造环节,各部件的精准定位对成像质量具有决定性作用。因此,种名为“AA制程”(Active Alignment)的前沿技术被开发出来,成为摄像头精密对准的核心技术。 AA制程,即Active Alignment,是种在摄像头封装过程中应用的主动对准方法。该方法在多个组件装配阶段发挥作用,涵盖图像传感器、镜座、马达、镜头和线路板等部件。传统的封装方式,例如CSP(Chip Scale Package)和COB(Chip On Board),依赖于设备预设的参数进行组装,但随着组件数量的增加,误差也会累积,最终影响摄像头的表现。例如在成像质量上可能出现中心位置偏移、四角清晰度不致等问题。 AA制程技术的核心在于实时监测与主动调整。在组装过程中,它借助先进的检测设备持续监控半成品的状态,并根据实时信息对组装部件进行精确修正,从而显著降低装配误差。通过这种技术,能够确保摄像头模组中各组件的相对位置准确无误,从而使得最终的成像效果更加稳定,特别是在中心区域和四角的清晰度上...
内容概要:本文介绍了套基于Matlab实现的光子晶体90度弯曲波导的二维时域有限差分法(2D FDTD)仿真代码,旨在通过数值模拟手段深入研究光子晶体波导中的光传播特性。该资源聚焦于电磁场与光子学领域的仿真技术应用,系统实现了FDTD算法在复杂介质结构中的建模过程,涵盖空间网格剖分、时间步进迭代、完美匹配层(UPML)边界条件处理、总场散射场(TFSF)激励源设置、介电常数分布定义及电磁场演化可视化等核心模块,能够有效分析光在90度弯曲波导中的传输效率、模式分布与反射损耗等关键性能指标。; 适合人群:具备电磁场理论基础和Matlab编程能力的研究生、科研人员以及从事光子晶体器件设计与仿真的工程技术人员。; 使用场景及目标:①用于教学演示FDTD方法的基本原理与算法流程,帮助理解麦克斯韦方程的离散化求解过程;②支撑科研工作中对光子晶体弯曲波导结构的传输特性进行仿真分析与性能优化;③作为开发更复杂光子集成器件(如分束器、滤波器)数值仿真工具的基础框架; 阅读建议:建议使用者结合经典FDTD教材(如Taflove著作)深入理解算法理论,并在Matlab环境中逐模块调试代码,重点关注电场与磁场的交替更新过程、UPML吸收边界的设计实现以及TFSF源的引入方式,从而全面提升对时域电磁仿真机制的掌握与应用能力。
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值