毕业论文:基于Android平台多媒体播放器的设计与实现(终稿)

单位代码
10642
密 级 公开 学 号
200602044011 重庆文理学院
基于Android平台多媒体播放器的设计与实现 论文作者 张 浩 指导教师 王瑞胡 学科专业 [计算机科学与技术 | 计算机科学与技术] 提交论文日期 年 月 日 论文答辩日期 年 月 日 学位授予单位重庆文理学院
中 国  重 庆 2010年4月 https://www.360docs.net/doc/2b10183835.html,计算机学院毕业论文设计 目录 I
目 录

1 Android体系结构分析 ..................................................................................................................... 1
1.1 引言 .............................................................................................................................................. 1
1.2 Android体系结构介绍 ............................................................................................................... 1
1.2.1应用程序 ............................................................................................................................. 1
1.2.2应用程序框架 ..................................................................................................................... 1
1.2.3库和运行环境 ..................................................................................................................... 1
1.3 Android应用程序组成 ................................................................................................................. 2
1.3.1 Activity介绍 ....................................................................................................................... 2
1.3.2 Broadcast Intent Receiver介绍 .......................................................................................... 2
1.3.3 Service介绍 ........................................................................................................................ 3
1.3.4 Content Provider介绍 ........................................................................................................ 3
1.4 Android应用工程文件组成 .......................................................................................................... 3
2 基于Android多媒体播放器设计 ................................................................................................... 5
2.1 多媒体播放器功能设计 ............................................................................................................... 5
2.2 播放器详细设计 ........................................................................................................................... 5
2.2.1 多媒体播放器应用名称 .................................................................................................... 5
2.2.2多媒体播放器应用图

标 ..................................................................................................... 5
2.2.3播放列表设计 ..................................................................................................................... 5
2.2.4视频播放的设计 ................................................................................................................. 7
2.2.5音乐播放的设计 ................................................................................................................. 8
3 设计作品展示 ................................................................................................................................ 13
3.1作品截图展示 .............................................................................................................................. 13
3.1.1载有Android的模拟器.................................................................................................... 13
3.1.2音乐和视频选择界面 ....................................................................................................... 14
3.1.3播放列表 ........................................................................................................................... 14
3.1.4音乐播放界面 ................................................................................................................... 15
3.1.5后台播放音乐中 ............................................................................................................... 16
3.1.6视频播放界面 ................................................................................................................... 16
https://www.360docs.net/doc/2b10183835.html,2006级 张 浩 毕业设计
III
基于Android平台多媒体播放器设计与实现 计算机科学与技术 [张 浩]
指导教师 王瑞胡
摘要 播放多媒体的时候用户启动了其他Activity这个时候程序要在后台
继续播放如检测SD卡上文件的变化或者在后台记录用户的地理信息位置的改
变等。此时则需要用到Android提供的Service可以通过Activity来启动一个
Service系统也将保持这个Service一直运行。然后我们就可以把播放程序放到
Service里面运行了然后通过Activity来调用Service内控制MediaPlayer的
方法来控制播放器其中传递参数由Intent进行。
关键词 Android多媒体IntentActivityService https://www.360docs.net/doc/2b10183835.html,姓名张浩
IV Android platform media player based on the design and
implementation -------Android platform on the Analysis and Design
Major: Computer Science and Technology Class: 1
Author: Zhang Hao Supervisor: Wang Ruihu AbstractWhen a user starts playing multimedia other Activity, this time program
to continue playing in the background; such as detecting changes in files on SD cards;
or in the background and re

cord the location of the user's geographic information and
changes. At this point you need to use Android to provide the Service, through the
Activity to start a Service, the system will remain the Service has been run. Then we can
put the player inside the running of the Service, and then to call the Service Activity
MediaPlayer within the control method to control the player, including passing
parameters by the Intent to
KeywordsAndroid ; Multimedia ;Intent;Activity;Service https://www.360docs.net/doc/2b10183835.html,2006级 张 浩 毕业设计
1 1 Android体系结构分析 1.1 引言 Android是基于Linux内核的软件平台和操作系统早期由Google开发后由开放
手机联盟Open Handset Alliance开发。它采用了软件堆层software stack又名
以软件叠层的架构主要分为三部分。低层以Linux内核工作为基础只提供基本功
能其他的应用软件则由各公司自行开发以Java作为编写程序的一部分。另外为
了推广此技术Google和其它几十个手机公司建立了开放手机联盟。Android在未公开
之前常被传闻为Google电话或GPhone。大多传闻认为Google开发的是自己的手机电话
产品而不是一套软件平台。到了2010年1月Google开始发表自家品牌手机电话的
Nexus One。目前最好的是Android3.0。 1.2 Android体系结构介绍 1.2.1应用程序 Android的应用程序通常涉及用户界面和用户交互这类程序是用户实实在在能感
受到的。Android的应用程序目前以Java语言进行编辑。Android本事提供了桌面、联
系人、电话和浏览器等众多的核心应用。同时应用程序的开发者还可以使用应用程序框
架层的API实现自己的程序这也是Android开源的巨大潜力的体现。Android这种开
放而强大的平台给每个程序开发者提供了公平的机会每一个开发者都可以加入移动互
联的世界共同推动移动互联的发展。 1.2.2应用程序框架 普通的开发者可以使用Android核心应用程序使用的系统API。Android种的应用开
发框架设计的非常巧妙通过这套应用框架各种组件可以被用户的应用重复利用各
种服务也可以被各种应用重复利用。开发人员应该很好地理解这套框架的工作机制这
样才能开发出更好的应用程序。 1.2.3库和运行环境 Android包含了一些C/C++库这些库能被Android系统中不同的组件使用。它们通https://www.360docs.net/doc/2b10183835.html,姓名张浩
2 过Android应用程序框架为开发者提供服务。以下是一些核心库。
系统C库。一个从BSD继承来的标准C系统函数库libc它是专门为基于嵌入式
Linux的设备定制的。
媒体库。基于PacketVideo OpenCORE改库支持多种常用的音频、视频格式回放和
录制同时支持静态图像文件。编码格式包括MPEG4、H.264、MP3、AAC

、AMR、JPG、PNG。
Surface Manager。对显示子系统的管理并且为多个应用程序提供了2D和3D图层
的无缝融合。
LibWebCore。一个最新的Web浏览器引擎用来支持Android浏览器和一个可嵌入
的Web视图。
Android包括了一个核心库该核心库提供了Java编程语言核心库的大多数功能
。 1.3 Android应用程序组成
一般来说Android程序主要由下列4部分组成他们分别是Activity、Broadcast
Intent Receiver、Service、Content Provider。 1.3.1 Activity介绍 Activity是开发者遇到的最频繁的应用模块也是Android当中最基本的模块之一在Android的程序当中Activity一般代表手机屏幕的一屏。在Activity当中可以
添加一些View并且可以对这些View做一些事件的处理。一般一个Android应用是由
多个Activity组成的这多个Activity之间可以进行相互跳转。 1.3.2 Broadcast Intent Receiver介绍
可以使用Broadcast Receiver来让应用对一个外部的事件做出响应。这是非常有意
思的例如当电话呼入这个外部事件的到来的时候可以利用Broadcast Receiver
进行处理。例如当下载一个程序成功的完成的时候任然可以利用Broadcast Receiver
进行处理。Broadcast Receiver不能生产UI也就是说对于用户来说不是透明的用
户是看不到的。Broadcast Receiver既可以在AndroidManifest.xml中注册也可以在
运行时的代码中使用Context.registerReceiver()进行注册。只要是注册了当时间来
临的时候即使程序没有启动系统也在需要的时候启动程序。各种应用还可以通过使
用Context.sendBroadcast()将它们自己的intent Broadcast广播给其他应用程序。 https://www.360docs.net/doc/2b10183835.html,2006级 张 浩 毕业设计
3 1.3.3 Service介绍
Service是一种程序它可以运行很长的时间但是它却没有用户界面。这么说有
点枯燥我们来看个例子。打开一个音乐播放器的程序这个时候若想上网了那么
我们打开Android的浏览器这个时候虽然我们已经进入了浏览器这个程序但是歌
曲的播放并没有停止而是在后台继续一首接一首的播放。其实这个播放就是由播放音
乐的Service进行控制。当然这个播放音乐的Service也可以停止例如当播放列表
里面的歌曲都结束或者用户按下停止音乐播放的快捷键等。 1.3.4 Content Provider介绍
Android这个系统和其他的操作系统还不太一样我们需要记住的是数据在
Android当中是私有的当然这些数据包括文件数据和数据库数据以及一些其他类型
的数据。Content Provider就是用于两个程序之间的数据交换的。一个Content Provider
类实现了一组标准的方法接口从而能够让其他的应用保存或读取此Content Provid

er
的各种数据类型。也就是说一个程序通过实现一个Content Provider的抽象接口将
自己的数据暴露出去。外界根本看不到也不用看到这个应用暴露的数据在应用当中是
如何存储的即用数据库存储还是用文件存储还是通过网上获得这些一切都不重要
重要的是外界可以通过这一套标准而统一的接口和程序里的数据打交道。可以读取程序
的数据也可以删除程序的数据当然中间也会涉及一些权限问题。 1.4 Android应用工程文件组成











图一 项目结构 https://www.360docs.net/doc/2b10183835.html,姓名张浩
4  源文件 包含Activity。源文件都在上边的src目录中。
 R.java文件。这个是Eclipse自动生成的应用开发者不需要去修改里边的内
容。里边内容的修改也是有Eclipse自动来处理的。R文件对于应用开发者来说
基本没有什么用但是对Android系统非常有用。在这个文件当中Android
对下边即将介绍的资源进行了全局的索引。在下边介绍的res文件夹中内容
发生任何变化R.java都会重新编译同步更新的。
 Android Library。这个是应用运行的Android库。图1显示项目用的是Android
2.0的库。
 Assets 目录。在这个目录里边主要放置多媒体等一些文件。
 Res目录。这个目录主要放置应用用到的资源文件。下边分3个目录进行存放。
当这个目录当中的资源文件发生变化时上面的R文件的内容就会自动发生变
化。
 Drawable目录。这里面主要放置应用到的图片资源。
 Layout 目录。主要存放布局文件这些布局文件都是些XML文件。
 Values 目录。这个目录里边主要放置字符串string.xml、颜色color.xml、
数组array.xml。
 AndroidManifest.xml这个文件相当重要相当于应用的配置文件。在这个文件
里边必须声明应用的名称应用所用到的ActionService以及receiver等。 https://www.360docs.net/doc/2b10183835.html,2006级 张 浩 毕业设计
5 2 基于Android多媒体播放器设计 2.1 多媒体播放器功能设计  播放列表(音乐、视频各个实现)
 视频播放上一个、下一个、快进、快退、暂停、播放、进度条
 音乐播放上一曲、
下一曲、暂停、播放、进度条、后台播放 2.2 播放器详细设计
播放器具体的一些设计应用的名称、图标的选择、UI设计、功能实现的核心技术
等。 2.2.1 多媒体播放器应用名称
本设计的应用名称叫MediaPlayer加上版本号。每次做出稍大改动就会升级一个版
本增加0.1。本次设计到1.1版。 2.2.2多媒体播放器应用图标
这个应用没有特意去找其他图标就采用的代表Android机器人图标。


图二 应用图标 2.2.3播放列表设计
首先声明一下这次播放列表的设计很简单并没用到数据库SQLite。而是直接用到
IO的File。
通过把多媒体文件放到模拟的SDCard里面对应的目录里面打开应用选择void还
是music传递参数得到对应的path 后取得音乐List或者视频List。播放列表的实现
需要文件列表以及界面。这里有Android提供的ListView这个类来实现。ListView是https://www.360docs.net/doc/2b10183835.html,姓名张浩
6 一个列表列表一般都需要显示数据。ListView需要和ArrayAdapter进行绑定然后
把ArrayAdapter里面的数据显示出来而ArrayAdapter是有3个参数进行构造的。第
一个参数是Context及上下文的引用第二个参数为一个R文件里面定义的Layout
只不过这里用的是系统的R文件第三个参数是一个数组当然数组里边的每一项的类
型没有限制。
ArrayAdapter是ListAdapter的一个直接子类。它的作用就是一个数组和ListView
之间的桥梁。他可以将数组里边定义的数据一一对应的显示在Listview里边。通常由
ArrayAdapter进行适配的ListView每一项通常只有一个TextView而TextView里边
显示的内容就是数字里边的对象调用toString()方法后生成字符串。
以下是如何把一个文件list通过ListView形成一个播放列表的核心代码 protected void onStart() {
super.onStart();
if (mFileNames.size() == 0) {
for (File file : mFiles) {
mFileNames.add(file.getName());
}
}
// 初始化mListView
mListView.setAdapter(new ArrayAdapter(this,
https://www.360docs.net/doc/2b10183835.html,yout.simple_list_item_1, mFileNames
.toArray(new String[0])));
mListView.setItemsCanFocus(true);
mListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
mListView.setOnItemClickListener(this);
} Android的界面都是通过放在Layout里面的xml文件实现的以下是播放列表界面的核
心代码
xmlns:android="https://www.360docs.net/doc/2b10183835.html,/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:paddingBottom="10dip" android:paddingTop="10dip">

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" https://www.360docs.net/doc/2b10183835.html,2006级 张 浩 毕业设计
7 android:paddingTop="10dip"
android:paddingBottom="10dip"
>

android:layout_above="@+id/bottom"
android:layout_width="fill_p

arent"
android:layout_height="wrap_content">

2.2.4视频播放的设计 视频播放是由Android提供的widget编程实现的整个视频播放窗口由widget下
面的一个VideoView实现给VideoView指定视频文件路径就可以直接调用start
方法开始播放视频。给VideoView设置一个MediaController就直接可以把播放控制的
那些功能实现了。以下是视频播放的核心代码 protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(https://www.360docs.net/doc/2b10183835.html,yout.player);
this.getPath();
this.play(path,name);
toast = new Toast(this).makeText(this, "没有了", 1000);
}
protected void play(String path,String name){
vv = (VideoView) this.findViewById(R.id.vv);
MediaController mc = new MediaController(this);
mc.setPrevNextListeners(next, prev);
vv.setMediaController(mc);
vv.setVideoPath(path);
vv.requestFocus();
this.setTitle("当前 "+name.substring(0, name.length() - 4));
vv.start();
} 以下是视频播放界面的xml代码
xmlns:android="https://www.360docs.net/doc/2b10183835.html,/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="fill"> https://www.360docs.net/doc/2b10183835.html,姓名张浩
8 android:id="@+id/vv"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"/>
2.2.5音乐播放的设计 音乐播放这个模块用了Android提供的MediaPlayer这个类。
首先介绍一下MediaPlayer
1 如何获得MediaPlayer实例
可以使用直接new的方式
MediaPlayer mp = new MediaPlayer();
也可以使用create的方式如
MediaPlayer mp = MediaPlayer.create(this, R.raw.test);//这时就不用调用
setDataSource了
2) 如何设置要播放的文件
MediaPlayer要播放的文件主要包括3个来源
a. 用户在应用中事先自带的resource资源
例如MediaPlayer.create(this, R.raw.test);
b. 存储在SD卡或其他文件路径下的媒体文件
例如mp.setDataSource("/sdcard/test.mp3");
c. 网络上的媒体文件
例如mp.setDataSource("https://www.360docs.net/doc/2b10183835.html,/music/confucius.mp3");
MediaPlayer的setDataSource一共四个方法
setDataSource (String path)
setDataSource (FileDescriptor fd)
setDataSource (Context context, Uri uri)
setDataSource (FileDescriptor fd, long offset, long length)
3对播放器的主要控制方法
Android通过控制播放器的状态的方式来控制媒体文件的播放其中
prepare()和prepareAsync() 提供了同步和异步两种方式设置播放器进入
prepare状态需要注意的是如果MediaPlayer实例是由create方法创

建的那么第
一次启动播放前不需要再调用prepare了因为create方法里已经调用过了。
start()是真正启动文件播放的方法pause()和stop()比较简单起到暂停和停止
播放的作用seekTo()是定位方法可以让播放器从指定的位置开始播放需要注https://www.360docs.net/doc/2b10183835.html,2006级 张 浩 毕业设计
9 意的是该方法是个异步方法也就是说该方法返回时并不意味着定位完成尤其是
播放的网络文件真正定位完成时会触发OnSeekComplete.onSeekComplete()如
果需要是可以调用setOnSeekCompleteListener(OnSeekCompleteListener)设置监
听器来处理的。release()可以释放播放器占用的资源一旦确定不再使用播放器时
应当尽早调用它释放资源。reset()可以使播放器从Error状态中恢复过来重新会
到Idle状态。
4设置播放器的监听器
MediaPlayer提供了一些设置不同监听器的方法来更好地对播放器的工作状态进行
监听以期及时处理各种情况如
setOnCompletionListener(MediaPlayer.OnCompletionListener listener)、
setOnErrorListener(MediaPlayer.OnErrorListener listener)等,设置播放器时
需要考虑到播放器可能出现的情况设置好监听和处理逻辑以保持播放器的健壮性。
虽然有了这个类对音乐的播放算是解决了也提供了start、stop、pause等方法。
但是没有像VideoView可以直接设置一个MediaController就可以把控制功能做好。每
一个功能都是自己弄一个按钮添加事件监听器完成。然而这只是个小问题这个音乐播
放器的最大问题出现在后台播放上面也就是要用到Service。
这里介绍一下Service工作原理:
Service看名字就知道跟正常理解的“服务”差不多后台运行可交互这样的一
个东西。它跟Activity的级别差不多但是他不能自己运行需要通过某一个Activity
或者其他Context对象来调用 Context.startService() 和 Context.bindService()。
两种启动Service的方式有所不同。这里要说明一下的是如果你在Service的onCreate
或者onStart做一些很耗时间的事情最好在 Service里启动一个线程来完成因为
Service是跑在主线程中会影响到你的UI操作或者阻塞主线程中的其他事情。
Service的生命周期
Service的生命周期方法比Activity少一些只有onCreate, onStart, onDestroy
我们有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。
1 通过startService
service会经历 onCreate -> onStart
stopService的时候直接onDestroy
如果是调用者(TestServiceHolder)自己直接退出而没有调用stopService的话
Service会一直在后台运行。下次TestServiceHolder再起来可以stopService。
2 通过bindService
Service只会运行onCreate

这个时候 TestServiceHolder 和TestService绑定
在一起TestServiceHolder 退出了Srevice就会调用onUnbind->onDestroyed所谓绑
定在一起就共存亡了。 https://www.360docs.net/doc/2b10183835.html,姓名张浩
10 有了Service,我可以把MediaPlayer这个对象放到Service里面。通过用外部的
Activity来调用放在Service里MediaPlayer提供的方法来对音乐播放器进行控制。
当程序处在播放界面的时候Service要和前台界面上显示的东西要做到同步。以
下是Activity中初始化界面时需要与Service连接的代码 private void init() {
button1 = (Button) findViewById(R.id.start);
button1.setOnClickListener(startIt);
button2 = (Button) findViewById(R.id.stop);
button2.setOnClickListener(stopIt);
button3 = (Button) findViewById(R.id.prev);
button3.setOnClickListener(prev);
button4 = (Button) findViewById(R.id.next);
button4.setOnClickListener(next);
musicName = (TextView) this.findViewById(R.id.musicName);

mSeekbar = (SeekBar) findViewById(R.id.seekBar);
mShowNowTime = (TextView) findViewById(R.id.nowTime);
mShowAllTime = (TextView) findViewById(R.id.allTime);
mSeekbar.setOnSeekBarChangeListener(listener_seek_bar);
musicService.player.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
mTime = musicService.player.getDuration();
mShowAllTime.setText(setTime(mTime));
musicName.setText(musicService.getMusicName());
mMaxProgress = mTime / 1000;
mSeekbar.setMax(mMaxProgress);
mSeekbar.setProgress(1);
mHandler.removeMessages(MESSAGE);
mHandler.sendMessage(mHandler.obtainMessage(MESSAGE));
Log.e("PREPARED", "setOnPreparedListener");
}
});
if(musicService.isPlaying()){
int p = musicService.player.getCurrentPosition()/1000;
mTime = musicService.player.getDuration();
mShowAllTime.setText(setTime(mTime));
musicName.setText(musicService.getMusicName());
mMaxProgress = mTime / 1000;
mSeekbar.setMax(mMaxProgress);
mSeekbar.setProgress(p);
mHandler.sendMessage(mHandler.obtainMessage(MESSAGE));
}else{
try{
musicService.player.prepare(); https://www.360docs.net/doc/2b10183835.html,2006级 张 浩 毕业设计
11 }catch(Exception e){}
musicService.player.start();
}
} 以下是Service中对MediaPlayer控制的核心代码 public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
position = intent.getExtras().getInt("position");
musicPath = mFiles.get(position).getPath();
musicName = mFiles.get(position).getName();
if (isPlaying()) {
reset();
}
setPath();
}
// 设置文件路径
public void setPath() {
try {
player.setDataSource(musicPath);
} catch (Exception e) {
e.printStackTrace();
}
}
// 播放 暂停
public void playOrPause() {

Log.e("paly", "playOrPause");
if (isPlaying()) {
player.pause();
} else {
player.start();
}
}
public void playNext() {
Log.e("paly", "playNext");
if (position == -1) {
return;
}
if (position == mFiles.size() - 1) {
musicName = "none";
return;
}
musicPath = mFiles.get(++position).getPath();
musicName = mFiles.get(position).getName();
reset();
setPath(); https://www.360docs.net/doc/2b10183835.html,姓名张浩
12 play();
}
public void playPrev() {
Log.e("paly", "playPrev");
if (position == -1) {
return;
}
if (position == 0) {
musicName = "none";
return;
}
musicPath = mFiles.get(--position).getPath();
musicName = mFiles.get(position).getName();
reset();
setPath();
play();
}
public void play() {
try {
player.prepare();
} catch (Exception e) {
e.printStackTrace();
}
player.start();
}
public void reset() {
player.reset();
}
public void mpstop() {
player.stop();
}
// 服务停止
public void onDestroy() {
player.stop();
_nm.cancel(R.string.service_started);
super.onDestroy();
} 播放器功能简单设计分析也基本写完。虽然东西不多但是中间还是遇到了很多问
题。通过处理这些问题我也对Android的了解更深了一步。也还有一些遗漏的问题
会在以后处理的。 https://www.360docs.net/doc/2b10183835.html,2006级 张 浩 毕业设计
13 3 设计作品展示 3.1作品截图展示 3.1.1载有Android的模拟器 这是SDK自带的模拟器用这个模拟器来运行开发的应用。
















图三 模拟器 https://www.360docs.net/doc/2b10183835.html,姓名张浩
14 3.1.2音乐和视频选择界面 进入播放器后这是第一个界面选择播放音乐还是视频。











图四
功能选择界面 3.1.3播放列表 选择music后进入出现的歌曲列表。















图五 音乐播放列表
https://www.360docs.net/doc/2b10183835.html,2006级 张 浩 毕业设计
15 3.1.4音乐播放界面 选择一首歌进行播放“NoBoundarles.mp3”是歌曲的名字下面是进度条可以拖拽
进度条下面是“上一曲”、“暂停/
播放”、“停止”、“下一曲”。正中间那个小白块没什么
功能只是为了下面几个按钮的布局添上去的。然后左下角是播放时间右下角是歌曲
总的时间。


















图六 音乐播放界面 https://www.360docs.net/doc/2b10183835.html,姓名张浩
16 3.1.5后台播放音乐中 这个是播放器处于后台播放音乐的状态在上面的任务栏按住往下拖就能看到后
台运行程序的列表单击可以直接进入该程序。


















图七 后台播放中 3.1.6视频播放界面









图八 视频播放界面 https://www.360docs.net/doc/2b10183835.html,2006级 张 浩 毕业设计
17 致 谢 设计过程中得到了指导老师王瑞胡老师的悉心指导王老师多次询问设计进程
并为我指点迷津开拓研究思想、精心点拨、热忱鼓励。还有班上的各位同学在这大学
四年里给我的帮助。
在此向所有关心和帮助过我的导师、老师、同学和朋友表示由衷的谢意
https://www.360docs.net/doc/2b10183835.html,姓名张浩
18 参 考 文 献
[1] 靳岩,姚尚朗.Google Android开发入门与实践 [M/CD].北京人民邮电出版社,2009
[2] 高焕堂.Android应用框架原理与程序开发[M].物泽电脑事业股份有限公司,2008
[3] 余志龙陈昱勋等.Google Android SDK开发范例大全[M]. 人民邮电出版社2009
[4] 陈昱 江兰帆. 基于Google Android平台的移动开发研究[R].福建电脑2008
[5] 公磊周聪 .基于Android的移动终端应用程序开发与研究[J]. 计算机与现代化2008

https://www.360docs.net/doc/2b10183835.html,2006级 张 浩 毕业设计
19 附1 论文独创性声明及论文使用授权声明


论文独创性声明
我的论文《___________________________________________》是我个人在导师指
导下进行的研究工作及取得的研究成果。论文中除了特别加以标注和致谢的地方外不
包含其他人或其他机构已经发表或撰写过的研究成果。其他同志对本研究的启发和所做
的贡献均已在论文中作了明确的声明并表示了谢意。



作者签名 日期




论文使用授权声明
本人完全了解重庆文理学计算机学院有关保留、使用毕业论文的规定即计算机
学院有权保留送交论文的复印件允许论文被查阅和借阅计算机学院可以公布论文的
全部或部分内容可以采取影印、缩印或其他复制手段保存论文。保密的论文在解密后
遵守此规定。 作者签名__________ 日期___________
https://www.360docs.net/doc/2b10183835.html,

相关主题
相关文档
最新文档