Archives for android

一个新的开源项目Libsvm-androidjni

我创建了一个关于libsvm库+Android的开源项目 Libsvm-androidjni. 这个项目的目的是让当今最流行的SVM支持向量机机器学习库Libsvm被移植到Android平台中。当然官方提供了Java库,但用Java来进行大规模的SVM计算还是太低效了,所以这个项目是要把c/c++版本的库移植到JNI环境下。 目前的code状态是svm的training和prediction功能皆可正常运行。具体的使用方式请参考README。虽然是c++环境,但主体code还是c的风格,这和我个人喜好有关,不影响使用。 目前还有一些高级功能不完善,比如完整的参数传递和误差计算。 项目代码请到https://github.com/cnbuff410/Libsvm-androidjni下载。

Hackborn的吐槽和Munn的剖析: Android graphics低性能背后的真像

Google+上有意思的讨论从未间断,几乎已是Google+的标志性特色了。最近两天,移动领域的爱好者都被Dianne Hackborn的一则吐槽所吸引。吐槽要火,两大因素不可缺少,一是该话题乃众人关注,却无统一意见。二是吐槽中有大料或者干货爆出,引人入胜。此番吐槽吸引人的地方,正是因为此吐槽是关于饱受争议的Android graphics性能的,自从Android推出的第一天起,graphics的渲染,动画切换等就为人诟病,到后来几乎成了果粉安粉大战的必备话题。而吐槽之人呢?是Android团队中比较senior的架构工程师Dianne Hackborn,相信关注Android开发的朋友,都不会对此女陌生。 为什么Dianne Hackborn身为Android内部人士,会突然公开讨论如此敏感的一个话题呢?用她自己的话说,就是“受够了外界谣传的关于Android图形渲染的不实信息”。我把她吐槽的大概重点归纳如下:

谈谈Android 4.0

昨天刚拿到Galaxy Nexus,把玩了差不多一天了。这篇文章并不想花大篇幅介绍这款机器的硬件和软件,如果你好奇,可以看一下下面这些知名网站的评测,再详细不过了 Engadget The Verge: 8.6/10(和iPhone4s同分) SlashGear Boy Genius Report TechRadar PhoneArena: 9.5/10 GigaOM:一个iPhone用户的评测 Gizmodo GigaOM 如果真要总结,那只有一句话,这是Android有史以来第一款能和苹果手机并肩的机器。这篇文章里,我就谈谈,在我眼里,Android的后续发展,和ICS的意义,当然都是结合了我在Google4个月的所见所闻以及感想。很多朋友希望看到我有一篇专门的实习总结,我想了想还是算了,首先我实习做的东西比较保密,没法说,其次也没什么写的,Google工作环境好,条件好,牛人多,大家都知道,没必要再吹一次。

如何对Android的本地代码进行profiling

现在用Android native code写程序库的人越来越多。对于那些需要写的库实时性要求特别强的应用,通过profiling来进行优化是一个非常有用的特性,因为它能帮你理解程序编译后的本质,比如多少instruction,哪些method调用多少次,多长时间,等等。 Android开发环境提供了Traceview这样一个工具,可以点到这个链接里面去看官方对他的介绍。总的来说,就是它提供给程序开发者目标程序的执行日志,以此帮助你调试程序和优化性能。有两种方法能够声称traceview所需的log,一种是利用DDMS的profiling特性,通过控制什么时候开始和结束logging来获得log。这个方法在你没有程序源代码的时候有用,因为只需要Run程序就能获得log信息,但是没有精准的起始中止控制。另一种是通过将Android自带的Debug类加到code中,然后调用里面的method来开始和中止trace信息的纪录。这个方法能让开发者非常精准地控制什么时候开始纪录,什么时候结束纪录,因为开始和技术都是在code中执行的。

Android上Tcpdump的使用

前几天在看如何在Android上实时抓到ap的beacon的RSSI信息,而不是通过调用wifiscan的方式,所以研究了一下tcpdump在Android上的使用。可惜最后发现不可用,不过在这里,还是把过程记录下来,拱别人参考。说明一下,这个方法只适用于破解了的ROM。 要使用tcpdump,首先当然是下载可在Android上运行的二进制执行文件,下载地址包括这里和这里。你要是蛋疼想自己交叉编译一个呢,那就参考这个文章吧。 之后的事情就简单了 adb push ./tcpdump-arm ./any-place-you-want chmod 777 tcpdump-arm

Samsung Galaxy S上手感受

先说一下配置 4 inch capacitive Super AMOLED Display 1GHz Hummingbird processor 1500mAh lithium ion battery 5MP camera with 720p video recording 2GB microSD card preloaded 在最新一代Android手机中做出选择时,由于EVO和DroidX都缺少移动计算研究中一个杀手级的部件:陀螺仪,所以,硬件配置不相上下的Sumsang Galaxy S就成了我的唯一选择。我是从Tmobile买的Sumsang Vibrant,实际上和原版Galaxy S是一模一样的,区别就是多了一坨我用不着的程序。 直入主题吧,先来一张包装照

Gingerbread,向左走还是向右走?

今天网上广为流传的消息,是来自TechCrunch的,Android团队正在努力解决用户体验的问题。伴随而来的,是Google正在考虑停止厂商自定义UI的权利,包括Sense UI、Moto Blur、Ninja Blur等等,原因是Google认为这些界面实际上是拖慢了系统速度,却没有带来什么实质性好处,还给升级平添一道障碍。如果消息属实的话,Android还说Gingerbread的用户体验能接近iPhone。 刚读到这个消息时,我的第一感觉是,这是一个代表Android发展分叉口的版本,成败,可能就在此一役,而且,一旦消息属实,Android是在进行一个大的赌博。

Android并不伟大,但丝毫不令人沮丧

自从Google IO大会之后,Android单挑iPhone OS的新闻甚嚣尘上。人们开始真正对这场所谓的战争感兴趣,并不厌其烦一次又一次地去将所有的细节放在放大镜下分析。昨天在twitter上看到朋友分享的cnbeta的一篇文章—为什么说Android令人沮丧,看完之后的感想就是,很多观点实在无法认同,并且,文章中充满了自己的想象,然后把自己的想象以事实的口吻说出。举两个例子。该文说 Google控制社区的核心手法就是频繁升级Android的同时少量修改API,造成兼容性问题。 我不明白没有API的升级的话,一个新系统如何保证竞争力。Android目前的发展阶段决定了每一次major update都必然伴随API的改动,原作者却想当然认为这是Google控制社区的核心手法,是Google为了“故意造成兼容性”的手段。我们国家的人民现在对什么事情估计都能联想到“阴谋论”了。 当年Windows Mobile就是死在三方ROM之上,Android不过是在重复Windows Mobile的老路。 我不知道作者有什么证据说当年Windows Mobile就是死在三方ROM之上的,难道他统计过Windows Mobile用户自己刷ROM的比例?实际上,这个衰落的原因主要在于下面几点 Windows Mobile可靠性差,可用性差,反应奇慢,用户体验差得发指。 Windows Mobile的一些常用软件很难让人满意,比如以前的IE。 Windows Mobile的创新太少太慢。这个是关键点。Windows Mobile早期手机很贵,面向的是比较小众的高端市场,又没有好的系统表现,不过由于MS的影响力和推广,总算还是有不错的份额。iPhone和Android崛起的时候,微软没有想过问题的严峻性,继续不紧不慢躺在老版本上做小改动,而且release一个几乎没啥创新的新版本都要按年来计。随着iPhone和Android就像赛跑一样发布一个个重量级的新版本系统时,微软开始着手这些问题的改进了,可惜的是,iPhone和Android已经吸引走了大批开发者,而且从系统本身性能和特性来讲,Windows Mobile再也不占任何优势。 所以,Windows Mobile之衰败,主要是自己系统的原因,归咎于第三方ROM实在不公平。事实上,除了Geek和有不浅的电脑知识的人,大部分普通用户在购买手机之后都不会去刷ROM。 回到正题。这里,我展开谈谈,为什么Android不仅不令人沮丧,反而可以算是表现优异。

目前最好的Android2.1 ROM之一 for Hero

http://forum.xda-developers.com/showthread.php?t=622468 推荐一下,这个ROM我用了一段时间了,没啥大问题才写这个post推荐。Sense UI,2.1ROM,基本功能都有,用着很流畅,一点都不慢。缺点在上面连接中也有讨论,基本都是我用不上的功能,所以不care。 要刷机的朋友最好把radio镜像升级到6.35.09.26。做好备份。步骤其参考我之前的文章。 BTW: 如果这个网址国内被wall了,或者下载的网址被wall了,留言说一声,我可以把这个ROM上传到我的空间。

彩色的Android debugging logcat term

Andorid的logcat通常都会输出无数多的信息,至少对于我来说,经常把眼睛看花。Jeff Sharkey针对此写了一个python脚本,专门负责整理logcat的输出流并给不同的tag信息加上对应的颜色。如图 怎么用呢?很简单,或者直接执行 $ ~/coloredlogcat.py 或者用管道 $ adb logcat | ~/coloredlogcat.py 这个脚本需要你的terminal是 ANSI-compatible的。脚本在此下载: 下载1 下载2 下载完后自己改后缀

Android 2.0上使用蓝牙通信的代码片断

服务器端: UUID uuid = uuid.fromString(“27648B4D-D854-5674-FA60E4F535E44AF7″); //generate your own UUID at http://www.uuidgenerator.com BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); BluetoothServerSocket serverSocket = adapter.listenUsingRfcommWithServiceRecord(“MyBluetoothApp”, uuid); BluetoothSocket socket = serverSocket.accept(); // blocks until a connection is accepted serverSocket.close(); // close the listening socket – does not close the connected client socket

如何切换Hero的Sense UI和普通UI

进入设置–程序–管理程序 界面 找到HTC Sense或者Touch FLO程序。不同的机器名字可能不一样,反正肯定是这两个中的一个。然后点击进去 按下Clear Defaults(取消默认)按钮 按下HOME按钮。此时机器应该会出线让你选择Home界面的对话框。你可以继续选Sense,也可以选Android默认界面。 如果想返回,把刚才的设置反着做一遍就行了。Android默认的Home界面也可以在程序管理中找到 即使你选择Android界面,你只是享受不到Sense的Widget而已,速度不会提高很多,因为新版的ROM已经极大提升了Sense的速度。不过考虑到有些朋友就是喜欢折腾,或者有些人有不同审美观,所以写下来供参考。 我是在这个网站上看到的,并且自己试验成功

Android2.0 正式支持蓝牙传输了

目前sdk网站上有spp的api了。之前由于sdk不正式支持,一直用的这个第三方库 这一刻,全世界android爱好者内牛满面

Hero相关固件的最新升级版

大家可能都听说HTC推出了Hero的最新firmware(我不是说Donut,这个还没有定制ROM),大大加快了系统操作速度。通过亲身经历,我确认效果是非常好的,现在Hero真是刷刷得快了。用了半个星期没啥问题,所以在这里推荐一下。 如果希望升级的话,最好不仅仅升级firmware,把Radio一起升级了。如果你熟悉我这篇文章的话,过程就很简单了。因为recovery image还是原来的,你不用换。以前的那个update.zip,请去这里下载,然后改名替换。里面有两个版本,自己看看需要哪个。一般用户的话就core就行了。

如何制作Android ROM

有点玩机兴趣的android爱好者,应该对custom ROM这种东西都不陌生。我介绍root权限获取的时候,就直接用的MoDaCo Custom ROM作为例子。适用于Hero比较好的ROM还有不少,比如Drizzy’s Custom Hero ROM等等,都可以在XDA上找到。肯定有不少朋友感到很好奇,这些ROM都是怎么做的。考虑到中文社区相关资料比较少,在这里抛砖引玉,大概原理介绍一下。 对于第三方ROM来讲,通常都包括两部分,一个recovery image,一个update.zip。而大多数的第三方ROM的特色,就是加入了很多东西,比如superuser程序来获得root权限,busybox来扩充命令行下的功能,各种各样的配置文件或者小工具,比如默认打开中文locale,等等。这些看似神奇的改动,都是在update.zip里面搞的,custom recovery image的主要作用就是引导用户的操作,比如让你先备份,再应用update.zip,再重启之类的操作。由于custom recovery image和update.zip的耦合性很小,所以不少custom ROM直接都用同一个custom recovery image,这个好像是出自MoDaCo作者之手。再然后,我之前的文章已经有对 recovery image的简单讲解,所以这里,我主要介绍一下update.zip的制作。