Android framework定制1-->用户无操作一段时间,自动播放客户提供的视频,用户操作后退出播放

这篇具有很好参考价值的文章主要介绍了Android framework定制1-->用户无操作一段时间,自动播放客户提供的视频,用户操作后退出播放。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在PowerManagerService.java中监听用户操作,10秒无操作则打开预置的apk播放视频,直接上代码:

--- a/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
@@ -2359,6 +2359,17 @@ public final class PowerManagerService extends SystemService
                     }
                 }
 
+		//用户无操作10s后,通过intent启动循环播放视频的apk
+                if(now-mLastUserActivityTime>=10000 && mBootCompleted && mSystemReady){
+
+                    Intent intent = new Intent();
+                    intent.setClassName("com.example.autoplayvedio","com.example.autoplayvedio.MainActivity");
+                     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                      mContext.startActivity(intent);
+
+                }
+
+
                 if (mUserActivitySummary != USER_ACTIVITY_SCREEN_DREAM && userInactiveOverride) {
                     if ((mUserActivitySummary &
                             (USER_ACTIVITY_SCREEN_BRIGHT | USER_ACTIVITY_SCREEN_DIM)) != 0) {

apk autoplayvideo 的关键代码:

AndroidManifest.xml:

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.DayNight.NoActionBar">
        <activity
            android:name=".MainActivity"
            android:screenOrientation="landscape"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
								<!-- 系统中不生成apk图标 -->
                <data android:host="LaunchActivity" android:scheme="com.example.autoplayvedio" tools:ignore="AppLinkUrlError"/>
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
package com.example.autoplayvedio;

import androidx.appcompat.app.AppCompatActivity;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.VideoView;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        VideoView video = findViewById(R.id.video);
        android.widget.MediaController mc = new android.widget.MediaController(MainActivity.this);
        //本地连接地址
        //res目录下新建raw目录,视频上传至此处
        String uri = "android.resource://" + getPackageName() + "/" + R.raw.vedio;
        video.setVideoURI(Uri.parse(uri));
        video.setMediaController(mc);
        mc.setMediaPlayer(video);
        video.requestFocus();
        video.start();
        video.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.setLooping(true);//让视频循环播放
            }
        });


        //监听到触摸事件后,执行  System.exit(0);
        video.setOnTouchListener((view, motionEvent) -> {
            if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
                Log.d("guoyh", "Touched the screen");
				// finish();
                System.exit(0);
            }
            return false;
        });
    }

}

activity_main.xml:

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

    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <VideoView
        android:id="@+id/video"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />


</RelativeLayout>

 如果此文章解答了您的相关疑惑,节约了您的宝贵时间,可以Shang小编鸡腿哟!

Android framework定制1-->用户无操作一段时间,自动播放客户提供的视频,用户操作后退出播放,Android  framework,android,java,开发语言 文章来源地址https://www.toymoban.com/news/detail-782603.html

到了这里,关于Android framework定制1-->用户无操作一段时间,自动播放客户提供的视频,用户操作后退出播放的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis缓存设计与性能优化【缓存和数据库不一致问题,解决方案:1.加过期时间这样可以一段时间后自动刷新 2.分布式的读写锁】

    在大并发下,同时操作数据库与缓存会存在数据不一致性问题 1、双写不一致情况 2、读写并发不一致 解决方案: 1、对于并发几率很小的数据(如个人维度的订单数据、用户数据等),这种几乎不用考虑这个问题,很少会发生缓存不一致, 可以给缓存数据加上过期时间,每隔一

    2024年04月13日
    浏览(51)
  • 【干货】Android系统定制基础篇:第二部分(Launcher3支持键盘切换焦点、开发者模式密码确认、禁止非预装应用安装、配置时间)

    Android Launcher3 默认并不支持键盘操作,无法切换焦点,在一些需要支持键盘或遥控操作的设备中无法使用,因些对 Launcher3 做简单修改,使其支持键盘切换焦点。 在安全性要求比较高的产品中,一般会默认关闭『adb调试』,同时禁止用户打开『adb调试』功能。在Android8.1中默认

    2024年02月10日
    浏览(52)
  • Elasticsearch 一段时间后出现 SocketTimeoutException的问题

    java springboot 使用ES客户端连接 一段时间闲置后,首次调用es命令会报SocketTimeOutException问题,再次调用不会报错 问题出现原因: Elasticsearch 客户端会根据服务器返回的HTTP报文内容,来决定客户端保持HTTP连接Keep-Alive状态的策略。 如果结果如下,那么保持HTTP连接 Keep-Alive状态为

    2024年02月09日
    浏览(42)
  • element ui datePick时间日期一段时间,限制选择日期的范围

     时间戳,一天 想限制只能选日期间隔为一年,联合选择器样式不好改,使用俩单独的 有两个办法限制 1.一个在外层使用form通过表单验证控制,出现错误提示(由于是两个单独的组件,触发验证的方式又为单个失去焦点,所以俩组件无法实时更新) 2.用datepick自带的属性di

    2024年02月05日
    浏览(44)
  • 如何通过ELK统计一段时间内接口被调用次数及平均响应时间

    ELK,全名是: Elasticsearch,有了它,我们可以很方便地进行日志查询。 那么,假如想要统计某个服务的接口在某段时间内的被调用次数平均响应时间,类似于下面的效果: 那应该怎么做呢? 步骤如下, 1、打开ELK地址,找到Dev Tools 2、点击Dev Tools,输入执行内容 说明: 注意

    2024年02月12日
    浏览(55)
  • 解决虚拟机VMware一段时间不动,就卡死的问题

    虚拟机总是一段时间不移动鼠标,就会无响应,每次都要重启两次才能继续维持一段时间,我一开始以为是内存和处理器或者硬盘太小的问题,但是我调大了之后还是一样,下面是我分配的虚拟机性能  针对虚拟机卡死,列出以下改善性能的方式,大家可以尝试一下: 因为虚

    2024年02月06日
    浏览(94)
  • 删除、移动、复制文件时总是要卡在99%一段时间解决方法

    Win10文件夹重命名、移动、删除等操作卡顿3-5秒。 原因分析: 查看发现,卡顿期间资源管理器无响应,并且其高度占用CPU资源,但是对于非文件夹文件操作没有问题。 解决方案: 1、双击“此电脑”,选择“查看”,再选择“选项”; 2、依次选择“常规”–“清除”–“还原

    2024年02月10日
    浏览(45)
  • 线上JAVA应用平稳运行一段时间后出现JVM崩溃问题

    系统是一个定时任务系统,需要定时执行业务代码,业务代码主要是访问MYSQL数据库和缓存进行操作,该开始启动,系统日志一切正常,但是运行一段时间到凌晨后,系统就自动崩溃了,java进程没有了,只留下了程序崩溃日志如下: 当JVM 的初始化完成后,类在调用执行过程

    2024年02月05日
    浏览(43)
  • Angularjs实现用户长时间未操作自动退出登录

    当用户超过半小时未操作页面,自动退出登录 在入口文件中,设置一个定时器(退出登录),再添加一个全局的点击事件监听函数,当用户有了点击操作后,重置定时器,如果用户长时间未操作,则执行定时器中的退出登录操作 1、在AngularJS的根控制器(myAppController)中,使

    2024年02月11日
    浏览(42)
  • ChatGpt3.5已经应用了一段时间,分享一些自己的使用心得.

             首先ChatGpt3.5的文本生成功能 十分强大 ,但是chatgpt有一些使用规范大家需要注意,既然chat是一种工具,我们就需要学会它的使用说明,学会chatgpt的引用语句,会极大的方便我们的使用。我们需要做以下的准备。 明确任务和目的:在使用ChatGPT进行文本生成之前,

    2024年02月04日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包