VLC-android开机启动部分

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VLC-android开机启动部分相关的知识,希望对你有一定的参考价值。



比较值得推荐的开机启动方式。

收到开机广播后,设置一个循环的间隔5s执行定时器,来一直启动一个service。这样做可以避免程序起不来,也可以避免程序因为出现异常没有起来了。

使用的定时器也是用一个比较节省的方式,


/*****************************************************************************
* BootupReceiver.java
*****************************************************************************
* Copyright © 2014-2015 VLC authors, VideoLAN and VideoLabs
* Author: Geoffrey Métais
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
package org.videolan.vlc;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

import org.videolan.vlc.util.AndroidDevices;

public class BootupReceiver extends BroadcastReceiver
public BootupReceiver()

private static final String TAG = "VLC/BootupReceiver";

private static final long INITIAL_DELAY = 5000;

@Override
public void onReceive(Context context, Intent intent)
if (AndroidDevices.isAndroidTv() && intent.getAction().endsWith(Intent.ACTION_BOOT_COMPLETED))
Log.d(TAG, "ACTION_BOOT_COMPLETED ");
scheduleRecommendationUpdate(context);



private void scheduleRecommendationUpdate(Context context)
AlarmManager alarmManager = (AlarmManager) VLCApplication.getAppContext().getSystemService(
Context.ALARM_SERVICE);
Intent recommendationIntent = new Intent(context,
RecommendationsService.class);
PendingIntent alarmIntent = PendingIntent.getService(context, 0,
recommendationIntent, 0);

alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
INITIAL_DELAY,
AlarmManager.INTERVAL_HOUR,
alarmIntent);




相关知识:

摘自http://www.open-open.com/lib/view/open1350291466977.html

AlarmManager的作用文档中的解释是:在特定的时刻为我们广播一个指定的Intent。简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Intent,常用方法有五个:
(1)set(int type,long startTime,PendingIntent pi);
        该方法用于设置一次性闹钟,第一个参数表示闹钟类型,第二个参数表示闹钟执行时间,第三个参数表示闹钟响应动作。
(2)setRepeating(int type,long startTime,long intervalTime,PendingIntent pi);


        该方法用于设置重复闹钟,第一个参数表示闹钟类型,第二个参数表示闹钟首次执行时间,第三个参数表示闹钟两次执行的间隔时间,第四个参数表示闹钟响应动作。类似JAVA的Timer里面 scheduleAtFixedRate(TimerTask task, long delay, long period): 以近似固定的时间间隔(由指定的周期分隔)进行后续执行。在固定速率执行中,根据已安排的初始执行时间来安排每次执行。如果由于任何原因(如垃圾回收或其他后台活动)而延迟了某次执行,则将快速连续地出现两次或更多的执行,从而使后续执行能够“追赶上来”。从长远来看,执行的频率将正好是指定周期的倒数(假定 Object.wait(long) 所依靠的系统时钟是准确的)。

setInexactRepeating(int type,long startTime,long intervalTime,PendingIntent pi);
        该方法也用于设置重复闹钟,与第二个方法相似,不过其两个闹钟执行的间隔时间不是固定的而已。它相对而言更节能(power-efficient)一些,因为系统可能会将几个差不多的闹钟合并为一个来执行,减少设备的唤醒次数。 有点类似JAVA的Timer里面schedule(TimerTask task, Date firstTime, long period):根据前一次执行的实际执行时间来安排每次执行。如果由于任何原因(如垃圾回收或其他后台活动)而延迟了某次执行,则后续执行也将被延迟。在长期运行中,执行的频率一般要稍慢于指定周期的倒数(假定 Object.wait(long) 所依靠的系统时钟是准确的)。

cancel(PendingIntent operation) 

setTimeZone(String timeZone) 




以上是关于VLC-android开机启动部分的主要内容,如果未能解决你的问题,请参考以下文章

vlc源码分析 vlc-android native调试配置

vlc for android为啥没有串流功能

开机进程,应该启动哪些服务?

Vlc rtsp android录像,VLC-Android 对视频流(RTSP)做翻转旋转

怎么样让VMware里的虚拟机系统开机自动启动呢?

支持向量机