`
阅读更多

--------------------------------------------AndroidManifest.xml------------------------------

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.ch14"

    android:versionCode="1"

    android:versionName="1.0" >

    <uses-sdk

        android:minSdkVersion="10"

        android:targetSdkVersion="15" />

    <application

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

        <activity

            android:name=".MainActivity"

            android:label="@string/title_activity_main" >

            <intent-filter>

                <action android:name="com.ch14" />

                <category android:name="android.intent.category.DEFAULT" />

            </intent-filter>

        </activity>

        <receiver android:name=".MyAppWidgetProvider" >

            <meta-data

                android:name="android.appwidget.provider"

                android:resource="@xml/appwidget_my" />

            <intent-filter>

                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" >

                </action>

            </intent-filter>

        </receiver>

    </application>

</manifest>

--------------------------------------------XML appwidget_my.xml--------------------------

<?xml version="1.0" encoding="utf-8"?>

<appwidget-provider

  xmlns:android="http://schemas.android.com/apk/res/android"

  android:minWidth = "294dp"

  android:minHeight = "72dp"

  android:updatePeriodMillis = "0"

  android:initialLayout = "@layout/myappwidgetlayout"

  >

</appwidget-provider>

<!-- updatePeriodMillis = 0 为手动更新 -->

--------------------------------------------Layout activity_main.xml------------------------

<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" >

    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerHorizontal="true"

        android:layout_centerVertical="true"

        android:text="@string/hello_world"/>

</RelativeLayout>

--------------------------------------------Layout myappwidgetlayout.xml-----------------

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical" >

    <Button

        android:id="@+id/txtapp"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:gravity="center"

        android:text="send........" >

    </Button>

</LinearLayout>

--------------------------------------------MainActivity.java---------------------------------

package com.ch14;

import android.app.Activity;

import android.os.Bundle;

public class MainActivity extends Activity {

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

}

--------------------------------------------MyAppWidgetProvider.java-----------------------

package com.ch14;

import com.ch14.util.LogOut;

import android.app.PendingIntent;

import android.appwidget.AppWidgetManager;

import android.appwidget.AppWidgetProvider;

import android.content.ComponentName;

import android.content.Context;

import android.content.Intent;

import android.widget.RemoteViews;

/**

 * 

 * 项目名称:com.ch14    

 * 类名称:MyAppWidgetProvider    

 * 类描述:  自定义窗口小部件

 * 创建人:方勇   

 * 创建时间:2012-11-22 下午9:05:00   

 * Copyright (c) 方勇-版权所有

 */

public class MyAppWidgetProvider extends AppWidgetProvider {

/* 接受广播事件 */

@Override

public void onReceive(Context context, Intent intent) {

LogOut.out(this"onReceive()");

/* 只能通过远程对象来设置MyAppWidgetProvider中的控件状态 */

RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.myappwidgetlayout);

/* 管理AppWidgetProvider,以便进行更新操作 */

AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);

/* 获得本程序创建的appwidget */

ComponentName componentName = new ComponentName(context, MyAppWidgetProvider.class);

/* 更新appwidget */

appWidgetManager.updateAppWidget(componentName, remoteViews);

super.onReceive(context, intent);

}

/* 组件被放置到桌面上时,或者刷新时间到达时调用 */

@Override

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {

LogOut.out(this"onUpdate()");

RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.myappwidgetlayout);

Intent intent = new Intent();

intent.setAction("com.ch14");

/* 

 * 延迟执行的INTENT

 * 

 * 1、常使用的是FLAG_UPDATE_CURRENT,因为描述的Intent有更新的时候需要用到这个flag去更新你的描述,

 * 否则组件在下次事件发生或时间到达的时候extras永远是第一次Intent的extras。

 * 

 * 2、使用FLAG_CANCEL_CURRENT也能做到更新extras,只不过是先把前面的extras清除

 * 

 * 3、FLAG_CANCEL_CURRENT和FLAG_UPDATE_CURRENT的区别在于能否new一个Intent,

 * FLAG_UPDATE_CURRENT能够new一个Intent,而

 * FLAG_CANCEL_CURRENT则不能,只能使用第一次的Intent。

 * 

 * 4、(比较少用)

 * FLAG_ONE_SHOT获取的PendingIntent只能使用一次,再使用PendingIntent也将失败

 * FLAG_NO_CREAT获取的PendingIntent描述的Intent不存在则返回NULL值.

 * 

 */

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

/* 通过PendingIntent和mRemoteViews.setOnClickPendingIntent为AppWidget中的Button设置监听器 */

remoteViews.setOnClickPendingIntent(R.id.txtapp, pendingIntent);

remoteViews.setTextViewText(R.id.txtapp"A07");

appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);

super.onUpdate(context, appWidgetManager, appWidgetIds);

}

/* 删除一个AppWidget组件时被调用 */

@Override

public void onDeleted(Context context, int[] appWidgetIds) {

LogOut.out(this"onDeleted()");

super.onDeleted(context, appWidgetIds);

}

/* AppWidget的实例第一次被创建时调用 */

@Override

public void onEnabled(Context context) {

LogOut.out(this"onEnabled()");

super.onEnabled(context);

}

/* 最后一个AppWidget组件被删除时调用 */

@Override

public void onDisabled(Context context) {

LogOut.out(this"onDisabled()");

super.onDisabled(context);

}

}

--------------------------------------------LogOut.java---------------------------------------

package com.ch14.util;

import android.util.Log;

/**

 * 

 * 项目名称:com.ch14    

 * 类名称:LogOut    

 * 类描述: 指定日志输出格式

 * 创建人:方勇   

 * 创建时间:2012-11-22 下午9:35:41   

 * Copyright (c) 方勇-版权所有

 */

public class LogOut {

public static final String TAG = "A07";

private static final boolean DEBUG = true;

public static void out(Object obj, String info) {

if (DEBUG) {

String tag = TAG;

if (info.startsWith("length")) {

tag = TAG + "_TMP";

}

if (obj instanceof String) {

Log.d(tag, ((String) obj) + "->" + info);

else {

Log.d(tag, obj.getClass().toString().substring(6) + "->" + info);

}

}

}

public static void out(Object obj, String tag, String info) {

if (DEBUG) {

if (obj instanceof String) {

Log.d(TAG + "_" + tag, ((String) obj) + "->" + info);

else {

Log.d(TAG + "_" + tag, obj.getClass().toString().substring(6)

"->" + info);

}

}

}

}

--------------------------------------------结果------------------------------------------------

1、长按桌面(或选中桌面的某个位置,长按鼠标左键)

2、弹出对话框

3、选中后,桌面多了个按钮部件

4、双击AppWidget

<!--EndFragment-->
  • 大小: 117.4 KB
  • 大小: 129.2 KB
  • 大小: 171.4 KB
  • 大小: 78.5 KB
0
0
分享到:
评论

相关推荐

    CH341SER_ANDROID.ZIP_340手机驱动_CH341SER_ANDROID_CH34xUARTDemo_ch34

    标题中的"CH341SER_ANDROID.ZIP_340手机驱动_CH341SER_ANDROID_CH34xUARTDemo_ch34"表明这是一个与CH341系列USB转UART(通用异步收发传输器)驱动相关的压缩包,主要用于Android设备。其中"340手机驱动"指的是该驱动...

    CH341SER-ANDROID(CH34XUARTDriver.jar)

    CH341SER_ANDROID(CH34XUARTDriver.jar),配有CH34X系列芯片串口Android程序开发文档,如何使用芯片的 USB 转异步串口功能(以下简称 CH34XUART)以及 GPIO 功能,以及 Android 下如何使用 APK 操作实现串口通讯。...

    安卓源码 Android 沁恒USB转串口芯片 CH340 通信程序

    安卓接CH340实现串口通信源码,可设置波特率等参数

    Android App开发入门范例程序

    在Android App开发领域,入门是每个开发者必经的阶段。这个"Android App开发入门范例程序"集合提供了多个章节的学习材料,旨在帮助新手快速掌握Android应用的基础开发技能。以下是各个章节和FlagAPI部分可能涉及的...

    Android_CH34xUARTDemo-master.zip_CH34xUARTDemo_Hartusb_android_a

    《Android CH34xUARTDemo: USB Host OTG 转口模块详解》 在现代移动设备中,Android操作系统以其开放性和灵活性深受开发者喜爱。在Android系统中,USB Host功能允许设备连接并控制其他USB设备,如键盘、鼠标或者...

    基于USB单片机CH559的Android USB通讯设计实例-Android Open Accessory Protocol 2_0 Android Open Source.zip

    本实例探讨了如何使用CH559 USB单片机实现与Android设备的通讯,利用Android Open Accessory Protocol 2.0 (AOA 2.0) 协议进行数据交换。这一技术允许开发人员创建兼容Android系统的外部硬件设备,从而拓展手机或...

    CH341 Android代码

    "CH341 Android代码"这个标题暗示了我们即将探讨的是与Android应用程序开发相关的源代码,可能是一个项目、一个库或者一个工具的实现。在这个场景中,CH341可能是项目代号或者是某个硬件接口(如CH341芯片,常用于...

    android 串口通信转usb的jar包CH34xUARTDriver.zip

    本资源“android 串口通信转usb的jar包CH34xUARTDriver.zip”提供了一个解决此问题的解决方案,它包含了实现Android设备通过USB接口与采用CH34x系列芯片(如CH340、CH341)的串口设备进行通信的Java库。 CH34x系列...

    Android APP开发入门:使用Android Studio环境 配套范例程序7-12章

    本资料包“Android APP开发入门:使用Android Studio环境 配套范例程序7-12章”正是针对初学者设计的,旨在帮助他们掌握Android Studio的基础操作以及核心开发技术。 首先,让我们从Ch07开始,这一章通常会涵盖UI...

    android CH34x 发送与接收数据

    在Android平台上进行CH34x芯片的USB通信是嵌入式开发中的常见任务,尤其对于需要与硬件设备交互的应用来说。CH34x系列芯片是由韦尔奇科技(Wch Chip)开发的一组USB到串口控制器,广泛用于USB转串口适配器,使得通过...

    安卓系统USB转串口_CH340驱动小Demo

    本示例“安卓系统USB转串口_CH340驱动小Demo”聚焦于如何利用CH340芯片在Android设备上实现这一功能。CH340是一款广泛使用的通用串行总线(USB)到串行接口转换器,它允许我们将标准的串行通信接口(如RS-232)与USB...

    CH341 serial for android

    标题中的“CH341 serial for android”指的是一个专为Android设备设计的驱动程序或应用程序,它使得用户能够在具有OTG(On-The-Go)功能的Android手机或平板电脑上使用CH341系列USB转串口模块。CH341系列芯片是由...

    Android APP开发入门:使用Android Studio环境 配套范例程序13-16章

    "Android APP开发入门:使用Android Studio环境 配套范例程序13-16章"是一个面向初学者的学习资源,包含13至16章的实例代码,帮助理解Android开发的基础概念和技术。 第13章通常涉及用户界面(UI)设计,这在...

    CH341PAR_ANDROID.ZIP

    CH340/CH341的USB转串口安卓免驱应用库,用于Android操作系统3.1及以上版本的USB Host模式,无需加载Android内核驱动,无需root权限操作。包含apk安装程序,lib库文件(Java Driver),App Demo例程(USB转UART Demo...

    CH34xUARTDemo1.zip

    标题中的"CH34xUARTDemo1.zip"表明这是一个与CH34x串口通信相关的示例项目,可能包含了用于演示如何在Android设备上通过CH340芯片与STM32微控制器进行串行通信的代码和驱动程序。CH340是一款常见的USB转串口芯片,常...

    Android CH34X串口转USB.zip

    在这种情况下,"Android CH34X串口转USB.zip"是一个关键资源,它包含了一个解决方案,允许开发者通过Android设备连接并控制使用CH341芯片的串口转USB设备。CH341芯片是一种常用的接口转换器,能够将串行通信接口(如...

    ch05 Android布局

    本章"ch05 Android布局"着重探讨如何有效地设计和管理Android应用的用户界面,包括基本布局管理器、自定义布局以及性能优化策略。 一、基础布局管理器 Android提供了多种内置的布局管理器,如线性布局...

    CH341SER_ANDROID[官方demo].zip

    标题 "CH341SER_ANDROID[官方demo].zip" 暗示了这是一个与CH341SER设备驱动相关的Android应用程序的官方演示示例。CH341SER是一款USB到串口控制器,常用于电子爱好者和开发者的项目中,如Arduino和其他微控制器的...

    Android USB通信app

    本项目“Android USB通信app”旨在实现Android设备与单片机之间的数据交互,这里单片机采用的是Arduino AVR芯片。这个APP是开发者为了方便用户通过Android设备控制和通信 Arduino板而设计的。 首先,我们需要理解...

    Androidsdk范例大全(CH03-CH05)

    该资源包含CH03至CH05章节的源码,为开发者提供了丰富的学习素材,旨在帮助他们更好地理解和掌握Android SDK的各种功能和特性。 CH03章节通常会涵盖Android应用的基本架构和组件,例如Activity、Intent、Service、...

Global site tag (gtag.js) - Google Analytics