1.1实验名称
音乐播放器和视频播放器实验。
1.2实验背景
1.2.1需求分析
随着社会的快速发展,现今社会生活紧张,而欣赏音乐和视频是较好的舒缓压力的方式,音乐和视频成了我们生活工作中重要的组成部分。而移动时代的到来,智能手机应用越来越普遍。移动音乐视频服务正是为这一形势而发展起来,开发这种手机音乐播放器和视频播放器的应用,主要为了满足音乐视频爱好人群的需要,于是提出和实现了基于Android系统多媒体播放器的主要功能。
1.3实验目的
(1)了解并熟悉SurfaceView;
(2)了解并掌握MediaPlayer;
(3)熟悉sd卡数据存储;
(4)熟悉LinearLayout或RelativeLayout的使用;
了解Android下的编程,完成一个媒体播放器小项目的开发。
1.4实验过程
1.4.1设计
1.4.1.1音乐播放器架构设计
利用AbsoluteLayout添加按钮,分别控制播放开始、暂停、停止。
1.4.1.2视频播放器架构设计
SurfaceView提供直接访问一个可画图的界面,可以控制在界面顶部的子视图层。SurfaceView是提供给需要直接画像素而不是使用窗体部件的应用使用的。Android图形系统中一个重要的概念和线索是surface。View及其子类(如TextView, Button)要画在surface上。每个surface创建一个Canvas对象(但属性时常改变),用来管理view在surface上的绘图操作,如画点画线。
SurfaceHolder接口持有Surface引用,并且定义了方法控制Surface的尺寸和格式。在SurfaceHolder中定义了4种Surface类型,分别是NORMAL、HARDWARE、GPU和PUSH_BUFFERS。在视频播放与相机预览中,通常是使用PUSH_BUFFERS,也就是说,Surface本身并没有维护一个缓冲区,而是等待屏幕的渲染引擎将内容推送到用户面前。
可以通过holder = mPreview.getHolder();获得这个对象。
SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS是为了surface 指定PUSH类型的缓冲区。
1.4.2音乐播放器编码实现
1.4.2.1新建工程
建立Android project,命名为MusicPlayer。
1.4.2.2.1 AndroidManifest.xml布局设计及实现
其中部分核心代码如下所示:
音乐播放器代码:
package com.example.musicplayer;
import java.io.IOException;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
public class MainActivity extends Activity {
ImageButton mStartImageButton = null;
ImageButton mPauseImageButton = null;
ImageButton mStopImageButton = null;
MediaPlayer mMediaPlayer = null;
TextView mTextView = null;
private boolean bIsPlaying = false;
private boolean bIsReleased = false;
private boolean bIsPause = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mStopImageButton = (ImageButton) findViewById(R.id.StopImageButton);
mStartImageButton = (ImageButton) findViewById(R.id.StartImageButton);
mPauseImageButton = (ImageButton) findViewById(R.id.PauseImageButton);
mTextView = (TextView) findViewById(R.id.textView1);
//mMediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.la_isla_bonita);
mStartImageButton.setOnClickListener(new ImageButton.OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try
{
if ( !bIsPlaying )
{
bIsPlaying = true;
/* 装载资源中的音乐 *