Posted in October 2009

手机只是网络的延伸

最近在考虑做一个手机上的“可同步的“的记事本,因为感觉的android上的通讯录和邮件功能确实很cool,在PC上面修改Gmail的通讯录马上就可以同步到手机上,这样手机丢了或者刷机后,同步一下就可以了:信息只存在一个地方(这让我想起了TDD中的消除重复…)。

如果记事本里面的内容保存在网络上,在普通的pc上也可以编辑,那么势必还有一整套的相关事情:1)得有记事本的web界面,主要在PC上使用;2)如何说服用户使用这个网站,没有人愿意把私有数据放到一个不知名的网站或者不知道哪里的“云”上;3)还得有 firefox的插件,方便操作;4)如何避免滑入一个信息孤岛,如何和其他app分享数据。

结论是:手机只是网络的延伸,只是PC机不在时的一个补充(或者说当我们不在cloud中时)。PC机上好的应用,可以迁移到这个平台上来,反之则不大可能的。

当然这只是一个例子,只是技术上的可行性验证,不用考虑太多。

Android上的水波纹(water ripple)效果

最近想看看Android上面的图像性能,于是做了个例子来测试一下:动态的2D水波纹。

1)最先找到的例子是在这里 WaterFilter, 这个网站上也有很多其他的图像处理滤镜。代码是基于awt的,转换到android 2d也不是很困难。由于其用到了很多三角函数,比如sin/cos,最后动态运行速度非常慢,但是效果应该是最逼真的。

2)Java Water Simulation对算法进行了优化,把三角函数转化成普通的加减乘除,也是一种近似的算法,具体的原理在这里,如果对比前后的效果,还是有化腐朽为神奇的感觉的。

device

原来学校里学的图像处理已经忘的差不多了,上次看到科学松鼠会的一篇文章 “玩伴女郎”误入学术圈 才记起原来学过这门课,惭愧啊。

图像图形算法一般计算都比较密集,如果要加快速度,在保证一定的质量时,“奇巧淫技”还是很多的。代码相对于AWT版本有些地方还是效率差。AWT中有个类MemoryImageSource,这个类可以在图像处理中,直接对内存中的图像进行“就地”的操作,在android中没有对应的类,处理图像数据有一个“源”到“目的”的转换,速度可能就有损耗。Android的Canvas有一个drawBitmapMesh的方法,对图像进行矩阵操作,可能会加快速度,暂时还对其了解不多。

比较AWT,android的2D图像库还是很单薄的,稀稀拉拉的就几个类。核心的方法都是native的,也就是说是通过jni调用的。

源代码在这里:http://code.google.com/p/android-workspace/