利用Vitamio,mediaplayer后台service播放m3u8流

Service 相关文件转载:http://www.cnblogs.com/lwbqqyumidi/p/4181185.html

http://blog.csdn.net/richnaly/article/details/7829501

http://www.cnblogs.com/yejiurui/archive/2013/11/18/3429451.html

http://blog.csdn.net/yuzhiboyi/article/details/7558176

(1)Service

一、首先,让我们确认下什么是service?

service就是android系统中的服务,它有这么几个特点:它无法与用户直接进行交互、它必须由用户或者其他程序显式的启动、它的优先级比较高,它比处于前台的应用优先级低,但是比后台的其他应用优先级高,这就决定了当系统因为缺少内存而销毁某些没被利用的资源时,它被销毁的概率很小哦。

二、那么,什么时候,我们需要使用service呢?

我们知道,service是运行在后台的应用,对于用户来说失去了被关注的焦点。这就跟我们打开了音乐播放之后,便想去看看图片,这时候我们还不想音乐停止,这里就会用到service;又例如,我们打开了一个下载链接之后,我们肯定不想瞪着眼睛等他下载完再去做别的事情,对吧?这时候如果我们想手机一边在后台下载,一边可以让我去看看新闻啥的,就要用到service。

三、service分类:

一般我们认为service分为两类,本地service和远程service。

本地service顾名思义,那就是和当前应用在同一个进程中的service,彼此之间拥有共同的内存区域,所以对于某些数据的共享特别的方便和简单;

远程service:主要牵扯到不同进程间的service访问。因为android的系统安全的原因导致了我们在不同的进程间无法使用一般的方式共享数据。在这里android为我们提供了一个AIDL工具。(android
interface description language)android接口描述语言。在后边我们将会对其进行详细的介绍。

四、service生命周期:

和Activity相比,service的生命周期已经简单的不能再简单了,只有onCreate()->onStart()->onDestroy()三个方法。

Activity中和service有关的方法:

startService(Intent intent):启动一个service

stopService(Intent intent) :停止一个service

如果我们想使用service中的一些数据或者访问其中的一些方法,那么我们就要通过下面的方法:

public boolean bindService(Intent intent, ServiceConnection conn, int flags) ;

public void unbindService(ServiceConnection conn);

intent是跳转到service的intent,如 Intent intent = new Intent(); intent.setClass(this,MyService.class);

conn则是一个代表与service连接状态的类,当我们连接service成功或失败时,会主动触发其内部的onServiceConnected或onServiceDisconnected方法。如果我们想要访问service中的数据,可以在onServiceConnected()方法中进行实现,

(2)Android 中Service生命周期

使用context.startService() 启动Service

其生命周期为context.startService() ->onCreate()- >onStart()->Service running-->context.stopService() | ->onDestroy() ->Service stop

如果Service还没有运行,则android先调用onCreate()然后调用onStart();

如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次。

stopService的时候直接onDestroy,

如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。

该Service的调用者再启动起来后可以通过stopService关闭Service。

所以调用startService的生命周期为:onCreate --> onStart(可多次调用) --> onDestroy

对于bindService()启动Service会经历:

context.bindService()->onCreate()->onBind()->Service running-->onUnbind() -> onDestroy() ->Service stop

onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。

这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,

Srevice就会调用onUnbind->onDestroy相应退出。

所以调用bindService的生命周期为:onCreate --> onBind(只一次,不可多次绑定) --> onUnbind --> onDestory。

一但销毁activity它就结束,如果按home把它放到后台,那他就不退出。



补充:

在Service每一次的开启关闭过程中,只有onStart可被多次调用(通过多次startService调用),

其他onCreate,onBind,onUnbind,onDestory在一个生命周期中只能被调用一次。

______________________________________________________________________________________________________

Demo问题:

(1)

解决:通过广播 绑定服务!

(2)生命周期://生命周期onCreate()-onBind()-onStartCommand()-onUnbind()-onDestroy()

(3)

解决问题:mediaPlayer 写在play里面就不会报错

(4)退出程序: 当最后一个activity 退出的时候,程序也不会退出,这时要调用

System.exit(0);

Demo链接:http://download.csdn.net/detail/zqs62761130/8618017

时间: 2024-10-25 21:06:48

利用Vitamio,mediaplayer后台service播放m3u8流的相关文章

利用vitamio Mediaplayer 自定义了一个播放器

本人android初学者,学习了Vitamio Mediaplayer 的Demo,参考了农民伯伯大牛的文章,具体链接如下: http://www.cnblogs.com/over140/archive/2012/05/22/2473019.html 实现了简单的功能:双击屏幕切换,点击显示进度条,暂停和播放.自己记录下,许多地方还有待优化的部分,请大家指点哈. 手机拍摄的真机效果不好请大家原谅 显示效果: 首先是XML布局: 这里增加了进度,播放,暂停等组件 <?xml version="

相对完美的后台Service实现播放音乐功能

对于用Context.startService()启动的service生命周期为onCreate()-onStartCommand()-onDestroy();如果多次用context.startService启动service只会多次执行onStartCommand()方法.根据音乐播放器的特性使用Context.startService()调用在合适不过了. public class MyMusicPlayer extends Service implements MediaPlayer.O

Android开发---MediaPlayer简单音乐播放器

Android开发-MediaPlayer简单音乐播放器 功能介绍 实现一个简单的播放器,类似网易云音乐形式,功能包括: 播放.暂停,停止,退出功能: 后台播放功能: 进度条显示播放进度.拖动进度条改变进度功能: 播放时图片旋转,显示当前播放时间功能: 界面样式 功能实现 1. MediaPlayer的实现 MediaPlayer常用方法介绍 MediaPlayer的实现包括初始化MediaPlayer,MediaPlayer的功能实现,包括播放.暂停.停止.离开等,具体细节如下: MediaP

MediaPlayer和Service用法

Android的多媒体框架包括支持播放多种常见的媒体类型,使您可以轻松地把音频.视频和图像集成到你的应用.你可以播放音频或视频媒体文件,这些文件是存储在你的应用程序的资源文件中的.应用程序的资源文件可以是文件系统中独立的文件,或通过网络连接获取的一个数据流,所有使用MediaPlayer APIS的资源文件. 1.注意: 如果你通过一个URL来获取一个在线媒体文件,该文件必须能够支持渐进式下载. 2.警告: 当你使用setDataSource()方法时,必须捕捉或通过非法数据异常和输入输出异常,

Android Mediaplayer本地音乐播放器(绑定服务)

本文章介绍MediaPlayer本地音乐播放器,而当应用程序不再位于前台且没有正在使用它的活动时,为了确保音频继续播放,我们需要建立一个服务Service. Activity与绑定服务Service之间的交互是本文章的重点(这里需要说明一点的是,Activity不能直接访问服务对象中的方法,所以才有了我们一下的介绍,这也是为服务的安全等方面的考虑). 直接上代码: 布局文件:activity_main: <LinearLayout xmlns:android="http://schemas

IOS 后台运行 播放音乐

iOS 4开始引入的multitask,我们可以实现像ipod程序那样在后台播放音频了.如果音频操作是用苹果官方的AVFoundation.framework实现,像用AvAudioPlayer,AvPlayer播放的话,要实现完美的后台音频播放,依据app的功能需要,可能需要实现几个关键的功能. 首先,播放音频之前先要设置AVAudioSession模式,通常只用来播放的App可以设为AVAudioSessionCategoryPlayback即可.模式意义及其他模式请参考文档. 1 //后台

如何运行后台Service?

Unless you specify otherwise, most of the operations you do in an app run in the foreground on a special thread called the UI thread. 除非特别指定,一般情况下所有在前台执行的操作都运行在名为UI的线程中.可能会存在某些隐患,因为部分在UI界面上的耗时操作可能会影响到界面的响应性能.UI界面的性能问题会容易惹恼用户,甚至可能导致系统的ANR.为了避免这样的问题,An

Android笔记:利用InputStream和BufferedReader 进行字节流 字符流处理

通过socket获取字节流处理时最初使用的是BufferedReader和PrintWriter  这种方式在解析字符串时是比较方便的 但是在处理字节时不够方便最终还是回归到InputStream和OutputStream方式 不使用缓存直接使用字节流操作,一次传输的字节数据在300字节以内,目前没有测试差距会有多大. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException;

利用cron监视后台进程状态

利用cron监视后台进程状态 http://blog.csdn.net/dyx810601/article/details/72967758 1. 利用cron监视后台进程状态,如果进程死掉或服务器重启后自动拉起进程. 目的:Linux 下服务器程序会因为各种原因dump掉,就会影响用户使用,这里提供一个简单的进程监控和重启功能. 实现原理:由定时任务crontab调用脚本,脚本用ps检查进程是否存在,如果不存在则重启并写入日志. 每分钟调用一下脚本cron_worker.sh $crontab