Android开发工程师第八章-多媒体与网络应用开发技术课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Android开发工程师第八章-多媒体与网络应用开发技术课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 开发 工程师 第八 多媒体 网络 应用 技术 课件
- 资源描述:
-
1、教学目标 理解Android系统中多媒体组件的体系结构和原理。掌握Android系统中MediaPlayer、MediaRecoder、VideoView、Camera、AlarmManager、SmsManager等多媒体类的常用方法。掌握使用Android系统中的多媒体类开发多媒体应用软件的方法。理解Socket、HTTP和Web Service这3种技术的原理。掌握Socket、HTTP和Web Service这3种技术进行Android平台的网络应用开发的方法。目录概述概述音频播放器的设计与实现音频播放器的设计与实现视频播放器的设计与实现视频播放器的设计与实现录音机的设计与实现录音机的
2、设计与实现照相机的设计与实现照相机的设计与实现闹钟的设计与实现闹钟的设计与实现定时短信发送器的设计与实现定时短信发送器的设计与实现Android聊天室的设计与实现聊天室的设计与实现在线英汉双译字典的设计与实现在线英汉双译字典的设计与实现天气预报查询系统的设计与实现天气预报查询系统的设计与实现本章小结本章小结项目实训项目实训 概 述 多媒体技术介绍 Android软件开发包提供了一系列的方法来处理音、视频媒体,包括对于多种媒体类型和格式的支持。Open Core,也称为PacketVideo,它是Android多媒体框架的核心。与其他Android程序库相比,Open Core的代码非常庞大,它
3、是一个基于C+的实现,定义了全功能的操作系统移植层,各种基本的功能均被封装成类的形式,各层次之间的接口多使用继承等方式。程序员可以通过Open Core方便迅速地开发出想要的多媒体应用程序,如录音、播放、回放、视频会议、流媒体播放等。OpenCore 是一个多媒体的框架,从宏观上来看,它主要包含了两大方面的内容。(1)PVPlayer:提供媒体播放器的功能,实现各种音频(Audio)、视频(Video)流的回放(Playback)。(2)PVAuthor:提供媒体流记录的功能,实现各种音频(Audio)、视频(Video)流以及静态图像的捕获。PVPlayer和PVAuthor 以 SDK 的
4、形式提供给开发者,开发者可以在这个SDK之上构建多种应用程序和服务。概 述 Open Core主要提供了如下几个多媒体类。MediaPlayer类,可以用于播放音频、视频和流媒体,它包含了Audio和Video的播放功能,在Android的界面上,音频和视频的播放都是调用MediaPlayer实现的。它可以获得媒体文件和各种属性当前的播放状态,并可以开始和停止文件的播放。MediaRecorder类,用来进行媒体采样,包括音频和视频。MediaRecorder作为状态机运行,需要设置不同的参数,如源格式和源设备。设置后可以执行任意长度的录制,直到用户停止。VideoView类,主要用来显示一个
5、视频文件,它是SurfaceView类的一个子类,且实现了MediaControl接口。Camera类,用来处理系统中与相机相关的事件,Camera是一种专门用来连接和断开相机服务的类。概 述网络技术介绍 1Socket通信 Socket是一种低级、原始的通信方式,要编写服务器端代码和客户端代码,自己开端口,自己制定通信协议、验证数据安全和合法性,而且通常还应该是多线程的,开发起来比较烦琐。但是它也有其优点:灵活,不受编程语言、设备、平台和操作系统的限制,通信速度快而高效。在Java中Socket相关类都在包中,其中主要的类是Socket和ServerSocket。Android平台下的开发方
6、法与Java完全一样,感兴趣的读者可以查阅Java网络编程资料。2HTTP协议通信 HTTP通信技术是网络应用中最为常用的技术之一,客户端向服务器发出HTTP请求,服务器接收到客户端的请求后,处理客户端的请求,处理完成后再通过HTTP将应答传回给客户端。在Java网络编程中,客户端一般是浏览器,但Android平台客户端是指安装了Android系统的智能终端,服务器一般是HTTP服务器,HTTP请求方法有POST、GET等方法。HTTP通信编程可以使用Java的.URL类,但是这个类只能发出GET请求;也可以使用Apache组织(http:/www.apache.org)提供的HttpClie
7、nt类库,HttpClient类库已经集成到Android平台中,使用很方便。概 述 3Web Service Web Service(Web服务)是一种基于XML和HTTP技术的服务,它也是部署在Web服务器上、由Web服务器管理的。它使得不同计算机语言、不同计算机平台之间的方法调用成为可能,是远程调用和分布式系统的重要实现手段。与HTTP通信方式相比,HTTP不能实现远程方法的调用,而Web Service可以。例如,在Android客户端编写一个Web Service客户端程序,假设是一个用户登录程序,将用户名和口令以参数的形式传递给远程的Web Service,由远程Web Servi
8、ce处理这个调用,然后再将结果返回给客户端。Web Service是构建分布式系统的重要手段,涉及的技术比较复杂。由于Android平台目前没有提供Web Service客户端开发类库,只能借助第三方的Web Service客户端开发类库。KSOAP2是目前在Android平台应用最为广泛的客户端开发类库。KSOAP2是一个SOAP Web Service客户端包,读者可以到http:/ 任务:引用MediaPlayer类来设计一个简单的音频播放器,包括播放、暂停、前进、后退、下一首、前一首、播放列表和进度条等基本组件,能从SD Card上读出所有音频文件,然后播放选中的歌曲。音频播放器的设计
9、与实现 预备知识 Android SDK提供了MediaPlayer类,以便在Android系统中实现多媒体服务,如音频、视频的播放等。这个类的常用方法见表8-1。音频播放器的设计与实现 MediaPlayer类的常用事件见表8-2。音频播放器的设计与实现 音频播放器界面设计 1准备所需的Icons和Images设计音频播放器界面时,可以使用一些平面设计软件(如PhotoShop)来设计界面背景图片、基本按钮图标等,这里直接从互联网下载图片来修饰用户界面。为了突出操作按钮后的不同状态,可以准备不同状态下的图标,如默认、聚焦、按下等,然后将这些不同状态的图标放在drawable文件夹下。2设计不
10、同状态的Icon布局保存所有不同状态的图标之后,需要为每一个Icon设计布局,下面是一个Play Button的布局文件btn_play.xml,创建后保存在drawable文件夹下。btn_play.xml文件源代码如下:音频播放器的设计与实现 3设计SeekBar布局为了显示歌曲播放进展,可以使用默认风格的SeekBar,也可以使用XML样式定制SeekBar。这里使用XML样式定制,在drawable文件夹下创建如表8-3所示的XML文件。seekbar_progress_bg.xml文件源代码如下:音频播放器的设计与实现 seekbar_progress.xml文件源代码如下:音频播放
11、器的设计与实现 4设计音乐播放器布局 前面已完成了所有图标、SeekBar的XML布局,现在需要将它们组合起来实现音乐播放器的布局设计,即在layout文件夹中创建一个新文件musicplayer.xml。musicplayer.xml文件源代码见备注:音频播放器的设计与实现 5设计播放列表使用列表视图(ListView)显示播放列表,在drawable文件夹中创建一个背景选择器布局文件list_selector.xml。list_selector.xml文件源代码如下:在drawable文件夹下创建一个显示列表视图布局文件playlist.xml。playlist.xml文件源代码如下:在d
12、rawable文件夹下创建一个单一列表项显示歌曲标题的布局文件playlist_item.xml。playlist_item.xml文件源代码如下:音频播放器的设计与实现 6读取SD Card中的mp3文件 为了读取SD Card中的mp3格式文件,可以从设备上的SD Card中阅读所有文件并且过滤出含有.mp3后缀的文件。本例中创建一个类文件SongsManager.java用于读取SD Card中的mp3文件,其源代码见备注:音频播放器的设计与实现 7实现播放列表界面 从SD Card中读出mp3格式文件后,将它们显示在播放列表界面上,通过继承ListActivity类来创建一个新类Pla
13、yListActivity.java实现此功能。该类中使用上面的SongsManager.java类来显示歌曲列表。其源代码见备注:音频播放器的设计与实现 8实现辅助类 创建一个Utilities.java类,用来将时间格式设置为时:分:秒;将毫秒定时器转换为时间字符串显示在播放器的SeekBar上等。其源代码如下:音频播放器的设计与实现9实现主界面所有播放功能主界面所有播放功能是通过继承了OnCompletionListener类和SeekBar.OnSeekBarChange Listener类的MainActivity.java类中编写的相关事件代码实现的。(1)加载播放列表界面。为主界
14、面上按钮(btnPlaylist)编写单击事件监听器,当单击该按钮时加载PlayListAcitivity.java类,在播放列表界面选中一首特定的歌曲后需要返回该歌曲在列表中的索引号songIndex。其源代码如下:btnPlaylist.setOnClickListener(new OnClickListener()public void onClick(View v)Intent i=new Intent(getApplicationContext(),PlayListActivity.class);startActivityForResult(i,100););接收播放列表界面选定歌曲
15、索引号的源代码如下:protected void onActivityResult(int requestCode,int resultCode,Intent data)super.onActivityResult(requestCode,resultCode,data);if(resultCode=100)currentSongIndex=data.getExtras().getInt(songIndex);/播放选中歌曲 playSong(currentSongIndex);音频播放器的设计与实现(2)播放歌曲。创建一个playSong(int songIndex)方法来实现歌曲的播放,该
16、方法接收songIndex作为参数并播放,并且在开始播放歌曲时将播放按钮更改为暂停按钮状态。其源代码如下:private void playSong(int songIndex)try mp.reset();mp.setDataSource(songsList.get(songIndex).get(songPath);mp.prepare();mp.start();/显示歌曲标题 String songTitle=songsList.get(songIndex).get(songTitle);songTitleLabel.setText(songTitle);/将播放按钮更改为暂停按钮 btn
17、Play.setImageResource(R.drawable.btn_pause);songProgressBar.setProgress(0);songProgressBar.setMax(100);/更新进度条 updateProgressBar();catch(IllegalArgumentException e)e.printStackTrace();catch(IllegalStateException e)e.printStackTrace();catch(IOException e)e.printStackTrace();音频播放器的设计与实现(3)更新SeekBar的进度和
18、时间。使用一个Handler,运行一个后台线程,并使用Utilities.java类中定义的相关方法实现歌曲播放时间及已播放时间的显示。其源代码如下:private void updateProgressBar()mHandler.postDelayed(mUpdateTimeTask,100);private Runnable mUpdateTimeTask=new Runnable()public void run()long totalDuration=mp.getDuration();long currentDuration=mp.getCurrentPosition();/显示歌曲播
19、放时间 songTotalDurationLabel.setText(+utils.milliSecondsToTimer(totalDuration);/显示歌曲已播放时间 songCurrentDurationLabel.setText(+utils.milliSecondsToTimer(currentDuration);/更新进度条 int progress=(int)(utils.getProgressPercentage(currentDuration,totalDuration);songProgressBar.setProgress(progress);mHandler.pos
20、tDelayed(this,100);/*用户拖动进度条时 */public void onStartTrackingTouch(SeekBar seekBar)mHandler.removeCallbacks(mUpdateTimeTask);/*用户停止拖动进度条时 */public void onStopTrackingTouch(SeekBar seekBar)mHandler.removeCallbacks(mUpdateTimeTask);int totalDuration=mp.getDuration();int currentPosition=utils.progressToT
21、imer(seekBar.getProgress(),totalDuration);/查到当前播放位置 mp.seekTo(currentPosition);updateProgressBar();音频播放器的设计与实现(4)实现前进/后退按钮监听事件。单击“前进”按钮,表示在当前播放位置的基础上将播放位置前移5秒种,其源代码如下:btnForward.setOnClickListener(new OnClickListener()public void onClick(View v)int currentPosition=mp.getCurrentPosition();/seekForwar
22、dTime=5000,单击前进按钮,表示快进5秒 if(currentPosition+seekForwardTime=mp.getDuration()mp.seekTo(currentPosition+seekForwardTime);else mp.seekTo(mp.getDuration(););单击后退按钮,表示在当前播放位置的基础上将播放位置后移5秒种。源代码与前进按钮类似。音频播放器的设计与实现(5)实现前一首/下一首按钮监听事件。单击下一首按钮,表示将当前正在播放的音乐索引号增加1,然后调用播放方法playSong(),其源代码如下:btnNext.setOnClickList
23、ener(new OnClickListener()public void onClick(View v)/检查有没有下一首歌曲 if(currentSongIndex (songsList.size()-1)playSong(currentSongIndex+1);currentSongIndex=currentSongIndex+1;else /若没有下一首,则播放第一首 playSong(0);currentSongIndex=0;);单击前一首按钮,表示将当前正在播放的音乐索引号减少1,然后调用播放方法playSong()。源代码与下一首按钮类似。音频播放器的设计与实现(6)单击重复/
24、随机播放按钮监听事件。单击重复播放按钮,表示设置为重复播放当前歌曲,即将isRepeat设为true,同时将重复按钮图标改为。其源代码如下:btnRepeat.setOnClickListener(new OnClickListener()public void onClick(View v)if(isRepeat)isRepeat=false;Toast.makeText(getApplicationContext(),关闭重复,Toast.LENGTH_ SHORT).show();btnRepeat.setImageResource(R.drawable.btn_repeat);else
25、 isRepeat=true;Toast.makeText(getApplicationContext(),开启重复,Toast.LENGTH_ SHORT).show();/重复播放开启后,随机播放关闭 isShuffle=false;btnRepeat.setImageResource(R.drawable.repeatfocused);btnShuffle.setImageResource(R.drawable.btn_shuffle););单击随机播放按钮,表示设置为随机播放歌曲,即将isShuffle设为true,同时将随机播放按钮图标改为。源代码与重复播放按钮类似。音频播放器的设计
展开阅读全文