Categories
Android

Google I/O 2013 – Volley: Easy, Fast Networking for Android

我把这视频高清版本从youtube下载优放在优酷上,地址: http://v.youku.com/v_show/id_XNTU4ODgzNjg4.html ppt下载: Volley

以前反编译过android market,发现里面有用到volley,起这么个名字不知道啥用的,现在才知道主讲者Ficus Kirkpatrick 就是负责开发Google play 的。

看完视频,发现 Jeff Sharkey 就利用它写了简单的Flickr 客户端 , 这速度快得没的说。在前面写的新浪微博客户,Timeline 图片异步下载,使用的是AQuery.image, 但效果还是差一点,于是也考虑试试 volley,代码提交记录见 https://github.com/lytsing/weibo/commit/7c84aea7ae27e6fa7da7aa4e477e41e07c1d79ac 。图片加载性能改善很多,谁用谁知道 🙂

有人问:

Network loaded images in a list view? Solved by several different Android libraries, 3 years ago 😉

https://github.com/koush/UrlImageViewHelper/
https://github.com/nostra13/Android-Universal-Image-Loader
https://code.google.com/p/android-query/wiki/ImageLoading

Ficus 回答说:

Volley does a lot more than that, and does better at the images problem than any of them.

volley 没有提供jar包,需要自己手动编译,使用方法:

git clone https://android.googlesource.com/platform/frameworks/volley
cd volley
android update project -p .
ant jar

拷贝 bin/volley 到 libs 文件夹下面。注意,这个库要求最低SDK版本为Froyo,即至少要设置android:minSdkVersion为8以上。

Categories
Android

Android 来电归属地显示

有网友邮件问, “你好,能否指导一下如在在源码里面添加通话归属地的支持?例如给CM7添加通话归属地。”

基本上,没有什么技术含量。但这个功能对小白用户太有吸引力了,哪里来的电话,很快的识别是不是骗子的电话,心里至少有个底。回到BBS telnet年代,在大学校园里,使用Cterm,鼠标掠过ip地址,当某个未曾见面的网友的ip显示是隔壁楼女生宿舍的,那种兴奋惊讶的感觉真是美妙。后来保护隐私,几乎所有高校的BBS都把ip后面两位以星号代替。扯远了。

玩过第一款Android手机 HTC G1的人都知道,蛋总做的ROM,那是相当的好用。蛋总基于cm的本地化,里面有来电归属地显示,那时觉得很贴心呀,于是做逆向工程,贡献出来放在 github上,没想到很多人也用上了。搜了一下github,原来cytown 早把代码开源出来。geesun 提交一次代码 merge from froyo version for Chinese Phone location 参考这个就可以自己手动修改了。

关于归属地数据库 phoneloc.dat ,很多论坛都贴出最新的版本。这是个二进制文件,具体格式,请看这个 手机号归属地数据导入及查询工具源代码(C++) phoneloc 是在这个基础上做优化的。

Categories
Android

新浪微博Android客户端实战 – 查看详细微微博信息

Only those who have the patience to do simple things perfectly ever acquire the skill to do difficult things easily. 只有那些有耐心将小事做好的人才能掌握轻而易举完成难事的技巧。 ——Friedrich Schiller

上一节实现了Timeline, 点击某条记录,进入新的Activity,观看更详细的信息,实现的功能有:

  • 加载中等大小的图片
  • 显示地理位置信息
  • 加载评论
  • 转发、评论、收藏

预览图如下:

微博详细信息
微博详细信息

上面是微博信息,跟Timeline的差不多,layout布局稍作调整,其中图片显示为中等大小的图片,根据地理位置经纬度参数,插入Google地图。

中间位置是评论信息,放在ListView里,那么就遇到了滚动问题,本博客有篇小文 千万不要把Listview放在ScrollView里 描述了这种情况,那么这里也使用MergeAdapter,把不同的view合在一块。

最下边的位置,提供快速回复,方便输入。

那么转发、评论、收藏放在ActionBar即可,因为不是常用的功能。

完成了这些,到这里先打住,定时的回头自己给自己做 code review,删除没用的代码,要下狠心清理掉垃圾代码,对代码有洁癖感。顺便提一提实际开发过程中需要注意的,这些是初学开发者累犯的错误,有的甚至是有经验的工程师,平时对自己要求不严,就容易犯下这样的错误。

调试Log信息

插入调试信息,输入 aaaaaaaaa, bbbbbbbbbbbbbbbbb, —————— 1111111111111111111 222222222222222 这样没有规范的调试log。千万不要偷懒,再这样下去,别人看到你的代码,显得不够专业,是业余水平。而且不要烂使用 System.out.println 函数,统一使用 Android 提供的Log 方法,无论是哪个手机操作系统或者其他大型的系统,都有自己封装的Log函数,一致的使用只有好处没有坏处。这里问题又来了,有的使用一律使用Log.e 插入调试信息,问ta为什么?ta说醒目啊,一看都是红色的,令人哭笑不得。

语言国际化及文件编码

有的图省事在代码直接写入赤裸裸的中文,后期老板要求发个英文版的,才搞得很抓狂,狂修改,又引入新的bug,情绪很低落,真是恨铁不成钢啊。Windows 程序员习惯了gbk,压根儿没考虑到自己的代码会放在Linux/Mac 上,别的同事一看,擦,都是乱码!提醒下在eclipse把文件编码改为UTF-8,一个团队各有在Windows,Linux, Mac环境下工作很正常。

严谨,切记

讲个真实的故事,我们团队一工程师平时在代码注释里喜欢写shit, fuck之类的言语,程序员发泄嘛,可以理解。有次上线的版本,已经传到了国内各大电子市场,测试才发现打开应用有shit字样,老板暴跳如雷。赶紧fix掉,发布新版本,强制升级。这个字样在svn最新代码库里已经没有了,编译时没有及时更新代码到最新版本,导致悲剧发生。

代码参看: https://github.com/lytsing/weibo/blob/master/weibo/src/org/lytsing/android/weibo/ui/StatusDetailActivity.java

Categories
Android

root s3 mini (GT-I8190)

上周末去华强北手机淘帮表妹买个s3 mini,机子拿到手,里面好多内置软件:Youni 短信,91助手,安卓市场,安智市场,应用宝,万微,手机管家,QQ浏览器,UC,搜狐视频,搜狗号码通,口袋购物搜狗输入法,有缘婚恋,腾讯新闻,金山电池医生,飞流游戏中心,多米音乐。让老板帮我刷个纯净版的,她瞄了一眼,翻动手机应用程序界面,说,不多啊,只有三页嘛!最郁闷的是万微,老是推送内容,实在受不了。好歹我也是干过这行的,自己动手,丰衣足食。

装个kies软件,查看是销售到哪个地区的,信息如下:

基带版本:I8190XXALJL
PDA:LJL / PHONE:LJL /CSC:LJ2 (SEE)

SEE是 South East Europe 的缩写,百度百科说是欧洲东南部分,包括罗马尼亚、塞尔维亚、黑山、克罗地亚、斯洛文尼亚、波斯尼亚-黑塞哥维那、马其顿、保加利亚、阿尔巴尼亚、希腊和土耳其的欧洲部分。

照着 ROOT Samsung Galaxy S III Mini I8190,可以刷回原来的官方版本。英文不好的,可以看这个中文教程《三星I8190线刷刷机教程》需要注意的是,这个ROM不需要在odin选择PHONE,CSC,在 PDA前打勾,后面文件选择框选中 I8190XXALK6_I8190XEFALK1_HOME_ROOTED.tar.md5

尝试在virtualbox xp虚拟机上使用odin刷到半,虚拟机崩溃。mac/linux 听说可以使用 Heimdall,我没试过。

其中,出现了一个问题:发短信对方收到的是乱码,别人的手机显示为一串“????”,解决:进入 短信—设置 —输入方式—自动 只有汉化 rom 才有这个问题,港版rom没有这种情况发生。

最后上图:

Samsung Galaxy S III Mini GT-I8190
I8190 s3 mini

s3 mini device info
s3 mini device info

Categories
Android

新浪微博Android客户端实战 – Timeline

很久不更新了,博主快成太监了,适逢放假,继续写。

前段时间,陈华的唱吧火得一塌糊涂,也一直在用,最近才发现他们用了新浪微博客户端 sso 方式登录,原来新浪更新了SDK,代码托管从 code.google.com 移到 github。之前民间版本有Yusuke Yamamoto 写的 weibo4android,一些客户端版本也选择了在这基础上开发。都说,选择比努力更重要,我们还是选择官方的版本,因为他们专职做这些事情,能提供持续的更新的。

SDK 的使用,查看官网的pdf 文档,解释很清楚,依葫芦画瓢,我们拿到accessToken后,就好办事了。新版的API,全部使用interface,用C/C++的话来说,就是回调,相比上一个版本,使用AsyncTask显得很蹩脚。timeline 的实现,使用ListView控件,可以考虑使用下拉自动刷新组建Android-PullToRefresh android pull to refresh 基本满足要求,但需要滚动到底部也能显示“正在加载”,不怕做不到,就怕想不到,还真有人把这个给做好了, android-pulltorefresh-and-loadmore。这个组建运行在 ICS 滚动有问题,需要更新同步到 android-pulltorefresh 的 PullToRefreshListView.java。

ListView有图片需要加载,缓存,解决性能问题等,还是很麻烦的,可以使用 LazyListcwac-thumbnail等组建。为了尽快的看到结果,这里暂时使用 Andrid Query 的 image函数,使用方便。隆重介绍 Android Query,web工程师应该都知道jQuery,那么AQuery不言而喻了,写很少的代码,完成更多的功能。效果图:
weibo timeline

关于json 解析

一般有三种,Android内嵌的解析器,jackson,gson。从性能与文件大小考虑,这里使用gson。

关于分页

分页时传入page参数即可?非也!很容易理解,假设第一次取20条,第二次(page=2)再取20条,而这个过程,有插入的数据怎么办?这样是不准确的,应该是使用sinceId, maxId 这两个参数。请求大于sinceId是最新纪录,低于maxId 的是下一页(加载更多)。

内容格式化

包括:友好的时间展示,表情转义,话题(##之间),@,url等。一般使用正则表达式。

本篇代码: https://github.com/lytsing/weibo/blob/master/weibo/src/org/lytsing/android/weibo/ui/TimelineActivity.java

Pages: Prev 1 2 3 4 5 6 7 8 9 10 ... 20 21 22 Next