




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于ANDROID的视频播放器的设计与实现摘要现今,随着基于ANDROID操作系统的智能手机的广泛应用,视频播放器已成为智能手机的一个必不可少的程序,广大用户迫切需要一个贴近用户、方便用户、个性化的视频播放器。因此,设计一个基于ANDROID手机的多功能播放器,具有重要的实际意义。遵循软件工程规范,文中主要介绍了基于ANDROID的多功能视频播放器的设计和实现过程,实现了手机中视频文件的过滤读取、存储、播放、收藏等功能。本次毕业设计主要使用JDKECLIPSEANDROIDSDKWINDOWS工具进行开发,使用的编程语言是JAVA语言。该程序主要由4个不同ACTIVITY来实现,每个ACTIVITY实现相应的功能模块,能够有效满足ANDROID手机用户在视频播放中的常见需求。本论文详细介绍了播放器程序的设计思路、设计方案、系统结构和项目工程结构,对系统的可行性与需求性进行了详细的分析,阐述了系统各个模块功能的设计与实现。对程序主要的ACTIVITY都进行了详细的介绍和分析,包括对其使用的布局文件的具体介绍,以及各个控件的作用。在最后进行了程序测试,对每一个实现的模块功能都做了测试,并且记录了大量截图用来展示测试结果,以观察程序应有的功能是否正常运行,以及发现程序中可能存在的问题。所开发的程序界面比较友好,操作相对容易,达到设计要求。关键词安卓;视频播放;ACTIVITY;MEDIAPLAYERTHEDESIGNANDIMPLEMENTATIONOFVIDEOPLAYERBASEDONANDROIDABSTRACTNOW,WITHTHEWIDEAPPLICATIONOFSMARTPHONEBASEDONTHEANDROIDOPERATINGSYSTEM,VIDEOPLAYERHASBECOMETHEESSENTIALAPPLICATIONOFSMARTPHONEMOSTOFCONSUMERSURGENTLYREQUIREAPERSONALIZEDVIDEOPLAYERWHICHISCLOSETOUSERANDFACILITATEUSERTHEREFORE,THEDESIGNOFAMULTIFUNCTIONALPLAYERBASEDONANDROIDMOBILEPHONESHASANIMPORTANTPRACTICALSIGNIFICANCEFOLLOWINGTHESPECIFICATIONOFSOFTWAREENGINEERING,THEPAPERMAINLYINTRODUCESTHEDESIGNANDIMPLEMENTATIONPROCESSOFTHEMULTIFUNCTIONALVIDEOPLAYERBASEDONANDROIDANDREALIZESTHECELLPHONEVIDEOFILESINTHEFILTERINGREAD,STORAGE,BROADCAST,COLLECTIONTHEPROJECTDESIGNISDEVELOPEDBYUSINGJDK,ECLIPSE,ANDANDROIDSDKWINDOWSTOOLSTHEPROGRAMMINGLANGUAGEISJAVATHEPROGRAMCONSISTSOFFOURDIFFERENTACTIVITIESANDEACHACTIVITYACHIEVESTHECORRESPONDINGFUNCTIONALMODULESWHICHCANEFFECTIVELYSATISFYTHECOMMONREQUIREMENTSFORPLAYINGVIDEOONANDROIDMOBILEPHONESTHISPAPERINTRODUCEDTHEDESIGNIDEAS,DESIGNSCHEME,SYSTEMARCHITECTUREANDPROJECTENGINEERINGSTRUCTURESOFVIDEOPLAYERTHEFEASIBILITYANDREQUIREMENTSOFSYSTEMWEREANALYZEDINDETAILTHESYSTEMFUNCTIONANDEACHMODULEWEREEXPLAINEDTHEMAINACTIVITYOFTHEPROGRAMAREDESCRIBEDANDANALYZEDINDETAILINCLUDINGTHEUSINGLAYOUTFILE,ASWELLASTHEROLEOFEACHCONTROLFINALLY,IMADETHETESTFORTHEPROGRAMINCLUDINGTHEFUNCTIONSOFEACHIMPLEMENTEDMODULESINORDERTOOBSERVEWHETHERTHEPROGRAMSHOULDFUNCTIONPROPERLYANDFINDTHEPROBLEMSTHATMAYEXISTINTHEPROGRAM,MANYSCREENSHOTSWERESAVEDTODEMONSTRATETHETESTRESULTSTHEDEVELOPEDPROGRAMHASAFRIENDLYINTERFACEANDCANBEOPERATEDRELATIVELYEASY,WHICHHASACHIEVEDTHEDESIGNREQUIREMENTKEYWORDSANDROIDVIDEOPLAYACTIVITYMEDIAPLAYER目录摘要IABSTRACTII1绪论111课题的来源及意义112国内外研究状况2121国内外发展现状2122发展中存在的问题213项目的主要工作和解决的问题32ANDROID相关技术介绍及环境搭建421ANDROID介绍422ANDROID开发平台53系统分析及系统结构设计与实现931系统分析9311系统可行性分析9312系统需求分析932系统结构设计933系统设计的目标及基本思路1334ANDROID视频播放器相关技术13341MEDIAPLAYER视频技术13342SURFACE、SURFACEVIEW、SURFACEHOLDER三者之间的关系164软件设计1841软件布局设计1842扫描SD卡上的视频文件1943播放控制功能的设计195测试2151测试环境和条件2152测试2153测试结果分析25结论27参考文献28致谢291绪论11课题的来源及意义在这个信息化的时代,IT业已经成为世界发展的主流,我们对信息技术的依赖远远超过了对我们自己的依赖,计算机和手机已经成为我们日常生活中不可缺少的获得信息的渠道。正因为如此,各种各样的软件层出不穷,我们的生活也因为各种各样的软件变的更有滋有味。不缺乏娱乐性,也不缺乏教育意义,让我们从这些软件中受益匪浅,使我们看到了相比以前的巨大进步。同时,随着科技的发展,计算机越来越精致,手机也越来越智能化,所以我们的依赖性也越来越大,越来越离不开这些给我们提供日常信息的工具。手机也已不再仅仅是简单的人与人通话的工具,而是在很大程度上成为了我们获取信息的一个更好的渠道。一个好的软件,能够标志一个手机品牌的地位。所以,开发一款好的手机软件是相当必要的。以前我们看电影,看视频,都要去电影院或者是影吧,而且时间有限,很不方便;而现在是在电脑上或者手机上看视频,看小说,文档等等。以此看来,一个好的手机视频播放器软件的开发是相当有必要的。作为集通讯与娱乐消费为一体的智能手机,播放器是其中一个必不可少的重要功能,一个贴近用户,方便用户的多功能的播放器也是用户所渴望的,更是开发人员应当致力于的。随着GOOGLE推出的ANDROID手机的不断更新换代,技术方面也日趋成熟,一个良好的视频播放器的设计与实现已经成为可能。目前,作为ANDROID的手机用户而言,都有视频播放器的实体应用。但是,对于绝大多少而言,其界面单调,功能单一。比如,界面与其他非智能的手机没有大的区别,而功能上面,也就除了基本的播放控制流程之外,多上一个视频基本信息的显示,同时加上一个对预设定路径的播放列表的展示。因此,开发一款界面友好、炫丽、功能更多的视频播放器,更好的贴近用户,满足用户需求,其应用前景也是相当乐观的。ANDROID是一种基于LINUX的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由GOOGLE公司和开放手机联盟领导及开发。ANDROID操作系统最初由ANDYRUBIN开发,主要支持手机。2005年8月由GOOGLE收购注资。2007年11月,GOOGLE与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良ANDROID系统。随后GOOGLE以APACHE开源许可证的授权方式,发布了ANDROID的源代码。第一部ANDROID智能手机发布于2008年10月。ANDROID逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,ANDROID在全球的市场份额首次超过塞班系统,跃居全球第一。2012年11月数据显示,ANDROID占据全球智能手机操作系统市场76的份额,中国市场占有率为90。由此可见,ANDROID占有非常可观的市场前景。具有开源特性的ANDROID平台打破了之前SYMBIAN、WINDOWSMOBILE等操作系统收取高额授权费用的模式,使得智能手机成本大大的降低。而正是由于它开放源代码,使得手机产生更多个性化的应用。同时,合作方能够在这里得到利润或者创造价值,手机软件行业得到维护协调发展。以GOOGLE、苹果和诺基亚为中心各自形成的生态链将以原来数倍的速度推动移动互联网的发展,这正是GOOGLE发布ANDROID平台的意义,也是ANDROID平台存在的使命所在。作为ANDROID平台成员之一的中国移动也投资成立了一家通讯公司,专门从事GOOGLE手机软件的应用以及本地化的软件的开发,比如将在GOOGLE手机平台上添加飞信、输入法等一系列符合国内用户使用特色的功能。国内众多企业也将眼光投入到ANDROID上面,并启动了相关的计划来深入的理解并发展ANDROID。更多的手机软件开发企业已经或者筹备着将公司进行转型,从其他方向的开发转向到ANDROID的开发。由此可见,无论是在国内还是在国外,ANDROID平台对手机软件行业和移动手机平台将发挥极大地推动作用,而在未来的几年时间里,ANDROID将越发的凸显自己的重要性。12国内外研究状况121国内外发展现状在国外的发展,自GOOGLE公司宣布ANDROID系统上市以来,在短短几年间的到了飞速的发展。在国外已经有很多已经非常成熟的技术进行基于ANDROID平台下的软件开发。短短几年间,成千上万的基于ANDROID系统的应用发布在安卓市场上,加上ANDROID系统的开源性,使得他在国外的到了广大学者的深爱,各大厂商也纷纷加入到使用ANDROID系统的行列。在国内的发展,ANDROID自09年进入中国市场以来,也得到了飞速的发展,大到成百上千人的大公司,小到几个人的个体公司都在使用ANDROID系统进行软件开发。但是虽然在国内发展迅速,学习资源也很丰富,但是基本上都是良莠不齐,绝大部分是翻译自国外的一些学习资料而来。这样给我们国内的学者学习带来了一些困扰,在着一些高科技术的发展上,国内还需要进一步加强。目前国内的ANDROID开发还是主要以应用开发为主,主要分成3类为企业开发应用、开发通用应用(放到ANDROIDMARKET或者其他APPMARKET销售)以及游戏开发(放到ANDROIDMARKET或者其他APPMARKET销售)。第一类开发者一般身处规模较大的公司,这些公司主要为自有品牌或者其他品牌设计手机或者平板电脑的总体方案。除了根据需求对系统进行定制外,更多的工作在于为这些系统编写定制的应用。第二类开发者,一般处于创业型公司或者是独立开发者,他们的盈利方式主要是2种为国外公司进行外包开发,或者通过GOOGLE的移动广告(ADMOB)通过广告点击分成。而理论上的通过付费下载的形式来盈利的,现在国内鲜见成功者。第三类开发者,目前和第二类开发者类似。122发展中存在的问题ANDROID在快速增长的同时,也面临着多种问题,其中最显著的,就是越来越突出的版本分裂问题。2011年10月ANDROID40的推出曾经为最终解决分裂问题带来了一线希望,40版本的ANDROID体验良好,界面美观,对平板和手机界面都有着不错的兼容性,而GOOGLE自己也有意从40开始收紧各大手机制造商的定制权。然而到目前为止40版本的推出并未有效改善ANDROID的版本分裂问题,反而使这一问题愈演愈烈。根据GOOGLE发布的统计,截至2012年5月初,在所有访问GOOGLEPLAY应用市场的设备中,ANDROID40的份额只有49,而ANDROID23依然拥有高达644的份额,甚至早已过时的ANDROID22所拥有的份额也大大高于40达到209。也就是说,虽然从ANDROID40发布到现在已经过去了六个月,这个被寄予厚望的新版本却还根本没有壮大起来。这里面存在很多种原因旧有设备升级不力。很多硬件制造商在旧设备的升级问题上动作缓慢。比如HTC针对旧设备的大规模升级工作刚刚开始,而三星则为可升级的旧设备设置了很高的门槛,GALAXYS等配置上没有问题的设备都被排除在升级队列之外。此外,最大的第三方系统CYANOGENMOD的40定制版本迟迟不能正式推出,也更加加剧了这一现象。新设备推出缓慢。从2011年10月第一部ANDROID40设备GALAXYNEXUS的推出到2012年2月MWC大会时大批出现ANDROID40设备,中间的四个月里几乎没有搭载ANDROID40的手机推出。而即使到现在为止搭载ANDROID40系统的新设备数量依然很不足。缺乏运营商定制渠道。运营商定制机渠道在3G时代显得十分重要。而目前全球范围内各大运营商的定制机型依然鲜有ANDROID40设备。以北美为例,在三星GALAXYNOTE预装40系统发售之前ATPUBLICUPDATETHREADSTRINGROOTPATHTHISROOTPATHROOTPATHOVERRIDEPUBLICVOIDRUNINTCOUNTSDCARDMEDIASCANSDMEDIAROOTPATHDIALOGCANCELMESSAGEMSGHANDLEROBTAINMESSAGEBUNDLEBUNDLEMSGGETDATABUNDLEPUTINT“COUNT“,COUNTMSGSETDATABUNDLEHANDLERSENDMESSAGEMSG43播放控制功能的设计在打开播放文件之后,点击画面的空白部分,这时会弹出视频播放控制按钮,分别是后退、播放/暂停和前进,下面显示视频播放时间轴,可以进行拖曳。部分代码如下FILEFILENEWFILEFILEPATHIFFILEEXISTSPATHFILEGETABSOLUTEPATHIFPAUSEGOVIEWSETVISIBILITYVIEWGROUPINVISIBLEPLAY0FILECHANGEDTRUECURVOLUMEAUDIOMANAGERGETSTREAMVOLUMEAUDIOMANAGERSTREAM_MUSICIFHANDLERPOSTUPDATEBARHANDLERPOSTUPDATETHREADHANDLERPOSTTRUEELSEPATHNULLTOASTMAKETEXTTHIS,RSTRINGFILENOEXSIT,1SHOW音量控制部分代码如下PUBLICVOIDSETVOLUMEVIEWVSWITCHVGETIDCASERIDVOLUMEBUTTONIFMEDIAPLAYERISPLAYINGIFISMUTEVOLUMEBUTTONSETIMAGERESOURCERDRAWABLEVOLUMEELSEAUDIOMANAGERSETSTREAMMUTEAUDIOMANAGERSTREAM_MUSIC,TRUEVOLUMEBUTTONSETIMAGERESOURCERDRAWABLEMUTEISMUTEISMUTEBREAKCASERIDDOWNBUTTONIFISMUTEIFCURVOLUMEELEMENT,THEANDROIDICONATTRIBUTEPOINTSTORESOURCESFORANICONTHATIDENTIFIESTHEAPPLICATIONINTHEELEMENT,THEANDROIDNAMEATTRIBUTESPECIFIESTHEFULLYQUALIFIEDCLASSNAMEOFTHEACTIVITYSUBCLASSANDTHEANDROIDLABELATTRIBUTESSPECIFIESASTRINGTOUSEASTHEUSERVISIBLELABELFORTHEACTIVITYYOUMUSTDECLAREALLAPPLICATIONCOMPONENTSTHISWAY1、ELEMENTSFORACTIVITIES2、ELEMENTSFORSERVICES3、ELEMENTSFORBROADCASTRECEIVERS4、ELEMENTSFORCONTENTPROVIDERSACTIVITIES,SERVICES,ANDCONTENTPROVIDERSTHATYOUINCLUDEINYOURSOURCEBUTDONOTDECLAREINTHEMANIFESTARENOTVISIBLETOTHESYSTEMAND,CONSEQUENTLY,CANNEVERRUNHOWEVER,BROADCASTRECEIVERSCANBEEITHERDECLAREDINTHEMANIFESTORCREATEDDYNAMICALLYINCODEASBROADCASTRECEIVEROBJECTSANDREGISTEREDWITHTHESYSTEMBYCALLINGREGISTERRECEIVERDECLARINGCOMPONENTCAPABILITIESASDISCUSSEDABOVE,INACTIVATINGCOMPONENTS,YOUCANUSEANINTENTTOSTARTACTIVITIES,SERVICES,ANDBROADCASTRECEIVERSYOUCANDOSOBYEXPLICITLYNAMINGTHETARGETCOMPONENTUSINGTHECOMPONENTCLASSNAMEINTHEINTENTHOWEVER,THEREALPOWEROFINTENTSLIESINTHECONCEPTOFINTENTACTIONSWITHINTENTACTIONS,YOUSIMPLYDESCRIBETHETYPEOFACTIONYOUWANTTOPERFORMANDOPTIONALLY,THEDATAUPONWHICHYOUDLIKETOPERFORMTHEACTIONANDALLOWTHESYSTEMTOFINDACOMPONENTONTHEDEVICETHATCANPERFORMTHEACTIONANDSTARTITIFTHEREAREMULTIPLECOMPONENTSTHATCANPERFORMTHEACTIONDESCRIBEDBYTHEINTENT,THENTHEUSERSELECTSWHICHONETOUSETHEWAYTHESYSTEMIDENTIFIESTHECOMPONENTSTHATCANRESPONDTOANINTENTISBYCOMPARINGTHEINTENTRECEIVEDTOTHEINTENTFILTERSPROVIDEDINTHEMANIFESTFILEOFOTHERAPPLICATIONSONTHEDEVICEWHENYOUDECLAREACOMPONENTINYOURAPPLICATIONSMANIFEST,YOUCANOPTIONALLYINCLUDEINTENTFILTERSTHATDECLARETHECAPABILITIESOFTHECOMPONENTSOITCANRESPONDTOINTENTSFROMOTHERAPPLICATIONSYOUCANDECLAREANINTENTFILTERFORYOURCOMPONENTBYADDINGANELEMENTASACHILDOFTHECOMPONENTSDECLARATIONELEMENTFOREXAMPLE,ANEMAILAPPLICATIONWITHANACTIVITYFORCOMPOSINGANEWEMAILMIGHTDECLAREANINTENTFILTERINITSMANIFESTENTRYTORESPONDTO“SEND“INTENTSINORDERTOSENDEMAILANACTIVITYINYOURAPPLICATIONCANTHENCREATEANINTENTWITHTHE“SEND”ACTIONACTION_SEND,WHICHTHESYSTEMMATCHESTOTHEEMAILAPPLICATIONS“SEND”ACTIVITYANDLAUNCHESITWHENYOUINVOKETHEINTENTWITHSTARTACTIVITYFORMOREABOUTCREATINGINTENTFILTERS,SEETHEINTENTSANDINTENTFILTERSDOCUMENTDECLARINGAPPLICATIONREQUIREMENTSTHEREAREAVARIETYOFDEVICESPOWEREDBYANDROIDANDNOTALLOFTHEMPROVIDETHESAMEFEATURESANDCAPABILITIESINORDERTOPREVENTYOURAPPLICATIONFROMBEINGINSTALLEDONDEVICESTHATLACKFEATURESNEEDEDBYYOURAPPLICATION,ITSIMPORTANTTHATYOUCLEARLYDEFINEAPROFILEFORTHETYPESOFDEVICESYOURAPPLICATIONSUPPORTSBYDECLARINGDEVICEANDSOFTWAREREQUIREMENTSINYOURMANIFESTFILEMOSTOFTHESEDECLARATIONSAREINFORMATIONALONLYANDTHESYSTEMDOESNOTREADTHEM,BUTEXTERNALSERVICESSUCHASGOOGLEPLAYDOREADTHEMINORDERTOPROVIDEFILTERINGFORUSERSWHENTHEYSEARCHFORAPPLICATIONSFROMTHEIRDEVICEFOREXAMPLE,IFYOURAPPLICATIONREQUIRESACAMERAANDUSESAPISINTRODUCEDINANDROID21APILEVEL7,YOUSHOULDDECLARETHESEASREQUIREMENTSINYOURMANIFESTFILETHATWAY,DEVICESTHATDONOTHAVEACAMERAANDHAVEANANDROIDVERSIONLOWERTHAN21CANNOTINSTALLYOURAPPLICATIONFROMGOOGLEPLAYHOWEVER,YOUCANALSODECLARETHATYOURAPPLICATIONUSESTHECAMERA,BUTDOESNOTREQUIREITINTHATCASE,YOURAPPLICATIONMUSTPERFORMACHECKATRUNTIMETODETERMINEIFTHEDEVICEHASACAMERAANDDISABLEANYFEATURESTHATUSETHECAMERAIFONEISNOTAVAILABLEHEREARESOMEOFTHEIMPORTANTDEVICECHARACTERISTICSTHATYOUSHOULDCONSIDERASYOUDESIGNANDDEVELOPYOURAPPLICATIONSCREENSIZEANDDENSITYINORDERTOCATEGORIZEDEVICESBYTHEIRSCREENTYPE,ANDROIDDEFINESTWOCHARACTERISTICSFOREACHDEVICESCREENSIZETHEPHYSICALDIMENSIONSOFTHESCREENANDSCREENDENSITYTHEPHYSICALDENSITYOFTHEPIXELSONTHESCREEN,ORDPIDOTSPERINCHTOSIMPLIFYALLTHEDIFFERENTTYPESOFSCREENCONFIGURATIONS,THEANDROIDSYSTEMGENERALIZESTHEMINTOSELECTGROUPSTHATMAKETHEMEASIERTOTARGETTHESCREENSIZESARESMALL,NORMAL,LARGE,ANDEXTRALARGETHESCREENDENSITIESARELOWDENSITY,MEDIUMDENSITY,HIGHDENSITY,ANDEXTRAHIGHDENSITYBYDEFAULT,YOURAPPLICATIONISCOMPATIBLEWITHALLSCREENSIZESANDDENSITIES,BECAUSETHEANDROIDSYSTEMMAKESTHEAPPROPRIATEADJUSTMENTSTOYOURUILAYOUTANDIMAGERESOURCESHOWEVER,YOUSHOULDCREATESPECIALIZEDLAYOUTSFORCERTAINSCREENSIZESANDPROVIDESPECIALIZEDIMAGESFORCERTAINDENSITIES,USINGALTERNATIVELAYOUTRESOURCES,ANDBYDECLARINGINYOURMANIFESTEXACTLYWHICHSCREENSIZESYOURAPPLICATIONSUPPORTSWITHTHEELEMENTFORMOREINFORMATION,SEETHESUPPORTINGMULTIPLESCREENSDOCUMENTINPUTCONFIGURATIONSMANYDEVICESPROVIDEADIFFERENTTYPEOFUSERINPUTMECHANISM,SUCHASAHARDWAREKEYBOARD,ATRACKBALL,ORAFIVEWAYNAVIGATIONPADIFYOURAPPLICATIONREQUIRESAPARTICULARKINDOFINPUTHARDWARE,THENYOUSHOULDDECLAREITINYOURMANIFESTWITHTHEELEMENTHOWEVER,ITISRARETHATANAPPLICATIONSHOULDREQUIREACERTAININPUTCONFIGURATIONDEVICEFEATURESTHEREAREMANYHARDWAREANDSOFTWAREFEATURESTHATMAYORMAYNOTEXISTONAGIVENANDROIDPOWEREDDEVICE,SUCHASACAMERA,ALIGHTSENSOR,BLUETOOTH,ACERTAINVERSIONOFOPENGL,ORTHEFIDELITYOFTHETOUCHSCREENYOUSHOULDNEVERASSUMETHATACERTAINFEATUREISAVAILABLEONALLANDROIDPOWEREDDEVICESOTHERTHANTHEAVAILABILITYOFTHESTANDARDANDROIDLIBRARY,SOYOUSHOULDDECLAREANYFEATURESUSEDBYYOURAPPLICATIONWITHTHEELEMENTPLATFORMVERSIONDIFFERENTANDROIDPOWEREDDEVICESOFTENRUNDIFFERENTVERSIONSOFTHEANDROIDPLATFORM,SUCHASANDROID16ORANDROID23EACHSUCCESSIVEVERSIONOFTENINCLUDESADDITIONALAPISNOTAVAILABLEINTHEPREVIOUSVERSIONINORDERTOINDICATEWHICHSETOFAPISAREAVAILABLE,EACHPLATFORMVERSIONSPECIFIESANAPILEVELFOREXAMPLE,ANDROID10ISAPILEVEL1ANDANDROID23ISAPILEVEL9IFYOUUSEANYAPISTHATWEREADDEDTOTHEPLATFORMAFTERVERSION10,YOUSHOULDDECLARETHEMINIMUMAPILEVELINWHICHTHOSEAPISWEREINTRODUCEDUSINGTHEELEMENTITSIMPORTANTTHATYOUDECLAREALLSUCHREQUIREMENTSFORYOURAPPLICATION,BECAUSE,WHENYOUDISTRIBUTEYOURAPPLICATIONONGOOGLEPLAY,THESTOREUSESTHESEDECLARATIONSTOFILTERWHICHAPPLICATIONSAREAVAILABLEONEACHDEVICEASSUCH,YOURAPPLICATIONSHOULDBEAVAILABLEONLYTODEVICESTHATMEETALLYOURAPPLICATIONREQUIREMENTSFORMOREINFORMATIONABOUTHOWGOOGLEPLAYFILTERSAPPLICATIONSBASEDONTHESEANDOTHERREQUIREMENTS,SEETHEFILTERSONGOOGLEPLAYDOCUMENTAPPLICATIONRESOURCESANANDROIDAPPLICATIONISCOMPOSEDOFMORETHANJUSTCODEITREQUIRESRESOURCESTHATARESEPARATEFROMTHESOURCECODE,SUCHASIMAGES,AUDIOFILES,ANDANYTHINGRELATINGTOTHEVISUALPRESENTATIONOFTHEAPPLICATIONFOREXAMPLE,YOUSHOULDDEFINEANIMATIONS,MENUS,STYLES,COLORS,ANDTHELAYOUTOFACTIVITYUSERINTERFACESWITHXMLFILESUSINGAPPLICATIONRESOURCESMAKESITEASYTOUPDATEVARIOUSCHARACTERISTICSOFYOURAPPLICATIONWITHOUTMODIFYINGCODEANDBYPROVIDINGSETSOFALTERNATIVERESOURCESENABLESYOUTOOPTIMIZEYOURAPPLICATIONFORAVARIETYOFDEVICECONFIGURATIONSSUCHASDIFFERENTLANGUAGESANDSCREENSIZESFOREVERYRESOURCETHATYOUINCLUDEINYOURANDROIDPROJECT,THESDKBUILDTOOLSDEFINEAUNIQUEINTEGERID,WHICHYOUCANUSETOREFERENCETHERESOURCEFROMYOURAPPLICATIONCODEORFROMOTHERRESOURCESDEFINEDINXMLFOREXAMPLE,IFYOURAPPLICATIONCONTAINSANIMAGEFILENAMEDLOGOPNGSAVEDINTHERES/DRAWABLE/DIRECTORY,THESDKTOOLSGENERATEARESOURCEIDNAMEDRDRAWABLELOGO,WHICHYOUCANUSETOREFERENCETHEIMAGEANDINSERTITINYOURUSERINTERFACEONEOFTHEMOSTIMPORTANTASPECTSOFPROVIDINGRESOURCESSEPARATEFROMYOURSOURCECODEISTHEABILITYFORYOUTOPROVIDEALTERNATIVERESOURCESFORDIFFERENTDEVICECONFIGURATIONSFOREXAMPLE,BYDEFININGUISTRINGSINXML,YOUCANTRANSLATETHESTRINGSINTOOTHERLANGUAGESANDSAVETHOSESTRINGSINSEPARATEFILESTHEN,BASEDONALANGUAGEQUALIFIERTHATYOUAPPENDTOTHERESOURCEDIRECTORYSNAMESUCHASRES/VALUESFR/FORFRENCHSTRINGVALUESANDTHEUSERSLANGUAGESETTING,THEANDROIDSYSTEMAPPLIESTHEAPPROPRIATELANGUAGESTRINGSTOYOURUIANDROIDSUPPORTSMANYDIFFERENTQUALIFIERSFORYOURALTERNATIVERESOURCESTHEQUALIFIERISASHORTSTRINGTHATYOUINCLUDEINTHENAMEOFYOURRESOURCEDIRECTORIESINORDERTODEFINETHEDEVICECONFIGURATIONFORWHICHTHOSERESOURCESSHOULDBEUSEDASANOTHEREXAMPLE,YOUSHOULDOFTENCREATEDIFFERENTLAYOUTSFORYOURACTIVITIES,DEPENDINGONTHEDEVICESSCREENORIENTATIONANDSIZEFOREXAMPLE,WHENTHEDEVICESCREENISINPORTRAITORIENTATIONTALL,YOUMIGHTWANTALAYOUTWITHBUTTONSTOBEVERTICAL,BUTWHENTHESCREENISINLANDSCAPEORIENTATIONWIDE,THEBUTTONSSHOULDBEALIGNEDHORIZONTALLYTOCHANGETHELAYOUTDEPENDINGONTHEORIENTATION,YOUCANDEFINETWODIFFERENTLAYOUTSANDAPPLYTHEAPPROPRIATEQUALIFIERTOEACHLAYOUTSDIRECTORYNAMETHEN,THESYSTEMAUTOMATICALLYAPPLIESTHEAPPROPRIATELAYOUTDEPENDINGONTHECURRENTDEVICEORIENTATION外文翻译安卓应用基础在JAVA编程语言编写的ANDROID应用程序的ANDROID的SDK工具编译代码以及与任何数据和到一个ANDROID的包,一个归档文件档案资源的APK后缀,所有的在一个单一的代码APK文件被认为是一个应用程序,是ANDROID的文件,供电设备来安装应用程序。而ANDROID操作系统是一个多用户LINUX系统中,每个应用程序是一个不同的用户。默认情况下,每个应用程序的系统分配一个唯一的LINUX用户ID(该ID仅用于由系统是未知的应用程序),系统设置所有的应用程序中的文件权限,以便只有用户ID分配给该应用程序可以访问它们。每个进程都有它自己的虚拟机(VM),因此应用程序的代码在从其他应用程序隔离运行。默认情况下,每个应用程序运行在它自己的LINUX进程。ANDROID的启动过程时,应用程序的任何组件需要被执行,然后关闭该进程时,它不再需要或恢复时,系统必须为其他应用程序的内存。这样一来,ANDROID系统实现了最小特权原则,也就是说,每个应用程序,默认情况下,只能访问的组件,它需要做的工作,没有更多,这将创建一个非常安全的环境,使应用程序无法访问的,这就是它没有给予许可制度的部分。但是,有一个应用程序的方法与其他应用程序和应用程序访问系统服务的数据这有可能为两个应用程序安排共享相同的LINUX用户ID,在这种情况下,它们能够相互访问的文件。为了节约使用相同的用户ID系统资源,应用程序还可以安排运行在相同的LINUX进程和共享同一个VM(应用也必须使用相同的证书签名)。应用程序可以请求访问权限,如用户的联系人,短信,可安装存储(SD卡),摄像头,蓝牙等设备的数据,所有应用程序的权限必须由用户在安装时授予。这涵盖了基本就如何ANDROID应用程序在系统中存在这个文件的其余部分向您介绍1、框架的核心组件定义应用程序。2、清单文件中声明组件和应用程序所需的设备功能。3、资源是从应用程序代码分开,并允许您的应用程序正常优化的设备配置各种其行为。应用程序组件APPLICATIONCOMPONENTSANDROID的核心功能之一就是一个应用程序可以使用其它应用程序的元素(如果那个应用程序允许的话)。比如说,如果你的应用程序需要一个图片卷动列表,而另一个应用程序已经开发了一个合用的而又允许别人使用的话,你可以直接调用那个卷动列表来完成工作,而不用自己再开发一个。你的应用程序并没有吸纳或链接其它应用程序的代码,它只是在有需求的时候启动了其它应用程序的那个功能部分。为达到这个目的,系统必须在一个应用程序的一部分被需要时启动这个应用程序,并将那个部分的JAVA对象实例化。与在其它系统上的应用程序不同,ANDROID应用程序没有为应用准备一个单独的程序入口(比如说,没有MAIN方法),而是为系统依照需求实例化提供了基本的组件。共有四种组件类型活动ACTIVITIES一个ACTIVITY代表用户界面的一个独立屏幕。例如,一个邮件应用程序应该有一个ACTIVITY用于显示新邮件列表,另一个ACTIVITY用于撰写一封邮件,还有一个ACTIVITY用于读取邮件。尽管所有ACTIVITIE协同工作以构成邮件应用程序的用户体验,但彼此之间相对独立。应次,不同的应用程序能够从任何一个ACTIVITY启动只要邮件应用程序允许。例如,用户需要分享一张照片,一个拍照应用程序能够启动邮件应用程序的ACTIVITY。ACTIVITY是一个实现了ACTIVITY的子类,你可以在ACTIVITIES开发者指导部分了解更多。服务SERVICESSERVICE是在后台运行,执行长时间操作或者执行远程操作。SERVICE不提供用户界面。例如,当用户在另一个应用程序时,一个SERVICE可在后台播放音乐,或者是从网络上获取数据,而不阻断用户与当前ACTIVITY的交互。其他组件,比如一个ACTIVITY,为了与该SERVICE互动,可以启动或者绑定它。SERVICE是一个实现了SERVICE的子类,你可以在SERVICES开发者指导部分了解更多。广播接收器BROADCASTRECEIVERS广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件。很多广播是源自于系统代码的比如,通知时区改变、电池电量低、拍摄了一张照片或者用户改变了语言选项。应用程序也可以进行广播比如说,通知其它应用程序一些数据下载完成并处于可用状态。应用程序可以拥有任意数量的广播接收器以对所有它感兴趣的通知信息予以响应。所有的接收器均继承自BROADCASTRECEIVER基类。广播接收器没有用户界面。然而,它们可以启动一个ACTIVITY来响应它们收到的信息,或者用NOTIFICATIONMANAGER来通知用户。通知可以用很多种方式来吸引用户的注意力闪动背灯、震动、播放声音等等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。内容提供者CONTENTPROVIDERS内容提供者将一些特定的应用程序数据供给其它应用程序使用。数据可以存储于文件系统、SQLITE数据库或其它方式。内容提供者继承于CONTENTPROVIDER基类,为其它应用程序取用和存储它管理的数据实现了一套标准方法。然而,应用程序并不直接调用这些方法,而是使用一个CONTENTRESOLVER对象,调用它的方法作为替代。CONTENTRESOLVER可以与任意内容提供者进行会话,与其合作来对所有相关交互通讯进行管理。参阅独立的内容提供者CONTENTPROVIDERS章节获得更多关于使用内容提供者的内容。每当出现一个需要被特定组件处理的请求时,ANDROID会确保那个组件的应用程序进程处于运行状态,或在必要的时候启动它。并确保那个相应组件的实例的存在,必要时会创建那个实例。ANDROID系统设计的一个独特方面是任何的一个程序都可以启动另一程序的组件。比如,你想让你的程序可以使用照相机拍照,如果已经有了实现这种功能的程序并且你你的程序能使用它(有权限),那么你就没有再要再写一个新的ACTIVITY来实现这个功能。你的程序不需要包含或者链接这个拍照程序。相反,你只需要在你的程序中打开这个拍照程序中的实现拍照功能的ACTIVITY。当拍完之后,拍好的照片甚至会自动返回给你的程序。者对于用户来说,就好像是想拍照功能的程序就是你的这个程序的一部分一样。当系统启动一个组件之后,如果这个组件所在的程序之前没有运行的话,系统会自动开始这个程序的进程,并初始化这个组件所需要的相关类。比如,你的程序开启了一个拍照功能程序的ACTIVITY,这时系统会启动这个ACTIVITY所在的程序,所以这个ACTIVITY运行在拍照功能的程序当中,而不是在你的程序中。所以,不像其他操作系统的中的程序一样,ANDROID程序没有一个单独的入口点(比如没有我们常见的MAIN函数)。因为系统中的程序运行在自己的独立进程中,并且程序中的文件都有自己的限制其他程序访问的权限,所以,你的程序不能直接激活其他程序中的组件。但是ANDROID系统就可以。具体是这样的实现的,为了激活(ACTIVATE)其他程序中的组件,你必须向系统发送一个消息来详细说明你要启动其他组件的意图,这样系统才会为你激活这个组件。激活组件ACTIVATINGCOMPONENTS四大组件中的三个组件ACTIVITIES、SERVICES和BROADCASTRECEIVER是由一种叫INTENT的异步消息来激活的。这些INTENTS在运行时(RUNTIME)将这些属于你的程序或不同程序的单独的组件绑定在一起(BIND),你可以把这些INTENTS看作是需要其他组件的ACTION的MESSENGERS。一个INTENT就是一个INTENT对象,这个INTENT定义了一种可以激活(ACTIVATE)某个特定组件或者某种特定类型的组件,这两种情况分别对应两种INTENT的定义方式或者显示的或者隐式的。对于ACTIVITIES和SERVICES,一个INTENT定义了要执行的操作(ACTION)比如,要“VIEW”或者“SEND”什么和要操作的数据的URI。比如,一个INTENT可能会为一个ACTIVITY传递一个请求来展示一张图片或者打开一个网页。有时,你可以启动一个ACTIVITY来得到返回的结果,在这个例子中这个ACTIVITY的返回的结果也
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年统计人员考试题及答案
- 文武教育笔试题目及答案
- 2025年殡葬国企考试题目及答案
- 收房子购房合同(标准版)
- 盆景护理知识题库及答案
- 道教入门考试真题及答案
- 约束带应急预案
- 公文处理知识题库及答案
- 【语文+答案】浙南名校联盟2025-2026学年高三上学期10+月联考语文试题-A4答案卷尾
- 有机兔肉生产创新创业项目商业计划书
- 初中音标考试题及答案大全人教版
- 贵州贵州磷化有限责任公司招聘笔试真题2024
- 新能源汽车火灾事故成因分析及灭火救援措施
- 2024北京陈经纶中学高二10月月考语文试题及答案
- 中兴信息安全管理制度
- 轮胎店转让协议书
- 2025-2030中国氢燃料电池行业市场发展分析及发展趋势与投资前景研究报告
- 2024年江西省进贤县事业单位公开招聘警务岗笔试题带答案
- 微电子器件(4-13)SPICE 中的 MOFET 模型
- DB51∕T 2615-2019 机关周转房管理服务规范
- 竞选小学家委会演讲稿
评论
0/150
提交评论