具体是这样的 |
可以,一样的,你创建一个activity.java,然后实现activity的功能,最后右键点击工程,export成jar file,然后选择src目录里的activity相关的java文件,然后点击finish就ok了,这样export出来的jar包里就有activity这个类了
其他工程就直接在buildpath中add jars里选择这个jar包,然后程序中依然调用startactivity,就能用了
唯一麻烦的是,导出的jar不能包含afxmanifast.xml和其他的资源,也就是说jar里activity的资源只能在用jar的工程中手动添加,而且不能支持图片等放在res里的资源
也就是说,假如你jar里的activity创建了一个控件,
TextView view =(TextView)this.findViewbyId(R.id.text01);
这样就不行了,必须动态添加,不能用res里的资源,因为res里的资源在编译时就生成了,也就是r.java,这个是固定的,R.id.text01是一个static final int的常量,那你用jar的工程里也有自己的R.java,会有和插件activity中的资源id重名的可能。
如果在导出jar的时候添加了res的目录,那使用jar的工程在导入jar后就编译不过了。同样的,manifast也不能打在jar里,必须手动添加到使用jar的工程的manifast中。
比如jar是一个activity,那使用jar的工程就要在自己的manifast中添加这个activity的声明。不然startactivity会报错说manifast没有添加这个activity的
经过一些查找工作,终于找到了可以在android系统上使用的用于读取Word格式文档的开源包--POI(The Java API For Microsoft Documents)。下载地址:http://poi.apache.org/
POI是Apache的一个子项目,其目的是提供对基于OOXML(Microsoft Office Open XML)和OLE2(Object Linking and Embedding)的各种文档操作的Java APIs包。该项目分为几个组件,其中包括一个叫做HWPF的组件,它只能操作Word文件。这就是我将要使用的组件。HWPF的全称是HorribleWord Processor Format。翻译成中文是“可怕的文档处理格式”,利用HWPF,开发者可以用纯Java代码实现在Android系统是读取Word文档。HWPF组件是POI项目中用来实现Word文档读取的一个重要组件,以下是该组件中几个重要的类:
(1)Range:是所有HWPF对象模型的核心类,Word文档中字符的所有属性都是继承这个类得到的。
(2)HWPFDocument:文件类。任何形式的Word文档的最终表现形式都是对该对象进行一些属性的定制。
(3)Paragraph:是Word文档中基本的组成部分,每个文档都被划分成一个一个的段落,所有的段落最终组成一个Word文档。
(4)Picture:Word文档中嵌入的每张图片都是由Picture对象来表示的,它包括了图片的大小、内容等一系列属性。
(5)Table:Word文档中嵌入的每张表格都是有Table对象来表示的,它包括了表格中每行的TableRow对象和行数等属性。
其他的类文件对以上核心的类进行功能补充,最终完成了Word 文档的读取。
由于Word格式文档中有图片、表格和字符串,为了能在android系统上全部进行显示,选择使用WebView进行显示。首先将Word格式文档中的内容读取出来,加上对应的HTML标签,然后写入HTML文件中,最后直接使用WebView进行读取HTML文件的内容。
判断当前段落是表格、图片还是一段文字的代码:
错误!超链接引用无效。错误!超链接引用无效。错误!超链接引用无效。错误!超链接引用无效。
- public void writeParagraphContent(Paragraph paragraph){ Paragraph p = paragraph; int pnumCharacterRuns = p.numCharacterRuns(); for( int j = 0; j < pnumCharacterRuns; j++){ CharacterRun run = p.getCharacterRun(j); if(run.getPicOffset() == 0 || run.getPicOffset() >= 1000){ if(presentPicture < pictures.size()){ writePicture(); } } else{ try{ String text = run.text(); if(text.length() >= 2 && pnumCharacterRuns < 2){ output.write(text.getBytes()); } else{ int size = run.getFontSize(); int color = run.getColor(); String fontSizeBegin = "<font size=\"" + decideSize(size) + "\">"; String fontColorBegin = "<font color=\"" + decideColor(color) + "\">"; String fontEnd = "</font>"; String boldBegin = "<b>"; String boldEnd = "</b>"; String islaBegin = "<i>"; String islaEnd = "</i>"; output.write(fontSizeBegin.getBytes()); output.write(fontColorBegin.getBytes()); if(run.isBold()){ output.write(boldBegin.getBytes()); } if(run.isItalic()){ output.write(islaBegin.getBytes()); } output.write(text.getBytes()); if(run.isBold()){ output.write(boldEnd.getBytes()); } if(run.isItalic()){ output.write(islaEnd.getBytes()); } output.write(fontEnd.getBytes()); output.write(fontEnd.getBytes()); } } catch(Exception e){ System.out.println("Write File Exception"); } } } }
在SDCARD上创建一个图片的代码:
错误!超链接引用无效。错误!超链接引用无效。错误!超链接引用无效。错误!超链接引用无效。
- public void writePicture(){ Picture picture = (Picture)pictures.get(presentPicture); byte[] pictureBytes = picture.getContent(); Bitmap bitmap = BitmapFactory.decodeByteArray(pictureBytes, 0, pictureBytes.length); makePictureFile(); presentPicture++; File myPicture = new File(picturePath); try{ FileOutputStream outputPicture = new FileOutputStream(myPicture); outputPicture.write(pictureBytes); outputPicture.close(); } catch(Exception e){ System.out.println("outputPicture Exception"); } String imageString = "<img src=\"" + picturePath + "\""; if(bitmap.getWidth() > screenWidth){ imageString = imageString + " " + "width=\"" + screenWidth + "\""; } imageString = imageString + ">"; try{ output.write(imageString.getBytes()); } catch(Exception e){ System.out.println("output Exception"); } }
运行效果截图:
读取图片和文字:
源代码及测试Word文档打包:
http://download.csdn.net/source/3432624
本文系“暑期大学生博客大赛-2011 Android成长篇“参赛文章
开源 Androidpdf 阅读器开发总结
6人收藏此文章, 收藏此文章 发表于4个月前 , 已有1404次阅读 共34个评论 6人收藏此文章
前段时间项目涉及到pdf阅读,因此我开始找了些源码阅读比较,现在贴出各实现方案的对比。希望对大家有帮助。方便大家的阅读,我将自己认为最好的排在最前。
Googlecode:http://code.google.com/p/vudroid/
这是一款可以阅读pdf和djvu格式文本的阅读器。按道理说我使用这个给自己带来一定的麻烦,因为我自己需要剥离pdf部分,因为作者底层用的ndk开发,我还得重新编译so库。但是,在我找到的所有源代码中,此作品是最顺畅的,我不能割舍。如果大家想要快速使用而不想剥离pdf部分,可以使用我的google code:http://code-ernest.googlecode.com/svn/trunk/DocumentViewer
Googlecode: http://code.google.com/p/droidreader/
其采用native library和Vudroid一样:MuPDF
但是它的缺点是,实现上比Vudroid少了那么点顺畅性,在zoom这一点上要输Vudroid,其他方面都很棒。
Googlecode:http://code.google.com/p/apv/
其采用native library和Vudroid一样:MuPDF
理论上来说应该和Vudroid不太差,它的问题是刷新比Vudroid要慢那么一点,没有多点触控。但是,有一点必须说的是:Vudroid读取文本格式的超强,我给过20M的文字版的pdf测试过,vudroid都能顺畅阅读,Vudroid读取扫描版的或者里面有图片的要差一点,速度稍慢;而apv读取扫描版的则顺畅一点,50M的扫描版也没有问题,但是,20M的文字版pdf它不能读,我没有深究什么原因,大家有兴趣的可以发现下,望指教:ernest.he2009@gmail.com
Googlecode: http://code.google.com/p/apdfviewer/
代码最少,整页加载模式中最快的一款,当然,快,就意味着有可能是ndk开发,不错它就是ndk的产物,有兴趣的可以使用。注意:大文件读取有点慢,我以为它死了。这一点上最好的是Vudroid。
另外还有一款是基于Sun的pdf解析库的,纯java,唯一一款纯java的。但是,它的致命之处是,他读不了大文件。Oh no。可以从eoeAndroid论坛获取。
还有许多你可以从Google code上获取到许多类似的。如果你有更好的发现,联系我:ernest.he2009@gmail.com
CoolReader是基于Android平台的阅读器,当前版本为0.7.0.0,支持sdcard下面的文件浏览,支持Txt文件的阅读,具体功能如下:
支持sdcard文件浏览
支持Txt文件的读取
支持大文件的读取(最高测试50M)
支持字体设置
支持自定义背景设置
支持无限级书签
支持书签的删除、跳转
支持百分比显示
支持屏幕旋转
支持键盘滚屏和翻页
支持触摸屏滚屏和翻页
如果您是使用者直接下载程序安装包和安装及使用说明书即可。
地址:http://code.google.com/p/coolreader/downloads/list
如果您是开发者,请使用EclipseGanymede 3.4版本,SDK为RC2,ADT为0.8,JDK为1.6版本,
且Eclipse工作目录编码为UTF-8。
如果您加入我们,可获得Android OS 社区的培训和技术支持。地址:http://androidos.cc/bbs
EBookDroid是一个开源(GPL'ed)VuDroid代码库为基础的Android文档阅读器。
支持格式:
PDF格式
DjVu
XPS
漫画书(CBZ,CBR)
昨天刚刚弄个这个问题。在这个地方有Android的现成源代码打包下载
http://rgruet.free.fr/public/
也有自己在线下载的方法。具体参见:
http://hi.baidu.com/lianglin999/blog/item/9f6108458e31fa97b2b7dcbc.html
USB模式切换
Android实现3G类usb模式自动转换
分类:Android2011-07-04 17:09 134人阅读评论(0)收藏举报
环境系统:Android-2.3 板子:友善之臂提供s3c6410
当一个新的usb插入时,内核会发送一个uevent时间。上层接收到后,做出相应的处理。
如:我使用的为HuaWei ET127的3G网卡,插入arm板上后。没有正确识别成为ttyACM*设备。无法进行AT命令发送。这时。我们需要转换模式。
我使用的是usb_modeswitch可以去官网下载,然后使用arm-gcc进行编译。
首先看一下消息流向
在Android-2.3/system/core/libsysutils/src/NetlinkListener.cpp文件中