From e412a0f4a9ac5661ac3eaeaf160507e90642a249 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Thu, 10 Feb 2011 19:10:20 -0800 Subject: [PATCH] Adding sample for collection widgets backed by content providers. Change-Id: If0005d88a19dfa05ddd7c60aba1a1d7d742158be --- build/sdk.atree | 1 + samples/WeatherListWidget/Android.mk | 16 ++ samples/WeatherListWidget/AndroidManifest.xml | 45 +++++ samples/WeatherListWidget/_index.html | 43 +++++ .../res/drawable-hdpi/body.png | Bin 0 -> 6286 bytes .../res/drawable-hdpi/footer.png | Bin 0 -> 332 bytes .../res/drawable-hdpi/header.png | Bin 0 -> 11739 bytes .../res/drawable-hdpi/icon.png | Bin 0 -> 4147 bytes .../res/drawable-hdpi/item_bg_dark.png | Bin 0 -> 558 bytes .../res/drawable-hdpi/item_bg_light.png | Bin 0 -> 567 bytes .../res/drawable-hdpi/refresh.png | Bin 0 -> 4020 bytes .../res/drawable-hdpi/refresh_pressed.png | Bin 0 -> 3943 bytes .../res/drawable-ldpi/body.png | Bin 0 -> 4068 bytes .../res/drawable-ldpi/footer.png | Bin 0 -> 3032 bytes .../res/drawable-ldpi/header.png | Bin 0 -> 14518 bytes .../res/drawable-ldpi/icon.png | Bin 0 -> 1723 bytes .../res/drawable-ldpi/item_bg_dark.png | Bin 0 -> 6883 bytes .../res/drawable-ldpi/item_bg_light.png | Bin 0 -> 6076 bytes .../res/drawable-ldpi/refresh.png | Bin 0 -> 1665 bytes .../res/drawable-ldpi/refresh_pressed.png | Bin 0 -> 1614 bytes .../res/drawable-mdpi/body.png | Bin 0 -> 3602 bytes .../res/drawable-mdpi/footer.png | Bin 0 -> 247 bytes .../res/drawable-mdpi/header.png | Bin 0 -> 7443 bytes .../res/drawable-mdpi/icon.png | Bin 0 -> 2574 bytes .../res/drawable-mdpi/item_bg_dark.png | Bin 0 -> 399 bytes .../res/drawable-mdpi/item_bg_light.png | Bin 0 -> 438 bytes .../res/drawable-mdpi/refresh.png | Bin 0 -> 1735 bytes .../res/drawable-mdpi/refresh_pressed.png | Bin 0 -> 1735 bytes .../res/drawable-nodpi/preview.png | Bin 0 -> 28360 bytes .../res/drawable/refresh_button.xml | 6 + .../res/layout/dark_widget_item.xml | 24 +++ .../res/layout/light_widget_item.xml | 24 +++ .../res/layout/widget_layout.xml | 61 ++++++ .../WeatherListWidget/res/values/strings.xml | 20 ++ .../WeatherListWidget/res/xml/widgetinfo.xml | 23 +++ .../WeatherDataProvider.java | 137 +++++++++++++ .../WeatherWidgetProvider.java | 181 ++++++++++++++++++ .../WeatherWidgetService.java | 126 ++++++++++++ 38 files changed, 707 insertions(+) create mode 100644 samples/WeatherListWidget/Android.mk create mode 100644 samples/WeatherListWidget/AndroidManifest.xml create mode 100644 samples/WeatherListWidget/_index.html create mode 100644 samples/WeatherListWidget/res/drawable-hdpi/body.png create mode 100644 samples/WeatherListWidget/res/drawable-hdpi/footer.png create mode 100644 samples/WeatherListWidget/res/drawable-hdpi/header.png create mode 100644 samples/WeatherListWidget/res/drawable-hdpi/icon.png create mode 100644 samples/WeatherListWidget/res/drawable-hdpi/item_bg_dark.png create mode 100644 samples/WeatherListWidget/res/drawable-hdpi/item_bg_light.png create mode 100644 samples/WeatherListWidget/res/drawable-hdpi/refresh.png create mode 100644 samples/WeatherListWidget/res/drawable-hdpi/refresh_pressed.png create mode 100644 samples/WeatherListWidget/res/drawable-ldpi/body.png create mode 100644 samples/WeatherListWidget/res/drawable-ldpi/footer.png create mode 100644 samples/WeatherListWidget/res/drawable-ldpi/header.png create mode 100644 samples/WeatherListWidget/res/drawable-ldpi/icon.png create mode 100644 samples/WeatherListWidget/res/drawable-ldpi/item_bg_dark.png create mode 100644 samples/WeatherListWidget/res/drawable-ldpi/item_bg_light.png create mode 100644 samples/WeatherListWidget/res/drawable-ldpi/refresh.png create mode 100644 samples/WeatherListWidget/res/drawable-ldpi/refresh_pressed.png create mode 100644 samples/WeatherListWidget/res/drawable-mdpi/body.png create mode 100644 samples/WeatherListWidget/res/drawable-mdpi/footer.png create mode 100644 samples/WeatherListWidget/res/drawable-mdpi/header.png create mode 100644 samples/WeatherListWidget/res/drawable-mdpi/icon.png create mode 100644 samples/WeatherListWidget/res/drawable-mdpi/item_bg_dark.png create mode 100644 samples/WeatherListWidget/res/drawable-mdpi/item_bg_light.png create mode 100644 samples/WeatherListWidget/res/drawable-mdpi/refresh.png create mode 100644 samples/WeatherListWidget/res/drawable-mdpi/refresh_pressed.png create mode 100644 samples/WeatherListWidget/res/drawable-nodpi/preview.png create mode 100644 samples/WeatherListWidget/res/drawable/refresh_button.xml create mode 100644 samples/WeatherListWidget/res/layout/dark_widget_item.xml create mode 100644 samples/WeatherListWidget/res/layout/light_widget_item.xml create mode 100644 samples/WeatherListWidget/res/layout/widget_layout.xml create mode 100644 samples/WeatherListWidget/res/values/strings.xml create mode 100644 samples/WeatherListWidget/res/xml/widgetinfo.xml create mode 100644 samples/WeatherListWidget/src/com/example/android/weatherlistwidget/WeatherDataProvider.java create mode 100644 samples/WeatherListWidget/src/com/example/android/weatherlistwidget/WeatherWidgetProvider.java create mode 100644 samples/WeatherListWidget/src/com/example/android/weatherlistwidget/WeatherWidgetService.java diff --git a/build/sdk.atree b/build/sdk.atree index e0689091736..641862640d5 100644 --- a/build/sdk.atree +++ b/build/sdk.atree @@ -178,6 +178,7 @@ development/samples/SpinnerTest samples/${PLATFORM_NAME}/SpinnerTes development/samples/TicTacToeLib samples/${PLATFORM_NAME}/TicTacToeLib development/samples/TicTacToeMain samples/${PLATFORM_NAME}/TicTacToeMain development/samples/VoiceRecognitionService samples/${PLATFORM_NAME}/VoiceRecognitionService +development/samples/WeatherListWidget samples/${PLATFORM_NAME}/WeatherListWidget development/apps/WidgetPreview samples/${PLATFORM_NAME}/WidgetPreview development/samples/Wiktionary samples/${PLATFORM_NAME}/Wiktionary development/samples/WiktionarySimple samples/${PLATFORM_NAME}/WiktionarySimple diff --git a/samples/WeatherListWidget/Android.mk b/samples/WeatherListWidget/Android.mk new file mode 100644 index 00000000000..95d233fa80c --- /dev/null +++ b/samples/WeatherListWidget/Android.mk @@ -0,0 +1,16 @@ +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE_TAGS := tests + +# Only compile source java files in this apk. +LOCAL_SRC_FILES := $(call all-java-files-under, src) + +LOCAL_PACKAGE_NAME := WeatherListWidget + +LOCAL_SDK_VERSION := current + +include $(BUILD_PACKAGE) + +# Use the following include to make our test apk. +include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/samples/WeatherListWidget/AndroidManifest.xml b/samples/WeatherListWidget/AndroidManifest.xml new file mode 100644 index 00000000000..cfb23722cc7 --- /dev/null +++ b/samples/WeatherListWidget/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/WeatherListWidget/_index.html b/samples/WeatherListWidget/_index.html new file mode 100644 index 00000000000..730f27caa7a --- /dev/null +++ b/samples/WeatherListWidget/_index.html @@ -0,0 +1,43 @@ +

This sample demonstrates how to create a list-based widget specifically backed by a content provider.
+Please make sure that you understand the earlier stack widget sample code before delving into this example + (see StackWidget).

+ +

As in the StackWidget example, we will be using a collection view (the ListView in this case) to +present some mock weather data in a widget. In particular, we will be using a content provider to +demonstrate how the widget can retrieve data and update itself when you are using more complex data +sources. When working with external data, or data which must be fetched over high latency, it is +important to keep the data cached in a persistent location so that the widget feels responsive.

+ +

This sample uses the following classes: +

+

+ +

If you are writing collection-based widgets, remember that the feature is +supported only on Android 3.0 (API level 11) and higher versions of the platform. +Remember to add the following to the application's manifest publishing to Android Market:

+ + + +Screenshot \ No newline at end of file diff --git a/samples/WeatherListWidget/res/drawable-hdpi/body.png b/samples/WeatherListWidget/res/drawable-hdpi/body.png new file mode 100644 index 0000000000000000000000000000000000000000..0a2c1d1303d4dfc55a9686c263eea72d044050d0 GIT binary patch literal 6286 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 literal 0 HcmV?d00001 diff --git a/samples/WeatherListWidget/res/drawable-hdpi/item_bg_dark.png b/samples/WeatherListWidget/res/drawable-hdpi/item_bg_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..5097ab70cf2a7437076abfb4a720d1350082d1bf GIT binary patch literal 558 zcmeAS@N?(olHy`uVBq!ia0y~yVB860dvGuT$tV3XcZ#5JNMI6tkVJh3R1!7(L2 zDOJHUH!(dmC^a#qvhZZ84N%twPZ!6Kid%2)82TS_U}#I+v)lES(FJM4gGX2%|NkGk z!QoWbrH*c0_n^fyY=qCRz5lK4p6#BTd#lvS+u!DxF*7tcvIsLUhzQPJwuzPDKC^HD8lK;;%}=e3J}l3dTm(D1(F^tP=a|3Ew^ z4RmRNbMy1c$^GsBco-O*K@QM(bm;-muM+M?jBxjZ9OO5_u5Q=A7)FKz9D4biZZa_> z$ed(hU~paXxj%h60|Qt7rqFw?>gTe~ HDWM4fadEbL literal 0 HcmV?d00001 diff --git a/samples/WeatherListWidget/res/drawable-hdpi/item_bg_light.png b/samples/WeatherListWidget/res/drawable-hdpi/item_bg_light.png new file mode 100644 index 0000000000000000000000000000000000000000..019f36ce039898e645e05a9170140fa8782ea015 GIT binary patch literal 567 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 aO!9vrZT=e2yfjJx0000*}s{@9jN~#yb!E6~r�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 literal 0 HcmV?d00001 diff --git a/samples/WeatherListWidget/res/drawable-ldpi/footer.png b/samples/WeatherListWidget/res/drawable-ldpi/footer.png new file mode 100644 index 0000000000000000000000000000000000000000..ab89bf3ded097fd1fde6476f570d09bd853fee93 GIT binary patch literal 3032 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 literal 0 HcmV?d00001 diff --git a/samples/WeatherListWidget/res/drawable-ldpi/icon.png b/samples/WeatherListWidget/res/drawable-ldpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1095584ec21f71cd0afc9e0993aa2209671b590c GIT binary patch literal 1723 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 literal 0 HcmV?d00001 diff --git a/samples/WeatherListWidget/res/drawable-ldpi/item_bg_light.png b/samples/WeatherListWidget/res/drawable-ldpi/item_bg_light.png new file mode 100644 index 0000000000000000000000000000000000000000..a14b9a649a05f489307059b387593c3b932d991f GIT binary patch literal 6076 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 M07*qoM6N<$f+4>gAOHXW literal 0 HcmV?d00001 diff --git a/samples/WeatherListWidget/res/drawable-mdpi/body.png b/samples/WeatherListWidget/res/drawable-mdpi/body.png new file mode 100644 index 0000000000000000000000000000000000000000..5331a9a3ca9c82c5ed45f71dc62b01428ba17f98 GIT binary patch literal 3602 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 literal 0 HcmV?d00001 diff --git a/samples/WeatherListWidget/res/drawable-mdpi/footer.png b/samples/WeatherListWidget/res/drawable-mdpi/footer.png new file mode 100644 index 0000000000000000000000000000000000000000..ca8b7ec93cdef46a2b0c905dc93a4a0b2ffa6d01 GIT binary patch literal 247 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 R&%gix002ovPDHLkV1mlS1}*>q literal 0 HcmV?d00001 diff --git a/samples/WeatherListWidget/res/drawable-mdpi/icon.png b/samples/WeatherListWidget/res/drawable-mdpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a07c69fa5a0f4da5d5efe96eea12a543154dbab6 GIT binary patch literal 2574 zcmV+p3i0)cP)Q`Og{P|8RRXpj5bgrSmEzSMfBn+{{vpNxw?;5UX;iv9sYxy_`IQHs$i<61a_iv^L>h8s-`D(`e@|IgS*Fj zNGM876Gf;3D8*1UX9a%v>yJKD*QkCwW2AirU(L{qNA)JghmGItc;(H<$!ABY&gBy1vJIEUj-b8%el*o|VkG)LqNx#TG>Jvj^jIte!!+RY z)T4j$7+PoF1AkRBf}R#^T=-q|PaK1$c<4UH)Hpq3$4WA|xtr!ZQLC=*vNE>O6E9kp+5X0eKB$6>C(lPwI@3#oY zhS_%x7e|j!$yG?ECXmh~EH~^OeuK}+sWoJse3Z3?ha3n`MM9KvA?uqpEnBg4Q46)7 zM$p%a$@l;+O}vfvx%XjH`}a{(-HHth9!JaUwV0*VqGR48^gWNYN<&~7x)y$e!X>e` zZ5!6KZoxbKuV9XUDI%#M1~IVh?pNSdeb~6@$y`v|yk=XK+fHxnDqnUK4&=QRNyIVf zYbDM*cI>~qIy*a7=z7uqkw@agd(<=y-Q7L!ty_23SGdXmahO<;N=wB+j;lNm%=OHC zy zU|>La6h%92y4IPufI$9>Xu!@y`TaNgtg&41@PwMwBdmSm7)xAWDLoqjZ==P2#*k7! z3o1)cVSI3KP_!?d8G^Lg0FtLXC~JYdxi|c%h~lXEixY=%VSFF@!*3&&9>(Rb|iK54Cx5;s~PY5iaV1het%w`dgQFBAJ;aFK zImQC}(|QaCFYUm1JVfzSc)ebv=)ObI)0jwJb``}Zj9J0n0Xgn*Zc(rFM9$xh_makZbm-at_v5^SW zM1y1SW@%+FuIy*WR)i3A2N_q;(YO`O!A|Ts^%z}9ZepCj3ytlw#x%N_fNrKKtPh`< z|1{UqF`4LxHaCQ79+E=uUXCOZ35jAMRz%R%0(P!0FMv=sk>Nr8%+OzY^c-M9@+fz=G`qa@v4sF5u-2289-#$**LWnyNNDwDf1( zkUiMnw|y$tn>pQP=Vn!#|17L^5AGrjtBkN$D@v)Z7LXc5EFhLB4<;7Wehh)CMqX|W zqsiZaO^benJ_hwa&V0ub$-_HUk**?g6fm9|!@kguU6*zhK)$qn-<3*kFrYPIaqR=V zUaUvk>@F_89b@tHs8R!*QKY;INJ<2_U+K6Ca3e9Gsl2{qY0%a7J?uICWgHuLfj+MB z=GkAN1&ifT#2u}B+2S#~$5jA(Qn^;H%CCmIae4AE-Dsng|Hl*Ov!z72k3ZnJs{pp| z+pW`DDueC#mEWOf=ucJ!dTL}hzOeiS-i?m2E;`EKz4<&Lu~NnW?peqVU^@<+T3KKu z{yrI%Qy-Z%HEvLUz}n^~m?7x`xuCtNR#L2En!T>dQtIKdS#V-Hzt3RtwTeYtmQ&dR z6qXZvac*oc@BUYEH%@Ylv_1&tSjkbzzU6*h1(3^C`;1z;g_SmOtclS?KWk2VYE zM*oS<=C483XckW?GN|1jfh3Ro(h-L1;Fyx1 zl&avFo0y&&l$w}QS$Hzl2B^!>)5S5Q;?|qHhFOOl1Xu$MgSLL+>X{?W!nE)I+D9T` z6Qb28KE4)OrtqvZ{}z8!f7mS9xchyv*L%NisGG;Iz|@I_VJ3$lL&~D{TTd`4Y>bH8 zUTMkbz?3v++t1%WnH#==oR9SjP> zicAeYEgTF+hCQWm=f6ubNIm{`?9(pWdWH)!eTNujTA3}l*ct9eFlkIvzvLeF@^9p4({5V1jJ6h7=LKX9N4AEupy7*!Tkr` b4U7y6t!&u%UamO>3}FUOS3j3^P6-L1;Fyx1 zl&avFo0y&&l$w}QS$Hzl2B<5-)5S5Q;?|qHw%JUMBCHqA_B_zKDN?sa-cuoUmC4Fa z|Nl>HS~vAzqweKYIgRDBjNj@`J01MYwzl@aiSOleyB^lCG~Dt~V(2)sWUej$^TQSF z4ZA${*)nWA`svn|T=O}73<3>LZZivT9u+!pMCd`I`n1c16O88WWpKz{avG?ZK}C?k zC8@~T@2MSo!z++ME}GLm=j~y3h+R@7bKIKYimMQ#gG$l<>dCAQ5+dFW0Z*Q0#nu_V z(0gjH$q*n~xw(2OP+}4XgVID727yi$CWfOz4jWk-{?Cla^VMM#@dol4e87w!(v>@- zPBJOvCEc7I!K5*bL2VjCLK0^|{){PyXU}7B{NP~Kz^{W!hKn6&>Vtn1#JiuqwR_+8DZz>%#Pywd^=V0loO_HF dK7Y6j7_6D^gxX8YWd}wCgQu&X%Q~loCID>Cr$Yb$ literal 0 HcmV?d00001 diff --git a/samples/WeatherListWidget/res/drawable-mdpi/refresh.png b/samples/WeatherListWidget/res/drawable-mdpi/refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..569b36012cd740992243cfff7a0871e4fd48abb9 GIT binary patch literal 1735 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 literal 0 HcmV?d00001 diff --git a/samples/WeatherListWidget/res/drawable-nodpi/preview.png b/samples/WeatherListWidget/res/drawable-nodpi/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..f0cbdaff095f73877cf93714e8fce93de79ffc1d GIT binary patch literal 28360 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 N(vk}AO5W=G{THn4M-u=5 literal 0 HcmV?d00001 diff --git a/samples/WeatherListWidget/res/drawable/refresh_button.xml b/samples/WeatherListWidget/res/drawable/refresh_button.xml new file mode 100644 index 00000000000..1c0017e1924 --- /dev/null +++ b/samples/WeatherListWidget/res/drawable/refresh_button.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/samples/WeatherListWidget/res/layout/dark_widget_item.xml b/samples/WeatherListWidget/res/layout/dark_widget_item.xml new file mode 100644 index 00000000000..1f920a2d940 --- /dev/null +++ b/samples/WeatherListWidget/res/layout/dark_widget_item.xml @@ -0,0 +1,24 @@ + + + diff --git a/samples/WeatherListWidget/res/layout/light_widget_item.xml b/samples/WeatherListWidget/res/layout/light_widget_item.xml new file mode 100644 index 00000000000..bb2946ff660 --- /dev/null +++ b/samples/WeatherListWidget/res/layout/light_widget_item.xml @@ -0,0 +1,24 @@ + + + diff --git a/samples/WeatherListWidget/res/layout/widget_layout.xml b/samples/WeatherListWidget/res/layout/widget_layout.xml new file mode 100644 index 00000000000..4b09efcdf57 --- /dev/null +++ b/samples/WeatherListWidget/res/layout/widget_layout.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + diff --git a/samples/WeatherListWidget/res/values/strings.xml b/samples/WeatherListWidget/res/values/strings.xml new file mode 100644 index 00000000000..6542545f095 --- /dev/null +++ b/samples/WeatherListWidget/res/values/strings.xml @@ -0,0 +1,20 @@ + + + + No cities found... + %1$s says Hi! + %1$d\u00B0 in %2$s + diff --git a/samples/WeatherListWidget/res/xml/widgetinfo.xml b/samples/WeatherListWidget/res/xml/widgetinfo.xml new file mode 100644 index 00000000000..a0932085d68 --- /dev/null +++ b/samples/WeatherListWidget/res/xml/widgetinfo.xml @@ -0,0 +1,23 @@ + + + + \ No newline at end of file diff --git a/samples/WeatherListWidget/src/com/example/android/weatherlistwidget/WeatherDataProvider.java b/samples/WeatherListWidget/src/com/example/android/weatherlistwidget/WeatherDataProvider.java new file mode 100644 index 00000000000..92a1cb352f4 --- /dev/null +++ b/samples/WeatherListWidget/src/com/example/android/weatherlistwidget/WeatherDataProvider.java @@ -0,0 +1,137 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.weatherlistwidget; + +import android.appwidget.AppWidgetManager; +import android.appwidget.AppWidgetProvider; +import android.content.ContentProvider; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.content.res.Resources; +import android.database.Cursor; +import android.database.MatrixCursor; +import android.net.Uri; + +import java.util.ArrayList; + +/** + * A dummy class that we are going to use internally to store weather data. Generally, this data + * will be stored in an external and persistent location (ie. File, Database, SharedPreferences) so + * that the data can persist if the process is ever killed. For simplicity, in this sample the + * data will only be stored in memory. + */ +class WeatherDataPoint { + String city; + int degrees; + + WeatherDataPoint(String c, int d) { + city = c; + degrees = d; + } +} + +/** + * The AppWidgetProvider for our sample weather widget. + */ +public class WeatherDataProvider extends ContentProvider { + public static final Uri CONTENT_URI = + Uri.parse("content://com.example.android.weatherlistwidget.provider"); + public static class Columns { + public static final String ID = "_id"; + public static final String CITY = "city"; + public static final String TEMPERATURE = "temperature"; + } + + /** + * Generally, this data will be stored in an external and persistent location (ie. File, + * Database, SharedPreferences) so that the data can persist if the process is ever killed. + * For simplicity, in this sample the data will only be stored in memory. + */ + private static final ArrayList sData = new ArrayList(); + + @Override + public boolean onCreate() { + // We are going to initialize the data provider with some default values + sData.add(new WeatherDataPoint("San Francisco", 13)); + sData.add(new WeatherDataPoint("New York", 1)); + sData.add(new WeatherDataPoint("Seattle", 7)); + sData.add(new WeatherDataPoint("Boston", 4)); + sData.add(new WeatherDataPoint("Miami", 22)); + sData.add(new WeatherDataPoint("Toronto", -10)); + sData.add(new WeatherDataPoint("Calgary", -13)); + sData.add(new WeatherDataPoint("Tokyo", 8)); + sData.add(new WeatherDataPoint("Kyoto", 11)); + sData.add(new WeatherDataPoint("London", -1)); + sData.add(new WeatherDataPoint("Nomanisan", 27)); + return true; + } + + @Override + public synchronized Cursor query(Uri uri, String[] projection, String selection, + String[] selectionArgs, String sortOrder) { + assert(uri.getPathSegments().isEmpty()); + + // In this sample, we only query without any parameters, so we can just return a cursor to + // all the weather data. + final MatrixCursor c = new MatrixCursor( + new String[]{ Columns.ID, Columns.CITY, Columns.TEMPERATURE }); + for (int i = 0; i < sData.size(); ++i) { + final WeatherDataPoint data = sData.get(i); + c.addRow(new Object[]{ new Integer(i), data.city, new Integer(data.degrees) }); + } + return c; + } + + @Override + public String getType(Uri uri) { + return "vnd.android.cursor.dir/vnd.weatherlistwidget.citytemperature"; + } + + @Override + public Uri insert(Uri uri, ContentValues values) { + // This example code does not support inserting + return null; + } + + @Override + public int delete(Uri uri, String selection, String[] selectionArgs) { + // This example code does not support deleting + return 0; + } + + @Override + public synchronized int update(Uri uri, ContentValues values, String selection, + String[] selectionArgs) { + assert(uri.getPathSegments().size() == 1); + + // In this sample, we only update the content provider individually for each row with new + // temperature values. + final int index = Integer.parseInt(uri.getPathSegments().get(0)); + final MatrixCursor c = new MatrixCursor( + new String[]{ Columns.ID, Columns.CITY, Columns.TEMPERATURE }); + assert(0 <= index && index < sData.size()); + final WeatherDataPoint data = sData.get(index); + data.degrees = values.getAsInteger(Columns.TEMPERATURE); + + // Notify any listeners that the data backing the content provider has changed, and return + // the number of rows affected. + getContext().getContentResolver().notifyChange(uri, null); + return 1; + } + +} \ No newline at end of file diff --git a/samples/WeatherListWidget/src/com/example/android/weatherlistwidget/WeatherWidgetProvider.java b/samples/WeatherListWidget/src/com/example/android/weatherlistwidget/WeatherWidgetProvider.java new file mode 100644 index 00000000000..2f2b3475095 --- /dev/null +++ b/samples/WeatherListWidget/src/com/example/android/weatherlistwidget/WeatherWidgetProvider.java @@ -0,0 +1,181 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.weatherlistwidget; + +import android.app.PendingIntent; +import android.appwidget.AppWidgetManager; +import android.appwidget.AppWidgetProvider; +import android.content.Context; +import android.content.Intent; +import android.content.ComponentName; +import android.content.ContentValues; +import android.content.ContentResolver; +import android.content.ContentUris; +import android.database.Cursor; +import android.database.ContentObserver; +import android.net.Uri; +import android.os.Handler; +import android.os.HandlerThread; +import android.widget.RemoteViews; +import android.widget.Toast; + +import java.util.Random; + +/** + * Our data observer just notifies an update for all weather widgets when it detects a change. + */ +class WeatherDataProviderObserver extends ContentObserver { + private AppWidgetManager mAppWidgetManager; + private ComponentName mComponentName; + + WeatherDataProviderObserver(AppWidgetManager mgr, ComponentName cn, Handler h) { + super(h); + mAppWidgetManager = mgr; + mComponentName = cn; + } + + @Override + public void onChange(boolean selfChange) { + // The data has changed, so notify the widget that the collection view needs to be updated. + // In response, the factory's onDataSetChanged() will be called which will requery the + // cursor for the new data. + mAppWidgetManager.notifyAppWidgetViewDataChanged( + mAppWidgetManager.getAppWidgetIds(mComponentName), R.id.weather_list); + } +} + +/** + * The weather widget's AppWidgetProvider. + */ +public class WeatherWidgetProvider extends AppWidgetProvider { + public static String CLICK_ACTION = "com.example.android.weatherlistwidget.CLICK"; + public static String REFRESH_ACTION = "com.example.android.weatherlistwidget.REFRESH"; + public static String EXTRA_CITY_ID = "com.example.android.weatherlistwidget.city"; + + private static HandlerThread sWorkerThread; + private static Handler sWorkerQueue; + private static WeatherDataProviderObserver sDataObserver; + + public WeatherWidgetProvider() { + // Start the worker thread + sWorkerThread = new HandlerThread("WeatherWidgetProvider-worker"); + sWorkerThread.start(); + sWorkerQueue = new Handler(sWorkerThread.getLooper()); + } + + @Override + public void onEnabled(Context context) { + // Register for external updates to the data to trigger an update of the widget. When using + // content providers, the data is often updated via a background service, or in response to + // user interaction in the main app. To ensure that the widget always reflects the current + // state of the data, we must listen for changes and update ourselves accordingly. + final ContentResolver r = context.getContentResolver(); + if (sDataObserver == null) { + final AppWidgetManager mgr = AppWidgetManager.getInstance(context); + final ComponentName cn = new ComponentName(context, WeatherWidgetProvider.class); + sDataObserver = new WeatherDataProviderObserver(mgr, cn, sWorkerQueue); + r.registerContentObserver(WeatherDataProvider.CONTENT_URI, true, sDataObserver); + } + } + + @Override + public void onReceive(Context ctx, Intent intent) { + final String action = intent.getAction(); + if (action.equals(REFRESH_ACTION)) { + // BroadcastReceivers have a limited amount of time to do work, so for this sample, we + // are triggering an update of the data on another thread. In practice, this update + // can be triggered from a background service, or perhaps as a result of user actions + // inside the main application. + final Context context = ctx; + sWorkerQueue.removeMessages(0); + sWorkerQueue.post(new Runnable() { + @Override + public void run() { + final ContentResolver r = context.getContentResolver(); + final Cursor c = r.query(WeatherDataProvider.CONTENT_URI, null, null, null, + null); + final int count = c.getCount(); + final int maxDegrees = 96; + + // We disable the data changed observer temporarily since each of the updates + // will trigger an onChange() in our data observer. + r.unregisterContentObserver(sDataObserver); + for (int i = 0; i < count; ++i) { + final Uri uri = ContentUris.withAppendedId(WeatherDataProvider.CONTENT_URI, i); + final ContentValues values = new ContentValues(); + values.put(WeatherDataProvider.Columns.TEMPERATURE, + new Random().nextInt(maxDegrees)); + r.update(uri, values, null, null); + } + r.registerContentObserver(WeatherDataProvider.CONTENT_URI, true, sDataObserver); + + final AppWidgetManager mgr = AppWidgetManager.getInstance(context); + final ComponentName cn = new ComponentName(context, WeatherWidgetProvider.class); + mgr.notifyAppWidgetViewDataChanged(mgr.getAppWidgetIds(cn), R.id.weather_list); + } + }); + } else if (action.equals(CLICK_ACTION)) { + // Show a toast + final int appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, + AppWidgetManager.INVALID_APPWIDGET_ID); + final String city = intent.getStringExtra(EXTRA_CITY_ID); + final String formatStr = ctx.getResources().getString(R.string.toast_format_string); + Toast.makeText(ctx, String.format(formatStr, city), Toast.LENGTH_SHORT).show(); + } + + super.onReceive(ctx, intent); + } + + @Override + public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { + // Update each of the widgets with the remote adapter + for (int i = 0; i < appWidgetIds.length; ++i) { + // Specify the service to provide data for the collection widget. Note that we need to + // embed the appWidgetId via the data otherwise it will be ignored. + final Intent intent = new Intent(context, WeatherWidgetService.class); + intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]); + intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME))); + final RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget_layout); + rv.setRemoteAdapter(appWidgetIds[i], R.id.weather_list, intent); + + // Set the empty view to be displayed if the collection is empty. It must be a sibling + // view of the collection view. + rv.setEmptyView(R.id.weather_list, R.id.empty_view); + + // Bind a click listener template for the contents of the weather list. Note that we + // need to update the intent's data if we set an extra, since the extras will be + // ignored otherwise. + final Intent onClickIntent = new Intent(context, WeatherWidgetProvider.class); + onClickIntent.setAction(WeatherWidgetProvider.CLICK_ACTION); + onClickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]); + onClickIntent.setData(Uri.parse(onClickIntent.toUri(Intent.URI_INTENT_SCHEME))); + final PendingIntent onClickPendingIntent = PendingIntent.getBroadcast(context, 0, + onClickIntent, PendingIntent.FLAG_UPDATE_CURRENT); + rv.setPendingIntentTemplate(R.id.weather_list, onClickPendingIntent); + + // Bind the click intent for the refresh button on the widget + final Intent refreshIntent = new Intent(context, WeatherWidgetProvider.class); + refreshIntent.setAction(WeatherWidgetProvider.REFRESH_ACTION); + final PendingIntent refreshPendingIntent = PendingIntent.getBroadcast(context, 0, + refreshIntent, PendingIntent.FLAG_UPDATE_CURRENT); + rv.setOnClickPendingIntent(R.id.refresh, refreshPendingIntent); + + appWidgetManager.updateAppWidget(appWidgetIds[i], rv); + } + super.onUpdate(context, appWidgetManager, appWidgetIds); + } +} \ No newline at end of file diff --git a/samples/WeatherListWidget/src/com/example/android/weatherlistwidget/WeatherWidgetService.java b/samples/WeatherListWidget/src/com/example/android/weatherlistwidget/WeatherWidgetService.java new file mode 100644 index 00000000000..e0bc682761e --- /dev/null +++ b/samples/WeatherListWidget/src/com/example/android/weatherlistwidget/WeatherWidgetService.java @@ -0,0 +1,126 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.weatherlistwidget; + +import java.util.ArrayList; +import java.util.List; + +import android.appwidget.AppWidgetManager; +import android.content.Context; +import android.content.Intent; +import android.content.ContentUris; +import android.database.Cursor; +import android.net.Uri; +import android.os.Bundle; +import android.widget.RemoteViews; +import android.widget.RemoteViewsService; + +/** + * This is the service that provides the factory to be bound to the collection service. + */ +public class WeatherWidgetService extends RemoteViewsService { + @Override + public RemoteViewsFactory onGetViewFactory(Intent intent) { + return new StackRemoteViewsFactory(this.getApplicationContext(), intent); + } +} + +/** + * This is the factory that will provide data to the collection widget. + */ +class StackRemoteViewsFactory implements RemoteViewsService.RemoteViewsFactory { + private Context mContext; + private Cursor mCursor; + private int mAppWidgetId; + + public StackRemoteViewsFactory(Context context, Intent intent) { + mContext = context; + mAppWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, + AppWidgetManager.INVALID_APPWIDGET_ID); + } + + public void onCreate() { + // Since we reload the cursor in onDataSetChanged() which gets called immediately after + // onCreate(), we do nothing here. + } + + public void onDestroy() { + if (mCursor != null) { + mCursor.close(); + } + } + + public int getCount() { + return mCursor.getCount(); + } + + public RemoteViews getViewAt(int position) { + // Get the data for this position from the content provider + String city = "Unknown City"; + int temp = 0; + if (mCursor.moveToPosition(position)) { + final int cityColIndex = mCursor.getColumnIndex(WeatherDataProvider.Columns.CITY); + final int tempColIndex = mCursor.getColumnIndex( + WeatherDataProvider.Columns.TEMPERATURE); + city = mCursor.getString(cityColIndex); + temp = mCursor.getInt(tempColIndex); + } + + // Return a proper item with the proper city and temperature. Just for fun, we alternate + // the items to make the list easier to read. + final String formatStr = mContext.getResources().getString(R.string.item_format_string); + final int itemId = (position % 2 == 0 ? R.layout.light_widget_item + : R.layout.dark_widget_item); + RemoteViews rv = new RemoteViews(mContext.getPackageName(), itemId); + rv.setTextViewText(R.id.widget_item, String.format(formatStr, temp, city)); + + // Set the click intent so that we can handle it and show a toast message + final Intent fillInIntent = new Intent(); + final Bundle extras = new Bundle(); + extras.putString(WeatherWidgetProvider.EXTRA_CITY_ID, city); + fillInIntent.putExtras(extras); + rv.setOnClickFillInIntent(R.id.widget_item, fillInIntent); + + return rv; + } + public RemoteViews getLoadingView() { + // We aren't going to return a default loading view in this sample + return null; + } + + public int getViewTypeCount() { + // Technically, we have two types of views (the dark and light background views) + return 2; + } + + public long getItemId(int position) { + return position; + } + + public boolean hasStableIds() { + return true; + } + + public void onDataSetChanged() { + // Refresh the cursor + if (mCursor != null) { + mCursor.close(); + } + mCursor = mContext.getContentResolver().query(WeatherDataProvider.CONTENT_URI, null, null, + null, null); + } +} \ No newline at end of file