媒体播放自定义界面

public class VideoActivity extends Activity implements Callback{
private SurfaceView view;
private SurfaceHolder holder;
private MediaPlayer mPlayer;

private String path;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.video_main);

initWidgets();
}

private void initWidgets() {
view=(SurfaceView) findViewById(R.id.surfaceView);

holder=view.getHolder();
holder.setFixedSize(320, 480);
holder.setKeepScreenOn(true);
//设置回调的监听
holder.addCallback(this);

path=getIntent().getStringExtra("path");
}

@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {

}

@Override
public void surfaceCreated(SurfaceHolder arg0) {
mPlayer=new MediaPlayer();
try {
mPlayer.setDataSource(path);
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.setDisplay(holder);

mPlayer.prepare();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
mPlayer.release();
}

public void play(View v){
if (!mPlayer.isPlaying()) {
mPlayer.start();
}
}
}

public class MainActivity extends Activity implements SurfaceHolder.Callback {//2.实现回调SurfaceHolder.Callback
private VideoView videoView;

// 第二种界面
private SurfaceView view;
private SurfaceHolder holder;

private MediaPlayer mPlayer;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.vedio_main);

// String path = Environment.getExternalStorageDirectory()+"/move.mp4";
// //初始化视频界面
// videoView = (VideoView)findViewById(R.id.video);
//
// //向视频界面加载视频源
// videoView.setVideoPath(path);
//
// MediaController controller = new MediaController(this);//控制中心
// controller.setMediaPlayer(videoView);//将播放界面用controller来控制
//
// videoView.setMediaController(controller);//界面与控制中心绑定
// videoView.requestFocus();//设置视频有焦点

// 自定义的界面:视频播放器,SurfaceView是专做界面的容器
view = (SurfaceView) findViewById(R.id.view);

// 1.绑定界面并设置参数
holder = view.getHolder();// 实例化视频Holder对象,此时由holder来设定参数
holder.setFixedSize(320, 480);// 视频分辨率,不写就是默认
holder.setKeepScreenOn(true);// 屏幕一直开着

//设置回调的监听 
holder.addCallback(this);
}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {//界面改变时

}

@Override
public void surfaceCreated(SurfaceHolder holder) {//创建界面的时候
mPlayer = new MediaPlayer();
try {
// Cursor cursor = getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, null,null,null,null);
// while(cursor.moveToNext()){
// Log.i("path", cursor.getString(cursor.getColumnIndex(Media.DATA)));
// }

mPlayer.setDataSource(Environment.getExternalStorageDirectory()+"/move.mp4");
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//音源类型
mPlayer.setDisplay(holder);//加载设定好的自定义界面
mPlayer.prepare();//准备
} catch (Exception e) {
e.printStackTrace();
}
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {//销毁界面
if(mPlayer.isPlaying()){
mPlayer.stop();
mPlayer.release();
}
}

//播放按钮
public void play(View v){
if(!mPlayer.isPlaying()){
mPlayer.start();
}
}
}

时间: 2024-11-03 21:34:00

媒体播放自定义界面的相关文章

c#开发的媒体播放器

在Microsoft Visual C# .NET 中使用 DirectShow 控件,来开发一个媒体播放器.按照本文介绍的操作步骤,您可以创建一个简单 Visual C# 应用程序,用来播放数字音频和视频. 介绍 Microsoft Visual C# 是世界上最流行的编程语言,利用 Visual C# 的最新版本 Visual C# .NET,您能够快速.有效地开发基于 Windows 窗体的应用程序,还可以为嵌入了 Microsoft Windows Media? Player 9 Ser

QtQuick2实现媒体播放器(界面)

这里提供一个QtQuick2实现媒体播放器(界面).供大家学习的啦~ 先看效果图:播放器启动后的界面,部分图标来自互联网. 打开媒体文件 播放文件 快捷键控制Ctrl+H: 隐藏/显示 播放栏 当鼠标悬停在一些按钮上时可以显示提示. 关于 源代码包&程序点这里下载

WPF 媒体播放器(MediaElement)使用实例(转)

在WPF 中可以使用MediaElement 为应用程序添加媒体播放控件,以完成播放音频.视频功能.由于MediaElement 属于UIElement,所以它同时也支持鼠标及键盘的操作.本篇将使用MediaElement 类和Windows API Code Pack创建一个简单的视频播放器实现一些基本功能. 一.后台逻辑代码说明 1.选择视频文件 在视频文件浏览部分引入,并添加WMV.AVI 等文件过滤器. 点击详细参考 //选择视频文件 private void openBtn_Click

网页媒体播放利器

序言 前段时间在做一个网站项目,要求能在线播放视频.音乐,这个以前还真没接触过.恰好今天在坛子里闲逛时,发现有同志对这方面也感兴趣,遂把这些整理了下,同时自己也可以复习下. 播放器需要满足以下需求: 1. 支持所有主流浏览器 2. 能与播放器交互,播放器必须提供必要的API 3. 可定制外观,方便后期扩展 4. 支持flv.mp3.mp4格式,支持播放列表 5. 详尽的帮助文档说明,方便开发者使用 需求就是一切,咱没条件只好硬着头皮创建条件强上了---.于是疯狂百度Google,发现了很多第三方

Android|媒体|播放和音量调节|seekbar|mediaplayer

Android中的音乐媒体播放 Mediaplayer类,定义如下 final MediaPlayer mpRain = MediaPlayer.create(this,R.raw.rain); 文件为  res/raw/rain.mp3  //raw在Androidstudio中我自己创建的 我自己在这里的用法是只有一个按钮,单击使用,如果在播放就停止,否则开始播放,附上代码 1 mpRain.setLooping(true); 2 buttonRain.setOnClickListener(

【转】媒体播放器三大底层架构

媒体播放工具,这里主要指视频播放,因为要面临庞大的兼容性和纷繁复杂的算法,从架构上看,能脱颖而出的体系屈指可数.大体来说业界主要有3大架构:MPC.MPlayer和VLC.这3大架构及其衍生品占领了90%的市场,凡是用户能看到的免费媒体播放软件,无一不是源自这3大架构. MPC-HC架构  MPC(Media Player Classic)和它的后续者MPC-HC应该并列而说.MPC基于DirectShow架构,是Windows系统下元祖级别的播放器.包括KMP之流 最早也就是抄来MPC的代码再

简单媒体播放器

// //  ViewController.m //  简单媒体播放器 // //  Created by 殷婷婷 on 15-6-12. //  Copyright (c) 2015年 lanou. All rights reserved. // #import "ViewController.h" #import <MediaPlayer/MediaPlayer.h> @interface ViewController () @property(nonatomic,st

媒体播放器三大底层架构

自射手影音推出以来,生活中越来越多的时间开始被代码和各种Bug-Fix淹没.埋头在田里太久,常常会在一时之间忘记身处何方.所以偶尔上来透透气,顺便将一些经验和心得与大家分享. 媒体播放工具,这里主要指视频播放,因为要面临庞大的兼容性和纷繁复杂的算法,从架构上看,能脱颖而出的体系屈指可数.大体来说业界主要有3大架构:MPC.MPlayer和VLC.这3大架构及其衍生品占领了90%的市场,凡是用户能看到的免费媒体播放软件,无一不是源自这3大架构. MPC/HC架构 MPC(Media Player

JavaScript自定义媒体播放器

使用<audio>和<video>元素的play()和pause()方法,可以手工控制媒体文件的播放.组合使用属性.事件和这两个方法,很容易创建一个自定义的媒体播放器,如下面的例子所示. 1 <div class="mediaplayer"> 2 <div class="video"> 3 <video id="player" src="movie.mov" poster=