Category Archives: Wireless Dev

Mac上安装eclipse + adt + subclipse 的曲折经历

下载adt sdk后,直接用里面的eclipse加装subclipse死活装不上,试了各种方式都不行;换装subversive也装不了。

于是只好先下个普通的eclipse, 然后装subclipse很顺利; 但通过update site的方式安装adt插件又死活装不了,因为adt update site的xml叫site.xml, 而eclipse只认content.xml; 只好改用archive方式,下载adt插件,然后安装,但在安装时又出现 "Computing alternate solutions, may take a while", 暴慢无比; 只好重装,去掉“NDK”组件,突然就好了。

p.s. 今天为别人装了一次,遇到"calculate dependencies"一直停在 2%处,后来去掉 "Contract all update sites" before installing your selection"就好了

android eclipse导入existing project出现大量红点怎么办?

android eclipse导入existing project出现大量红点怎么办?

1. 如果说"gen"目录找不到,则创建这个目录

2. 如果说“android.app"之类的找不到,则去sdk某个子目录下找到android.jar加入到build path

3. 如果说”android.support.v4"之类的找不到,则去sdk某个子目录下找到android support v4相关的一个jar包加入到build path

4. 如果说"R"类找不到,则检查一下res目录、AndroidManifest.xml是不是有错误; 如果还不行,看看project.properties里指定的target是否跟sdk版本一致。

富客户端相对于浏览器瘦客户端的优点

富客户端(如android/ios)相对于浏览器瘦客户端的优点

1. 访问本地硬件

2. 在没有网络的环境下,也能有比较可靠的缓存;而浏览器缓存在无网络环境时不是那么可靠

3. 可以做长连接,避免频繁连接,省电量

4. 很多图像、图片、声音可以用本地的,避免从服务端实时下载大量html源码,这样可以降低对带宽的要求。

Hacker News Android 客户端如何处理登录验证问题?

看代码研究了一下Hacker News Android 客户端如何处理登录验证问题。

登录流程

1. APP先用httpclient请求PC上的登录页面,拿到一堆html代码,然后从中解析中fnid, 应该是csrf token

2. 然后再把fnid, username, password 作为参数去POST PC上的登录form,服务端返回两个东西:

  a. cookie: httpclient的cookieStore上会多一个cookie(key=user)

  b. http response: 服务端返回一个字符串,称为userToken. 它的值其实就是上面说的cookie的值

3. 最后把userName和userToken存入Settings

登录后使用用户身份

使用用户身份时,会简单地把token当成cookie来用:把userToken从Settings中取出,构建好CookieStore, 然后塞到http client中,最后发出请求

API

Apache HttpClient 及其Cookie API  +  Android SharedPreference

评价

这个方案实际上是以Cookie作为客户端和服务端交互语义的载体。好处是,服务端基本上只需写一套以cookie为核心的认证代码,就可以同时满足PC和APP的需要。

慢慢积累:Android程序兼容性技巧

  • 安装时获取用户授权APP做某种事:<uses-permission android:name="android.permission.CAMERA" />
  • 安装时指定硬件要求: <uses-feature android:name="android.hardware.camera" android:required="true/false" />
  • 运行时发送隐式Intent之前看看这个intent是否被支持. 关键API:  intent.resolveActivity(packageManager) == null ? ;
  • 运行时确认硬件可用性:getPackageManager().hasSystemFeature(…);
  • 运行时判断API Level:  if(android.os.Build.VERSION.SDK_INT > 14) …

html5到底支持哪些新的交互事件,可以调用哪些硬件?

html5到底支持哪些新的交互事件,可以调用哪些硬件?

找了半天,没找到一个列出全部特性的单一网站, 但你可以参考浏览器、JS框架获得这些信息:

JQuery Mobile支持的Event列表:
http://api.jquerymobile.com/category/events/

Mozilla Developer Network:
https://developer.mozilla.org/en-US/docs/WebAPI,可访问的硬件信息,以及其他浏览器是否支持这些访问。

Sencha Touch支持的Native访问:
http://docs-origin.sencha.com/touch/2.2.1/#!/api 看最下面