任何问题请联系WX:uu16853

买模板送网站采集器 让你轻松放开双手运营网站!

购买更多有优惠!

Android编程向导电子书下载(PDF格式) Android开发技术

  Android编程向导(ANDROID A PROGRAMMER’S GUIDE)一书的PDF版格式电子书下载,该书是最早的谷歌Android软件开发的书籍之一,稍微有点编程知识的人相信很容易掌握本书的内容。    入门方便的有Android各种界面控件比如TextView、EditText、ListView的使用,如何使用xml方式来布局界面,结合着SDK文档来看相信你很容易理解Java这样的高层面易懂的编程方式。   Android123本地下载 http://down.android123.com/android-book.pdf  

Google开发者日有关Android平台资源 Android开发技术

  2008年Google在北京举行的开发者日中部分涉及了云计算的内容,比如AJAX API调用Web服务,Android以及Dalvik VM以及浏览器Gears组件等一些应用的视频会议,在下面这个官方网站中可以找到视频录像以及PDF资源下载。有兴趣的网友可以查看下面相关的内容:    http://sites.google.com/site/developerdaychina/

SharedPreferences存储类效率分析 Android开发技术

  SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长整形、Int整形、String字符串型的保存,它是什么样的处理方式呢?   SharedPreferences类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问,android123提示最终是以xml方式来保存,整体效率来看不是特别的高,对于常规的轻量级而言比SQLite要好不少,如果真的存储量不大可以考虑自己定义文件格式。xml处理时Dalvik会通过自带底层的本地XML Parser解析,比如XMLpull方式,这样对于内存资源占用比较好。    

Android中的XML解析各种方式对比 Android开发技术

  随着Web2.0的兴起XML越来越受大家重视,作为一种标准的数据存储方式Android是如何支持的呢? 在android平台中提供了多种xml parser解析器,常见包含dom、sax、pull这样的主流方法。目前G1的处理器和内存相对于MIDP设备来说大了很多,对于数据量小于10KB以内的文件使用Dom方式比较方便,主要是XPath查找很好,android123提示如果是一个属性之多的大型文件可以通过sax这样的单向流方式解析,它的好处就是不占用太多的内存,但是控制起来和代码量都是比较大的。这里和J2ME的KXML相同的内核。   Android平台中相对于常规的存储,SharedPreferences足够保存,但是他无法很好的处理外部文件,比如存放在sdcard中的内容,而XML可以很好的决绝,对于复杂的文件和多种方式查询,可以使用结构化的数据库语言SQL来解决,不过SQLite的性能一直表现一般,在资源占用上还是很大的。

Android开发过程中很多特性受权限影响 Android开发技术

  如果在开发你的Android软件时莫名奇妙的无法通话,首先使用Logcat查看调试信息,一般出错的问题都是Loe.w的橙色权限提醒问题,当然还有很多高级的系统操作都需要Root权限,Android平台在设计时仍然存在很多的问题,比如Activity的生命周期,如果有部分软件设计缺陷会导致系统运行缓慢而无法关闭,解决的方法在没有Kill Process的情况下只有重启的你的G1,还有部分使用ADP1开发机的用户软件在release时一定不要忘记在g1上测试,否则很多问题都是因为权限而放弃。   相关的常规权限可以查android123的 Android权限列表permission说明

Android视频播放类VideoView解析 Android开发技术

  目前Android平台作为Google自己封装设计,提供的Java Dalvik在算法处理效率无法与C/C++或ARM ASM相提并论在描述或移植一些本地语言的解码器上显得无能为力,目前整个平台仅支持MP4的H.264、3GP和WMV视频的解析,快速的制作一个系统播放器可以通过使用Android内置的VideoView类来处理,因为JNI本地调用的so库都必须独立高权限安装,我们不再赘述C层的实现方法,因为调用的都是接口原理均为一样。   VideoView使用很简单,在过去的几个版本中有了简单修改,我们可以在实例化这个类时传递一个本地的路径比如\sdcard\android123.mp4、或一个InputSream对象,当然对流媒体的Uri支持也是没有问题的。  这里我们调用的例子直接构造,动态设置文件路径,有关详细的方法可以查看SDK,下面是设置路径的,基本上设计一个播放器核心代码在10左右,目前真个解码器平台尚未完善,比如Flash等FLV解码器的支持还需要固件的升级,这里可以使用Android视频转换王来解决G1上的播放问题。  VideoView vv; vv = new VideoView(this); vv.setVideoPath(filePath); //绝对路径 w.setVideoURI(uri); //传递一个uri

OpenGL ES API介绍,Android游戏开发必备 Android开发技术

  Android平台中底层包含了OpenGL ES库,这里我们直接在工程中导入import javax.microedition.khronos.opengles.GL10; 库,直接实例化OpenGLContext的对象mOpenGLContext就创建了一个3D的支持接口,通常我们需要自己构造一个场景类重写下面三个方法protected void onAttachedToWindow() 、protected void onDetachedFromWindow() 、 protected void onDraw(Canvas canvas)。   通过创建OpenGLContext对象,直接实例化GL10,这里10代表1.0版本,GL10 gl = (GL10)(mOpenGLContext.getGL()); 即可完成。在onDraw中处理canvas需要在开始和结束分别调用canvas绘制的mOpenGLContext.waitNative和waitGL(); 作为开始和结束,和DirectX相比OpenGL在轻量级的处理性能还是很不错的。

Android平台底层限制太多 Android开发技术

  目前仍然有很多程序无法完成在标准的Android平台,同时ADP1被禁止访问Market很多问题仍然变得无法很好解决,没有Root权限导致了无法很好的解决底层的问题,比如安装驱动、安装一些本地库,如果Google在工程模式下严格控制数字签名问题那么限制就更大了。   目前不开放Android底层无法完成的问题,设计使用手写输入法识别库,从Java层来说处理OCR这样的算法效率依然很低,速度和性能仍然无法得到平衡,如果有Root权限就可以安装自己的Native库,否则只有进行修改定制自己的ROM。Root权限的缺乏导致了程序不能被结束进程,一些设计有问题的程序只有在重新启动后才能解决(虽然Activity有自动的force close保护,但问题还是很多的)。   使用自定制ROM对于在未来的OMS平台上仍然存在一些问题,oms在Widget、手写输入上都已经实现,最终的测试还要等到oPhone上市,近期Android开发网(android123.com.cn)推出一些简单的游戏设计教程。

有关Android签名问题总结 Android开发技术

  在整个平台的安全性方面Google也使用了Android签名机制,当然这里使用Sun的针对Jar文件签名工具jarsigner即可,这里我们需要了解一些问题,为什么要签名? 其实安装到真机G1的软件都必须签名。   平时我们在Android Market上下载的软件都必需签名,所以说上传时是免不了这个操作的,常规的签名步骤可以查看 Android签名用keytool和jarsigner制作apk文件 这点Google设计的还好,没有像Symbian那样针对S60第三版和第五版都需要花费每次200美元的测试费用,如果遇到了ZipException invalid entry compressed size的错误方法过去我们在无法对jar进行签名,Android jarsigner问题一文中提到了,主要原因是平时Eclipse使用的ADT插件已经赋予了DEBUG权限的数字签名,我们可以通过导出一个未签名的APK文件就可以解决,参考如何导出一个未签名的APK文件?即可顺利的签名。

Android开发机1.1固件允许访问付费软件 Android开发技术

  近期Google表示封锁Android开发机(ADP1)对Market付费软件的访问,而过去很多开发人员花费399美元+25美元注册费用购买的Android Dev Phone无法购买高级软件表示了不满,近期Google推出了新版针对ADP1 1.1固件,通过新的Copy-protection拷贝保护机制在最大限度上保护版权,昨天我们已经介绍了 Market新功能,保护你的Android软件安全 方法,其实这样做仍然不能阻止我们使用自己的开发板来修改进行访问,不过在安全技术上似乎Google采取了IMEI+SIM卡的IMSI进行了多重的验证,如果不封IP、不判断Android设备码的情况下,破解还是可以进行的。 Android Dev Phone 1的1.1固件改进: 支持语音搜索功能 Voice Search付费应用程序 Market闹钟问题修正 Alarm Clock发送Gmail卡死问题修正邮件提醒和刷新间隔地图功能可显示商业评论 Latitude

Android HomeScreen Launcher解析(一) Android开发技术

  很多网友在邮件中提到了Android的桌面Home Screen有关的开发,我们可以看到常规的桌面上有3个Widgets,比如一个Clock、Search 和不常用的Phooto Frame像框,整个桌面响应的是android.intent.category.HOME这个Intent Action。目前由于权限问题我们无法在原始的Google桌面程序添加Widget在行规的没有Root权限的机器上,其实就是一个provider操作,但我们可以通过自己获取android.intent.cateory.Home这个action来替换掉系统默认的程序,这样就可以自定义我们的Android桌面为类似iPhone等样式。   在Git中我们可以直接获取Launcher,进行修改分析,整个桌面的设计主要是捕获一些常规的事情,比如新装程序在桌面上创建快捷方式、提供Widget的移动等等,可以加入一些类似天气预报、RSS订阅等功能,详细的我们下次解析,涉及图片中的Widget如下:  

Android支持PDF和Office需要底层支持 Android开发技术

  目前Android平台提供了高层的Java语言开发虽然在进度上可以很好的控制,但处理一些效率敏感的算法仍然不能让人满意,目前QuickOffice公司已经推出了Android操作系统上的Office软件可以读取、编辑Word、Excel文档,但是在测试时发现并非我们想象的那么顺利,在打开一个400KB的Word文档时几乎用去了至少30秒,而在编辑方面几乎无法操作,除了force close外还是看到了缺乏底层的无奈。   而PDF解析上同样存在很多问题,不过G1的运行内存还是比较大,处理起来相对顺利,不过仍然和Windows Mobile自带的Office Mobile无法想提丙纶,目前随着微软向Office 2007格式的兼容,对于docx这类的全新格式,在解析库上还需要进一步更新。而唯一很好的解决方式就是等待Google自己和微软、Adobe合作,有消息表明和Adobe的合作还是比较顺利,未来的Android平台会预装Flash 10 Lite提供更多的支持,比如Flv视频解码器、Flash游戏、动画等支持。

Android自定义Adapter步骤 Android开发技术

  Android中提供了大量的适配器Adapter,常见的有BaseAdapter、SimpleCursorAdapter、CursorAdapter等等,其中包含Cursor可以自动和数据库关联。一般在ListView中我们需要定义一些显示的内容,需要用到继承Adapter实现窗口的子类化。   一般我们需要重写Adapter类的四个方法即可,分别是public int getCount() 、public Object getItem(int position)、public long getItemId(int position)和public View getView(int position, View convertView, ViewGroup parent) ,调用时仍然是在ListView或ListActivity中直接setAdapter(CustomAdapter);即可,比较典型的方法参考Android的自带控件Gallery的实现,详细的在API Demo中查找即可。  

Android数据库SQLite使用方法 Android开发技术

  大多数过去做MIS或OA系统的可能都很熟悉数据库相关的操作,Android平台和Windows Mobile一样都支持本地的SQL数据处理,这点Android使用了比MySQL嵌入版更轻量级的SQLite,Google有关Android数据操作的方法提供一个高层的封装就是ContentProvider。一组数据操作可以使用ContentValues对象来完成度或写,ContentValues提供了put和get两种方法分别对应设置和读取,如果对于原始SQL语法比较了解还是建议使用更为灵活的raw执行语言比较快。   主要注意的是Android中使用的SQLite受数据库版本因素而限制,SQLiteDatabase是原始的数据库操作类,提供了createDatabase方法来创建一个新的数据库,最终保存为.db格式的文件,而已经存在的数据可以使用openDatabase方法直接打开,使用execSQL方法可以直接执行SQL语句,完成插入、更新、删除等等,而查询也可以使用本地的SQL语句直接完成,使用rawQuery方法即可,这样会返回一个Cursor对象,我们直接遍历Cursor使用movetoFisrt和movetoNext方法进行遍历查询。直接使用getString或getInt等方法获取每列的数据即可。   而ContentProvider方式比较简单,大家直接看Android SDK中的NoteList例子就很好理解了。

Android开源输入法OpenWnn解析 Android开发技术

  随着四月份的到来,Android平台Cupcake更新分支包即将完成,最新的应用程序中多出了Camrecorder这个视频录制程序,Android开源输入法OpenWnn,同时T-Mobile G1和ADP1用户都可以在下个月得到Cupcake更新的推送通过OTA方式,本次的改进是Android平台自1.0出现以来真正意义上的变革。   在git中我们已经可以看到Google的中文输入法支持,在词库设计方面还是支持联想的,效率表现的一般,屏幕键盘的出现将让中国大陆地区HTC Dream用户实现以下改进:   1.中文显示界面,在国家时区设置中修改为 GMT+8的北京,整个界面变成简体中文版。   2.中文输入法,目前Android平台的中文输入法已经完成了,通过OpenWnn可以清楚的看到这个来自日本的 omronsoft公司提供了亚洲地区语言的输入框架,OpenWnnZHCN类可以帮助我们实现中文相关的处理,而中国移动OMS手机中已经支持了手写操作,如下图   3.在短信息部分,Google官方已经测试到了PDU编码类,在非7位的标准GSM编码中无法执行到catch的bug,对于使用unicode地区的国家将会直接使用UCS2编码,所以中文短信发送上也得到了解决。   4.不过目前Android平台对于SIM卡STK功能完善的不是很好,比如使用中国地区大陆的SIM卡不会显示移动的SIM卡菜单表。

oms和android在开发上有什么不同? Android开发技术

  部分网友对中移动OMS平台和谷歌Android相比到底有什么不同,这里我们主要来说下它们之间几个不一样的地方。首先有必要了解下OMS,OMS是根据开源Android修改而来,由中国移动主持和北京博思通讯联合开发,支持TD-SCDMA、CMMB等特性的中国特色Android手机。全称为Open Mobile System,详细的可以在oms手机网了解。   1.OMS在很多组件上和Android是完全一样的,仅仅是UI改变了,在RIL层上部分会兼容TD,还有OMS还有很多中移动的附件组件,139邮箱、手机电视、飞信等等都是CMCC所有,当然还有部分第三方小公司的产品,比如词典了、部分游戏等等。   2.目前我们测试的Dopod Magic使用了OMS系统,从关于信息可以看到使用了Android1.1固件,但版本号比较有意思和过去MOTO的某款经典机型一样为A188,在开机时也可以看到,在基带、内核上版本和我们的熟悉的RC33没有太大区别,不过最终还是使用了cupcake更新,在输入方面可以看到已经完善了。   3.开发方面我们可以看到最终OMS的桌面将会有两套方案,G1主屏和博思主屏,博思主频多出了一个名为Widget家园的程序,这里可以让我们看到整个Home Screen变换成了类似iPhone的外观或者说魅族M8的桌面,虽然不是很有什么创意不过还是算做了些改进,否则和Android也太像了,更多的都是在UI上的修改。   4.最终OMS上怎么开发呢? Java的IDE还是Eclipse,编译器还是ADT,生成的还是APK文件,最终不同的仅仅是运行在国产的手机上,目前已知的终端有HTC Magic的Dopod G2版本还有联想oPhone。可以在oPhone手机网中了解。

Android Widget开发 Android开发技术

  近期Android 1.5 SDK中加入了不少开发框架,AppWidget framework 可以方便的在Android桌面上开发Widget小工具,在过去我们已经看到了Live Folder中,下面就以Google官方的一个例子来做介绍吧.    首先我们需要计算下最小高度, 默认情况下Android桌面使用的是基于网格的布局,使用下面的公式可以很好的处理:  Minimum size in dip = (Number of cells * 74dip) – 2dipIn this example, we want our widget to be 2 cells wide and 1 cell tall, which means we should request a minimum size 146dip x 72dip. We’re also going to request updates once […]

Android Live Folder开发介绍 Android开发技术

    谷歌在最新的Android平台中加入了Home安全和Widget框架,同时在桌面UI上引入了新的Live Folder对象,在过去我们可以把这个对象当作一个容器来存放一些常用的图标,而本次Android 1.5 Cupcake中的Live Folder有了大幅的增强。比如加入e-books、e-mails查询以及RSS feeds检测,甚至是音乐的playlists都可以很好的完成。 这样大大方便了用户的操作。Android标准的桌面被分割成为了3个部分,用户有足够的空间来自定义排序整个显示效果比iPhone的n宫格显得更整洁。开发LiveFolder我们应该从开源代码从的Launcher中获取更多参考的接口,以及在1.5 SDK中了解更多内容。

ADP1 1.5 Cupcake更新固件下载 Android开发技术

  近日HTC发布了有关Android Dev Phone 1的1.5固件包,购买了Android开发机ADP1的用户可以手动的更新到最新的Cupcake,其中主要包含   Radio Image 无线映像 ota-radio-2_22_19_26I.zip 、System Image 系统映像 signed-dream_devphone-img-147201.zip、Recovery Image 恢复映像  signed-dream_devphone-ota-147201.zip 下载地址可以查看HTC官方网页 http://www.htc.com/www/support/android/adp.html#s3   里面可以找到详细的更新步骤  

ADT 0.9插件XML创建工具 Android开发技术

   Android ADT Plugin 0.9插件中新增了所有类型的XML文件创建,开发人员可以方便在创建各种类型的XML文件通过New Android XML File对话框,比如说Layout可以创建出有关界面布局的文件,Values可以创建出常规的字符串、数组资源文件,Menu可以创建菜单项目,而Preference可以直接设计参数类型对话框,Searchable为搜索框以及动画Animation类型,其中目前AppWidget Provider是不可选的内容。    而整个Android项目的全局文件androidmanifest.xml中可以设置运营商MCC国际代号Conrty Code、MNC网络代号Network Code。语言Lanuage区域Region,程序启动方向Orientation,像素间距Pixel Density,触控Touch Screen,Keyboard键盘类型,Text Input输入框,如图

Android API Level介绍 Android开发技术

  随着Android 1.1、1.5固件的推出目前整个SDK将API分为了多个版本,其中T-Mobile G1刚刚推出时的固件版本为1.0 API Level为1.下面是一个简单的对应关系:下面是ADT 0.9创建新工程时的选项,如果已经选择后可以在androidmanifest.xml文件中修改Min SDK Version的值来设置,如果使用了新的API最终目标的平台必需兼容,而高版本的API向下兼容,使用老版本SDK开发的程序仍然可以工作在最新的固件。   Android 1.0 固件  API Level为1   Android 1.1固件  API Level为2   Android 1.5固件 API Level为3.

OMS开发平台介绍 Android开发技术

  近期随着oPhone手机的上市,中国移动的OMS平台相关的开发内容。Android123已经做了两个专题内容网站,帮助大家了解 BAE开发网以及OMS开发网。这里广大的网友放心。Android程序可以完全兼容OMS平台,它们的二进制编码完全相同仅为APK文件。   BAE是Browser based Application Engine的简称,主要开发方式为HTML+JavaScript。这里仍然是一个MVC的模型,开发人员通过Html+CSS来布局窗口界面,使用JS脚本控制逻辑。这里网络传输均使用Ajax技术。BAE最终运行在widget家园中的微技管理器中。详细的开发可以参考上段中我们提到的学习资源站点。   OMS是Open Mobile System的缩写,是CMCC深度定制的一款基于Android二次开发系统,目前联想O1使用该平台,支持TD网络。这里提供了全新的Home Screen,快讯开发、飞信API使用。详细的DCDProvider、Fetion API我们会在上文提到的站点提供完整的资料。

Android 1.5开发体验 Android开发技术

  很多网友对于Android 1.5 SDK还是比较陌生了,过去出现的问题,我们已经在前期内容中讲到API兼容问题,以及ADT 0.9插件无法安装的解决方法,此前出现两个版本的1.5 SDK一个为preview预览版和release 1正式发行版。需要android开发人员注意,同时最新的adt插件是时 0.9.1.v200905011822-162 ,需要大家确认,这里新增的Android Virtual Devices Manager可以帮助开发人员快速的配置自己的API Level以及模拟器的各个特性,比如Sdcard映像的大小、最终的固件版本可选1.1和1.5以及模拟器的屏幕,比如HVGA、QVGA以及相对应的横屏模式。 而新的layout布局工具也有很大的改进,界面的设计基本上可以做到可视化,但是复杂些的xml结构或细节的出错都会遇到null空指针的bug,这里Eclipse配合插件明显不如微软的Visual Studio来的稳定。

Dalvik Debug Monitor Android调试工具 Android开发技术

    很多网友对于一些常的Android规程序性能测试、文件管理或屏幕截图均使用Eclipse中的DDMS插件来查看,其实通过SDK中提供的Dalvik Debug Monitor可以很好的调试Android程序,这里可以更直观的现实设备的各种信息,除了Logcat、VM Heap堆查看、Thread线程状态外,在菜单的Device中可以找到Screen capture来截图、File Explorer进行文件同步操作,使用Show process status可以显示设备当前的进程状态,以及 快速的过滤Logcat信息,可以分析无线状态radio state、程序状态app state等等。这里支持模拟器和真机的显示,该工具可以再android-sdk-windows-1.5_r1\tools\ddms.bat找到,目前我们测试环境为Windows平台,下次讲述下CentOS中的操作,如图:

Android中MediaRecorder类实现视频录制 Android开发技术

  在最新的Android 1.5版本中开始支持视频录制功能,通过MediaRecorder类的相关方法可以录制视频保存成为MPEG4、H.263和H.264编码的视频。这里很多网友发现自己的代码无法正常执行,首先确定设计预览对象Surface,可以通过setPreviewDisplay()方法实现,同时调用prepare()要在设置预览前执行。这里可以可以设置音源MIC、输出声音的格式3GP,设置编码为AMR。视频源为CAMERA,编码为MPEG_4。最终保存成一个MPEG4的文件,设置好输出文件的路径即可,这里我们还可以通过setVideoSize和setVideoFrameRate方法设置视频的分辨率以及帧数。示例代码参考 recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP); recorder.setOutputFile(filePath);   测试OK后给大家一个sample,注意视频录制是一个比较好资源的事情,考虑到性能要开一个线程单独处理。

Android 2.0揭秘,Donut新特性曝光 Android开发技术

  在未来的3~6个月,Google Android平台将会升级到2.0版本,这个代号为Donut的分支将会加入本地和Web搜索、手写识别、 Google翻译和文本发音text-to-speech特性,从官方的GIT中可以看到Android Donut中把汗了Svox语音引擎,整体的构架在下面的图片中可以看到,这个来自瑞士的Svox公司已经于上周加入了Google OHA联盟。目前 SVOX Pico TTS 已经支持6个国家的语言发音,包含U.S. 、U.K. English, German, French, Spanish和 Italian,相信大家对Android 2.0已经有些期待了吧。 

Android Scripting Environment 介绍 Android开发技术

  谷歌已经发布了一个工具针对Android操作系统可以编写简单的脚本程序,无需PC上开发的ASE(Android Scripting Environment )将帮助程序员访问大部分的功能通过下载一些简单的脚本,其实现原理和OMS的BAE平台十分相似,详细的可以参考 BAE开发网中的相关W3C Widget例子。   不过相对于传统的Web层面Widgets而言,ASE的功能可以控制GPS、接收感应器数据等等,最终脚本进程运行在后台,你可以创建自动回复服务在来电屏幕程序,同时可以静音来电应声等等。 目前整个实现过程比较简单。

android.appwidget类剖析 Android开发技术

   随着Android 1.5的普及很多网友发现SDK中多出了appwidget这个框架。作为使用Java语言设计的Widget相比目前主流的W3C Widget有更好的运行效率和底层控制能力,今天我们就Android平台上的Widget开发做主要的讲解。   首先我们需要在androidmanifest.xml文件中加入receiver节点来接收系统广播,声明BroadcastReceiver类的方法可以直接使用intent filter来过滤系统信息,下面来自SDK中的写法。   <receiver android:name="TestAppWidgetProvider"  android:label="@string/cwj"  android:icon="@drawable/smart_icon">    <intent-filter>        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> //这里我们需要捕获的是APPWIDGET_UPDATE这个动作    </intent-filter>    <meta-data android:name="android.appwidget.provider" android:resource="@xml/appwidget_info" /> //定义meta数据,见下面的appwidget-provider </receiver>   我们定一个AppWidgetProviderInfo 结构,用来描述这个widget的外观,这里和layout的布局有些相似,可以设置最小的宽度为40dp,最小高度为30dp。   <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"  android:minWidth="40dp"    android:minHeight="30dp"    android:updatePeriodMillis="86400000" //回调Timer,单位为毫秒。这里是1天=60X60X24X1000,Android手机的电能有限,频率不能太高,最好让用户自己控制    android:initialLayout="@layout/test_appwidget" //初始化时的主要布局    android:configure="com.android.tests.appwidgethost.TestAppWidgetConfigure" > </appwidget-provider>   在Widget中主要使用AppWidgetProvider做基类,刚才我们定义的BroadcastReceiver主要是更新动作ACTION_APPWIDGET_UPDATE ,与此之外还有ACTION_APPWIDGET_DELETED、ACTION_APPWIDGET_ENABLED和ACTION_APPWIDGET_DISABLED分别表示删除是、启用和禁用时触发的事件,这里是系统广播。我们通过 BroadcastReceiver类的onReceive方法来捕获。   下面的Java广播动作获取代码如下:   public void onReceive(Context context, Intent intent) {      String action […]

Android NDK之JNI使用例子 Android开发技术

  目前Android NDK只能编译出动态库.so文件,并不是能生成.apk文件,这里我们简单介绍下NDK中的Hello JNI列子。整个例子分Java和Native C两个部分。首先是我们常用的Java端调用部分。   package com.example.hellojni; import android.app.Activity;import android.widget.TextView;import android.os.Bundle; public class HelloJni extends Activity{    @Override    public void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);         TextView  tv = new TextView(this);        tv.setText( stringFromJNI() ); //如果调用失败将会抛出 java.lang.UnsatisfiedLinkError异常        setContentView(tv);    } //注意下面的native关键字     public native String  stringFromJNI();     public native String  unimplementedStringFromJNI();      static {        System.loadLibrary("hello-jni"); //载入hello-jni库    }  } 需要注意的是这里必须设置SDK版本为1.5或以上版本即在androidmanifest.xml文件中指明<uses-sdk […]

Android Widget开发指导-翻译 Android开发技术

   Widget是Android 1.5的一个新特性,允许程序显示一些常用而又重要的信息在用户的Home screen(桌面主屏)上,标准的Android系统映像包含了一些示例widgets包括指针时钟、音乐播放器和其他工具如Google搜索栏。(Widgets are a feature introduced in Android 1.5. A widget displays an application’s most important or timely information at a glance, on a user’s Home screen. The standard Android system image includes several examples of widgets, including widgets for Analog Clock, Music, and other applications.)   正文Android开发网不做过多的赘述和翻译,仅仅作一些提示,相信结合图片网友可以很好的理解掌握,毕竟Widget和标准的Apps相比没有太大的区别,更多的是在UI上的处理,逻辑执行还是设计成服务更稳定和更高的可靠性。     标准Widget剖析(Standard widget anatomy) […]

AppWidgetManager类中文翻译 Android开发技术

  AppWidgetManager作为Android平台上最主要的Widgets管理类,提供了更新AppWidget状态,获取已经安装的Appwidget提供信息和其他的相关状态 下面列出一些常用的动作: Constants String ACTION_APPWIDGET_CONFIGURE Sent when it is time to configure your AppWidget while it is being added to a host. String ACTION_APPWIDGET_DELETED Sent when an instance of an AppWidget is deleted from its host. String ACTION_APPWIDGET_DISABLED Sent when an instance of an AppWidget is removed from the last host. String ACTION_APPWIDGET_ENABLED Sent […]

RemoteViews – Android Widget开发入门 Android开发技术

   RemoteViews类描述了一个View对象能够显示在其他进程中,可以融合从一个 layout资源文件实现布局。虽然该类在android.widget.RemoteViews而不是appWidget下面但在Android Widgets开发中会经常用到它,主要是可以跨进程调用(appWidget由一个服务宿主来统一运行的)。    如何实例化一个RemoteViews 构造方法 RemoteViews(String packageName, int layoutId) 创建一个新的RemoteViews 对象将显示 views包含指定一个layout资源. RemoteViews(Parcel parcel) 读取RemoteViews对象从一个parcel中.    首先给大家一段例子简单说明下构造和如何使用      RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_provider);     views.setTextViewText(R.id.appwidget_text, "Android开发网欢迎您");       appWidgetManager.updateAppWidget(appWidgetId, views);     详细的 该类的公共方法列表,下面的viewId为layout文件中的id定义,常用的方法已经翻译成中文描述。 Public Methods View apply(Context context, ViewGroup parent) Inflates the view hierarchy represented by this object and applies all of the actions. int […]

Android Widget开发实例-电量监控 Android开发技术

  一个简单的电量监控代码可以很好的演示Android平台下Widget开发中的基础方式,比如appWidget如何于Service交互以及RemoteViews的演示。完成的工程代码我们稍作美化后提供下载,同时下次开始我们提供一些国外比较优秀的开源工程实例做剖析,从2007年11月至今SDK发布已经近两年了,相信大家可以看到整个Google Android平台的开发还是十分简单的,难度等级和J2ME相似,相信入门的网友只要经常光顾Android123开发站点一定会很好掌握的。 import android.app.Service;import android.appwidget.AppWidgetManager;import android.appwidget.AppWidgetProvider;import android.content.BroadcastReceiver;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.IBinder;import android.widget.RemoteViews; public class BatteryMonitorWidget extends AppWidgetProvider{    public void onUpdate( Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds )    {               context.startService(new Intent(context, BatteryMonitorReceiver.class));    }     public static class BatteryMonitorReceiver extends Service    {        private int currentBatteryLevel = 0;         private BroadcastReceiver batteryReceiver = new BroadcastReceiver()        {            […]

100% Secure Checkout

PayPal / MasterCard / Visa