android应用开发设计报告.docx
《android应用开发设计报告.docx》由会员分享,可在线阅读,更多相关《android应用开发设计报告.docx(11页珍藏版)》请在冰豆网上搜索。
android应用开发设计报告
Android应用设计报告
题目:
视频播放器应用设计
班级:
计111
学号:
110773110776110774110768
姓名:
李洋宇葛一波李昀晟周盛蓁
成绩:
2013年3月30日·北京
信息工程学院计算机科学与技术专业
一.需求分析
Android应用面向的是普通个体用户,这些用户往往会更加关注用户体验,因此Android应用增加动画、视频、音乐等多媒体功能十分必要。
就目前的手机发展趋势来看,手机已经不再是单一的通讯工具,已经发展成集照相机、音乐播放器、视频播放器、个人小型终端于一体的智能设备,因此为手机提供音频录制、播放,视频录制、播放的功能十分重要,Android支持的音频格式有MP3、WAV和3GP等。
更多的手机用户希望在工作、学习之余通过方便灵巧可随身携带的仪器休闲娱乐。
因此为了迎合众多用户的需求并适应现在的手机的规模,我们提出了一款视频播放器,可播放一些常见格式的视频文件。
二.功能模块
三.界面设计
1.桌面图标
2.待播放界面
3.开始播放
4.暂停播放
四.分工说明
李洋宇:
编辑main代码,进行事件监听编写,文件导入
周盛蓁:
编辑layout(.xml)文件
葛一波:
程序注释,程序测试
李昀晟:
书写报告,功能检测
五.开发过程问题分析
1.界面中暂时只能实现3个功能,界面简单
2.文件只能导入.3gp格式的文件
3.在虚拟机中不能运行,必须在android2.3以上的版本才能运行
4.SD卡读取路径出现的问题,未能识别
5.软件图标对不同像素的要求
六.代码注释
1.main.xml代码注释
xmlversion="1.0"encoding="utf-8"?
>
xmlns:
android="
android:
orientation="vertical"
android:
layout_width="fill_parent"
android:
layout_height="fill_parent"
>
android:
id="@+id/surfaceView"
android:
layout_width="fill_parent"
android:
layout_height="360px"
/>
android:
orientation="horizontal"
android:
layout_width="fill_parent"
android:
layout_height="wrap_content"
android:
gravity="center_horizontal"
>
android:
id="@+id/play"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
src="@drawable/play"
/>
android:
id="@+id/pause"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
src="@drawable/pause"
/>
android:
id="@+id/stop"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
src="@drawable/stop"
/>
2.strings.xml代码注释
xmlversion="1.0"encoding="utf-8"?
>
HelloWorld,SurfaceViewPlayVideo!
PP播放器
3.Surfacevideoplay.java代码注释
packageorg.crazyit.sound;
importjava.io.IOException;
importandroid.app.Activity;
importandroid.media.AudioManager;
importandroid.media.MediaPlayer;
importandroid.os.Bundle;
importandroid.view.SurfaceHolder;
importandroid.view.SurfaceView;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.ImageButton;
/**
*Description:
*
site:
//www.crazyit.org">crazyit.org
*
Copyright(C),2001-2012,Yeeku.H.Lee
*
Thisprogramisprotectedbycopyrightlaws.
*
ProgramName:
*
Date:
*@authorYeeku.H.Leekongyeeku@
*@version1.0
*/
publicclassSurfaceViewPlayVideoextendsActivity
implementsOnClickListener
{
SurfaceViewsurfaceView;
ImageButtonplay,pause,stop;
MediaPlayermPlayer;
//记录当前视频的播放位置
intposition;
@Override
publicvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获取界面中的3个按钮
play=(ImageButton)findViewById(R.id.play);
pause=(ImageButton)findViewById(R.id.pause);
stop=(ImageButton)findViewById(R.id.stop);
//为3个按钮的单击事件绑定事件监听器
play.setOnClickListener(this);
pause.setOnClickListener(this);
stop.setOnClickListener(this);
//创建MediaPlayer
mPlayer=newMediaPlayer();
surfaceView=(SurfaceView)this.findViewById(R.id.surfaceView);
//设置SurfaceView自己不管理的缓冲区
surfaceView.getHolder().setType(
SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
//设置播放时打开屏幕
surfaceView.getHolder().setKeepScreenOn(true);
surfaceView.getHolder().addCallback(newSurfaceListener());
}
@Override
publicvoidonClick(Viewsource)
{
try
{
switch(source.getId())
{
//播放按钮被单击
caseR.id.play:
play();
break;
//暂停按钮被单击
caseR.id.pause:
if(mPlayer.isPlaying())
{
mPlayer.pause();
}
else
{
mPlayer.start();
}
break;
//停止按钮被单击
caseR.id.stop:
if(mPlayer.isPlaying())
mPlayer.stop();
break;
}
}
catch(Exceptione)
{
e.printStackTrace();
}
}
privatevoidplay()throwsIOException
{
mPlayer.reset();
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
//设置需要播放的视频
mPlayer.setDataSource("/mnt/sdcard/test/bipt.3gp");
//把视频画面输出到SurfaceView
mPlayer.setDisplay(surfaceView.getHolder());
mPlayer.prepare();
mPlayer.start();
}
privateclassSurfaceListenerimplementsSurfaceHolder.Callback
{
@Override
publicvoidsurfaceChanged(SurfaceHolderholder,intformat,intwidth,
intheight)
{
}
@Override
publicvoidsurfaceCreated(SurfaceHolderholder)
{
if(position>0)
{
try
{
//开始播放
play();
//并直接从指定位置开始播放
mPlayer.seekTo(position);
position=0;
}
catch(Exceptione)
{
e.printStackTrace();
}
}
}
@Override
publicvoidsurfaceDestroyed(SurfaceHolderholder)
{
}
}
//当其他Activity被打开,暂停播放
@Override
protectedvoidonPause()
{
if(mPlayer.isPlaying())
{
//保存当前的播放位置
position=mPlayer.getCurrentPosition();
mPlayer.stop();
}
super.onPause();
}
@Override
protectedvoidonDestroy()
{
//停止播放
if(mPlayer.isPlaying())
mPlayer.stop();
//释放资源
mPlayer.release();
super.onDestroy();
}
}