Android 手机自动灭屏进入演示模式循环播放视频功能

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhuxingchong/article/details/81539596

基于屏保实现的演示模式,在屏保实现循环播放视频功能,先设置屏保我们自己开发的屏保。

       安装APK后在  设置  -》 显示-》屏保 -》当前的屏保   

       选择   视频演示模式 

       再将屏保启动时间改为 充电或插入基座时  -》点击 立即启动  或者手机连接USB,等手机自动灭屏就会开始播放

     如果用户按了power key灭屏就不会进去演示模式。

AndroidManifest.xml文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.videoplay.demo">

    <application
        android:allowBackup="true"
        android:supportsRtl="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <---最重要地方实现屏保类-->
        <service
            android:name="com.videoplay.demo.VideoDreamService"
            android:exported="true"
            android:label="视频演示模式"
            android:icon="@drawable/ic_launcher"
            android:screenOrientation="landscape"
            android:permission="android.permission.BIND_DREAM_SERVICE">
            <intent-filter>
                <action android:name="android.service.dreams.DreamService"/>

                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </service>
    </application>

</manifest>
布局文件 draem_video_play.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#0000">

    <VideoView
        android:id="@+id/video"
        android:layout_width="wrap_content"
        android:layout_gravity="center"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_height="wrap_content"
        />

</RelativeLayout>

//最重要实现屏保类
package com.videoplay.demo;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.service.dreams.DreamService;
import android.support.annotation.RequiresApi;
import android.view.View;
import android.widget.MediaController;
import android.widget.VideoView;

@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
public class VideoDreamService extends DreamService {

    @Override
    public void onAttachedToWindow() {
        super.onAttachedToWindow();
        setInteractive(false);
        setFullscreen(true);
        setContentView(R.layout.draem_video_play);//设置屏保视图
        addview();
    }

    public void addview(){
        //String uri = "android.resource://" + getPackageName() + "/" + R.raw.video;
        Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.video);
        /**
         * 本地播放
         */
        //videoView.setVideoPath(PATH);

        /**
         * 网络播放
         */
        //videoView.setVideoURI(Uri.parse("http://cn-jsxz1-cu.acgvideo.com/vg2/e/b4/13382667-1.flv?expires=1485238800&ssig=Uq0E2CqgSGNjDKYJfTr5Kg&oi=2362377891&nfa=B2jsoD9cEoAmG7KPYo7s2g==&dynamic=1"));

        VideoView videoView = (VideoView) findViewById(R.id.video);
        videoView.setMediaController(new MediaController(this));
        videoView.setVideoURI(uri);
        //videoView.setVideoURI(Uri.parse("http://2449.vod.myqcloud.com/2449_22ca37a6ea9011e5acaaf51d105342e3.f20.mp4"));
        videoView.start();
        videoView.requestFocus();
        //监听视频播放完的代码,实现循环播放功能
        videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mPlayer) {
                // TODO Auto-generated method stub
                mPlayer.start();
                mPlayer.setLooping(true);
            }
        });
        hideBottomUIMenu();

    }

    /**
     * 隐藏虚拟按键,并且全屏
     */
    protected void hideBottomUIMenu() {
        //隐藏虚拟按键,并且全屏
        if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api
            View v = this.getWindow().getDecorView();
            v.setSystemUiVisibility(View.GONE);
        } else if (Build.VERSION.SDK_INT >= 19) {
            //for new api versions.
            View decorView = getWindow().getDecorView();
            int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN;
            decorView.setSystemUiVisibility(uiOptions);
        }
    }

    @Override
    public void onCreate() {
        super.onCreate();

    }


    @Override
    public void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        System.exit(0);
        android.os.Process.killProcess(android.os.Process.myPid());
    }



    @Override
    public void onDreamingStarted() {
        super.onDreamingStarted();
    }


}

猜你喜欢

转载自blog.csdn.net/zhuxingchong/article/details/81539596