android RD

如何让自己的程序调用其他的Activity

具体是这样的
首先有一个框架程序,用来调用其他Activity。我是想以插件的形式添加Activity,这样我就可以很简单的添加我程序的功能,而不需要重新安装?

有什么办法可以实现吗?

可以,一样的,你创建一个activity.java,然后实现activity的功能,最后右键点击工程,exportjar file,然后选择src目录里的activity相关的java文件,然后点击finishok了,这样export出来的jar包里就有activity这个类了
其他工程就直接在buildpathadd jars里选择这个jar包,然后程序中依然调用startactivity,就能用了
唯一麻烦的是,导出的jar不能包含afxmanifast.xml和其他的资源,也就是说jaractivity的资源只能在用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/

       POIApache的一个子项目,其目的是提供对基于OOXMLMicrosoft Office Open XML)和OLE2Object Linking and Embedding)的各种文档操作的Java APIs包。该项目分为几个组件,其中包括一个叫做HWPF的组件,它只能操作Word文件。这就是我将要使用的组件。HWPF的全称是Horrible Word Processor Format。翻译成中文是可怕的文档处理格式,利用HWPF,开发者可以用纯Java代码实现在Android系统是读取Word文档。HWPF组件是POI项目中用来实现Word文档读取的一个重要组件,以下是该组件中几个重要的类:

1Range:是所有HWPF对象模型的核心类,Word文档中字符的所有属性都是继承这个类得到的。

2HWPFDocument:文件类。任何形式的Word文档的最终表现形式都是对该对象进行一些属性的定制。

3Paragraph:是Word文档中基本的组成部分,每个文档都被划分成一个一个的段落,所有的段落最终组成一个Word文档。

4PictureWord文档中嵌入的每张图片都是由Picture对象来表示的,它包括了图片的大小、内容等一系列属性。

5TableWord文档中嵌入的每张表格都是有Table对象来表示的,它包括了表格中每行的TableRow对象和行数等属性。

       其他的类文件对以上核心的类进行功能补充,最终完成了Word 文档的读取。

       由于Word格式文档中有图片、表格和字符串,为了能在android系统上全部进行显示,选择使用WebView进行显示。首先将Word格式文档中的内容读取出来,加上对应的HTML标签,然后写入HTML文件中,最后直接使用WebView进行读取HTML文件的内容。

判断当前段落是表格、图片还是一段文字的代码:

 

view plaincopy to clipboardprint?

1. 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上创建一个图片的代码:

view plaincopy to clipboardprint?

1. 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成长篇参赛文章

开源 Android pdf 阅读器开发总结

6人收藏此文章, 收藏此文章 发表于4个月前 已有1404次阅读 共34个评论 6人收藏此文章 

        前段时间项目涉及到pdf阅读,因此我开始找了些源码阅读比较,现在贴出各实现方案的对比。希望对大家有帮助。方便大家的阅读,我将自己认为最好的排在最前。

            Vudroid

        Google codehttp://code.google.com/p/vudroid/ 

        这是一款可以阅读pdfdjvu格式文本的阅读器。按道理说我使用这个给自己带来一定的麻烦,因为我自己需要剥离pdf部分,因为作者底层用的ndk开发,我还得重新编译so库。但是,在我找到的所有源代码中,此作品是最顺畅的,我不能割舍。如果大家想要快速使用而不想剥离pdf部分,可以使用我的google codehttp://code-ernest.googlecode.com/svn/trunk/DocumentViewer

                droidReader

            Google code: http://code.google.com/p/droidreader/ 

            其采用native libraryVudroid一样:MuPDF

            但是它的缺点是,实现上比Vudroid少了那么点顺畅性,在zoom这一点上要输Vudroid,其他方面都很棒。

            apv

         Google codehttp://code.google.com/p/apv/ 

        其采用native libraryVudroid一样:MuPDF

        理论上来说应该和Vudroid不太差,它的问题是刷新比Vudroid要慢那么一点,没有多点触控。但是,有一点必须说的是:Vudroid读取文本格式的超强,我给过20M的文字版的pdf测试过,vudroid都能顺畅阅读,Vudroid读取扫描版的或者里面有图片的要差一点,速度稍慢;而apv读取扫描版的则顺畅一点,50M的扫描版也没有问题,但是,20M的文字版pdf它不能读,我没有深究什么原因,大家有兴趣的可以发现下,望指教:ernest.he2009@gmail.com

                apdfviewer

            Google code: http://code.google.com/p/apdfviewer/ 

        代码最少,整页加载模式中最快的一款,当然,快,就意味着有可能是ndk开发,不错它就是ndk的产物,有兴趣的可以使用。注意:大文件读取有点慢,我以为它死了。这一点上最好的是Vudroid

 

        另外还有一款是基于Sunpdf解析库的,纯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 

如果您是开发者,请使用Eclipse Ganymede 3.4版本,SDKRC2ADT0.8JDK1.6版本, 

Eclipse工作目录编码为UTF-8。 

如果您加入我们,可获得Android OS 社区的培训和技术支持。 地址:http://androidos.cc/bbs

EBookDroid是一个开源(GPL'edVuDroid代码库为基础的Android文档阅读器。

支持格式:

PDF格式

DjVu

XPS

漫画书(CBZCBR

昨天刚刚弄个这个问题。在这个地方有Android的现成源代码打包下载
http://rgruet.free.fr/public/

也有自己在线下载的方法。具体参见:
http://hi.baidu.com/lianglin999/blog/item/9f6108458e31fa97b2b7dcbc.html

http://www.cnmsdn.com/html/201101/1296289262ID9355_2.html

USB模式切换

Android实现3Gusb模式自动转换 

分类: Android 2011-07-04 17:09 134人阅读 评论(0) 收藏 举报 

环境系统:Android-2.3  板子:友善之臂提供s3c6410

当一个新的usb插入时,内核会发送一个uevent时间。上层接收到后,做出相应的处理。

如:我使用的为HuaWei ET1273G网卡,插入arm板上后。没有正确识别成为ttyACM*设备。无法进行AT命令发送。这时。我们需要转换模式。

    我使用的是usb_modeswitch可以去官网下载,然后使用arm-gcc进行编译。

首先看一下消息流向

Android-2.3/system/core/libsysutils/src/NetlinkListener.cpp文件中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值