基于Android的多媒体播放器课程设计报告.docx

上传人:b****2 文档编号:24399714 上传时间:2023-05-27 格式:DOCX 页数:20 大小:1.26MB
下载 相关 举报
基于Android的多媒体播放器课程设计报告.docx_第1页
第1页 / 共20页
基于Android的多媒体播放器课程设计报告.docx_第2页
第2页 / 共20页
基于Android的多媒体播放器课程设计报告.docx_第3页
第3页 / 共20页
基于Android的多媒体播放器课程设计报告.docx_第4页
第4页 / 共20页
基于Android的多媒体播放器课程设计报告.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

基于Android的多媒体播放器课程设计报告.docx

《基于Android的多媒体播放器课程设计报告.docx》由会员分享,可在线阅读,更多相关《基于Android的多媒体播放器课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。

基于Android的多媒体播放器课程设计报告.docx

基于Android的多媒体播放器课程设计报告

基于Android的多媒体播放器课程设计报告

(2014-01-0222:

46:

52)

转载▼

标签:

android

多媒体播放器

嵌入式

课程设计报告

it

分类:

我的编程之路

附源码。

希望此文能帮助到一些新手。

也希望更多的人在网络上分享自己的学习成果。

互相交流,扣扣:

70876398

完整版:

 

1、 开发环境

Android是一种基于Linux®V2.6内核的综合操作环境。

最初,Android的部署目标是移动电话领域,包括智能电话和更廉价的翻盖手机。

Android全面的计算服务和丰富的功能支持完全有能力扩展到移动电话市场以外。

Android也可以用于其他的平台和应用程序。

下面搭建Android的开发环境。

1.1JDK安装

1、首先把所有要安装文件放在Android_software文件夹中;

2、安装jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008文件;

3、配置环境变量:

(1)新建一个用户变量,变量名是JAVA_HOME,变量值为:

JDK的安装路径;

(2)查看系统变量Path,如果有显示路径加\bin,没有则加%JAVA_HOME%\bin;

(3)查看class,如果有显示路径加\lib,没有则加%JAVA_HOME%\lib;

4、解压eclipse-jee-juno-win32文件,运行eclipse.exe,在workspacelauncher窗口中,设置项目保存路径;

1.2AndroidSDK安装以及系统设置

在eclipse菜单栏的window子菜单下点击perferences,选择android,在右边的对话框中选择按钮Browse,找到SDK源文件,自动出来SDK包含的Android版本,点击Apply按钮,完成安装;

在用户变量里面,新建一个JAVA_SDK变量,值设置的值为SDK安装的路径;

在系统变量里面加入%JAVA_HOME%\bin,%JAVA_SDK%\tools,%JAVA_SDK%\platform-tools。

 

图1.设置环境变量

1.3Eclipse安装以及ADT工具的安装

ADT插件的安装:

(1)解压ADT文件;

(2)打开eclipse菜单上help子目录下的Installnewsoftware;

(3)在弹出的Install窗口中点击Add,在弹出的窗口中,name:

ADT

Location:

点击location按钮找到解压的ADT源文件;

(4)安装成功后,重新启动eclipse;

1.4模拟器的配置

1、 运行eclipse,在window子菜单下点击AVDManager开始配置模拟器;

2、 在AndroidVirtualDeviceManager下点击NEW,开始创建模拟器;

3、 在createnewAndroidVirtualManager窗口中,输入模拟器的名称、版本、存储卡大小,手机屏幕的分辨率,输入完后,点击CreateAVD,创建完成;

4、 在AndroidVirtualDeviceManager窗口中,选中模拟器后,点击start,启动模拟器。

图2启动模拟器

 

2、功能说明

2.1软件结构与布局

设计布局框架分为三个部分:

图形菜单主界面menu_main.xml,对应类文件MediaPlay.java

媒体功能实现界面menu_main.xmlmenuForMain.java

媒体列表界面mylist.xml以及listview.xml样式布局listtype.xmlMediaList.java

逻辑架构如下:

 

2.2图像菜单功能

主要控件及功能

GalleryMyGallery:

用于显示图形菜单,双击图片进入相应的功能界面

TextViewmenuTv:

用于显示菜单选项信息

使用说明:

1、双击MyGallery中装载的一组图片(屏幕底部)中的其中任何一张图片进入相应的功能面板

2、通过在MyGallery滑动来达到更改菜单选项的功能

3、menuTv会实时显示当前选中的菜单项的详细说明

2.3音频文件播放

主要控件及功能

ImageButtonibtnPlayAndPuase开始/暂停

ImageButtonibtnStop停止

ImageButtonibtnLast,上一曲

ImageButtonibtnNext;下一曲

SeekBarMySeekBar;进度条

TextViewMytvScreen;信息显示

TextViewtbTimer;用于显示当前播放时间进度

使用说明:

1、当进入音乐播放界面时,后台读取保存在本地的音乐列表文件,若不存在列表文件则自动扫描/sdcard/Music/目录下音频文件

2、播放和暂停键复用,当第一次点击播放按钮,再次点击则为暂停,再次点击则继续之前的位置播放;停止按钮则是将当前播放进度设置为0并暂停播放;上一曲、下一曲按钮则实现歌曲切换功能

3、进度条和tbTimer控件则实时显示当前播放音乐的时间进度,MytvScreen会显示当前正在播放歌曲的详细信息

2.4视频文件播放

主要控件及功能

ImageButtonibtnPlayAndPuase开始/暂停

ImageButtonibtnStop停止

ImageButtonibtnLast,上一曲

ImageButtonibtnNext;下一曲

SeekBarMySeekBar;进度条

VideoViewMyVideoView;用于播放视频的组件

使用说明:

1、当进入视频播放界面时,后台读取保存在本地的视频列表文件,若不存在列表文件则自动扫描/sdcard/Video/目录下音频文件

2、播放、暂停、上一部、下一步、停止以及进度条、时间显示条皆复用音乐界面的按钮,功能也与其一致,这里不赘述。

2.5录音

主要控件及功能

ImageButtonibtnPlayAndPuase开始/暂停

ImageButtonibtnStop停止

ImageButtonibtnLast,上一曲

ImageButtonibtnNext;下一曲

SeekBarMySeekBar;进度条

ButtonbtnRecording;录音开关

使用说明:

1、当进入录音界面时,后台读取保存在本地的视频列表文件,若不存在列表文件则自动扫描/sdcard/MyRecords/目录下录音文件

2、播放、暂停、上一部、下一步、停止以及进度条、时间显示条皆复用音乐界面的按钮,功能也与其一致,这里不赘述。

3、点击开始录音按钮,则按钮显示为“录音中...”,此时播放等按钮无法使用,进度条中间会显示当前的录音时间。

在次点击此按钮则停止录音。

此时可点击播放按钮试听刚才的录音。

4、以上所有操作在主显示区域都会有文字描述

3、软件设计与调试

3.1软件在虚拟机上调试及分析

3.1.1图形菜单

核心代码:

//图片装载

intMenuImages[]={R.drawable.menu4,R.drawable.menu1,R.drawable.menu2,

R.drawable.menu3,R.drawable.menu5};

MyGallery.setAdapter(newImageAdapter(this));

publicclassImageAdapterextendsBaseAdapter

{@Override

publicViewgetView(intarg0,Viewarg1,ViewGrouparg2){

//TODOAuto-generatedmethodstub

ImageViewi=newImageView(mContext);

i.setImageResource(MenuImages[arg0]);

i.setAdjustViewBounds(true);

i.setLayoutParams(newGallery.LayoutParams(

LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));

//i.setBackgroundResource(R.drawable.e);

returni;}}

//页面跳转

@Override

publicbooleanonDoubleTap(MotionEventarg0){

//TODOAuto-generatedmethodstub

IntentMyIntent=newIntent();

MyIntent.setClass(menuForMain.this,MediaPlay.class);

BundleMyBundle=newBundle();

MyBundle.putInt("name",MyGallery.getSelectedItemPosition());

MyIntent.putExtras(MyBundle);

startActivity(MyIntent);

returnfalse;}

3.1.2音乐播放

播放:

MyMediaPlayer.setDataSource(MusicList.get(Mediasp));

 

MyMediaPlayer.prepare();MyMediaPlayer.start();//播放

MyMediaPlayer.pause();//暂停

MyMediaPlayer.pause();MyMediaPlayer.seekTo(0);//停止(为了能使点击播放按钮能在此播放,这里不调用MyMediaPlayer.stop()方法)

3.1.3视频播放器

MyVideoView.setVideoURI(Uri.parse(VideoList.get(Mediasp)));//设置视频源

MyVideoView.start();//播放

MyMediaPlayer.pause();//暂停

MyVideoView.pause();MyVideoView.seekTo(0);//停止

3.1.4录音

//播放

newDateFormat();

file=newFile("/sdcard/MyRecords/"+"bear"+DateFormat.format("yyyyMMdd_hhmmss",Calendar.getInstance(Locale.CHINA))+".amr");

FiledestDir=newFile("/sdcard/MyRecords/");

if(!

destDir.exists()){

destDir.mkdirs();}

MyMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);MyMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);

MyMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);

file.createNewFile();

MyMediaRecorder.setOutputFile(file.getAbsolutePath());

MyMediaRecorder.prepare();

MyMediaRecorder.start();

//停止录音

MyMediaRecorder.reset();

须加一个权限开发,在AndroidManifest.xml:

<uses-permissionandroid:

name="android.permission.RECORD_AUDIO">uses-permission>

<uses-permissionandroid:

name="android.permission.WRITE_EXTERNAL_STORAGE">uses-permission>

3.1.5、公共方法

//1、滑动屏幕改变媒体音量

//设置音量

MyAudioManager=(AudioManager)this.getSystemService(Context.AUDIO_SERVICE);

//2、添加屏幕触发事件

MyGestureDetector=newGestureDetector(this,newMyGestureDetectorListener());

MytvScreen.setOnTouchListener(newOnTouchListener(){

@Override

publicbooleanonTouch(Viewarg0,MotionEventarg1){

returnMyGestureDetector.onTouchEvent(arg1);}

});

PrivateclassMyGestureDetectorListenerimplementsOnDoubleTapListener{

@Override//滚动,触摸屏按下后移动

publicbooleanonScroll(MotionEventarg0,MotionEventarg1,floatarg2,

floatarg3){

if(AudioManagerFlag==0){

AudioManagerY=arg0.getY();

AudioManagerX=arg0.getX();}

intIsSound=0;

if(AudioManagerFlag>5){

AudioManagerFlag=0;

if(((AudioManagerY-arg1.getY())<1)||(arg1.getY()-AudioManagerY<1)){

if(arg0.getX()>arg1.getX())//左滑动调小音量{MyAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_LOWER,AudioManager.FX_FOCUS_NAVIGATION_UP);}

else//右滑动调大音量{MyAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_RAISE,AudioManager.FX_FOCUS_NAVIGATION_UP);}}}

else{

AudioManagerFlag++;}

returnfalse;}

3、长按调整至列表界面

@Override//长按,触摸屏按下后既不抬起也不移动,过一段时间后触发

publicvoidonLongPress(MotionEventarg0){

AudioManagerFlag=0;

if(MyVideoView.isPlaying()){

MyVideoView.pause();

ibtnPlayAndPuase.setImageResource(R.drawable.ibtnplay);

ibtnPlayAndPuase.setTag("play");}

Intenti=newIntent();

i.setClass(MediaPlay.this,MediaList.class);

Bundledata=newBundle();

//调出菜单,第一个参数是列表的类型,第二个参数是当前歌曲在播放离别中的位置

data.putInt("sp",Mediasp);

data.putInt("Type",MyRadioGroup.getCheckedRadioButtonId());

i.putExtras(data);

startActivityForResult(i,MyRadioGroup.getCheckedRadioButtonId());}}

3、列表显示

//接收来自功能面板的列表请求

BundleMyBundle=this.getIntent().getExtras();

try{intrbtnId=0;

rbtnId=MyBundle.getInt("Type");

//intMediasp=MyBundle.getInt("sp");

switch(rbtnId){

caseR.id.rbtnMusic:

//MyMediaList=sp.getMusicList();

//createList(MyMediaList,0);

resultCode=1;

getFiles(Filepath+"kugou/",".mp3",MyMediaList,true);

Filepath+="Music/";

getFiles(Filepath,".mp3",MyMediaList,false);

sp.setMusicList(MyMediaList);

break;

caseR.id.rbtnVideo:

//MyMediaList=sp.getVideoList();

//createList(MyMediaList,1);

resultCode=2;

Filepath+="Videos";

getFiles(Filepath,".mp4",MyMediaList,false);

getFiles(Filepath,".3gp",MyMediaList,false);

sp.setVideoList(MyMediaList);

break;

caseR.id.rbtnRecord:

//MyMediaList=sp.getRecordList();

//createList(MyMediaList,2);

resultCode=3;

Filepath+="MyRecords";

getFiles(Filepath,".amr",MyMediaList,false);

sp.setRecordList(MyMediaList);

break;

default:

break;}}

//获取列表

privatevoidgetFiles(Stringdirpath,StringfileType,ArrayListList,booleanIsIterative){

//List.clear();

File[]files=newFile(dirpath).listFiles();

Filef;

if(files==null){

return;}

for(inti=0;i

f=files[i];

if(!

f.canRead()){

continue;}

if(f.isFile()){

if(f.getName().contains(fileType))//判断扩展名{

List.add(f.getPath());}}

elseif(f.isDirectory()&&IsIterative==true)

getFiles(f.getPath(),fileType,List,IsIterative);}}

//listview长按监听事件

mylist.setOnItemLongClickListener(newOnItemLongClickListener(){

@SuppressLint("ShowToast")

@Override

publicbooleanonItemLongClick(AdapterView

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 书信模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1