android安卓音乐播放器毕业实习报告+实习日记

时间:2024.4.20

武汉工程大学

计算机科学与工程学院

毕业实习报告

武汉工程大学计算机科学与工程学院   制

说明:

1、 实习指导教师由学院校内教师担任,负责组织实习、学生管理、参加实习答辩、实习成绩评定、给出实习评语等工作。

2、 实习报告由武汉工程大学计算机科学与工程学院提供基本格式(适用于学院各专业),各专业教研室和指导教师可根据本专业特点及实习内容做适当的调整,学生须按指导教师下达的实习报告格式认真进行填写。

3、 实习成绩由指导教师根据学生的实习情况给出各项分值及总评成绩。

4、 指导教师评语一栏由实习指导教师(校内教师)就学生在整个实习期间的表现给出客观、全面的评价,包括实习期间的表现、实习报告的质量、实习答辩的情况等。

5、 学生必须参加实习答辩,凡不参加实习答辩者,实习成绩一律按不及格处理。实习答辩小组应由2人及以上教师组成,其中校内指导教师必须参加,否则视作无效答辩。

6、 实习报告正文字数应不少于5000字,实习日记字数不少于200字/天。

7、 实习报告正文中实习目的与任务、实习地点、实习内容和要求等项,可由指导教师统一给出(自主实习除外)。学生自主实习的,可根据实习的情况自行填写以上内容。

8、 自主实习的学生还应提供由实习单位出具的实习鉴定表(复印件),与实习报告一起装订,作为参加实习答辩和评定成绩的依据。

毕业实习成绩评定表

学生姓名:          学号:    09051001      班级:      01        

毕业实习答辩记录表

指导教师评语


目 录

一、引 言. 2

1.1 项目背景. 2

1.2 安卓介绍. 2

1.3 安卓组件介绍. 3

1.4 安卓XML文件的使用. 4

1.5 编写目的. 5

第二章 系统功能简介. 6

2.1 功能需求分析. 6

2.1.1 播放器的基本控制需求. 6

2.1.2声音控制的程序流程图. 8

2.2 系统性能需求. 9

2.3 运行环境需求. 9

第三章 程序详细设计. 10

3.1 程序界面设计. 10

3.2程序音乐文件过滤. 12

3.3 程序界面Activity类的设计. 12

3.4 音乐播放核心代码. 13

第四章 程序设计结果及测试分析. 15

4.1 程序运行效果图. 15

4.2 程序调试过程. 16

总 结. 17

实习日记. i


一、引 言

1.1 项目背景

当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三个手机操作系统,symbian,Windows mobile,以及谷歌的Android操作系统,其中占有开放源代码优势的Android系统有最大的发展前景。那么能否在手机上拥有自己编写的个性音乐播放器呢?答案是:肯定的,谷歌Android系统就能做到。本文的音乐播放器就是基于谷歌Android手机平台的播放器。

Android:是谷歌于20##年公布的开放式源代码手机系统,它的开放性就优于其它封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。这使得越来越多的人关注这个操作系统。本次作品音乐播放器就是基于Android平台的。

随着计算机的广泛运用,手机市场的迅速发展,各种音频视频资源也在网上广为流传,这些资源看似平常,但已经渐渐成为人们生活中必不可少的一部分了。于是各种手机播放器也紧跟着发展起来,但是很多播放器一味追求外观花哨,功能庞大,对用户的手机造成了很多资源浪费,比如CPU,内存等的占用率过高,在用户需要多任务操作时,受到了不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。针对以上各种弊端,选择了开发多语种的音频视频播放器,将各种性能优化,继承播放器的常用功能,满足一般用户(如听歌,看电影)的需求,除了能播放常见格式的语音视频文件,高级功能:还能播放RMVB格式的视频文件。此外,还能支持中文、英文等语言界面。

要研究了各种市场上流行的手机播放器,了解它们各自的插件及编码方式,还有各种播放器播放的特别格式文件,分析各种编码的优缺点以及各种播放器本身存在的缺陷和特点,编写出功能实用,使用方便快捷的播放器。目前已经实现的功能有能播放常见音频文件的功能,如MP3,WAV等,拥有播放菜单,能选择播放清单,具备一般播放器的功能,如上一曲,下一曲,音量调节等。

1.2 安卓介绍

Android一词的本义指“机器人”,同时也是Google于20##年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前最好的是Android2.0的摩托罗拉Droid

Android是基于Linux内核的软件平台和操作系统,早期由Google开发(在华注册商标名为“安致”),后由开放手机联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。低层以Linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。另外,为了推广此技术,Google和其它几十个手机公司建立了开放手机联盟。

1.3 安卓组件介绍

Activity —— 应用表示层(基类Activity)

应用程序中的每个屏幕都是通过继承和扩展基类Activity来实现的。

同一应用中的每个Activity是相互独立的。程序启动后显示的第一幅画面是应用程序的第一个Activity(默认窗口),而后可以根据需要从这个Activity启动另一个新的Activity。

Activity利用View来实现应用中的GUI(用户直接通过GUI和应用程序做交互)。Activity窗口内的可见内容通过基类View提供。使用Activity.setContentView()方法设置当前Activity中的View对象。

Service —— 没有可见的用户界面,但能够长时间运行于后台(基类Service)

运行于应用程序进程的主线程中,因此Service不会阻塞其他组件和用户界面。

Service是不能自己启动的,必须通过Context对象(如一个Activity)调用startService或bindService方法来启动(用这两种方法启动的Service的生命周期不同)。

Broadcast Receiver —— 用户接收广播通知的组件(基类BroadcastReceiver)

Android中的广播要么来自于系统,要么来自普通应用程序。

很多事件都可能导致系统广播,如手机所在时区发生变化,电池电量低,用户改变系统语言设置等。

来自普通应用程序,如一个应用程序通知其他应用程序某些数据已经下载完毕。

Content Provider —— 为解决应用程序间数据通信、共享的问题(基类ContentProvider)

在Android中,每个应用程序都是用自己的用户ID并在自己的进程中运行。这样的好处是,可以有效地保护系统及应用程序,避免被其他不正常德应用程序所影响,每个进程都拥有独立的进程地址空间和虚拟空间。

Content Provider可以将应用程序特定的数据提供给另一个应用程序使用。其数据存储方式可以是Android文件系统、SQLite数据库或者其他合理的方式。

当数据需要在应用程序间共享时,我们就可以利用ContentProvider为数据定义一个URI。之后,其他应用程序对数据进行查询或者修改时,只需要从当前上下文对象获得一个ContentResolver, 然后传入响应的URI就可以了。

Intent —— 连接组件的纽带

以上4种基本组件中,除了Content Provider是通过Content Resolver激活外,其他3种组件Activity、Service和Broadcast Receiver都是由Intent异步消息激活的。

Intent在不同的组件之间传递消息,将一个组件的请求意图传给另一个组件。因此,Intent是包含具体请求信息的对象。

Intent是一种运行时绑定(runtime binding)机制,它能够在程序运行的过程中连接两个不同的组件。通过Intent,你的程序可以向Android表到某种请求或者意愿,Android会根据意愿的内容选择适当的组件来处理请求。

1.4 安卓XML文件的使用

在安卓工程中,大量使用了XML文件,比如界面布局文件,字符资源文件,风格style文件,简单图形文件等。

比如在界面布局文件中,通过指定控件的排列方式、间隔像素、对齐方式等,达到对页面进行布局的目的,同时使用特定编辑器,实时解析布局文件,到达所见即所得的目的。

在字符资源中,通过关键字编辑字符内容,这样可以在不修改代码的情况下,修改程序内容。同时,考虑多国语言的使用,更加容易替换字符内容,所以我们建议在代码的编写过程中,尽量少地在程序中使用特定语言字符,而是在字符资源文件中编写。

在风格文件中,通过特定关键字,可以使界面呈现统一风格,同时减少重复代码的编写,减轻工作量。图形XML文件中可以实现一些矩形、椭圆形等图形文件,可以指定颜色和渐变颜色范围。

1.5 编写目的

现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,本设计的实现的这主要功能是播放mp3、wav多种格式的音乐文件,并且能够控制播放,暂停,停止,上一曲,下一曲,音量调节,视觉外观,播放列表和歌曲文件的管理操作等多种播放控制功能,界面简明,操作简单。

本项目是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。使人们的生活更加多样化。也使设计者更加熟练Android的技术和其它在市场上的特点。


第二章 系统功能简介

2.1 功能需求分析

根据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器扩展卡需求。

2.1.1 播放器的基本控制需求

下面图2-1是音乐播放器的基本用例图,描述了程序的基本功能。

图2-1  播放器基本用例图

2.1.2声音控制的程序流程图

程序中一个重要模块就是控制播放音量,程序可以通过点击控制条调整程序音量,以下图2-2是声音控制的程序流程图。

图2-2 声音控制的程序流程图

    点击控制条之后,程序判断音量是加还是减,程序获取系统音量,当声音可以按照用户点击的控制条设置时,程序按照控制条的大小进行音量的调整。

2.2 系统性能需求

根据Android手机系统要求无响应时间为5秒,所以就有如下性能要求:

(1)当要求歌曲播放时,程序响应时间最长不能超过5秒

(2)当要求歌曲暂停时,程序响应时间最长不能超过5秒

(3)当要求歌曲停止时,程序响应时间最长不能超过5秒

(4)当要求歌曲上/下一首时,程序响应时间最长不能超过5秒

(5)当要求进行清单列表时,程序响应时间最长不能超过5秒

2.3 运行环境需求

操作系统:Android手机基于Linux操作系统

支持环境:Android 1.5 - 4.2.2版本

开发环境:Eclipse 3.5 ADT 21


第三章 程序详细设计

3.1 程序界面设计

通过XML布局文件设计的程序界面如下图3-1所示。

图3-1 程序界面设计效果图

XML文件使用绝对布局方式,首先是全局的ListView,占据父部的全部长宽,然后是两个平行的进度条,几乎占全部宽度,然后是四个按钮控件,使用四张图片作为按钮的底色,依次是上一曲,播放,停止,下一曲。其中播放按住被点击后,或是正在被播放时,该按钮会换作暂停按钮。XML布局文件实际内容简略如下:

<AbsoluteLayout

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent">  

    <ListView     

     android:id="@id/android:list" 

     android:layout_width="fill_parent"   

     android:layout_height="fill_parent" 

     android:layout_weight="1" 

     android:drawSelectorOnTop="false">

    </ListView>

   

    <SeekBar android:layout_height="wrap_content"

        android:layout_width="match_parent"

        android:id="@+id/musicBar" >

    </SeekBar>

    <TextView android:text="TextView" android:layout_height="wrap_content"

        android:layout_width="wrap_content" android:id="@+id/textView1" "></TextView>

    <ImageButton android:id="@+id/imageStop" android:src="@drawable/stop"

        android:layout_height="wrap_content" android:layout_width="wrap_content"

></ImageButton>

    <ImageButton android:id="@+id/imageLast" android:src="@drawable/last"

        android:layout_height="wrap_content" android:layout_width="wrap_content" ></ImageButton>

    <ImageButton android:id="@+id/imageStart" android:src="@drawable/start"

        android:layout_height="wrap_content" android:layout_width="wrap_content" ></ImageButton>

    <ImageButton android:id="@+id/imageNext" android:src="@drawable/next"

        android:layout_height="wrap_content" android:layout_width="wrap_content"

></ImageButton>

    <SeekBar android:id="@+id/soundBar" android:layout_height="wrap_content"

        android:layout_width="match_parent" >

    </SeekBar>

</AbsoluteLayout>

3.2程序音乐文件过滤

程序会对音乐文件夹进行扫描过滤,提取出后缀为.mp3的文件以供播放,文件过滤类的内容如下:

public class MusicFilter implements java.io.FileFilter{

       @Override

       public boolean accept(File pathname) {

              boolean b = false;

              if(pathname.isDirectory()){

                     b = true;

              }else{

                     if(pathname.getName().endsWith(".mp3")){

                            b = true;

                     }else{

                            b = false;

                     }

              }

              return b ;

       }

}

3.3 程序界面Activity类的设计

程序的界面MusicTestActivity类是程序的主要部分,设计到界面所有控件的操作及设计、程序的流程控制及音乐播放的核心部分。MusicTestActivity类的大纲如下图3-2所示。

    字段mediaPlayer是音乐播放的核心变量,进行音乐播放,处理器mHandle是对音乐播放流程进行管理的变量,然后六个监听器是对按钮及进度条的变化进行及时响应,剩下的都是辅助标记变量,标记当前播放信息,以及控制参数信息。

图3-2 MusicTestActivity类的设计

3.4 音乐播放核心代码

整个程序的运转都是围绕音乐播放进行的,进行了流程控制及异常处理等多个阶段,而播放的核心是以下代码:

private void playMusic(String path){

          try {

                 mediaPlayer.reset();//先重置一下

                     mediaPlayer.setDataSource(path);//设置音乐文件的路径

                     mediaPlayer.prepare();//准备

                 mediaPlayer.setLooping(true);//循环播放             

                     mediaPlayer.start();//开始播放

                     //设置音乐拖动度的当前进度初始值

                     musicBar.setProgress(mediaPlayer.getCurrentPosition());

                     //设置音乐拖动条的最大值

                     musicBar.setMax(mediaPlayer.getDuration());

                     //System.out.println("当前正在播放的歌曲时间是:" + mediaPlayer.getDuration());

                     //显示出来当前音乐的时间

                     tv.setText( toTime(mediaPlayer.getCurrentPosition()) + " / " + toTime(mediaPlayer.getDuration()));

                     //当歌曲开始播放时.线程也开始运行

                     this.startProgressUpdate();

              } catch (IllegalArgumentException e) {

                     e.printStackTrace();

              } catch (IllegalStateException e) {

                     e.printStackTrace();

              } catch (IOException e) {

                     e.printStackTrace();

              }

    }

mediaPlayer是设计到硬件播放的变量,多以进行了完善的异常处理,同时获取文件的长度信息。

第四章 程序设计结果及测试分析

4.1 程序运行效果图

如图4-1,是程序运行的效果图。

图4-1 程序运行效果图

经过在手机上运行,程序可以流畅地播放音乐,无卡顿现象,可以从音乐列表的第一栏播放到最后一栏,实时准确地显示播放进度信息,并调整控制音量大小。按钮上一曲、下一曲及停止都可以正确地作用,暂停按钮在音乐播放的时候可以正确显示并作用,当被点击之后,即显示为播放按钮,此时点击该按钮也可以正确播放音乐。

经测试,最终得到的程序可以在手机上运行,并无任何bug及程序不响应现象。

4.2 程序调试过程

ADT工具附有LogCat工具,在函数的开始结束及分支处设置特定文字标记内容,即可以在LogCat工具中打印调试内容,这对于bug的判断及追踪有很大帮助,并了解程序的运行流程。图4-2是LogCat工具使用的截图。

图4-2 LogCat工具使用的截图


总 结

由于对android的接触较少,所以也遇到了一些问题,无论是哪种语言首先要有自己的思路,接下来就是通过语言的实现。我主要遇到android的四大组件的理解和使用,刚开始不知道如何用相关的组件,而且android的组件相当的多,就老师上课讲的相关知识比较少,对于我们初学者学习比较困难,而且,只是不是那么的连贯和详细,上课的时间只是跟上老师再敲代码,实现一个具体的功能,但是不有真正的弄懂它的使用方法,所以,我们在课设中出现很多问题。


实习日记

20##年3月4日   星期一   晴

    今天上午,全班同学被召集在计算机院机电大楼机房召开实习动员大会,与上次我们参加的生产实习不同的是,这一次要进行的是毕业实习,也以为着我们要在实习的过程中亲自动手尝试做项目。有了之前的实习经历,心里还是蛮期待这一次能学到点之前没有学过的知识。

    在动员大会上,班导给我们简要的介绍了一下我们实习的安排和目的,并且给我们介绍了带领我们进行生产实习的老师,裴老师是北大青鸟的一名培训教师,看上去也是比较和蔼,本次实习就由他给我们讲述安卓开发方面的内容,希望能在他的指导下,学到点真东西。

    接下来的时间,裴老师给我们大概介绍了一下实习的内容,在复习Java基础知识的前提下,一步步接触安卓的内容,从明天开始正式的开启生产实习之路,加油!

20##年3月5日   星期二   晴

       今天开始我们算是正式开始了生产实习,由于考虑到大家基础知识掌握的程度不同,裴老师决定先给我们复习一下Java的基础知识,从开发工具到基本语法,再从编程逻辑到数组与集合的操作,带领我们很快的过了一遍,并配套的布置了一些相关的题目,虽然讲得很快,但因为我们之前也都或多或少的学过,因此第一天的课程也算顺利,几乎没有留下任何问题。

       在跟着裴老师复习基础的过程中,尽管只是一次复习和总结,但还是解决了一些之前一直模棱两可的问题,比如说集合那一部分,各种不同集合结构的区别与联系,以及它们的用法等,因此还是有一定收获的,与此同时,这也算是为这次的生产实习开了一个好头吧。

       明天的课程还是复习有关Java面向对象编程的知识,尽管也算比较熟悉了,但还是希望能从中发现新东西。

20##年3月6日   星期三   多云

       继昨天复习完Java基础知识后,今天我们将会复习Java面向对象编程的知识,裴老师先把昨天遗留的一点小问题解决后,就开始了这一部分内容的复习。

       这一部分作为Java编程的重点,主要是培养我们面向对象编程的思维,因此还是很重要的。主要涉及到类和对象,面向对象的三大特性——封装、继承和多态,以及抽象类与接口等知识。同样,因为我们之前也都接触过,因此理解起来也不算困难,跟着老师的进度也觉得比较轻松。老师也用一些贴近生活、有趣的例子给我们做讲解,这让我们接受起来也更加容易。

       课后老师给我们留了一个总结性的题目,让我们实现一个动物乐园的程序,自己下来实现时发现,它结合了面向对象几乎所有的知识,同时还运用到了设计模式里面的一种,这对于知识的掌握和理解真的很有帮助,希望接下来能继续保持这种状态。

20##年3月7日   星期四   多云

       前两天裴老师带着我们把Java的基础知识和面向对象编程思想过了一遍,总体效果还不错,从今天开始,就进入到了安卓方面的知识了。

       老师首先给我们介绍安卓平台的特性:应用程序框架支持组建的重用和替换,包括打电话应用程序、文件管理器等。Dalvik虚拟机专门为移动设备做了优化,Dalvik虚拟机是基于寄存器的,相对于Java虚拟机速度要快很多。内部集成浏览器基于开源的WebKit引擎。优化的图形库包括2D和3D图形库, SQLite用作结构化的数据存储 等。老师还给我们介绍Android的四层体系结构,由上而下依次是应用程序、应用程序框架、核心类库和Linux内核。

       老师给我们介绍了 Android组件类:

l  Activity:一个Activity通常就是一个单独的屏幕,通过调用startActivity()方法可以从一个屏幕导航到另一个屏幕,打开Activity的条件被封装在Intent中。当一个新的屏幕打开后,前一个屏幕将会暂停,并保存在历史堆栈中。默认情况下,Android将会保留从主屏幕到每一个应用的运行屏幕。

l  Service:一种长生命周期的、没有用户界面的程序,通过嗲用Context.startService()来启动一个Service,还可以通过使用Context.bindService()方法连接到一个Service上,连接之后,我们还可以通过Service提供的接口与它进行通信。

l  Broadcast Receiver:为了实现系统广播而提供的一种组件。

l  ContentProvider:用来实现不同组件之间数据的共享

l  View:是Android中图形用户界面的基类。Android的图形界面展示可以分为三层:底层是Activity,上面是Window,再上面是Views.View又可以分为View(按钮、单选框、多选课等)和ViewGroup(布局控件)。

l  Intent:不同组件之间相互导航的纽带,封装了不同组件之间导航查找的条件

       总的来说,今天收获着实不小,接下来要做的就是自己回去慢慢熟悉回顾了。

20##年3月8日   星期五   多云

       昨天复习完数据库之后,老师说从今天开始正式进入了安卓开发的领域了,因为我们有很多人没有接触过这方面的知识,所以裴老师又很耐心的给我们介绍了安卓的部分重要知识,同时还给我们简单的介绍了一下安卓开发的重要工具——Eclipse,接下来我们所有的实习内容都是在这个环境下完成的。

       老师首先用飞秋给我们共享eclipse+ADT+SDK开发环境,向我们介绍开发环境机器用法。Android SDK下载包说明:add-ons   空目录保存Google插件工具,platforms  空目录保存不同版本SDK,tools  SDK工具,SDK Setup.exe    在线安装SDK的可执行文件,SDK Readme.txt   说明文件,Dalvik Debug Monitor Service(DDMS),即Dalvik调试监控服务,是一个可视化的调试监控工具。在DOS命令窗口中输入ddms就会弹出界面。主要是对系统运行后台日志的监控,还有系统线程、虚拟机状态的监控,另外还可以模拟发送短信、拨打电话和发送GDP位置信息老师首先制作一个helloword的过程,作为例子给我们讲解一个Android 应用程序结构:src    源文件文件夹,gen  保存自动生成的R资源类文件夹,R.java  工程自动生成的资源索引类,assets   资源文件夹,res   资源文件夹,drawable  保存图片等资源文件夹,layout   界面布局文件夹,layout->main.xml   界面布局文件,values  简单配置文件夹,values->strings.xml   字符串配置文件,AndroidManifest.xml  Android配置清单文件,default.xml  属性文件。然后老师给我们介绍了AVD即安卓虚拟设备,它可以模拟真实手机,这为没有真实设备进行调试的同学带来了方便,它功能相当完善,可以联网甚至是模拟手机的GPS或重力感应。

然后老师在helloword工程上修改布局文件,告诉我们一些简单的button和editview及textview的设计属性,对于第一次接触这个的我来说,觉得这是一次新奇的体验,于是自己也试着按照自己的所想制作了几个简单的手机程序,尽管拿不上台面,内心还是很开心的。

       在讲解安卓组件的时候,因为它本身的知识比较多,而且真正的开发过程中我们也不会去弄它,因此老师只选择了最重要的几个部分给我们做了演示,包括控件、布局和资源等,简单的展示了各个属性资源文件的常用字段功能。

       正式踏上了安卓开发之路,以后要更加努力了。

20##年3月11日   星期一   多云

       时间过得真快,转眼一个星期就过去了。第一个星期我们的主要任务是在复习基础的同时,接触了一点点安卓开发的知识,而从这个星期开始,我们就要开始进行实战开发了。裴老师准备让我们在开发项目的同时来学习新的东西,我觉得这是一个很好的学习方式,这样的话对于新知识的理解和掌握帮助肯定更大。

       我们要做的第一个项目是简单的计算器程序,经过昨天的了解,我们知道了基本的按钮监听和显示文字的方法,所以今天可以做计算器程序了。由于我们之前做过计算器,知道其中的流程和处理,所以裴老师今天带我们做的是有页面跳转的计算器,这时就设计到activity界面的生成和数据传递了,activity的生成要使用到intent,在intent中附带上Bundle数据,这时,要生成的页面activity就可以提取到数据了。

今天我们了解到了activity、intent的一点用法,很欣喜。

20##年3月12日   星期二   多云

       经过昨天的学习,我们略懂皮毛了,接下来老师带领我们继续深入学习。

       控件之中,控制条和列表是我们常用的控件之一,所以今天老师带领我们学习使用这两个控件。控制条经过布局之后,可以在布局文件和程序中设置它的长度大小,然后在程序中设置它的监听器,以响应用户的操作。而列表比较复杂,首先布局上,我们除了再屏幕布局文件中设置列表控件之外,我们还有位控件的每一项设置布局文件,当然也可以使用系统自带的典型布局项,当然,可选范围比较有限,所以为了我们能自由个性化地设置自己的列表,老师带领我们做个性化的列表。

       除了布局项自己可以设置之外,列表的很多字段都有很多意义,可以设计出很漂亮的列表出来。这完全出乎我的意料了,很高兴能了解他们。同时为了程序的流畅度,老师教我们合适地使用缓存,这使得列表的加载更快更流畅,毕竟手机的性能远远不如台式机或笔记本。

20##年3月13日   星期三   多云

       今天我们继续了解安卓的功能和基础用法。今天老师给我们讲解数据存储。

       裴老师今天又给我们介绍了一个新的知识点——数据存储,在安卓中,数据存储有四种途径,sqlite是轻量数据库,它的数据语言和sql比较相似,适用于存储大量有规律的数据,SharedPreference是缓存,适用于存储少量无规律数据,File即本地文件存储,难以进行数据更新,而且存取操作步骤繁多,最后是ContentProvider,适用于程序间共享数据。首先裴老师带我们熟悉sqlite的数据库的创建更新及增删查改操作。然后是缓存,使用键子队进行数据的存取。忽略了文件的存取,介绍ContentProvider,典型的是通讯录信息,所有程序只要申明了相关权限,就可以读取通讯录信息。然后由于数据的操作比较容易出错,老师教我们在关键的地方使用Log类打印信息,这样可以清楚程序的运行流程,并清楚bug的来源。

知道了数据的存储,我很高兴,之前的进度条控制信息不能保存,现在有数据存储,我决定使用缓存保存这些信息,经过这些操作,我知道要做出完善的程序就必须熟练掌握这些东西,看来接下来的日子是不会轻松了。

20##年3月14日   星期四   晴

       新的一天开始了,老师今天教我们使用服务service、线程及Handler、及notification。今天的任务比较重,我提前感受到了压力。

       老师首先告诉我们,安卓平台为了缓解程序的运行压力,将很多任务都分担到系统上了,比如通知notification,只要程序使用短短几行代码,就可以通知系统发出消息通知。老师用例子给我们讲解了通知的使用方式。由于我们在java中都了解过线程,handler的用法与之类似,所以老师简单略过,不过提醒我们,由于界面的更新是UI线程负责,所以UI线程的子线程里不能进行界面的更新操作,这会报错。最后是service,老师带领我们创建服务,由于很多程序在退出界面后,后台然后运行着由时间触发等的服务,所以服务是一个很有用的组件,老师的例子是在服务中每隔5秒间隔,通过notification向系统顶部通知栏发送一条消息并记次数。

       又是三个很陌生的知识点,看来越往后学习的难度真是越来越大了,尽管听老师讲得有点云里雾里的,但还是跟着老师的步伐完成了接下来的每一步操作,今天学习了很多,在脑子里都是混沌的,回去寝室自己好好重新自己做了一遍。

20##年3月15日   星期五   多云

       今天老师带领我们熟悉了很多有用的操作,权限、SD卡的存取、Toast讯息、菜单的设计。

       为了手机信息的隐私及安全,安卓平台要求程序在AndroidManifest.xml中申明所需权限,或是在进行权限操作之前,显式通过醒目对话框申请相应权限,这样,手机用户可以清楚程序进行了哪些操作。比如声音的控制、屏幕亮度的控制、sd卡文件的存取、数据库的创建及更新、通讯录短信电话的监听等。这对于手机是一种安全保证。Sd卡文件的存取只要申明了读写权限,我们就可以进行相应地读取。菜单的设计,我们添加MenuItem,并编辑内容及相应操作,便可以进行操作。同时,我们也可以通过布局文件进行菜单的设计。我们了解了Toast公用类,只要传入信息、上下文并调用函数,就可以再屏幕下方显示提示讯息,这是个非常有用的功能。

       最终综合了这个星期所学到的所有新知识,我们粗略地了解了安卓平台的一些基础用法,这对以后自己动手的时候,绝对是有着很大的帮助。

20##年3月18日   星期一   晴

       时间已经来到了生产实习的最后一周了,今天老师给我们尽量多得休息时间,让我们提提自己做小程序的过程中遇到的困难,应该是让我们好好总结一下前两周的学习成果吧。

       回想过去两周,复习了Java的基础知识,然后在这个基础上,重温数据库,熟悉安卓平台的五大组件,了解布局文件的设计,了解了监听器,了解了后台服务,了解菜单、SD卡的存取,了解权限、线程。这些知识理论性都很强,理解起来有点困难,只有把它们结合实际的项目,自己动手亲自实践,才能更好的掌握这些技术。无论怎么样,如果没有日复一日的长久练习,是不会学到真正的技能的。

20##年3月19日   星期二   阴

       今天老师带领我们熟悉网络编程方面,目前计算机的发展,完全离不开因特网,所以让我们的手机联网获取信息是必不可少的功能,更何况安卓是3G手机的主流平台之一。

我们在java学习的过程中就了解过网络编程,所以在安卓上时并没有感觉到太多的困难。首先,我们生成HttpClient client = new DefaultHttpClient();

HttpGet get = new HttpGet(url);

HttpResponse response = client.execute(get);

HttpEntity entity = response.getEntity();

获取到网络传输的信息,然后显示在手机上。为了便于我们看到效果,老师让我们在网上找一张图片的URL,然后将这个URL贴到代码作为字符串,生成URL,作为参数传入,然后使用输出流显示到图片控件上,这样在手机屏幕中央我们就看到了网上的图片。

接下来老师让我们自己练习,于是我们开始综合自己所学,在网上找到MP3文件的URL,然后得到输出流之后,将它输出到SD卡本地文件中,得到了MP3文件,虽然没有学会自己播放,也算了解了很多,这些都是学校学不到的。真是收获的一天。

不过听老师说我们的实习最后要做一个音乐播放器,很兴奋。

20##年3月20日   星期三    阴

       今天是实习的倒数第三天,老师开始带领我们做音乐播放器。

       首先,老师告诉我们功能需求,要可以调整音量大小,可以调整播放的进度,要加载音乐文件到音乐列表,要上一曲、下一曲、播放暂停、停止。然后我们进行相应地分析,音量大小和进度控制我们选择使用两个控制条,然后四个按钮做上下一曲,播放暂停、停止,其中播放暂停使用一个按钮,因为我们一个时候只有一首歌曲在播放,所以跟去当时状态决定此时应该显示的是哪个按钮。然后我们还需要扫描特定文件夹,找到所以可以播放的歌曲的文件名,将它们加载到列表中,并存储它们的完整路径以供播放。

       然后裴老师带领我们查资料,看哪些个类是用于播放音乐文件的,并查阅它们的用法。最后我们找到了MeidiaPlayer类。然后老师让我们设计布局文件,最后老师给了我们一种布局,供我们参考。接下来就要设计的代码编写工作了,今天的三个小时也过去了,老师让我们课下自己去思考应该怎么写代码,并让我们尽量多地写。

20##年3月21日   星期四   雨

       转眼之间来到了实习的倒数第二天,我们的播放器项目也进入了一个新的阶段。继昨天给我们讲解之后,裴老师今天将带领我们实际编写代码。

       首先,老师带领我们写文件过滤,实现java.io.fileFilter接口,就可以轻易地实现文件过滤了。然后activity类中,我们要有字段MediaPlayer,还要有相关字段为列表储存信息,然后是四个按钮盒两个控制条,然后是标记信息,标记播放状态,标记当前播放曲目,记载音量大小,记载歌曲时间长度等。

       首先我们编写播放列表加载的模块,我们写过很多次列表,所以难不倒我们。然后是四个按钮的监听,第一个当然是播放,将MediaPlayer重置然后传入音乐文件路径并开始就行,将MediaPlayer停止即可以停止播放,当然同时要修改同房状态。然后是上下一曲,只要所点按钮可以作用,即上或下一曲还有歌曲,就可以修改当前播放曲目字段,并传入路径并开始播放即可。然后是音量控制,获取系统音量,获取要调整的目标音量,将其修改即可,然后是进度条,每次播放的时候设置进度条长度是歌曲长度,然后获取目标位置,在MediaPlayer中传入变量即可。最后是列表单项的单击,将被点击项目的路径传入MediaPlayer播放即可。

       今天老师大部分都是让我们先动手,不会的再教我们,最后留了一点小问题留待明天解决,明天可是最后一天,想想还真有点不舍。

20##年3月22日   星期五   雨

       今天是我们为期三个星期的生产实习的最后一天,过了今天,我们就要开始准备实习答辩,然后就要开始毕业设计部分了,我们安卓的学习将暂时告一段落。

       裴老师先带着我们把昨天最后遗留的一点点问题解决了,然后又给我们总结了三周来我们的学习过程和学习成果,他再一次提到了他给我们介绍的那些技术,希望我们能好好掌握这些技术,尽管有些可能真的很难理解,但至少有点印象,不会的自己下去好好充电,毕竟希望我们对自己的未来负责。

       到了最后的尾声,大家在一片掌声中送别了裴老师,感谢他三个星期以来的谆谆教导,对我来说,这三个星期应该是比较难忘的,不仅学到了很多平时学不到的知识,同时那些经历对自己以后的成长也是一笔宝贵的财富。感谢那些可爱的同学,感谢敬爱的老师,谢谢。

更多相关推荐:
Andriod毕业实习报告

毕业实习报告专业班级学号学生姓名指导教师实习时间实习成绩说明1实习指导教师由学院校内教师担任负责组织实习学生管理参加实习答辩实习成绩评定给出实习评语等工作2实习报告由武汉工程大学计算机科学与工程学院提供基本格式...

Android实训报告

Android学院班级学号姓名实训报告目录一实训背景及目的要求311背景简介312实训目的及要求3二设计思路321设计题目322功能分析423模块划分4三设计实现及代码分析431第一个Activity4311布...

Android实训报告

通信与电子信息专业实训报告项目名称基于Android的游戏开发班级10通信1班姓名学号指导教师成绩实训时间年月日目录一实训目的及其意义311目的及意义312研究现状3二实训主要任务重点及难点421任务422重点...

android实习报告

实习报告实习目的:生产实习是计算机科学与技术专业重要的实践性教学活动,其目的是使学生们进一步加深对所学知识的理解,理论联系实际,巩固所学有关计算机基础理论知识和基本技能,学习有关计算机最新技术方面的应用,增强学…

Android实训实验报告

报告编号第5组综合课程设计报告基于Android平台的记事本的设计与实现学生姓名指导教师所在系电子工程系所学专业计算机科学与技术班级20xx年12月摘要基于Android平台的记事本的设计与实现随着科学技术的不...

android实习报告

实习项目名称3GAndriod实习学时同组学生姓名实习地点实习日期成绩批改教师批改时间实习报告一实习目的1掌握android系统开发的一些常用知识2拥有独立解决开发中遇到问题的能力3熟悉android软件开发流...

android实训报告

android实训报告学号09090103姓名冯超洁南京师范大学泰州学院题目学姓班信息工程学院Android实训报告AndroidGPS系统号09090103名冯超洁级信工09120xx年6月1AndroidG...

android生产实习报告

生产实习报告一实习目地生产实习是把理论与实际结合通过对理论知识的理解领悟从而运用到生活实际巩固所学的知识提高对实际生活的认识积累经验同时生产实习也是大学生以学生身份到工作者身份的一个重要过度阶段在此期间学生能够...

android实训报告

多媒体技术综合实训课题名称多媒体展示系统的设计与开发计算机与软件学院计算机多媒体游戏软件设计与开发计媒10211002553224学号10025532061002553218院系专业班级100255321210...

android实训报告

实习报告实习性质学院班级学生姓名学号指导老师实习时间一实训目的和任务1实训任务信息工程学院android视频播放器系统的设计与实现2实训目的本学期我们学习了JAVA课程和Android应用程序开发课程而Andr...

android开发实习报告总结

Android开发实习总结有一名话叫做不经过风雨怎么见彩虹我想改一下不真正进入社会怎能了解社会呢在这次实习中给我收获最大的是我觉得很多工作需要我去摸索和探讨要不怕吃苦勇于激流勇进有的工作虽然单挑又重复但这是磨练...

Android实验报告

实验报告课程名称手机应用开发实验名称Android实验院系信息与控制工程学院专业班级姓名学号指导教师20xx年月日实验一一实验名称Android开发环境搭建与Helloworld二主要实验仪器及套数计算机一台W...

android实习报告(25篇)