3.定时关机

python报时功能_python3多线程实现一个语音报时,定时关机功能的应用 我是您的朋友义县游学电子科技,今天我跟大家分享一个小应用。利用python实现一个网络应用,具有定时关机功能和语音报时功能。下面我先来介绍一下python。python这门语言想必大家都听说过,就算没学习过,大家肯定也或多或少地通过互联网了解过一些。它具有入门简单,开发效率高,用途广泛等特点。您一定对于这几个优点的描述看腻了吧。老实讲,对于python而言它的这几样优点确实是其他语言所不能比拟的。... 阅读详情

BaseActivity代码:
(利用反射,调用系统方法关机)


import android.content.Context;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.WindowManager;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Timer;
import java.util.TimerTask;

public abstract class BaseActivity extends AppCompatActivity {
    private static final String TAG = BaseActivity.class.getSimpleName();
    private static final String SERVICE_MANAGER = "android.os.ServiceManager";
    private static final String GET_SERVICE = "getService";
    private static final String IPOWER_MANAGER_STUB = "android.os.IPowerManager$Stub";
    private static final String AS_INTERFACE = "asInterface";
    private static final String SHUTDOWN = "shutdown";
    private static final String USER_REQUESTED = "userrequested";
    private static final int KEYSTROKES_ONE_SECOND = 14;
    private static Timer mTimer;
    private static TimerTask mTask;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(this.getLayoutId());
        initView();
        ActivityStackManager.getManagerInstance().pushActivity(this);
    }

    @Override
    protected void onResume() {
        super.onResume();
        hideSystemBar();
        startTimer();
        Logger.d(TAG, "onResume, start timer");
    }

    @Override
    protected void onPause() {
        super.onPause();
        stopTimer();
        Logger.d(TAG, "onPause, stop timer");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        ActivityStackManager.getManagerInstance().popActivity(this);
    }

    private void hideSystemBar() {
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN
                | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
                | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
                // Add the FLAG_KEEP_SCREEN_ON flag for keeping on screen.
                | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        event.startTracking();
        switch (event.getKeyCode()) {
            case KeyEvent.KEYCODE_POWER:
                if (event.getRepeatCount() == KEYSTROKES_ONE_SECOND) {
                    // TODO
                    Logger.d(TAG, "onKeyDown -> KEYCODE_POWER -> keycode = " + event.getKeyCode());
                    return true;
                }
                break;
            case KeyEvent.KEYCODE_FUNCTION:
                if (event.getRepeatCount() == 0) {
                    // do some preparations
                    Logger.d(TAG, "onKeyDown -> KEYCODE_FUNCTION -> keycode = " + event.getKeyCode());
                    return true;
                }
                break;
            case KeyEvent.KEYCODE_MEDIA_RECORD:
                if (event.getRepeatCount() == 0) {
                    // do some preparations
                    Logger.d(TAG, "onKeyDown -> KEYCODE_MEDIA_RECORD -> keycode = " + event.getKeyCode());
                    return true;
                }
                break;
            default:
                break;
        }
        return super.onKeyDown(keyCode, event);
    }

    @Override
    public boolean onKeyLongPress(int keyCode, KeyEvent event) {
        switch (event.getKeyCode()) {
            case KeyEvent.KEYCODE_FUNCTION:
                // TODO
                Logger.d(TAG, "onKeyLongPress -> KEYCODE_FUNCTION -> keycode = " + event.getKeyCode());
                break;
            case KeyEvent.KEYCODE_MEDIA_RECORD:
                // TODO
                Logger.d(TAG, "onKeyLongPress -> KEYCODE_MEDIA_RECORD -> keycode = " + event.getKeyCode());
                break;
            default:
                break;
        }
        return super.onKeyLongPress(keyCode, event);
    }

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        switch (event.getKeyCode()) {
            case KeyEvent.KEYCODE_POWER:
                // TODO
                Logger.d(TAG, "onKeyUp -> KEYCODE_POWER -> keycode = " + event.getKeyCode());
                break;
            case KeyEvent.KEYCODE_FUNCTION:
                // TODO
                Logger.d(TAG, "onKeyUp -> KEYCODE_FUNCTION -> keycode = " + event.getKeyCode());
                break;
            case KeyEvent.KEYCODE_MEDIA_RECORD:
                // TODO
                Logger.d(TAG, "onKeyUp -> KEYCODE_MEDIA_RECORD -> keycode = " + event.getKeyCode());
                break;
            default:
                break;
        }
        return super.onKeyUp(keyCode, event);
    }

    @Override
    public void onUserInteraction() {
        super.onUserInteraction();
        PowerOffTimerUtil.stopTimer();
        PowerOffTimerUtil.startTimer();
        Logger.d(TAG, "onUserInteraction, reStart timer");
    }

    private void initTimer() {
        if (mTask == null) {
            mTask = new MyTask();
        }
        if (mTimer == null) {
           mTimer = new Timer();
        }
    }

    class MyTask extends TimerTask {
        @Override
        public void run() {
            try {
                Class serviceManager = null;
                serviceManager = Class.forName(SERVICE_MANAGER);
                Method getService = serviceManager
                        .getMethod(GET_SERVICE, java.lang.String.class);
                Object remoteService = getService.invoke(null, Context.POWER_SERVICE);
                Class stub = Class.forName(IPOWER_MANAGER_STUB);
                Method asInterface = stub.getMethod(AS_INTERFACE, android.os.IBinder.class);
                Object powerManager = asInterface.invoke(null, remoteService);
                Method shutdown = powerManager.getClass()
                       .getMethod(SHUTDOWN, boolean.class, String.class, boolean.class);
                shutdown.invoke(powerManager, false, USER_REQUESTED, true);
           } catch (ClassNotFoundException exception) {
                Logger.d(TAG, exception.getMessage());
            } catch (NoSuchMethodException exception) {
                Logger.d(TAG, exception.getMessage());
            } catch (IllegalAccessException exception) {
                Logger.d(TAG, exception.getMessage());
            } catch (InvocationTargetException exception) {
                Logger.d(TAG, exception.getMessage());
            }
        }
    }

    /**
     * startTimer.
     */
    private void startTimer() {
        initTimer();
        try {
            mTimer.schedule(mTask, 100000);
        } catch (IllegalStateException exception) {
            Logger.d(TAG, exception.getMessage());
        }
    }

    /**
     * stopTimer.
     */
    private void stopTimer() {
        if (mTimer != null) {
            mTimer.cancel();
            mTimer = null;
        }
        if (mTask != null) {
            mTask.cancel();
            mTask = null;
        }
    }

    /**
     * get layout id (R.layout.xx).
     *
     * @return int.
     */
    protected abstract int getLayoutId();

    /**
     * init UI component.
     *
     * @return void.
     */
    protected abstract void initView();
}
Ubuntu定时关机3种实现方案与配置详解 Linux系统定时任务是运维管理中的基础功能,通过cron或systemd等工具可以实现自动化任务调度。cron作为经典的定时任务工具,采用crontab配置文件实现分钟级精度调度,适合执行周期性任务。systemd timer则是现代Linux系统的新方案,采用事件驱动机制,支持更复杂的时间表达式和秒级精度。在服务器资源管理场景中,定时关机既能节省电力消耗,又可避免程序长时间运行占用计算资源。本文以Ubuntu系统为例,详细解析通过cron定时任务、systemd timer以及shutdown命令三种实 阅读详情

相关推荐

QT——5.3定时关机:练习QTimer的使用

【目的】:输入数字x,系统点击按键,系统在xh后关机,此处主要练习QTimer类的使用 【方法】: 1、添加头文件: #include <QTimer> #include <stdlib.h> //system 需要 2、 声明和定义槽函数 这里需要注意字符串的转换。 private slots: void on_pushButton_clicke...

数字世界 万物互联 1133

activity中onResume方法详解

onResume 比如做一个音乐播放程序,在播放过程中,突然有电话打进来了,这时系统自动调出电话,而你的音乐播放程序置于后台,触发了onPause方法。当你电话结束后,关闭电话,又自动回到音乐播放程序,此时,触发onResume方法,这时,如果你之前在onPause的时候记录了播放点,就可以在onResume方法里来继续播放。 onResume方法是Activity第一次创建时 重新加载实例时调用...

ia的博客 2万+

【NLP】使用 PyTorch 从头构建自己的大型语言模型 (LLM)

如果我们在 n 维空间中绘制一个向量,看起来相似的物体(如狗和猫)将彼此靠近,而看起来不相似的物体(如学校和家庭)的嵌入向量将位于更远的地方。为此,我们将使用一种流行的标记器,称为 BPE 标记器,这是一种子词标记器,正在 GPT3 等模型中使用。:前馈网络使用深度神经网络来学习两个线性层(第一层有 d_model 节点,第二层有 d_ff 节点,根据注意力论文分配值)中嵌入向量的所有特征,并且将 ReLU 激活函数应用于第一线性层的输出,为嵌入值提供非线性,并应用 dropout 以进一步避免过度拟合。

sikh_0529的博客 1948

[android]activity 生命周期

实现activity 生命周期 主要有7个步骤 如下图 我们也通过具体的测试来体验这个过程 首先我们先来了解一下这7个函数 ->>src–>>com.example.activity–>>.java 有一个class 里面默认保存着7个函数,下面我们对这7个函数进行一下解释 1.protected void onCreate(){} 用于创建一个activi...

cp0328的博客 3534

基于Ansys Fluent 的颗粒分离/过滤解决方案

过滤是指通过特殊装置将颗粒移除,将流体提纯净化的过程。过滤的方式很多,应用的物系也很广泛,固-液、固-气、大颗粒-小颗粒等。

sh_djoin的博客 1852

【规则引擎连载3】 WebSphere ILOG JRules 开发——新建一个规则项目

规则项目依赖于bom,bom来自于一个Java项目,所以在建规则项目之前,需要先建立一个Java项目,也就是建模。 说明:原则上是一个规则项目,一个bom。如果规则项目很多,并且每个规则项目的bom都是一样的,那么可以将bom提取出来,单独作为一个项目,这样减少不必要的重复操作,减少维护成本,降低出错几率。这里逐步讲解两种方法来创建规则项目,推荐第二种。 本文主要建立两种规则项目与bom之间的关系,编写相关的规则内容,如操作规则、规则流、决策表等,在后续文章中详细讲解 。

manman的分享 2327

Android学习笔记整理(7)--Activity的生命周期和Log窗口查看生命周期流程

生命周期就是一个对象从创建到销毁的过程,每一个对象都有自己的生命周期。同样,Activity也具有相应的生命周期,Activity的生命周期分为三种状态,分别是运行状态、暂停状态和停止状态。1).运行状态当Activity在屏幕的最前端时,它是可见的。有焦点的,可以用来处理用户的常见操作,如点击、双击、长按事件等,这种状态称为运行状态。2).暂停状态在某些情况下,Activity对用户来说仍然是可...

dazzlingN的博客 2739

Xilinx高级调试方法--远程调试

本文主要介绍Xilinx的一些高级调试方法,以及如何使用Xilinx的相关IP。

斌赋的博客 3308

activity的四种状态

首先你要知道Activity的四种状态: Active/Runing 一个新 Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。 Paused 当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交

qiyh2007的专栏 900

OpenCV-Python实战(10)——详解 OpenCV 轮廓检测

在计算机视觉领域,轮廓通常指图像中对象边界的一系列点。因此,轮廓通常描述了对象边界的关键信息,包含了有关对象形状的主要信息,该信息可用于形状分析与对象检测和识别。在本文中,将首次通过简单示例了解轮廓的基本概念,然后通过实际示例来了解如何检测和压缩轮廓,最后利用介绍如何利用图像矩描述检测到的轮廓属性。

盼小辉丶的博客 3万+

【OpenClaw从入门到精通】第66篇:Skill开发进阶——从零打造一个跨境选品Skill(附完整代码)(2026实测版)

2026年跨境电商效率革命中,AI Agent已成为选品核心工具,但通用Skill难以适配个性化需求。本文以“跨境选品”为实战场景,从零讲解OpenClaw Skill的完整开发流程:从需求分析、目录结构设计、SKILL.md编写,到Python脚本开发(含1688商品搜索、销量分析、竞品对比核心功能),再到调试测试、安全审计与ClawHub发布。文中提供可直接复制的完整代码,覆盖多平台适配、异常处理、数据可视化等进阶功能,同时解决API调用、链接失效等实际问题。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 566

Andorid中Activity

Activity 的生命周期 public class OurActivity extends Activity { protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onResume(); protected

wsl002的专栏 798

单智能体篇:Prompt工程艺术

模型在接收到 Prompt 时会自动扮演“角色”,角色定义的好坏直接影响智能体输出的风格和专业性。角色定义的重要性让智能体具备明确身份,例如“你是一位专业理财顾问”或“你是一个幽默的文案创作助手”。角色限定了模型知识输出的范围,使回答更专业、更贴合预期。实战示例模糊Prompt给我一些投资建议。你可以投资股票或者基金。优化Prompt你是一位具有10年经验的专业理财顾问,请给我针对30岁男性,年收入20万,风险偏中等的投资组合建议。

公众号:AI前沿侦探 1301

Delphi 11.3 定时关机程序完全解析

本文分析了一个使用Delphi 11.3编写的定时关机控制台程序。该程序允许用户设置关机时间(HH:MM格式),自动处理过期时间顺延至次日,并实时显示倒计时。关键技术包括:通过SetConsoleUTF8解决中文乱码问题;使用Windows API获取系统关机权限(SeShutdownPrivilege);通过ExitWindowsEx函数执行强制关机;以及智能时间解析处理,能自动判断过期时间并顺延至次日。程序采用模块化设计,包含权限获取、时间解析、倒计时显示等功能模块,展示了Delphi在系统级编程中的应

Winfredzhang的博客 875

利用dddd_trainer训练通用验证码识别模型

博文介绍了使用dddd_trainer工具训练自定义验证码识别模型的过程,详细展示了从环境搭建、数据集准备到模型训练的全流程。

九月镇灵将的博客 1033

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

python定时关机_python 实现定时关机(windows,python3)

【实例简介】【实例截图】【核心代码】import osimport timefrom datetime import datetimedef close_job1(times):print('现在是',time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))now = str(datetime.now()).rpartition...

weixin_39654352的博客 1281

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

关机王自动定时关机软件 3.579 正式版

链接: https://pan.baidu.com/s/1mX7IOMwY98BfUwgOxhDsYA 提取码: nh4d 关机王自动定时关机软件是网络人开发的一款电脑自动关机、电脑定时关机软件,可设定多种定时关机方式,例如指定时间关机,鼠标无操作后自动关机、当前时间延后关机,还可以定时提醒信息,定时切断网络、执行程序、打开文件,禁用注册表、任务管理器、聊天软件,禁止打开指定软件和窗口,自动执行计划任务……关机王下载可用于管理电脑定时自动关机,节约用电。关机王下载还具有进程防护功能,可防止自身...

微道道的博客 749

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

可以实现定时关机的3款电脑软件

可以实现定时关机的3款电脑软件

.m博客 966

电脑定时关机怎么设置?推荐这3个简单方法

汇帮定时精灵是一款功能强大的定时任务管理工具,支持定时关机、重启、休眠、锁屏、运行程序、打开文件、清理垃圾等多种定时操作,界面简洁,设置灵活,支持重复任务。打开软件后,左边是任务列表,右边就是设置中心。:当然是用“汇帮定时精灵”这样的专业软件,功能强大,操作直观,还能设置各种提醒,对于大多数用户来说,是体验最好的选择。时,如果设置了倒计时,会覆盖你正在进行的任何操作,比如正在保存文件,系统会强制关机,所以务必先保存好工作。如果你的电脑系统比较老,或者配置不高,建议使用系统自带的方法,以免占用额外资源。

weixin_43864561的博客 419

电脑定时关机怎么设置?3个小秘诀,告别电脑疲劳

风扇在转,CPU在发热,硬盘在嗡嗡作响,电脑需要关机啦!然而每天手动操作特别麻烦,电脑定时关机怎么设置?今天,就让我们一起探索3个小秘诀,让电脑也能享受片刻的宁静!

shu_ju_wa的博客 850

告别手动关机!Ubuntu 22.04下用systemd定时关机的3种替代方案

本文为Ubuntu 22.04用户提供了三种超越传统cron的定时关机方案。详细介绍了面向系统集成与日志管理的systemd timer、适用于临时单次任务的at命令,以及为图形界面用户准备的gnome-schedule工具,帮助读者根据需求选择最合适的自动化关机方法,提升工作效率与系统管理便捷性。

html8的博客 410

AI帮你写Windows 10定时关机脚本,3秒搞定

平时用电脑工作或追剧时,经常遇到需要定时关机的需求。虽然网上能找到各种命令,但要么记不住复杂语法,要么功能太简单。最近发现用AI辅助开发特别高效,几秒钟就能生成满足所有需求的脚本,还能附带详细注释。特别适合快速实现这类小工具,不用从零开始写代码,AI生成的脚本直接能用。最方便的是可以随时让AI调整功能,比如我后来增加了关机前播放提示音的功能,整个过程就像有个技术顾问在身边指导。

SilvermistFalcon19的博客 447

电脑小白必看:3步设置定时关机不求人

对于想尝试开发类似工具的朋友,我强烈推荐用这个平台入门,它的编辑器内置了Electron模板,还有实时预览功能,调试起来很省心。在InsCode上从零开始到完成部署,我用了一个周末就搞定了,整个过程比想象中简单很多。最重要的是,做出的工具真的能帮到家人朋友,这种成就感是最大的收获。作为一个经常忘记关电脑的熬夜党,我一直在寻找简单好用的定时关机工具。市面上的软件要么功能太复杂,要么需要输入命令行,对新手很不友好。开发了一个超简单的定时关机工具,完全是为电脑小白设计的,分享下我的开发思路和使用体验。

IndigoNight21的博客 261

零基础教程:3步学会定时关机命令

比如想1小时后关机,就换算成3600秒(60分钟×60秒),完整命令是"shutdown -s -t 3600"。上发现他们的交互式命令行模拟器特别适合练习这类操作,输入命令能实时看到可视化反馈,还有错误自动修正提示,对新手特别友好。最棒的是不用安装任何软件,打开网页就能直接体验,我试了下他们的沙盒环境,连复杂的参数组合都能一步步引导完成。作为一个曾经连命令行都不敢碰的小白,我完全理解新手面对黑乎乎的命令窗口时的恐惧感。其实技术没有想象中那么可怕,像定时关机这样的小功能,正是培养命令行自信的最佳起点。

SilverMoon18的博客 440

ESXI定时关机脚本

没有ups的esxi服务器,需要在停电前定时关机: 参考文章:http://blog.51cto.com/h2appy/1106164 过程: 1. 首先进入ESXI6.0的命令行,发现官方的脚本/sbin/powerOffVms有问题,查找后是python2.7的语法,但是 6.0已经是python3了,把 脚本中的 exception ,e 都改为 exception as e...

wucccsk的专栏 6491

智能关机助手 PowerOff 3.0.1.3:轻量化电源管控工具,支持定时 / 远程 / 进程触发,覆盖多场景电源操作需求

摘要:智能关机助手PowerOff3.0.1.3是一款轻量化电脑电源管理工具,支持十余种电源操作(关机/重启/休眠等),提供定时执行、远程控制、进程触发等多种操作方式。该工具采用可视化界面设计,绿色免安装,兼容Windows全系统,可满足个人用户定时关机、办公远程管理等多样化需求。相比系统自带功能,其兼具操作灵活性与使用安全性,支持任务提醒和中止功能,是高效管理电脑电源的实用助手。

owmei的博客 257
上一篇: 19.Android相关
下一篇: 4.在APP中更改系统语言
cuichen97
博客等级 码龄7年 34粉丝 209原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值