大道至简,亦至繁

从什么时候,我感觉使用Linux就是个悲剧了呢?或许很早就感觉到了。

其实我很喜欢现在这样,命令行也可以让好多事情变得简单,比如,装个软件,用命令行只要打一行字母,软件就装好了,在Windows下面要去下载,然后一堆安装向导,还要时刻小心被坑。

调试手机的时候也方便了,不用安装驱动,Linux本身就是可以识别Android的,插上就有了。在Windows下面起码得下个豌豆荚什么的,点半天才能识别手机。

直到某一天,在Linux下面安装一个软件出了问题,妈呀这简直就是晴天霹雳,我准备吃午饭的啊!!翻阅大量资料,看别人的问答,花去半天时间,找到问题了,改了一下,安装好了,在Windows下还是点一阵向导,也安装好了。

再来就是某一天,这破Linux不认识我的手机了!不是可以免驱动吗?靠,去/etc/udev/rules.d/下面创建一个usb的配置文件,重启usb服务,再去.android下面修改一下SDK的识别配置,把自己手机的识别码加上去。在Windows下面还是安装了一个豌豆荚,按了一会儿搞定了。所谓大道至简,你别认真,你一认真这句简单的话解释起来比宇宙形成还复杂。

错误错误错误错误

尼玛,当今天晚上我升级了Android SDK,重新生成了Android的第三方Vendor标识文件,我手机又连不上了,当我重新添加了手机的ID之后,奇迹发生了,还是找不到。。。

2013-10-4更新:原来是adb_usb.ini里面添加手机ID的时候,忘了添加0x,即应该添加的是0x2717。之前真是没注意,就是凭记忆填了填。

Android Activity之间传递数据

Android在Activity间传递数据的方法有以下几种

###使用Intent绑定内容

###使用全局变量Application

这样无论在程序的什么地方用getApplication()方法拿到的Application对象都是MyApp的实例(准确的说是Application的实例,但明显就是一个MyApp,当然可以转成MyApp)。

如果在MyApp里面定义一些变量,再定义一些gettersetter,就可以在任何地方读取或设置这些全局变量。

####示例代码

#####AndroidManifest.xml

1
2
3
4
5
6
7
<application
android:name="org.rankun.learn_intentapplication.MyApp">
...
<activity>
...
</activity>
</application>

#####MyApp.java

1
2
3
4
public class MyApp extends Application {
public String attr;
//...
}

#####SomeActivity.java

1
2
MyApp myApp = (MyApp)getApplication();
myApp.xxx();

Read More

测量面积的工具

一个还没正式开始就被技术上劝下来的项目,曾经花了我很多时间来设想,下载了好几个相关传感器的Demo。

之前的基本构思是,通过加速度计(重力感应使用的传感器),获取瞬时加速度,通过不断的积分而获得当前速度,然后计算距离,然后绘制行动路径的多边形,然后计算面积。

致命缺点:由于速度经过积分而产生,定位误差随时间而增大,长期精度差;手机上面的加速度计本来精度就低,测量加速度的时候还要受重力加速度影响,通过一次卡尔曼(Kalman Filter)过滤,数据已经完全不能用来再计算速度了,已经废了,我还以为我们要怎么忙怎么忙,怎么辛苦做这个东西呢,结果根本就不能做。。

反正,不是因为这个不可能,而是因为设备精度太低,惯性导航仅被用在飞机等高造价的设备上。

下面是一些相关资料