`

音,视频播放资源

 
阅读更多
资源:
Android MediaPlayer的生命周期
http://syab11.iteye.com/blog/761660
Android提高第二十一篇之MediaPlayer播放网络视频
http://blog.csdn.net/hellogv/article/details/6429455



一定要先弄明白状态图:
http://book.51cto.com/art/200912/173820.htm
我说怎么总是感觉isPlaying()不太准确......晕

引用
3. 播放、暂停和停止

调用start()方法,MediaPlayer将进入到started状态。isPlaying()方法可以用来判断MediaPlayer是否处在started状态。当MediaPlayer从网络上播放多媒体文件时,可以通过onBufferingUpdateListener.onBufferingUpdate(MediaPlayer mp,int percent)来监听缓冲的进度,其中percent是0~100的整数,代表已经缓冲好的多媒体数据的百分比。

调用pause()方法,MediaPlayer将进入到paused状态。需要注意的是,从started到paused、从paused到started状态的转换是异步过程,也就是说,可能经过一段时间才能更新MediaPlayer的状态。在调用isPlaying()来查询播放器的状态时需要考虑这一点。

调用stop()方法,MediaPlayer将进入到stopped状态。一旦MediaPlayer进入stopped状态,必须再次调用prepare()或者prepareAsyn()才能使其进入到prepared状态,以便复用此MediaPlayer对象,再次播放多媒体文件。



http://blog.csdn.net/kesenhoo/article/details/6547726
MediaPlayer使用示例:
/**
 * 音频播放器
 * @author kay
 */
public class PlayActivity extends Activity 
{
	private static final String TAG = "PlayActivity";
    private EditText filenameText;
    private MediaPlayer mediaPlayer;
    private String filename;
    private int position;
    
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        filenameText = (EditText)this.findViewById(R.id.filename);
       
        //对mediaPlayer进行实例化
        mediaPlayer = new MediaPlayer();
        ButtonClickListener listener = new ButtonClickListener();
        //获取4个按钮
        Button playButton = (Button)this.findViewById(R.id.play);
        Button pauseButton = (Button)this.findViewById(R.id.pause);
        Button resetButton = (Button)this.findViewById(R.id.reset);
        Button stopButton = (Button) this.findViewById(R.id.stop);
        //设置4个按钮的监听
        playButton.setOnClickListener(listener);
        pauseButton.setOnClickListener(listener);
        resetButton.setOnClickListener(listener);
        stopButton.setOnClickListener(listener);
        Log.i(TAG, "onCreate()");
    }
    
    
    @Override
	protected void onRestoreInstanceState(Bundle savedInstanceState) 
    {
		this.filename = savedInstanceState.getString("filename");
		this.position = savedInstanceState.getInt("position");
		super.onRestoreInstanceState(savedInstanceState);
		Log.i(TAG, "onRestoreInstanceState()");
	}
	@Override
	protected void onSaveInstanceState(Bundle outState) 
	{
		outState.putString("filename", filename);
		outState.putInt("position", position);
		super.onSaveInstanceState(outState);
		Log.i(TAG, "onSaveInstanceState()");
	}
	
	private void play() throws IOException 
	{
		//获取文件路径
		File audioFile = new File(Environment.getExternalStorageDirectory(),filename);
		mediaPlayer.reset();
		mediaPlayer.setDataSource(audioFile.getAbsolutePath());
		mediaPlayer.prepare();
		mediaPlayer.start();
	}
	
	//如果突然电话到来,停止播放音乐
	@Override
	protected void onPause() 
	{
		if(mediaPlayer.isPlaying())
		{
			//保存当前播放点
			position = mediaPlayer.getCurrentPosition();
			mediaPlayer.stop();
		}
		super.onPause();
	}
	
	//
	@Override
	protected void onResume() 
	{
		//如果电话结束,继续播放音乐
		if(position>0 && filename!=null)
		{
			try 
			{
				play();
				mediaPlayer.seekTo(position);
				position = 0;
			}
			catch (IOException e)
			{
				Log.e(TAG, e.toString());
			}
		}
		super.onResume();
	}
	
	//对mediaPlayer进行摧毁
	@Override
	protected void onDestroy() 
	{
    	mediaPlayer.release();     
		super.onDestroy();
		Log.i(TAG, "onDestroy()");
	}
	private final class ButtonClickListener implements View.OnClickListener
	{
		@Override
		public void onClick(View v) 
		{
			//先得到文本框中的内容
			filename = filenameText.getText().toString();
			//得到button
			Button button = (Button) v; 
			try 
			{
				//通过传过来的Buttonid可以判断Button的类型
				switch (v.getId()) 
				{
					case R.id.play:
						play();
						break;
	
					case R.id.pause:
						if(mediaPlayer.isPlaying())
						{
							mediaPlayer.pause();
							button.setText(R.string.continue1);//让这个按钮上的文字显示为继续
						}
						else
						{
							mediaPlayer.start();//继续播放
							button.setText(R.string.pause);
						}
						break;
						
					case R.id.reset:
						if(mediaPlayer.isPlaying())
						{
							mediaPlayer.seekTo(0);//让它从0开始播放
						}
						else
						{
							play();//如果它没有播放,就让它开始播放
						}
						break;
						
					case R.id.stop:
						//如果它正在播放的话,就让他停止
						if(mediaPlayer.isPlaying()) 
							mediaPlayer.stop();
						break;
				}
			} 
			catch (Exception e)
			{	
				Log.e(TAG, e.toString());
			}
		}		
    }	
}


其他资源:
1.http://blog.csdn.net/Android_Tutor/article/details/5743183
2.http://blog.csdn.net/Android_Tutor/article/details/5058217
分享到:
评论

相关推荐

    影音先锋视频资源怎么找?.docx

    然而,在众多的在线视频播放平台中,选择一款稳定、高效的播放器显得尤为重要。影音先锋作为一款功能强大的多媒体播放软件,深受用户的喜爱。本文将详细介绍如何在互联网上寻找支持影音先锋播放器的视频资源,帮助...

    gec开发板音视频播放项目.zip

    2. **嵌入式音视频开发**:嵌入式系统通常资源有限,因此音视频播放需要优化的算法和高效的数据处理。这可能涉及到解码器(如FFmpeg)的选择与裁剪,以及如何在低功耗设备上实现流畅播放。 3. **Linux操作系统**:...

    音频和视频播放

    13. **性能优化**:对于资源密集型的音视频播放,优化代码以减少内存占用、提高解码速度、利用硬件加速等都是提升用户体验的关键。 14. **兼容性测试**:由于Windows系统存在多个版本,且用户可能使用不同的硬件...

    java音视频播放源码

    Java音视频播放源码是一个基于Java编程语言实现的多媒体播放器项目,主要涵盖了音频和视频的播放功能。这个项目对于想要深入理解Java多媒体处理、音视频解码以及播放器开发的开发者来说,是一个很好的学习资源。下面...

    FFMPEG音视频播放指导文档和代码

    在音视频播放领域,FFmpeg扮演着至关重要的角色。本文档将深入讲解FFmpeg的音视频播放原理及代码实现,帮助你掌握如何使用FFmpeg进行多媒体处理。 一、FFmpeg基础 FFmpeg由一系列库(如libavcodec、libavformat、...

    小程序音频播放视频播放图片处理案例.rar

    3. **左右切换**:在描述中提到的左右切换功能,可能是指在一个音视频播放界面中实现多个资源的切换。这通常通过数据绑定和事件监听来实现,当用户触发滑动或者点击按钮时,更新当前播放的音视频源。 4. **细节处理...

    各种音、视频格式资源

    这个压缩包中包含了丰富的音、视频资源,覆盖了十多种不同的格式,这为我们提供了深入探讨这些格式的机会。 首先,让我们从音频格式开始。常见的音频格式有MP3、WAV、AAC、FLAC、OGG、WMA等。MP3是最广泛使用的压缩...

    uni-app-video(支持后台播放音频的视频播放器).zip

    【uni-app-video】是一款专为uni-app框架设计的视频播放组件,它支持在后台持续播放音频,这在开发音乐播放应用或有音频背景需求的项目中尤其重要。uni-app作为一个多端开发框架,允许开发者使用一套代码实现跨平台...

    IOS应用源码之音频视频播放代码 .zip

    通过AVAsset,开发者可以获取到播放资源的详细信息,以进行更精细的控制。 4. URL加载系统: 在iOS中,通常通过URL来引用音频和视频文件。AVFoundation框架支持HTTP、HTTPS、FTP等网络协议,以及本地文件路径。...

    嵌入式GEC6818_音视频播放器项目.rar

    多线程则是解决并发问题的关键技术,特别是在处理音视频播放时,需要同时进行解码、渲染等多个操作。主线程负责控制播放流程,如播放、暂停、停止等,而其他辅助线程则可以分别处理音频解码、视频解码和用户界面更新...

    车载系统QT5(音视频播放、地图、天气)资料.rar

    在车载系统中,QT5能够提供高效、稳定且用户友好的界面设计,支持音视频播放、地图导航以及天气信息显示等功能。 在车载系统中,QT5的音视频播放功能是关键组成部分。它允许开发人员集成音频和视频播放器,支持多种...

    各种音视频测试文件

    4. **硬件加速**:如果涉及到硬件解码,测试文件会用来验证GPU或其他硬件组件能否有效加速视频播放,降低CPU负载。 5. **跨平台兼容性**:测试文件集通常设计为跨平台,用于检验不同操作系统(如Windows、MacOS、...

    android中音频和视频的播放

    在Android平台上,音频和视频的播放是移动应用开发中不可或缺的一部分。本文将深入探讨如何在Android中使用不同的组件和技术来实现音频和视频的播放功能,包括`MediaPlayer`媒体播放器、`SoundPool`音效池以及`...

    ios应用源码之音频视频播放代码 20181210

    本资源“ios应用源码之音频视频播放代码 20181210”提供了一套完整的源码,帮助开发者了解并实现音频视频的播放功能。下面将详细解析相关知识点。 1. AVFoundation框架:在iOS中,AVFoundation框架是处理音频和视频...

    android在线播放音频视频

    `ExoPlayer`可以更灵活地控制视频播放,如调整分辨率、实现自适应流媒体等。 接着,我们关注播放界面的构建。在Android中,`VideoView`可以与`MediaPlayer`配合,显示视频内容。然而,对于更复杂的布局需求,如全屏...

    Java实现视频播放功能.rar

    在Java编程环境中,实现视频播放功能是一项常见的任务,特别是在开发桌面应用程序或Web应用程序时。Java提供了多种库和API,使得开发者能够集成视频播放功能。在这个“Java实现视频播放功能”的项目中,我们可以深入...

    FFmpeg/SDL2实现音视频播放库

    FFmpeg/SDL2实现音视频播放库是一种技术组合,它结合了FFmpeg的音视频解码能力和SDL2的图形用户界面(GUI)显示功能。在音视频处理领域,这两个库都是不可或缺的工具。 FFmpeg是一个开源项目,包含了多种用于处理...

    视频流播放http-flv流资源

    本文将深入探讨视频流播放中的http-flv流资源,以及如何利用相关工具进行处理和播放。 HTTP-FLV(Flash Video over HTTP)是一种常见的实时流媒体协议,常用于将视频数据以流的形式传输到客户端,比如网页上的Flash...

    影音先锋资源版v9.9.9.96官方安装免费版支持边下载边播放

    基于DirectShow和DirectSound基础之上自主开发的播放内核,具有资源占用低、运行效率高、扩展性强、支持格式广等优点。并集成了RealPlayer、QuickTime Player等多种播放核心。  完美的亮度、对比度、饱和度、色度...

    音频视频录制播放

    ExoPlayer支持各种流媒体协议,如HLS、DASH等,可以处理复杂的视频播放需求。 在AndroidRecording-master项目中,我们可以看到具体的实现细节,包括如何初始化和配置MediaRecorder和Camera,如何处理录制过程中产生...

Global site tag (gtag.js) - Google Analytics