29.Android-闹钟-通知(定时操作)

安卓开发学习笔记(11)使用AlarmManager设置闹钟(实例:设置闹钟) activity.xml 设置布局,一个时间拾取器,一个按钮 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/a... 阅读详情

一.知识概要



二.具体代码实现如下:

布局文件

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="设置闹钟(一次)"
        android:onClick="setAlarmOnce"
        >
    </Button>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="设置闹钟(周期)"
        android:onClick="setAlarmRepeat"
        ></Button>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="取消周期闹钟"
        android:onClick="cancelAlarmRepeat"
        ></Button>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="发送通知"
        android:onClick="send"
        />

</LinearLayout>
activity_ring.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
    <!--播放音乐的界面-->

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="小懒猪,该起床了!!!"
        android:textSize="40sp"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="关闭闹钟"
        android:onClick="stop"
        /><!--可以写手势,一滑就关闭-->

</LinearLayout>

Java代码

MainActivity.java

package com.zking.android29_alarm_notification;

import android.app.AlarmManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.app.NotificationCompat;
import android.view.View;
import android.widget.TimePicker;

import java.util.Calendar;

/**
 * 设置闹钟
 *
 * 闹钟一响就跳广播,广播又跳了Activity
 */
public class MainActivity extends AppCompatActivity {

    private AlarmManager am;
    private PendingIntent pendingIntent;
    private NotificationManager notificationManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //获取闹钟管理器
        am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

        //获取通知管理器
        notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    }

    //一次性闹钟
    public void setAlarmOnce(View view){
           //获取当前系统时间
           Calendar calendar=Calendar.getInstance();
           int hour=calendar.get(Calendar.HOUR_OF_DAY);
           int minute=calendar.get(Calendar.MINUTE);
           //1.弹出时间对话框
           TimePickerDialog timePickerDialog=new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
               @Override
               public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                       Calendar c=Calendar.getInstance();//c:当前系统时间
                       c.set(Calendar.HOUR_OF_DAY,hourOfDay);//把小时设为你选择的小时
                       c.set(Calendar.MINUTE,minute);
                       //2.获取到时间      hourOfDay       minute  (选择的时钟和分钟)
                       //3.设置一次性闹钟
                       PendingIntent pendingIntent= PendingIntent.getBroadcast(MainActivity.this,0x101,new Intent("com.zking.android29_alarm_notification.RING"),0);//上下文 请求码  启动哪一个广播 标志位
                       am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),pendingIntent);//RTC_WAKEUP:唤醒屏幕  getTimeInMillis():拿到这个时间点的毫秒值 pendingIntent:发送广播
               }
           },hour,minute,true);//上下文,监听,默认的时分秒
           timePickerDialog.show();//弹出对话框
    }


    //周期闹钟
    public void setAlarmRepeat(View view){
            //获取当前系统时间
            Calendar calendar=Calendar.getInstance();
            int hour=calendar.get(Calendar.HOUR_OF_DAY);
            int minute=calendar.get(Calendar.MINUTE);

            //1.弹出时间对话框
            TimePickerDialog timePickerDialog=new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
                @Override
                public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                    Calendar c=Calendar.getInstance();
                    c.set(Calendar.HOUR_OF_DAY,hourOfDay);
                    c.set(Calendar.MINUTE,minute);
                    //2.获取到时间      hourOfDay       minute
                    //3.设置闹钟
                    pendingIntent = PendingIntent.getBroadcast(MainActivity.this,0x102,new Intent("com.zking.android29_alarm_notification.RING"),0);
                    am.setRepeating(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),5000, pendingIntent);//5秒响一次
                }
            },hour,minute,true);
            timePickerDialog.show();
    }

    //取消周期闹钟
    public void cancelAlarmRepeat(View view){
        am.cancel(pendingIntent);
    }


    //发送通知
    public void send(View view){
            //实例化通知
            NotificationCompat.Builder builder=new NotificationCompat.Builder(this);//v7.app.AppCompatActivity:什么继承了v7所以导v7  Builder:构造器
            builder.setContentTitle("提示");//通知的标题
            builder.setContentText("您中奖啦!请先汇款到XXX账号激活中奖码");//通知的内容
            builder.setSmallIcon(android.R.drawable.star_on);//图标
            builder.setDefaults(NotificationCompat.DEFAULT_ALL);//使用默认的震动、默认的铃声等
            builder.setAutoCancel(true);//点完通知信息就消失
            Notification notification=builder.build();//通知
            //发送通知
            notificationManager.notify(0x101,notification);//id  通知

//          builder.setContentIntent() //点击通知信息跳转
//          builder.setCustomContentView() //设置通知栏自定义样式
    }





}
RingReceiver.java

package com.zking.android29_alarm_notification;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

/**
 * 响铃广播接收者
 * 广播调Activity
 */

public class RingReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
           //广播的名字:包名+随便取一个名字
           if("com.zking.android29_alarm_notification.RING".equals(intent.getAction())){
                 Log.i("test","闹钟响了!!!");
                 //跳转到Activity中
                 Intent intent2=new Intent(context,RingActivity.class);
                 intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//需要把启动的新的Activity放到一个新的任务栈里面才能启动
                 context.startActivity(intent2);
           }
    }
}
RingActivity.java

package com.zking.android29_alarm_notification;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

/**
 * 响铃
 *一进来就播放音乐
 */
public class RingActivity extends AppCompatActivity {

    private MediaPlayer mediaPlayer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ring);

        mediaPlayer = MediaPlayer.create(this, R.raw.music);
        mediaPlayer.start();//一进来就播放
    }

    public void stop(View view){//停止的方法
        mediaPlayer.stop();
        finish();//把自己的界面干掉
    }

}

清单文件AndroidManifest.xml

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

    <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/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".RingActivity"></activity>
        <!--注册静态广播-->
        <receiver android:name=".RingReceiver"
            android:enabled="true"
            android:exported="true"
            >
            <intent-filter>
                <action android:name="com.zking.android29_alarm_notification.RING"></action>
            </intent-filter>
        </receiver>

    </application>

</manifest>


一次性闹钟效果图


周期闹钟效果图(每隔几秒就响一次)








安卓定时开启APP 安卓定时开启app 阅读详情

相关推荐

android-29.zip

用于安卓的软件开发工具包sdk中的platforms目录下的安卓系统包,(以下文字为描述凑字数)电脑编程手机动画UI,

Android:闹钟提醒结合通知(alarm+notification)

Android的Notification是android系统中很重要的一个机制, 产品人员常常利用通知栏的方式,跟用户进行弱沟通。拥有推送通知的app要比没有此类功能的app活跃率要高很多。另外类似于墨迹天气,清理大师等app,也会将通知栏常驻,利用自定义的布局,方便用户及时快捷的查看所需的信息和使用快捷的功能。所以Notification的使用,也在开发当中, 使用的越来越频繁。今天我就跟大家完成

James_lang的博客 4312

Android Studio SDK(android-29)

资源是7z超压缩包,Windows系统不能识别也不能打开,需要解压缩软件才能解压(推荐使用Bandzip)。

android 闹钟提醒实现方法,Android开发实例之闹钟提醒

本实例通过TimePickerDialog时间选择对话框让用户设置闹钟。并通过AlarmManager全局定时器在指定的时间启动闹钟Activity。程序执行效果图:实例代码:package com.jph.alarm.test;import java.util.Calendar;import android.app.Activity;import android.app.AlarmManager...

weixin_35725310的博客 2165

InternVL 3.5 深度解析:开源多模态模型的新里程碑

InternVL 3.5是由上海人工智能实验室OpenGVLab团队推出的开源多模态大模型,在推理能力、效率和灵活性方面取得突破。该模型采用ViT-MLP-LLM架构,包含60亿参数的InternViT-6B视觉编码器和多种规格的语言模型骨干。核心创新包括:1)Cascade RL强化学习框架,通过离线热身和在线强化两阶段训练提升推理能力;2)ViR视觉分辨率路由器,动态调整图像处理分辨率以优化计算效率;3)DvD动态视觉token压缩技术。模型系列涵盖2B到241B参数规模,满足从边缘设备到高性能计算的不

m0_47999117的博客 1029

LLM评测框架Ragas:测试RAG的性能出现TimeoutError()的解决办法(Ragas+langchain+ollama)

无奈之下,自己找到了一个解决办法,在ragas支持的llm类库中加了一个如下的类,支持ollama、langchian_ollama使用ragas测试报错的问题。可以将如上的库放到你的ragas的系统库的llms目录下,然后修改__init__.py如下。最近用ragas测试rag的性能,发现老出现TimeoutError()的错误。这是一个临时的解决办法,具体等待官方给出最终的解决方案。后来发现官方也没有尽快支持的计划。然后就可以用如下代码进行一些验证。

Criss@陈磊 665

Activity启动流程分析(android-29)

仅作为个人学习记录,请小心求证。 一、基础知识 1. binder机制简介 binder是进程间通信的一种方式。在操作系统中,分为内核空间和用户空间,每个app都运行在自己的用户空间,binder机制底层正是两个app进程通过共享内核内存区域实现的;具体实现不做深入分析; 在binder机制中,进行进程通信的两方,可分别称他们为Cient进程和Server进程;Cient进程和Server进程是由具体场景而定的,一个进程即可以是Cient进程,也可以是Server进程。 2. ServiceManage.

BC工坊 2932

(三)UPF之Domain Coverage Relationship(Cover、Equivalent、Independent)

整个Soc架构中一般会存在多个Power Domain,不同的Power Domain之间也存在着一定的Coverage关系。在Cadence工具中,这种。不同的Domain Coverage关系中,各个Domain存在着一定的关联()。

Mr.翟的博客 1424

android 闹钟提醒

android 闹钟提醒

weixin_45768801的博客 855

ShardingSphere 5.3 系列Spring 配置升级指南 | Spring Cloud 47

在 `5.3.0` 版本以前,`ShardingSphere-JDBC` 同时支持 `Java API`、`YAML`、`Spring Boot Starter` 和 `Spring Namespace` 等配置方式。 - 当新增或更新 API 时,需要调整多项配置文件,工作量大 - 社区需要维护多重配置文档和示例 - `Spring Bean` 生命周期管理容易受到项目其他依赖的影响,比如 `PostProcessor` 无法正常执行 - `Spring Boot Starter` 和 `Spring N

gmHappy 2万+

【STM32项目】基于AI技术的多功能消防机器人(完整工程资料源码)

机器人通过巡逻扫描环境空间与障碍物、定位导航、探测物体/环境进行建模/自动地图测绘、扫描火焰、获取温湿度大小、获取空气安全情况来判断当前环境地点是否安全,检测到温度过高或检测到易燃、烟雾、有毒气体或摄像头识别到火焰时能够通过高压水泵喷射器来实现火焰隔离工作,蜂鸣器进行现场鸣笛报警,同时将当前环境温湿度大小、空气情况、环境地图、是否安全信息,将各个传感器来接收获取到的信息,实时发送到用户手机中的微信小程序,实现与用户远程监视功能,用户同时也能通过手机与电脑远程下发命令来操控机器人来实现交互功能

嵌入式技术开发 1万+

Android闹钟-通知

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_

XHui_Lin的博客 522

使用cutoff包基于最小p值法方法计算最佳截断值(基于LIRI基因数据集) R语言

这个方法在生物学研究中具有重要的意义,能够帮助我们从大规模基因表达数据中准确地找到差异显著的基因。在上述代码中,calculate_p_values函数是一个自定义函数,用于计算差异表达基因的p值。在本文中,我们将介绍如何使用R语言的cutoff包来基于最小p值法方法计算最佳的截断值,以便筛选出差异显著的基因。通过以上步骤,我们成功地使用cutoff包基于最小p值法方法计算了最佳的截断值,并筛选出了差异显著的基因。最后,我们可以根据得到的最佳截断值将基因表达数据集进行筛选,提取出差异显著的基因。

ByteKnight的博客 1291

在Unity3D中实现安卓平台的本地通知推送

这是我在网上看到的一个大神写的android本地推送的文章很好,很详细,特转载了过来,如果原作者看到,不让转载的话,我会立刻删除该博客,大神原链接:https://www.cnblogs.com/GuyaWeiren/p/4830854.html 【前言】   对于手游来说,什么时候需要推送呢?玩过一些带体力限制的游戏就会发现,我的体力在恢复满后,手机会收到一个通知告诉我体力已完全恢复了...

CrazyApp的博客 5519

第16课:动手实战中文句法依存分析

句法分析是自然语言处理(NLP)中的关键技术之一,其基本任务是确定句子的句法结构或者句子中词汇之间的依存关系。主要包括两方面的内容:一是确定语言的语法体系,即对语言中合法句子的语法结构给予形式化的定义;另一方面是句法分析技术,即根据给定的语法体系,自动推导出句子的句法结构,分析句子所包含的句法单位和这些句法单位之间的关系。 句法分析被用在很多场景中,比如搜索引擎用户日志分析和关键词识别,比如信息抽...

春华秋实 2435

【图像超分】论文复现:CVPR 2024 | 轻量化超分 | 窗口注意力改进 | CAMixerSR的Pytorch源码复现,跑通源码,获得指标和超分结果,计算复杂度,架构梳理拆解,逐行注释!

本文介绍了超分辨率重建方法CAMixerSR的代码实现与运行指南。文章亮点包括:完整跑通源码获取PSNR/SSIM指标和可视化结果;详细解析模型架构与关键代码注释,帮助快速复现基线模型。实验部分提供了测试配置文件和训练设置说明,支持2K/4K/8K大图像超分和x2/x4轻量化超分。环境依赖PyTorch和BasicSR框架,数据集包含DIV2K等常用基准。测试结果与论文指标一致,可视化输出保存至指定目录。训练配置可自定义数据集路径、GPU数量等参数。该实现突出了CAMixerSR在降低W-MSA复杂度方面的

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 438

Android闹钟

在这里,就把一次闹钟跟重复闹钟都写在一起吧,他们的区别不大。

qq_37127054的博客 476

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Android—(通知、闹钟)

今天讲解一下定时操作,也就是我们大家熟知的闹钟的效果。当然我们也可以做的比较流氓一点的。接下来我就讲解一下最简单的吧。界面有点丑,不要见怪。我们实现功能就好! 效果图: 操作界面                                                                     响铃界面                            

a985548426的博客 520

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

闹钟-通知完整版

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width

umbrella_419的博客 409

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Android之设置闹钟

闹钟是我们日常生活中常用的一种设置,那么大家有没有研究过呢!今天博主就给大家讲解一下! 要做到闹钟这个功能,我们需要使用AlarmManager这个类。我们在设置闹钟的时候,首先会弹出时间对话框,获取时间,最后设置闹钟。思路简单,代码容易,话不多说,大家直接看吧! public class MainActivity extends AppCompatActivity { priva

DistanceSY的博客 1069

关于android闹钟,设置定时提醒的一点心得

首先在设置提醒之前你需要一个入口,比如说onclick事件中,在此不做赘述。 android中使用闹钟进行提醒其实非常简单,你只需要告知系统你想在什么时候被提醒,然后需要一个闹钟的广播接收器,当到你设置的时间时,系统会给你发送一条广播,当你接收到广播后你就可以做一些操作,比如启动你的app,或者跳转到你app中的任何一个界面。废话不多少,直接上代码。 01 //发送闹...

weixin_34360651的博客 222

AlarmManager实现闹钟

今天给大家介绍一下闹钟的实现,先看概念图: 其中氛围两种基础的,一为一次性闹钟,响一次就停止;二为周期闹钟,可以由自己设置周期时间,重复响铃,以下为代码: xml部分: activity_main.xml(设置闹钟的界面) <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xm

qq_38446250的博客 513

弹出&通知权限和样式梳理

如果用户通过备份和恢复操作将应用数据转移到搭载 Android 14 的设备,则该权限仍然会被拒绝。用户不需要在运行时明确授予此权限(声明即可使用),但系统会根据应用类型、用户行为等因素动态控制其实际效果。没有此权限声明,高优先级通知在锁屏上的行为会受到限制。作用: 允许通知以更显眼的方式打断用户,特别是在锁屏界面。作用: 允许应用在其他应用或系统界面上方绘制窗口(悬浮窗)。精确闹钟适用于用户指定的通知,或是在确切时间需要执行的操作。影响: 没有此权限,应用完全无法向系统发送任何通知。

博艺的技术专栏 1059

最新安卓版本对照表,API对照表(持续更新,更新到安卓17)

话不多说,直接上表,持续更新(更新到安卓16)。 列出了所有记录的可能会影响应用开发者的功能和行为变更。请使用此列表查找影响您的变更,然后点击相应的链接以阅读文档。下表列出了所有记录的可能会影响应用开发者的功能和行为变更。请使用此列表查找影响您的变更,然后点击相应的链接以阅读文档。Java 和 OpenJDK 是 Oracle 及/或其关联公司的商标或注册商标。

雨季余静的博客 9万+

android——闹钟

话不多说直接上代码一看就明白 xml version="1.0" encoding="utf-8"?> LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns

wu15111685657的博客 1578
上一篇: 28.Android-多媒体(视频播放器-拍照-录像)
下一篇: 30-31.Android-解析XML(PULL)-解析Json
_北冥有鱼_
博客等级 码龄10年 41粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值