旁观者

参与软件开发开发这些年来,不断地遇到新领域新知识点,屡屡感受到新进入者的迷惑和彷徨,所以对遇到的每一个问题都详细记录问题现象、解决思路以及解决方案,并在blog中留下印迹,以备他日有心人google之而知之。
你们的新手之痛,你们的新业务发展之初的思路混沌,我都感同身受,所以欢迎和我一起探讨这些话题,诸如,文本挖掘/自然语言处理/Web3.0/J2ME/Web2.0/IVR/SMS/MMS/WAP/SIP/等等,知无不言言无不尽。
posts - 495, comments - 881, trackbacks - 39, articles - 1
   ::  ::  ::  :: 订阅 订阅 :: 管理

[J2ME]RSSOwlMidlet(RSS无线阅读器)开源说明

Posted on 2005-10-07 23:12 旁观者 阅读(4150) 评论(17)  编辑 收藏 网摘 所属分类: Java

 

郑昀@ultrapower

产品名称

产品版本

Keyword: RssReader RssFeed Channel j2me midp midlet  kxml xmlpull RMS RssOwl java

RSS无线阅读器

0.7.1729

 [J2ME][开源]RSSOwlMidlet

(RSS无线阅读器)

开源说明

摘要:

本文档给出RSS无线阅读器J2ME版本的开源说明。

1 简单描述RSS无线阅读器J2ME版本的功能和特别之处

2 描述调用RSS无线阅读器J2ME版本的开源版权声明

3 给出了 RSS无线阅读器J2ME版本的下载资源

 

我的RssReader资源:

1《[J2ME]RSSOwlMidlet(RSS无线阅读器)开源说明

2《[J2ME]RSSOwlMidlet(RSS无线阅读器)设计说明

3:下载源代码:http://files.cnblogs.com/zhengyun_ustc/RSSOwlMidlet-src.rar

4:下载midletjad: RSSOwlMidlet.jad jar: RSSOwlMidlet.jar (jar包可能有点偏大,您可以进行混淆来缩小)

1背景、功能和特别之处

摘要:本章 简单描述RSS无线阅读器J2ME版本的背景、功能和特别之处。

 

我们提供的RSS无线阅读器J2ME版本[开源]是一个可以下载到手机(例如Nokia7610)或者其他无线手持设备(例如PocketPC)的应用程序,用来阅读存在于Internet中广泛的RSS新闻源,比如

豆瓣最新评论 http://www.douban.com/feed/review/latest

博客堂 http://blog.joycode.com/MainFeed.aspx

博客园 http://www.cnblogs.com/rss.aspx

CSDN技术文档 http://www.csdn.net/Rss/RssFeed.aspx?rssid=3

ChinaUnix.net-业界新闻与评论 http://bbs.chinaunix.net/rss/46.xml

keso's blog http://feeds.feedburner.com/PlayinWithIt

等等,这些新闻源我们将预置在本应用程序中。

 

下面介绍RSS无线阅读器的功能列表:

l         RSS Feed列表

n         添加Rss Feed

n         编辑Rss Feed

n         删除Rss Feed

l         读取Rss Feed新闻

n         查看新闻摘要

l         重新读取Rss Feed新闻

l         关于我

 

下面就是应用程序的主界面:
                                

1-1 RSS无线阅读器的主界面

 

1-2 RSS无线阅读器的读取动画界面

 

1-3 RSS无线阅读器的读取新闻列表界面

 

下面,我们说说这个应用程序的特别之处。

这个应用程序的思路来自于两个开源的应用程序:

How to create a J2ME MIDP RSS Reader application with NetBeans 4.0 作者 Tommi Laukkanen

J2ME手机电话本 作者 garrey

RSS读取以及用xmlpull解析这部分思路,采用了Tommi 的思路;

MVC的类分解,以及对RMS记录存储的封装模式,采用了 garrey 的思路。

 

对于获取RMS中存储的所有的Rss Feed列表,采用了文章《探索J2ME:对记录进行排序》的代码,放弃了garreyRecordComparator比较器的实现。

另外,在调试过程中,也加入了我的一些思考,以及兼容各种RSS的办法。

 

总结一下特别之处。

特别是比原来Tommi 的版本增加了几个特性:

l         最大的改动就是,原来Tommi把视图/控制器都放在RssReaderMIDlet.java了,而我们将视图分拆出来为RssFeedAdd.javaRssFeedEdit.javaRssFeedList.java等等,控制器则为GUIController.java

l         可以添加/编辑/删除Rss Feed书签;

l         原来TommiFeed列表以及URL存储在RMS的一个条目,我放弃了这种做法,而是像garrey处理电话记录一样;

l         当请求远端服务器时,加入了动画等候画面,提示用户正在获取新闻列表;

l         由于采用了xmlpull方式解析XML,所以可以做到一边后台扫描XML文档,一边前台将解析到的新闻Title显示在用户界面上,不影响用户阅读新闻列表;

l         兼容博客堂/博客园这种.Text类型BlogRSS,因为它们限制请求方的“User-Agent”;

l         采用KxmlParser的自动检测RSS XML文档的编码格式,所以不用用户专门设置编码格式。

 

2 开源版权声明

摘要:本章描述RSS无线阅读器J2ME版本的开源版权声明。

 

由于我这个版本的RSS J2ME阅读器也是基于Tommigarrey源代码基础上改编而来的,所以决定遵照GPL协议的大意开放源代码,您可以自由传播和修改,在遵照下面的约束条件的前提下:

 

条件1

只要你在RSS无线阅读器J2ME版本的每一副本上明显和恰当地出版版权声明,保持此许可证的声明和没有担保的声明完整无损,并和程序一起给每个其他的程序接受者一份许可证的副本,你就可以用任何媒体复制和发布你收到的原始的程序的源代码。你可以为转让副本的实际行动收取一定费用。你也有权选择提供担保以换取一定的费用。

 

条件2

你可以修改RSS无线阅读器J2ME版本程序的一个或几个副本或程序的任何部分,以此形成基于程序的作品。只要你同时满足下面的所有条件,你就可以按前面第一款的要求复制和发布这一经过修改的程序或作品。

 

a

你必须在修改的文件中附有明确的说明:你修改了这一文件及具体的修改日期。

 

b

你必须使你发布或出版的作品(它包含程序的全部或一部分,或包含由程序的全部或部分衍生的作品)允许第三方作为整体按许可证条款免费使用。

 

c

如果修改的程序在运行时以交互方式读取命令,你必须使它在开始进入常规的交互使用方式时打印或显示声明:包括适当的版权声明和没有担保的声明(或者你提供担保的声明);用户可以按此许可证条款重新发布程序的说明;并告诉用户如何看到这一许可证的副本。(例外的情况:如果原始程序以交互方式工作,它并不打印这样的声明,你的基于程序的作品也就不用打印声明)。

 

这样,您就可以自由使用并传播本源代码,当然请您原封不动地保留原作者信息。

 

 

3 资源

我的RssReader资源:

1《[J2ME]RSSOwlMidlet(RSS无线阅读器)开源说明

2《[J2ME]RSSOwlMidlet(RSS无线阅读器)设计说明

3:下载源代码:http://files.cnblogs.com/zhengyun_ustc/RSSOwlMidlet-src.rar

4:下载midletjad: RSSOwlMidlet.jad jar: RSSOwlMidlet.jar (jar包可能有点偏大,您可以进行混淆来缩小)

 

网络资源:

1How to create a J2ME MIDP RSS Reader application with NetBeans 4.0 作者 Tommi Laukkanen

2J2ME手机电话本 作者 garrey

3探索J2ME:对记录进行排序

4kxml2官方站点:http://kxml.sourceforge.net/

5Xmlpull官方站点:http://www.xmlpull.org/

6:实例教您KXMLJ2MEXML语法分析的利器

 

 

编写者

日期

关键词

郑昀@ultrapower

2005-10-07

RssReader RssFeed Channel

j2me midp midlet

kxml xmlpull

RMS

RssOwl

java

 

 

 

0
0
(请您对文章做出评价)
« 上一篇:[p2p]手机是否可以通过JXTA网络与PC机/PocketPC/WindowsMobile实现P2P呢?
» 下一篇:[J2ME]RSSOwlMidlet(RSS无线阅读器)设计说明

Feedback

#1楼[楼主]   回复  引用  查看    

2005-10-21 14:23 by 让变化成为计划的一部分      
如果你看到"Error: Error while parsing RSS data: w: unresolved: (position:TEXT
@14:224 in java.io.InputStreamReader@ea0ef881"的错误,那么是不是前面还输出了许多XML的节点名称,那么是否有"#==XML
Node Name:html"这样的输出呢?
如果有,这表明该Rss Feed返回的并不是xml,而是html文档。
如下所示:

??require START_TAG
#==XML Node Name:html
#==XML Node Name:null
#==XML Node Name:head
#==XML Node Name:null
#==XML Node Name:title
#==XML Node Name:null
#==XML Node Name:title
#==XML Node Name:null
#==XML Node Name:meta
#==XML Node Name:meta
#==XML Node Name:null
#==XML Node Name:link
#==XML Node Name:link
#==XML Node Name:null
#==XML Node Name:link
#==XML Node Name:link
#==XML Node Name:null
#==XML Node Name:head
#==XML Node Name:null
#==XML Node Name:body
#==XML Node Name:null
#==XML Node Name:form
#==XML Node Name:null
#==XML Node Name:a
#==XML Node Name:img
#==XML Node Name:img
#==XML Node Name:a
#==XML Node Name:null
#==XML Node Name:div
#==XML Node Name:a
#==XML Node Name:null
#==XML Node Name:a
#==XML Node Name:null
#==XML Node Name:a
#==XML Node Name:null
#==XML Node Name:a
#==XML Node Name:null
#==XML Node Name:a
#==XML Node Name:null
#==XML Node Name:a
#==XML Node Name:null
#==XML Node Name:a
#==XML Node Name:null
#==XML Node Name:a
Error: Error while parsing RSS data:
org.xmlpull.v1.XmlPullParserException: unresolved:  
(position:TEXT @14:224 in java.io.InputStreamReader@f828ed68)

#2楼   回复  引用    

2005-11-26 17:28 by afeuec[未注册用户]
我在6600手机上安装后,运行提示“无法解析”,不能用啊?

#3楼[楼主]   回复  引用  查看    

2005-11-26 22:58 by 让变化成为计划的一部分      
6600手机我测试过,你试试看其它的rss源,并不是所有的都无法解析的。这个其实在模拟器上先行测试,你就知道哪些RSS格式实际上解析不了。

#4楼[楼主]   回复  引用  查看    

2005-11-28 11:08 by 让变化成为计划的一部分      
你可以看看我的
http://www.cnblogs.com/zhengyun_ustc/archive/2005/10/31/ipodderxmobile.html
,这里面能够解析RSS各种格式,比如ATOM,Rss1.0,RSS2.0等等。
只不过把这些解析工作放在了服务器端,传给手机端的只是手机适合显示的格式。

#5楼   回复  引用    

2005-12-12 10:05 by sven[未注册用户]
我也想准备一个手机RSS方面的项目,能否联系一下,请教一下!
MSN:hongpingzhang8@hotmail.com
MO:13308452048

#6楼[楼主]   回复  引用  查看    

2005-12-12 10:36 by 让变化成为计划的一部分      
欢迎大家探讨本Blog涉及的所有软件课题。我的Google Talk ID:zhengyun(at)gmail.com。

#7楼   回复  引用    

2005-12-26 15:46 by 陌生人[未注册用户]
无法解析,可能是连接方式的问题,我用cmwap方式也出现这个错误,但用cmnet好着

#8楼[楼主]   回复  引用  查看    

2005-12-26 16:23 by 让变化成为计划的一部分      
推荐使用我新开发的bloglines手机伴侣,它是搭配全球最大的blog订阅服务站点www.bloglines.com的手机javaME版本软件。我即将开放源代码。

#9楼   回复  引用    

2005-12-26 17:03 by 陌生人[未注册用户]
哪里可以下载客户端啊?

#10楼[楼主]   回复  引用  查看    

2005-12-27 10:20 by 让变化成为计划的一部分      
即将发布源代码和release安装jar包。

#11楼   回复  引用    

2006-02-13 17:53 by liwei[未注册用户]
朋友你好,我以前是做手机游戏的,你的blog对我帮助很大!
我用你的源代码再wtk2.0上打包,总是报错,无法完成,出现以下错误
Building "Rss"

d:\JBuilderX\j2mewtk2.0\apps\Rss\src\com\ultrapower\tools\Settings.java:428: warning: finally clause cannot complete normally

}

^

d:\JBuilderX\j2mewtk2.0\apps\Rss\src\com\ultrapower\view\RssFeedList.java:173: deleteAll() in com.ultrapower.view.RssFeedList cannot implement deleteAll() in javax.microedition.lcdui.Choice; attempting to assign weaker access privileges; was public

private synchronized void deleteAll()

^

d:\JBuilderX\j2mewtk2.0\apps\Rss\src\com\ultrapower\view\RssFeedOpen.java:191: deleteAll() in com.ultrapower.view.RssFeedOpen cannot override deleteAll() in javax.microedition.lcdui.Form; attempting to assign weaker access privileges; was public

private synchronized void deleteAll()

^

2 errors

1 warning

com.sun.kvem.ktools.ExecutionException

Build failed
不知道怎么解决,请帮忙!!

#12楼[楼主]   回复  引用  查看    

2006-02-13 18:14 by 让变化成为计划的一部分      
/*由于MIDP 2.0中才定义了List的deleteAll()方法,
但是MIDP1.0中List支持delete(int itemNum).
所以在MIDP1.0中,可以使用List的size()得到当前List中的Item的数量,
然后使用for循环delete(int itemNum),这样在MIDP1.0中实现deleteAll的功能。
*/
你可以看RssFeedList.java源文件,里面写的这段话。所以你不要用midp2.0来编译,应该用midp1.0。

#13楼   回复  引用    

2006-05-09 10:32 by lulin[未注册用户]
你好!我的毕业设计就是——基于J2ME的RSS新闻阅读器
可我还有很多基本的知识都不太懂
请问你那边有没一些中文版的资料
可否发到我邮箱]不胜感激
happylulin2008@yahoo.com.cn

#14楼[楼主]   回复  引用  查看    

2006-05-09 11:22 by 让变化成为计划的一部分      
j2me的基础知识可以到www.j2medev.com看看。
rss的基础知识,网络上有很多讲解的。

#15楼   回复  引用    

2007-03-02 16:34 by tk[未注册用户]
你好。
对于有全文聚合的feed,j2me上可以从中解析出文章的内容,但是对于没有全文聚合,只给出文章地址的一些feed,又该如何来获取全文的内容呢?
不知道有没有更好的想法。

#16楼[楼主]   回复  引用  查看    

2007-03-02 21:43 by 让变化成为计划的一部分      
这种事情只能在服务期端自己去解析HTML,提取博文正文;肯定不能再在j2me这边做了。博文正文长的话,服务器端还需要告诉j2me端如何分页。