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 […]

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-pulltorefresh-and-loadmore。这个组建运行在 ICS 滚动有问题,需要更新同步到 android-pulltorefresh 的 PullToRefreshListView.java。 ListView有图片需要加载,缓存,解决性能问题等,还是很麻烦的,可以使用 LazyList,cwac-thumbnail等组建。为了尽快的看到结果,这里暂时使用 Andrid Query 的 image函数,使用方便。隆重介绍 Android Query,web工程师应该都知道jQuery,那么AQuery不言而喻了,写很少的代码,完成更多的功能。效果图: 关于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

Categories
Android

新浪微博Android客户端实战(1-前言)

时下流行风,书籍前头喜欢冠上“人人都”,比如《人人都是产品经理》,《编程ING:人人都能学会程序设计》,我也想跟个风,这年头,不写个微博客户端,都不好意思说自己是做Android开发的。 目前网上已经有一大把教程如何写客户端,写的挺不错的,但有些内容已经过时,而且代码不是很完整。而code.google.com 有很多开放的代码,但又缺乏文档,有些代码写得不敢恭维,对代码有洁癖的我,实在无法看下去了。本博客很久不更新,一些网友怂恿我写一些关于Android开发的文章,想来想去,还是以某个应用的开发为题材吧。新浪官方的客户端为了兼容低版本,使用的api还是老的,现在Android 4.0 使用全新的 UI设计、交互体验,简洁流畅。我认为,一个好的 app 应该与操作系统保持设计的一致性。本系列文章基于 Ice Cream Sandwich,旧的 api不再使用。 以我的经验,写Android应用程序大部分时间花在UI,页面布局上,真正写代码的时间反而少。本客户端的目标不是做个大而全的东西,2-8定律无处不在,实现20%的功能,满足正常使用即可。基本功能:登录,Timeline,详细信息,发文,回复,转载。其他砍掉,事实上,一般人的使用习惯无非就是阅读信息,发文,评论,repost,用心研究这几个功能,做到极致,就很了不起了。 W.Jason Gilmore 在《PHP与MySQ程序设计》里写道:”优秀的程序员会编写可靠的代码,而卓越的程序员则会重用优秀程序员的代码。“。使用新浪微博提供的SDK,再加上一些优秀的Android UI 开源组件,我们可以很快速的开发一款客户端。 目标读者:本文不会step-by-step讲得很详细,前提假设你会搭建开发环境,会一些起码的编程基础,看过ApiDemos,正好挽起袖子干一些事。所有的代码都放在github上,可以下载编译安装运行,有个直观感觉,比什么都好。好了,让我们开始新的征程。

Categories
Android

Android 上的消息推送通知(Push Notification)

Android froyo 之后,引入了 C2DM,基于XMPP 协议实现的推送机制。C2DM 的优点无需多言,但缺点也是显而易见: 1. 需要google账号。这一点约束太大了,很多手机厂家把google Apps给阉割了。 2. 国内服务不稳定,原因你懂得的。如果有能力在国外有服务器,可以很快的发送消息到C2DM 服务器,从国内post 数据到 Google server,几乎没响应。 3. C2DM 仅支持 Android 2.2 以上 C2DM 运行在系统级别上,系统内存少时不容易被kill。C2DM与Gmail、Gtalk等共用同一个连接,减少耗电。跟iOS不一样,Android支持App常驻进程,所以大家都不愿意用。现在一些恶意的Android软件,安装后后台开启一个服务,定时向用户PUSH垃圾广告,很邪恶。国内互联网公司都瞎折腾这样那样云,但就没有一家愿意开发和提供一个Google C2DM的墙内替代品。 目前基于长连接push的开源软件有: AndroidPN AndroidPN 是一个基于XMPP协议的java开源Android push Notification 实现,包含server与client,server 使用SSH框架,默认后台使用jetty,数据库是hsqldb,该服务器端基本上是在openfire基础上修改实现的,据说微信在Android上的推送实现也是基于openfire,具体未详。官方上的版本已经很久没更新,而且还有一些bugs,比如: 1. 当服务器端重启的时候,客户端就无法在连接到服务器. 2. 不支持离线消息。 3. 推送多条消息重复问题 可以改造成tomcat版本,已经有很多网友在做这样的事。 MQTT IBM 产品,使用php写的,据说外国网友在论坛上爆料,Facebook Android客户端的推送使用这个。 没有条件自己搞 push 服务器的,可以使用第三方服务 Urban Airship http://urbanairship.com/ http://www.push-notification.org/ http://www.android-push.com/ 据了解,钱方支付的 Android 客户端是使用 http://www.android-push.com/ […]

Categories
Android

Sqaure 类产品在Android 机型上的适配问题

我们已经公布了 盒子支付客户端支持机型列表 ,而Sqaure 也很早在他们帮助中心提示用户他们对Android 设备的兼容情况。很多用户很关心他们的机型为什么不支持。 众所周知,Android碎片化的问题确实困扰的不少的应用开发商,Animoca 公司最近也大倒苦水,他们购买了400多款手机对应用进行质量测试。 有人问,为何Square与国内的一些公司支持的 Android 机型比你们更多?因为他们跟盒子支付的音频数据方式完全不一样,他们传输数据量小,通讯不加密且只能单向通讯。实现原理比较简单:通过MIC口实现数据接收,使用 android.media.AudioRecord 实现录音,并对采集下来的模拟信号进行处理。主流的音频通讯速率 1.1k/2.2K,传输的数据有限,对于数据量大,也就需要做更多的校验,保证数据传输正确。 那难点在哪呢? 一、硬件问题 1. Android 厂商硬件配置不一致,需要购买很多机型一个个去调试。 2. 音频口供电电压高低不一,电压不够带动驱动的,需要加上电池供电。 3. 音频口引脚接线也尽不相同。像 moto xt800,有些厂家针对这款机器在硬件上做了适配。 4. 录音得出的波形不满足要求,录音失真,回路干扰等。 5. 音频口硬件接触不良,插口比较宽或比较深。 6. 输出过大。 二、软件问题 厂商修改 framework 层代码。一些手机原装ROM可以跑,但刷了第三方ROM就出现了问题。传说中的小米手机统常出现线程操作问题,乱跑。

Pages: Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 Next