广东海洋大学andriod应用软件开发实习报告_第1页
广东海洋大学andriod应用软件开发实习报告_第2页
广东海洋大学andriod应用软件开发实习报告_第3页
广东海洋大学andriod应用软件开发实习报告_第4页
广东海洋大学andriod应用软件开发实习报告_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、©广东诲译大竽课程实习课程名称应用软件开发实习课程编号"620109学号201111621128学生姓名007所在专业计算机科学与技术所在班级 计科1141班指导教师成绩 教师签字评语:目录一、课程设计目的2二、系统开发环境和工具2三、系统需求分析23. 1客户要求33. 2需求分析33. 2. 1功能性需求33. 2.2非功能性需求5四、系统概要设计54. 1系统架构图54.2系统部署图5五、系统详细设计6六、功能测试96. 1主界面96.2拍照功能96.3查看照片106.4录音116. 5录像12七、代码分析137. 1主界面代码137.2录像功能代码157.3拍照功能

2、代码177.4录音功能代码21八、系统测试出现的问题和解决的方案27九、系统评价28十、心得体会29广铁集团乘务通软件系统开发拍照录像录音模块一、课程设计目的1、通过本次的开发,让我们回忆这几天老师讲述的android知识,加 深对android基础知识的理解。2、学以致用,根据开发的需求,灵活的运用相关的android知识,提 高我们的自我创新和灵活设计的能力。3、通过实际项目模块的练习,提高我们对实际项冃要求的理解和对整 个项目开发流程的体会。4、通过实际项目的编写,一句句的敲代码,提高我们发现错误和解决 错误的能力。5、此次实训项目我们是以小组形式进行的,通过不同小组之间的分工 合作共同

3、完成一个模块,不但很好的发挥了每个人的优势,而且提高了我 们大家之间相互合作的能力。二、系统开发环境和工具开发环境:windows, android开发工具:eclipse, android 手机,photoshop, visio 等运行环境:android2. 3以上三、系统需求分析3.1客户要求拍照、录音、录像。存储到sd卡,并可以选择上传。1)手动选择上传到服务器,对应每个用户的目录(目录名为当前日期)2)录像/图片信息记录到数据库,后台可以查阅(只读)。3)本地pad用户可以查看/删除自己的录像/图片等信息3. 2需求分析3.2.1功能性需求 拍照: 开始拍照:用户进入应用后,点击拍照

4、按钮后,应用可以进入拍照 界面,然后用户可以自定义的进行拍照操作,拍完照后即将拍好的照片保 存在手机的sd卡中。 浏览照片:用户进入应用后,点击浏览按钮后,应用将调用系统的 图库功能,通过系统的图库功能即可查看本应用刚刚拍的照片。查看图片, 可以对图片进行旋转,放大等操作。 上传照片:用户进入应用后,点击上传按钮后,应用将通过网络与 服务器相连,把自己想上传到服务器的照片上传到服务器的相应位置,然 后将照片在服务的具体信息保存在数据库中。 删除照片:用户通过系统的图库查看照片,在查看照片的过程中可 以利用图库的功能对图片进行删除相应的照片。求曰: 开始录音:用户进入应用后,点击录音按钮后,自定

5、义的录音功能 将进行录音,点击停止录音后,相应的录音文件将保存在手机的sd卡中。 然后在当前页面下面的列表中可以显示刚刚的录音文件。 播放录音:用户通过点击下面列表中的录音文件,可以弹出播放录 音文件的文件列表,点击对话框中的播放按钮可以对录音文件进行播放。 点击停止播放可以停止音乐的播放。 上传录音:用户进入应用后,点击上传按钮后,应用将通过网络与 服务器相连,把自己想上传到服务器的录音文件上传到服务器的相应位 置,然后将照片在服务的具体信息保存在数据库中。 删除录音:通过点击录音按钮可以弹出显示所有录音文件的对话 框,在对话框中可以选择需要删除的录音文件,点击确定就可以从本地的 sd卡中删

6、除录音文件。录像: 开始录像:用户进入应用后,点击录像按钮后,应用可以进入录像 界面,然后用户可以自定义的进行录像操作,录完后即将拍好的照片保存 在手机的sd卡中。 浏览录像:用户点击浏览按钮后,将显示所有录像的文件列表,然 后点击文件即可播放录像。 上传录像:用户进入应用后,点击上传按钮后,应用将通过网络与 服务器相连,把自己想上传到服务器的录像上传到服务器的相应位置,然 后将录像在服务的具体信息保存在数据库中。 删除录像:点击相应录像列表中的录像文件,然后弹出的对话框中 点击删除,确定后即可删除录像文件。3. 2. 2非功能性需求 客户端界面设计美观大方,给人良好的审美效果。 系统稳定运行

7、不出错。4.1系统架构图用户开始录音录像拍照返回上一级4. 2系统部署图数蹄懈翻漏黔哺求慚覽仃息塔i mh悴浏览昭flti時台比議i fv.mk l伶媒体熬 剁,务器wehlw»s«tanda记客户端诵* e#>il 上恂媒侔w媒侔91右入cso k)存wr卡软n®w3b构阳五、系统详细设计activity 模块mainactivity 模块cameraresourceactivityrecordsourceactivityrecordaudioactivityrecordaudioresourceactivityaudioreadviewactivitya

8、boutactivity主界面照相界面录像界面录像资源管理界面录像播放界面关于界面拍照:1、调用系统照相功能intent intent=new intent(mediastoreact工on_tmage_capture); startactivityforresult (intent, 1);2、初始化,读取sd卡中的相片文件initreadimage();3、对相片进行图库浏览startscan ();4、删除相片deletelmage (imagename);录音:1、开始录音record();通过mediarecorder创建录音对象来开启自定义的录音功能mediarecorder =

9、new mediarecorder () ; / 判断是都为空 如果为空new 个对象mediarecorder setaudiosource(mediarecorder.audiosource mic);/设置输入源为麦克风mediarecordersetoutputformat(mediarecorderoutputformatdefault) ; /设置输出格式mediarecorder.setaudioencoder(mediarecorder.audioencoder.amr_nb) ; /设置咅频的编码显示录音状态showrecorddialog();2、录音成功,保存到sd卡并且

10、同步显示在table列表中showrecordlist();首先将文件写入到sd卡中,然后再从sd卡中读出录音文件,通过zbwyout的 方式将录音文件显示出来。3、播放、停止播放录音通过点击trow,弹出对话框,或者选取对象的录音名称,然后通过medimp丄ayer创 建出对对象mp layerstartplaying(string singname);mplayerstart () ; /开始播放录音4、删除录音通过弹对话框的方式来显示录音文件列表,然后点击单选按钮来确定删除的文件。 showradmeiodialog(arraylisstring> filena)录像:1、开始录像

11、并保存录像通过 mediarecorder 类来仓u建对象 mediarecorder,通过 mediarecorder 来定 义自定义的录音功能。/实现预览效果mediarecordersetpreviewdisplay(msurfaceholdergetsurface() mediarecordersetvideosource(mediarecorder.videosourcecamera);/ 设 计camera相机mediarecorder.setaudiosource(mediarecorder.audiosource.mic);/设置录像视频的输出格式:thre_gpp、mpge-

12、4、rawamr、mediarecorder.setoutputformat(mediarecorderoutputformat.three_gpp)r/设置视频、咅频文件的编码:aac/amr_nb/amr_mb/defaultmediarecordersetvideoencoder(mediarecorder.videoencoder.h264);mediarecorder.setaudioencoder(mediarecorderaudioencoderamr_nb);/设置视频录制的分辨率。必须放在编码和格式的后面,否则报错mediarecorder.setvideosize(176z

13、 144);/设置录制的视频帧率,必须放在设置编码和格式的后面,否则报错mediarecorder.setvideoframerate(15);mediarecorder.start ();mediarecorderstop ();将录制的录像输出到相应sd卡中。tryfile filedir=new file(mrecordvediopath+n/myaudion);filedir.mkdirs();mrecordvediofile=new file(filedir,androidutilsgetnowdate()+n.mp4n);catch(exception e)e.printstack

14、trace ();2、播放录像根据列表中选中的录像文件,调用系统的播放录像功能intent it = new intent (intent action_v:eew);3、管理录像点击录音列表中的录音文件,然后根据弹出的对话框,对录音文件进行删除等操作。六、功能测试6.1主界面加 19:22照相录音6. 2拍照功能1中莎中目歴"o 加 19:23照相管理拍照浏览上传删除q申杪中团他呼ox加 19:24照号管理拍照浏览上传删除图片显示选择要使用的应用程序筋全能相机s相机图片显zf6. 3查看照片选择要使用的应用程序民发送给好友全能相机6.4录音<3屮协屮团b e m 21:10录

15、音管理中0申o '19:25录音管理录音上传删除退出20140708170033.mp3201407081 85742.mp320140708171 601.mp3201407081 65822,mp3a o tp 0 e -o m 知i 19:26录音管理2014070821 0751.mp320140708170033.mp320140708185742.mp3'删除录音220140708170033. mp320140708185742.mp320140708171601.mp3确定取消20140708165822.厂 mp3°20140708192548. 门

16、 mp3°6. 5录像p玛照相录音20140708172557.mp4<20140708170135.mp4选择要使用的应用程序发送给好友视频播放器设为默认选项。01407081758o3.mp4201407081420140708191837.mp400:0800:11七、代码分析7.1主界面代码public class mainactivity extends activity implements onclicklistener, med i ascannerconnect i onclientprivate button btncam, btnrccordvcdio,b

17、tnrccordaudio,btnabout;©overrideprotected void oncreate(bundle savedinstancestale) super, oncreate(savcdlnstanccstatc);setcontentview(r. layout, main);btncam=(button) findviewbyld(r. id. btncam);btnrecordvedio= (button) findviewbyid(r. id. btnrecordvedio); btnrecordaudio= (button) findviewbyld(

18、r. id. btnrecoredaudio); btnabout=(button) findviewbyid(r. id. btnabout);btnccim. setonclicklistener (this);btnrecordaudio. setonclicklistener(this);btnrecordvedio. setonc1icklistener(this);btnabout.setonclicklistener(this);public string allfiles;private string scan_path ;private static final string

19、 flle_type="image/*; private mediascannerconnection conn;0verri de public void onclick(view v) intent intent二null; swi tch (v. gettd() case r. id. btncam:cameraresourceactivity. class);intent二new intent(this,break;recoredaudioresourceactivity. class);case r. id. btnrecoredaudio: intent二new inte

20、nt (this, break;recoredsourceactivity. class);case r. id. btnrecordvedio: intent=new intent (this, break;aboutactivity. class);case r. id. btnabout: intent=new intent (this, break; startactivity (intent);public void initreadlmage()file folder = new file(z,/sdcardz,+constantinfo. path_image); allfile

21、s = folder 1 ist();for(int i二0;iallf订es. length;i+)log i (0ther", allfilesi+allfiles length);scan_path=environment. getexternalstoragedirectory(). tostring()+constanttnf o.path image+allfilesallfiles. length-1;system, out. printing scan_path +scan_path);log. i ("other", "scan pat

22、h + scan.path); private void startscan()log. i ("other",success+conn);if (conn!=null) conn, disconnect ();conn = new mcdiascannerconnection(this, this); conn. connect ();©override public void onmediascannerconnected() / todo auto-genegated method stublog. i (0ther","success&

23、quot;+corm); conn. scanfile(scan_path, f1le_type);©overridepublic void onscancompleted(string argo, uri uri) try log i("other",uri + success+corm);log. i ("other", ur1 " + uri);if (uri !二 null)intent intent = new intent (intent. action view); intent.setdata(uri);startac

24、tivi ty(intent); finally conn, disco rm ect (); conn 二 null;7. 2录像功能代码implementsbuttonpublic class recoredaudioresourceactivity extends activity oncli ckli stener, surfaceholder. cal 1 backprivatc button btnrccordaudio, btnlook, btnupload, btndclctc; private imageview myimageview;privatebtnrccordaud

25、iostart, btnrccordaudiostop, btnrccordaudiorcturn; private surfaceview msurfaceview;/显示视频的控件 private mediarecorder mediarecorder;/录制视频的类 private surfacclloldcr msurfacclioldcr;private file mrecordvediopath;/录制视频文件的路径private file mrecordvediof订e;/录制视频文件 private textvicw txl,tx2,tx3,tx4,tx5;private in

26、t hour=0;private int minute二0;private int second二0;private boolean bool;/*定时器设置,实现计时*/private ilandler hemdler = new ilandler ();private runnable task = new runnable () public void run() log. i (“other”, 开始录制 66");if (bool) handler, postdelayed(this, 1000);second+;辻(sccond<60) tx5. settext(f

27、ormat (second);else if(second<3600)minutc=sccond/60;second二second%60;1x3. settext(format(minute);tx5. settext(fonnat(second);else hour=second/3600; minute二(second%3600)/60; second=(second%3600)%60; txl. settext(format (hour); tx3. settext(format(minute); tx5. settext(format(second);/格式化时间private

28、string format(int i) string s二i+; if (s. length ()=1) s二o+s;return s;©overrideprotected void oncreate(bundle savedlnstancestate) super. oncreate(savedlnstancestate);this. rcqucstwindowfcaturc(window. feature_no_title);this. getwindowo. setflags(windowmanager. layoutparams. flag_fullscreen, wind

29、owmanager. layoutparams. flag fullscreen);getwindowo. setformat (pixelformat. translucent);setcontentview (r. layout. vedio_main_resource);txl= (textview) tx2= (textview) tx3= (textview) tx4= (textview) tx5= (textview)this, findviewbyld(r. id. recordvedio_txl); this findviewbyld(r. id. recordvedio_t

30、x2); this findviewbyld(r. id. recordvedio_tx3); this, findviewbyld(r. id. recordvedio_tx4); this. findviewbytd(r. id. recordvedio_tx5);btnrecordaudio= (button) this, findviewbyld(r. id. btnrecordaudio);btnlook= (button) this. findviewbyld(r. id. btnlook); btnupload=(button) this. findviewbyid(r. id.

31、 btnupload); btndclete= (button) this. findviewbyld(r. id. btndclete);btnrecordaudiostart=(button)this, findviewbytd(r. id. btnrecordaudiostart); btnrecordaudiostop=(button) this, findviewbyld(r. id. btnrecordaudiostop);btnrecordaudioreturn二(button)this, findviewbyld(r. id. btnrecordaudioreturn);msu

32、rfaceview=(surfaceview) this, findviewbyld(r. id. recordvedio);txl.setvisibility(view. gone);tx2.setvisibility (view. gone);tx3.setvisibility(view. gone);tx4.setvisibi1ity (view. gone);tx5.setvisibility (view. gone);/检查是否存在sdcardi f(environment. getexternalstoragestate(). equals(environment. medta_m

33、ount ed)mrecordvediopath=environment. getexternalstoragedirectory();elsetoast. maketext (this,没 有sdcard/z,toast. length_short). show();surfaceholder ho1der=msurfaceview. getholder ();holder. addcal1 back(recoredaudioresourceacti vi ty. this);/holder 加入回调接口holder.settype (surfaceholder. surface_type_

34、push_buffers);/ 设 置显示器类型btnrecordaudiostart. sctenablcd(true);btnrecordaudiostop, setenabled (true);btnrecordaudio.setonclicklistener (this);btnlook. setonclicklistener (this);btnupload. setonclicklistener(this);btndelete. setonclicklistener(this);btnrecordaudiostart. setonclicklistener(this);btnrec

35、ordaudiostop. setonclicklistener(this);btnrecordaudioreturn. setonclicklistener(this);7. 3拍照功能代码public class camcrarcsourccactivity extcnds activityimplcmcntsonclicklistener, mediascannerconnectionclient private button btncamera, btnlook, btnupload, btndelete;private imageview myimageview; private s

36、tring imagencime=null;©overrideprotected void oncreate(bundie savedinstancestate) super. oncreate(savedlnstancestate);setcontentview(r. layout. camera_main_resource); btncamera=(button) this, findviewbyld(r. id. btncamera); btnlook= (button) this, findviewbyid(r. id. btnlook);btnupload= (button

37、) this, findviewbyld(r. id. btnupload); btndelete二(button) this. findviewbyld(r. id. btndelete); btncamera. setonclickli stener(thi s);btnlook.setonclicklistoncr(this);btnupload. setonclicklistener (this); btndelete. setonclicklistener(this);©overridepublic void onclick(view v) switch(v. getldo

38、) case r. id. btncamera:intent intent=new intent (med i as tore. act t on_tmage_capture); startactivityforresult(intent, 1);break;case r id.btnlook: initrcadlmagc(); startscan ();/look();break;case r. id. btndelete:deletelmage(imagename); break;public void deletelmage(final string fi1 ename)if (file

39、name=null)return;layoutlnflater factory = layoutlnflater. from(this);/ view view=factory. inflate(r. layout, audio dialog, null);alertdialog. bui 1der bui1der = new alertdialog. bui ider(this); builder. settitlec是否删除);builder, setlcon(android. r. drawable, ic delete);builder. setpositivebutton(z,删除“

40、,newdialoglnterface onclicklistener() public void onclick(dialoginterface dialog, int whichbutton) file file = new file(z,/sdcard,z + constantinfo. pat1i_image+ filename+" jpg");file. deleteo ;mytmageview. settmagebi tmap(nul1);toast. maketext (cameraresourceactivity .this,已经 ffllj 除1). sh

41、ow(););builder. setnegativebutton(返h|,newdialogtnterface. onclickli stener () public void onclick(dialogintcrface dialog, int whichbutton) toast. maketext(cameraresourceactivity. this, "返 回 “, 1). show(););bui 1 der. create (). show();public string allfiles;private string scanpath ;private stat

42、ic final string file_type=,zimage/*;private mediascannerconnection conn; public void initreadlmage()file folder = new filec/sdcard+constantlnfo. path_image);allfiles = folder .1 ist();if (allf订es二二null)return;for(int i二0;iallf订es. length;i+)log. i ("other", allfilesi+allfiles length);scan_

43、path=environment. getexternalstoragedirectory(). tostring()+constanttnf o.path image+allfilesallfiles. length-1;system, out. printing scan_path +scan_path);log. i (0ther,"scan path + scan_path);private void startscan()log i (0therlir,, "successl 1 l"+corm);if(conn!二null) conn, disconn

44、ect();conn = new mediascannerconnection(this, this); conn, connec t ();©overrideprotected void onactivityresult(int requestcode, int resultcode, intent data) / todo auto-generated method stub super. onactivityresult(requestcode, resultcode, data);if (resultcode二二activity. result ok)string sdsta

45、tus=environmcnt. getextcrnalstoragcstatc();if (! sdstatus. equals (environment. media mounted) /检测 sdcard 是 否有可用return;bundle bundle=data. getextras();bitmap bitmap= (bitmap) bundle, get ("data");获取相机返回的数据, 并转换为bitmap图片格式fileoutputstream b二null;file file=ncw file(,/sdcard/myimagez,); file,

46、 mkdirs () ;/创建文件夹/创建图片名 imagencime= androidutiis. getnowdeite ();st ring f ilename 二/sdcard/myimage/"+iniagenanie+ jpg" try b = new fileoutputstream(filename); bitmap, compress(bitmap. compressformat. jpeg, 100, b);/ 把数据写入文件 catch (filenotfoundexception e) e. printstacktrace(); finally tr

47、y b. flush ();b. close (); catch (toexception e) e. printstacktraceo ;mylmageview二(imageview) this findviewbyld(r id. myimage); /将图片显示在i mage view里 mylmageview. setlmagebitmap(bitmap);overri depublic void onmediascannerconnected() / todo auto-generated method stublog. i ("other", success22

48、2+corm); conn. scanfile(scan path, file type);0verri depublic void onscancompletcd(string arg, uri uri) / todo auto-generated method stubtry log i(0ther",uri + success333"+conn);log. i ("other", "uri ” + uri);if (uri !二 null)intent intent = new intent (intent. act1on_v1ew);

49、intent. setdata(uri);startactivity(intent); finally conn, disco rm ect ();conn 二 null;7. 4录音功能代码public class recoredsourceactivity extends activity /媒体播放对象 /临时存储路劲 线性布局/表格布局private mediaplayer mplayer = null; public string path = ”;private linearlayout ml inearlayout; private tablelayout userlisttl;

50、private mediarecorder mediarecorder 二 null; /录音媒体 private button start_re;/开始录音按钮private button exit;/退出录影按钮private button delete;/删除录音按钮private alertdialog dialog=null;/弹出的对话框对象private boolean isruning = false; /定义一个布尔类型的变量来监控是否正 在录音pri vate string fi1ermmestring;arraylist<string> filename =

51、new arraylist<string>(); public void oncreate(bundle savedinstancestate) super, oncreate(savedtnstancestate);setcontentview(r. layout, rccorcd main resource);/对布局文件进行初始化 start_re = (button) findviewbytd(r. id. start_re); exit 二(button) findviewbyld(r. id. btncxit); delete= (button)findviewbyld

52、(r. id. btndelete); mlinearlayout = (linearlayout) findviewbytd(r. id.stoplin); userlisttl 二(tablelayout) this. findviewbyid(r. id. userlist); ml inear lay out. setvisibility (view. visible) ; / 可见 userl isttl. removeal 1 views() ;/ 线清楚所有的 rmation();start_re. setonclicklistener(new onclickl

53、istener() ©overridepublic void onclick(view v) / todo auto-generated method stubtoast. maketext (recoredsourceactivity. this, 开 启录音 , toast. length_si1ort) show();mediarecorder 二 null; record (););exi t. setonclickli stener(new onclickli stener () ©overridepublic void onclick(view v) syste

54、m, exit (0););delete. setonclicklistener(new onclicklistener() ©overridepublic void onclick(view v) / todo auto-generated method stub showrad iodialog(f i1ename););/该方法 是用来是实现录音功能并保存到制定文件中 public void record() if (mediarecorder = null) mediarecorder = new mediarecorder () ; / 判断是都为空 如果为空 new 一个对象mediarecorder. setaudiosource(mediarecorder. audiosource. mic);/设置输入源为麦克风mediarecorder. setoutputformat(mediarecorder. outputformat. default) ;/设置输出格式mediarecorder. setaudioencoder(mediarecorder. audioencoder. amr_nb); /设置音频的编码path = environment. getexternalstor

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论