ss1271's Site

风餐露宿,不可一日无码.

DroidCon UK 2012 - Who Needs Thumbs? Android Instrumentation & Reverse Engineering

| Comments

目录

Session 1: The Fragment Transition by Corey Latislaw Session 2: Picking up the Pieces – Overcoming Devices Fragmentation by Jan Berkel & Jon Schmidt Session 3: Who Needs Thumbs? Android Instrumentation and Reverse Engineering by David Teitelbaum Session 4: Beaming Data to Devices with NFC by Mark Murphy Session 5: Memory Analyzer: avoiding memory leaks by Felipe Ferraz Session 6: Deep Dive into Android Custom Components by Chiu-Ki Chan Session 7: Fast, user-friendly and power-efficient network communication on Android by Erik Hellman Session 8: Developing for Android on 2.x/3.x/4.x by Kenichi Kambara Session 9: Crash Reporting Trends for Mobile App Developers by Andrew Levy Session 10: Android Layouts by Mark Allison 本节主要讲Android上对软件的反向工程。多数人可能听说过这个做法,不过本节纯讨论技术方法,不涉及具体软件的反向工程,切记仅供学习而不是抄袭。如果你拿来抄袭,那你和腾x公司、渣浪微博、淫淫网之流没有区别,本文对所有因为学会了反向工程而引发的任何形式的法律纠纷不负任何责任。请牢记DON’T BE EVIL. 因为我在听此讲座之前自己做过类似的事情,所以大家可以参考我的过程总结,其实和讲座的过程别无他样。Android反编译其实是一项相当成熟的技术,网上可以找到非常多的例子教程以及各种工具,不过用的比较多的是我将要提到的几款。

DroidCon UK 2012 - the Fragment Transition

| Comments

因为时间比较匆忙,所以只参加了本年度第二日的(应该算是精华部分)的Droidcon UK。我有选择性的听了一些Sessions,感觉很有启发,故写DroidCon UK 2012系列。里面除了第一个session没能录音之外,剩下的所有参加的session均有录音。我会把录音逐一设法分享,同时也欢迎各位留言交流讨论。

目录

如何解决Android相机Preview Overlay和取景框方向问题

| Comments

上个月因工作需要手动设定Preview(取景框)上的图像和图像大小等等,所以直接Intent调用系统相机这个最简便易行简单粗暴的方法就不可取了。实现一个相机类其实没有听上去那么复杂,Android的开发文档里面提供了非常详尽的步骤,戳链接。 本文要说的是两个问题,第一个是取景框Overlay。 有些时候自定义相机类需要提供一些可以在取景时覆盖到取景框上面的东西(比如相框什么的),这个做起来很简单,直接在相机画面的XML Layout里面给定一个背景透明的图片即可。 第二个是相机方向问题。我需要固定让相机以Portrait方式,也就是竖屏方式拍照。 此问题比较麻烦,而且Android文档上也好,StackOverflow也好都有五花八门的解决方案。可是如果你试过文档上面的例子你会发现:例子代码跑在某些设备上(比如我的Galaxy Nexus, JellyBean 4.1系统)是没有任何问题的,意思是你取景的方向和预览方向一致。而在另一些设备上,会出现取景90度旋转(恕我记不清楚是逆时针还是顺时针方向了)的问题,并且如果你做了进一步研究,依照网上代码修改一下的话,还有可能会出现刚刚没有方向问题的设备出现90度旋转。总之此问题很麻烦也很恼人,所以希望本文可以帮到读者。

比較靠譜的解決iPhone中鍵盤遮蓋文本框的問題One Possible Solution of iPhone Keyboard Covers the TextField When Editing

| Comments

最近在學着編寫iPhone程序,遇到一個應該是所有iPhone開發者都曾遇到過的問題:iPhone鍵盤有時候會蓋住文本輸入框(UITextField)。這個小問題在以往我編寫Android程序的時候不曾遇到過,想必是Android本身已經是自動Handle這件事了?不過好在Apple官方文檔提供了解決方案,應該可以解決一些很初步的問題:你會發現屏幕會有滾動,但是滾動並不完美。StackOverflow上有人提出類似的問題,說他的屏幕滾動過頭。 我一開始做的時候,也遇到這個問題,而且很是頭痛,一來這是我第一個像樣的程序;二來對於iPhone編程確實不是很瞭解,總之參考了無數人的例子,結果從發現幾乎都不能用到可以滾動但是仍然遮蓋鍵盤,再到終於可以完美滾動但是不會遮蓋鍵盤。這中間雖然讓我很有解決難題的成就感和滿足感,但是也確實太浪費時間了。所以我記錄一下這個,希望大家可以少走彎路。 首先應該確保你的UIScrollView有過IBOutlet連接。然後你可以參考一下我上面提到的官網的Doc,看一看背景是否隨着鍵盤彈出而滾動,如果有滾動,但是不出所料的仍然遮蓋或者部分遮蓋Text Field,那麼請參考一下我下面的修改算法: 和Apple的不同之處在於第31行,我認爲Apple提供的滾動數值計算有重大缺陷,所以專門修改了一下。 圖解在這裏(點擊可查看大圖): Recently I’m learning iPhone programming and I encountered a problem that I bet every iOS programming beginner have met before: iPhone on screen keyboard will cover the text field. This little piece of cake is not even a question on Android, but hey, this is iOS, we should have different perspective, got it? Fortunately, Apple has already provided some documents about “Keyboard Management”, which will resolve the issue of scrolling the view when keyboard pops up. But wait, it is not perfect if you copy/paste the code from the webpage. Some one from Stack Overflow said that the code will result in “over scroll” on his project. I have met this kind of issue since I began my project and spent a hell of hours on this. I think this is because I am first to iOS and not very familiar with this “Advanced Platform”. In all, I viewed a mass of questions and how-tos as well as tutorials but none of these articles could lend me a hand. And eventually, I managed to get it worked by myself. It’s better to share my solution than just keep it. First, please ensure you have did an IBOutlet between your UIScrollView and your view, then you can take a close look at the Apple document I’ve mentioned above, see if you could let the textfield scroll when the keyboard pops. If you can, but the keyboard still covers or partially covers the textfield, time to refer to my “enhanced algorithm”: The difference between Apple Doc and mine is from Line 31, where I believe Apple Doc provides a defect method of scrolling. The mockup draft is here (Click to see the enlarged image):

硬币的艺术

| Comments

各位到英国旅游留学的朋友可能第一印象就是英国种类形状繁多的硬币了。正好我也一直一来对它们很好奇,直到前些天因为参加面试的关系顺带去了一趟传说中的Swansea,更是顺路游览了一下 Swansea 的 National Waterfront Museum,从中学到一些关于硬币的知识,正好卖弄一下:

硬币的头面和尾面(第一排左起1p 2p 5p 10p,第二排左起20p 50p 1镑 2镑):

所谓头面就是有头像的那一面,尾面就是另一面啦。

所有硬币的头面,一般是当前的君主像和其头衔全称。英国现在君主是伊丽莎白二世,则硬币会在头像上方镌刻:ELIZABETH•II•D•G REG•F•D 这一段是这么解读的: ELIZABETH II 自然意思是伊丽莎白二世 D•G 是拉丁文Del Gratia,意思是by the Grace of God REG是拉丁文Regina,意思是Queen FD是拉丁文Fidei Defensor,意思是Defender of the Faith 所以这一圈头像上方的铭文,意思就是:ELIZABETH II, by the grace of God, Queen, Defender of the Faith

而尾面一般有三种徽记

1p的是亨利七世(Henry VII)的徽章

2p的是威尔士王子(Prince of Wales)的徽章

5p的是代表苏格兰的徽章

1英镑硬币一般尾面都是各种代表各地的徽章或者花草,而硬币的侧面则有一圈小字,注意过吗?

Decus Et Tutamen

是DECUS ET TUTAMEN 这拉丁文的意思是an ornament and a safeguard 这是一段引自古罗马诗人维吉尔的《埃涅阿斯记》的语句。

硬币的成分 2p 铜包钢 (1992年以前的2p是97%铜+2.5%锌和0.5%锡的合金,所以1992年之后的2p是可以被磁铁吸附的) 10p 铜镍合金 1镑 铜锌镍合金 2镑 铜镍合金(中间部分),铜锌镍合金(外围部分)

至此,我有个小问题出现:为啥硬币要在周围一圈印有花纹,并且还要在侧面打上诗句什么的,为了装文艺么? 其实不是,硬币弄的这么文艺的重要原因就是为了防止一些2B的人“切”硬币来卖金属。早期硬币都是贵金属制作的(铜、银什么的),即便是现在如果每次从硬币上抠一小点下来也可以集腋成裘成为致富新手段(我只是说一下而已,千万别当真)。为了防止被抠,硬币有了这些花纹和侧面的纹路。

有在英国使用过自动售卖机(TESCO里面那个或者地铁票公交票停车咪表之类的)的同学肯定有注意到,有些硬币是不能被识别的,会被机器自动退还。原因就在这侧面的纹路。被退还的硬币大多数是侧面纹路没有或者残破不全的。看来这个纹路的确帮助自动售卖机行使了辨别真伪的功能。

除第1张图(Queen Mary, University of London)以及最后一张图(Flickr 来源)以外,其余图片均来源于wikipedia

Raspberry Pi到货开箱图

Raspberry Pi到手有一阵时间了,碍于平时打工一直没有怎么折腾这个玩意,最近抽出空来好好搞了一下,发现这货的确潜力无穷思密达。

首先,ARM架构,HDMI和GPIO都有,意味着可以单纯当作一个电脑来用,或者是当作其他周边硬件的控制器(比如用GPIO来作输出)。

我当然暂时玩儿不了那么高端的东西,最多最多做个搭个NAS,做个seedbox就完了,X Desktop就不装了,纯命令行操作已经快感连连,做服务器什么的,要桌面没用~

开始正题,那么简单的一些接口连接对于购买Raspberry Pi的人来说应该不算问题吧?(乃总该知道HDMI口、MicroUSB口、SD卡槽和USB接口怎么用吧。。。)

英国医疗制度初探

| Comments

几周之前打工的时候不小心弄掉了一个指头的指甲,当时伤得不轻,未能第一时间成功止血,于是有幸乘经理的车来到医院,算是来英国快两年头一次进医院。正好一起打工的室友Nick,算是难兄难弟,觉得肚痛难忍,于是一同乘车去就医。一路上经理一直嘱咐我们,如果想要快些就诊,就一定要让门诊挂号的人认为你情况很严重,否则就会一直排队排队排队。以往我从各种渠道得知过类似的情况,就是英国的医院会排队排到死也等不来医生,于是大家都夸大自己的病情什么的。

等到了医院,我跟Nick分开挂号,我被支到Minor Injuries Department。一上来挂号的护工问了一些详细的问题,包括有没有注册GP(再次提醒各位来英国留学或者工作的朋友,一定要第一时间注册GP,这个不要钱而且可以省去很多在医院浪费的时间)、出生年月等等。之后挂号的护工让我等着叫号。也许是当天太幸运,也许是看见我手指头确实血流不止,总之等了40分钟左右,我被医生叫进去看伤口。

此处省略若干字,医生总共包扎了两次,第一次没能止住血,30分钟后进行了第二次包扎,这次有两名医生在场进行了包扎,把手指头包的很厚很厚,开了消炎药(阿莫西林或者是阿莫西林的改版,看读音很像),然后还约了一周以后再去外科复诊。

元旦大礼——Samsung Galaxy S II(GT-i9100)官方ICS 4.0泄露版

| Comments

图片来源Android Developers 英国当地时间2011年12月31日下午5时56分,SamFirmware,一个专注于侧漏三星最新固件网站的Twitter账户上出现了这样一条消息:
SamFirmware @SamFirmware Firmware: I9100XXKP8_I9100OXAKP8 Online! (Android 4.0.3)sammobile.com/firmware
此条Tweet意义重大,意味着三星继上次放出4.0侧漏版ICS之后,再次赶在2012年之前放出了4.0.3测漏版,使其旗下的旗舰机、被网友戏称为“盖世兔”的Galaxy S II (GT-i9100)终于和Android嫡系部队Nexus系列(Nexus S和Galaxy Nexus)在系统版本上平起平坐了。 相信很多人不能忍受三星的TouchWiz界面,不过本次侧漏必然带有TouchWiz界面,毕竟是厂商的旗舰机,所以有些定制化是必然的,不喜欢TouchWiz的朋友(我就不喜欢)请自觉攒钱购买Nexus系(嗯)。 ROM的下载链接请直接移步到SamMobile Firmware 说一下大致的升级的注意事项: