- 浏览: 247750 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
江恂泽:
楼主 这家伙会把data 拆分开来 转换成day year形 ...
JsonUtil -
mdsp25xhm:
为何没有列表查询功能?
myBatis DAO封装
public class PlayerVideo implements OnBufferingUpdateListener,OnCompletionListener,OnPreparedListener,Callback
{
private int videoWidth,videoHeight;
private SeekBar skbProgress; //进度条
public MediaPlayer mediaPlayer; //播放器
private SurfaceHolder surfaceHolder;
private Timer mTimer = new Timer();
public PlayerVideo(SurfaceView surfaceView,SeekBar skbProgress)
{
this.skbProgress = skbProgress;
this.surfaceHolder = surfaceView.getHolder();
this.surfaceHolder.addCallback(this);
this.surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
this.mTimer.schedule(mTimerTask, 0, 1000);
}
private TimerTask mTimerTask = new TimerTask()
{
@Override
public void run()
{
if (null == mediaPlayer)
{
return;
}
if (mediaPlayer.isPlaying() && skbProgress.isPressed() == false)
{
handleProgress.sendEmptyMessage(0);
}
}
};
private Handler handleProgress = new Handler()
{
public void handleMessage(Message msg)
{
int position = mediaPlayer.getCurrentPosition();
int duration = mediaPlayer.getDuration();
if (duration > 0)
{
long pos = skbProgress.getMax() * position / duration;
skbProgress.setProgress((int) pos);
}
};
};
public void play()
{
this.mediaPlayer.start();
}
public void playUrl(String videoUrl)
{
try
{
this.mediaPlayer.reset();
this.mediaPlayer.setDataSource(videoUrl);
this.mediaPlayer.prepare();//prepare之后自动播放
}
catch (Exception e)
{
e.printStackTrace();
}
}
public void pause()
{
if (null != this.mediaPlayer)
{
if (this.mediaPlayer.isPlaying())
{
this.mediaPlayer.pause();
}
else
{
this.mediaPlayer.start();
}
}
}
public void stop()
{
if (null != this.mediaPlayer)
{
this.mediaPlayer.stop();
this.mediaPlayer.release();
this.mediaPlayer = null;
}
}
public void onBufferingUpdate(MediaPlayer mp, int bufferingProgress)
{
this.skbProgress.setSecondaryProgress(bufferingProgress);
int currentProgress = this.skbProgress.getMax() * this.mediaPlayer.getCurrentPosition() / this.mediaPlayer.getDuration();
Log.e(currentProgress+"% play", bufferingProgress + "% buffer");
}
public void onCompletion(MediaPlayer mp)
{
}
public void onPrepared(MediaPlayer mp)
{
this.videoWidth = this.mediaPlayer.getVideoWidth();
this.videoHeight = this.mediaPlayer.getVideoHeight();
//频是android播放器不能播放的,不能播放时videoHeight=0,videoWidth=0,以此来判断是否播放视频
if (this.videoWidth != 0 && this.videoHeight != 0)
{
mp.start();
}
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,int height)
{
}
public void surfaceCreated(SurfaceHolder holder)
{
this.mediaPlayer = new MediaPlayer();
this.mediaPlayer.setDisplay(this.surfaceHolder);
this.mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
this.mediaPlayer.setOnBufferingUpdateListener(this);
this.mediaPlayer.setOnPreparedListener(this);
}
public void surfaceDestroyed(SurfaceHolder holder)
{
}
}
{
private int videoWidth,videoHeight;
private SeekBar skbProgress; //进度条
public MediaPlayer mediaPlayer; //播放器
private SurfaceHolder surfaceHolder;
private Timer mTimer = new Timer();
public PlayerVideo(SurfaceView surfaceView,SeekBar skbProgress)
{
this.skbProgress = skbProgress;
this.surfaceHolder = surfaceView.getHolder();
this.surfaceHolder.addCallback(this);
this.surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
this.mTimer.schedule(mTimerTask, 0, 1000);
}
private TimerTask mTimerTask = new TimerTask()
{
@Override
public void run()
{
if (null == mediaPlayer)
{
return;
}
if (mediaPlayer.isPlaying() && skbProgress.isPressed() == false)
{
handleProgress.sendEmptyMessage(0);
}
}
};
private Handler handleProgress = new Handler()
{
public void handleMessage(Message msg)
{
int position = mediaPlayer.getCurrentPosition();
int duration = mediaPlayer.getDuration();
if (duration > 0)
{
long pos = skbProgress.getMax() * position / duration;
skbProgress.setProgress((int) pos);
}
};
};
public void play()
{
this.mediaPlayer.start();
}
public void playUrl(String videoUrl)
{
try
{
this.mediaPlayer.reset();
this.mediaPlayer.setDataSource(videoUrl);
this.mediaPlayer.prepare();//prepare之后自动播放
}
catch (Exception e)
{
e.printStackTrace();
}
}
public void pause()
{
if (null != this.mediaPlayer)
{
if (this.mediaPlayer.isPlaying())
{
this.mediaPlayer.pause();
}
else
{
this.mediaPlayer.start();
}
}
}
public void stop()
{
if (null != this.mediaPlayer)
{
this.mediaPlayer.stop();
this.mediaPlayer.release();
this.mediaPlayer = null;
}
}
public void onBufferingUpdate(MediaPlayer mp, int bufferingProgress)
{
this.skbProgress.setSecondaryProgress(bufferingProgress);
int currentProgress = this.skbProgress.getMax() * this.mediaPlayer.getCurrentPosition() / this.mediaPlayer.getDuration();
Log.e(currentProgress+"% play", bufferingProgress + "% buffer");
}
public void onCompletion(MediaPlayer mp)
{
}
public void onPrepared(MediaPlayer mp)
{
this.videoWidth = this.mediaPlayer.getVideoWidth();
this.videoHeight = this.mediaPlayer.getVideoHeight();
//频是android播放器不能播放的,不能播放时videoHeight=0,videoWidth=0,以此来判断是否播放视频
if (this.videoWidth != 0 && this.videoHeight != 0)
{
mp.start();
}
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,int height)
{
}
public void surfaceCreated(SurfaceHolder holder)
{
this.mediaPlayer = new MediaPlayer();
this.mediaPlayer.setDisplay(this.surfaceHolder);
this.mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
this.mediaPlayer.setOnBufferingUpdateListener(this);
this.mediaPlayer.setOnPreparedListener(this);
}
public void surfaceDestroyed(SurfaceHolder holder)
{
}
}
发表评论
-
IMF简介-2
2013-07-09 17:56 903InputManager 由UI控件(View,TextVie ... -
IMF简介-1
2013-07-09 17:51 821Input Method Framework 目录 ... -
输入法 总结-3
2013-07-08 15:02 857public class MainActivity exten ... -
输入法 总结-4
2013-07-04 17:29 940public class InputActivity exte ... -
输入法 总结-3
2013-07-04 17:28 863public class InputApplication e ... -
输入法 总结-2
2013-07-04 17:23 781openwnn_pref_ja.xml <?xml v ... -
输入法 总结-2
2013-07-04 17:21 13openwnn_pref_ja.xml <?xml v ... -
输入法 总结-1
2013-07-04 17:19 801<application android ... -
Android快捷键
2013-03-15 14:39 841Home键(小房子键) 在 ... -
如何通过wifi调试android程序
2013-02-27 15:48 778android手机居然可以通过wifi进行程序的调试,太好了, ... -
Please ensure that adb is correctly located at 'D:\android-sdk-windows\platform-
2013-02-27 14:27 1668adt 出现ADB server didn't ACK, fa ... -
Android AsyncTask
2013-02-19 09:35 1135AsyncTask是抽象类,子类 ... -
Android ViewPager 左右滑动2-1
2013-01-29 10:12 1515public class PagerActivity exte ... -
Android ViewPager 左右滑动-3
2013-01-29 10:10 1108<?xml version="1.0" ... -
Android ViewPager 左右滑动-2
2013-01-29 10:10 1481/*** * 选中效果 */ pu ... -
Android ViewPager 左右滑动-1
2013-01-29 10:09 1389Store extends ActivityGroup imp ... -
Android 下载
2013-01-27 00:59 918下载apk程序代码 protected File downLo ... -
Android SDCard操作-3
2013-01-26 18:31 890public static Intent getVid ... -
Android SDCard操作-2
2013-01-26 18:30 1126/** * 判断该应用在手机中的安装情况 ... -
Android SDCard操作-1
2013-01-26 18:27 1056private static int INSTALLED = ...
相关推荐
在Android开发中,MediaPlayer是处理音频和视频播放的核心类之一,它提供了丰富的API来控制多媒体文件的播放。本文将深入探讨如何使用MediaPlayer自定义循环播放的次数,这在需要重复播放特定音频片段的应用场景中...
"Android MediaPlayer播放mp3的实例" Android 中的 MediaPlayer 是一个功能强大且复杂的媒体播放器,可以播放音频和视频文件。在 Android 的界面上,Music 和 Video 两个应用程序都是调用 MediaPlayer 实现的。...
`MediaPlayer`是Android SDK提供的一种核心组件,专门用于播放音频和视频文件。在这个场景中,我们将详细探讨如何使用`MediaPlayer`来播放视频,同时结合`SurfaceView`来显示视频画面。本文将深入解析相关知识点,并...
在Android开发中,`MediaPlayer`类是用于播放各种媒体文件的核心组件。它可以处理音频、视频流,支持多种格式,如MP3、AAC、MPEG-4等。在本教程中,我们将深入探讨如何使用`MediaPlayer`播放网络URL、Asset目录下的...
在Android开发中,多媒体播放是常见的功能之一,`MediaPlayer` 和 `SurfaceView` 的结合使用是实现视频播放的标准方式。本篇文章将详细讲解如何利用这两个组件来构建一个视频播放器。 首先,`MediaPlayer` 是...
在Android平台上,`MediaPlayer`是系统提供的一个核心组件,用于播放各种媒体文件,如音频和视频。本篇文章将深入探讨`MediaPlayer`的使用方法,帮助开发者理解和掌握如何在Android应用中实现多媒体播放功能。 首先...
1. **MediaPlayer类**: MediaPlayer是Android提供的媒体播放类,它可以播放本地文件、网络流媒体以及Android资源中的音频和视频。在我们的示例中,它主要负责加载音频文件并控制播放、暂停、停止等操作。 2. **...
1. **缓冲区与缓冲策略**:在Android MediaPlayer中,数据会先加载到缓冲区中,当缓冲区的数据量达到一定阈值时,视频才能开始播放。因此,我们需要合理设置缓冲区大小和缓冲阈值,确保在网络不稳定时也能保持播放的...
压缩包内的文件如"Unit1.pas"和"Unit1.fmx"可能是Delphi项目中的源代码文件,"Android实例之MediaPlayer播放音乐和视频.jpg"可能是示例的截图。如果你想要了解更多关于这个实例的细节,可以查看这些文件。 总之,这...
1. Android MediaPlayer的基本用法和状态机模型。 2. MediaPlayer在实际使用中可能遇到的问题,如状态转换错误、内存泄漏等。 3. 深入分析MediaPlayer的源码,以理解其内部工作原理。 4. 使用工具如Logcat进行调试的...
1. 初始化MediaPlayer对象:通常,我们会在Activity或Service中创建MediaPlayer对象。初始化时,我们需要调用`MediaPlayer.create()`方法,并传入上下文(Context)和音频文件的URI。 ```java MediaPlayer ...
**Android MediaPlayer 深度解析** 在Android平台上,多媒体处理是一个重要的功能,而`MediaPlayer`类是Android SDK提供的一种核心组件,专门用于处理音频和视频的播放。它提供了丰富的功能,如播放本地或网络资源...
1. 初始化:通过`new MediaPlayer()`创建一个实例,然后可以调用`setDataSource()`来指定要播放的媒体源,可以是文件路径、URI或流媒体地址。 2. 准备:调用`prepare()`或`prepareAsync()`来加载媒体数据。`prepare...
在Android平台上,`MediaPlayer`是系统提供的一个核心组件,用于播放音频和视频文件。这个组件支持多种媒体格式,包括MP3。在这个示例中,我们将深入探讨如何使用`MediaPlayer`来播放MP3文件。 首先,我们需要了解`...
1. **初始化MediaPlayer** 创建`MediaPlayer`对象时,首先需要通过`setDataSource()`方法指定要播放的音频文件路径。这可以是本地文件路径、网络URL或者资源ID。例如: ```java MediaPlayer mediaPlayer = new ...
在Android开发中,`MediaPlayer`是用于播放多媒体文件的核心组件,它可以处理音频、视频等多种格式的媒体资源。然而,有时我们需要处理特殊的网络环境或者需要实现特定的功能,例如播放反盗链的媒体文件或实现边播放...
Android提供了多种API来处理音频、视频和图像,其中之一就是`MediaPlayer`类。这个强大的工具允许开发者播放本地或网络上的媒体文件,为用户创建各种多媒体应用提供了便利。 `MediaPlayer`是Android SDK中的核心...
在Android开发中,`MediaPlayer`是一个非常重要的组件,主要用于处理音频和视频的播放。这个"android mediaPlayer demo"是一个基础的示例,展示了如何在Android应用中集成和使用`MediaPlayer`类。下面我们将深入探讨...
在Android平台上,`MediaPlayer`是系统提供的一个核心组件,用于播放各种媒体文件,如音频和视频。本篇文章将深入探讨`MediaPlayer`的高级用法,包括但不限于事件处理、流媒体播放、音量控制以及错误处理等方面。...
1. **libmedia.so**:作为核心库,它提供了面向上层应用的`MediaPlayer`类接口。该库负责处理音频和视频数据的基本操作,如解码、渲染等。 2. **libmedia_jni.so**:通过调用`libmedia.so`中的`MediaPlayer`类,为...