80,349
社区成员
发帖
与我相关
我的任务
分享
package com.mayj.app;
import java.util.Calendar;
import java.util.Locale;
import java.util.TimeZone;
import android.text.format.DateFormat;
import android.util.Log;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;
public class DigitClockWidgetProvider extends AppWidgetProvider{
private Calendar mCalendar;
private Locale mCurrentLocale;
private static RemoteViews views;
private static final ComponentName THIS_APPWIDGET =
new ComponentName("com.mayj.app", DigitClockWidgetProvider.class.getName());
String[]Weeks={
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
};
String[]Months={
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec"
};
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
//mContext=context;
// TODO Auto-generated method stub
defaultAppWidget(context, appWidgetManager, null);
}
private void defaultAppWidget(Context context,
AppWidgetManager appWidgetManager, int[] appWidgetIds) {
if(views==null){
views = new RemoteViews(context.getPackageName(),
R.layout.main);
}
mCalendar = Calendar.getInstance(TimeZone.getDefault());
mCalendar.setTimeInMillis(System.currentTimeMillis());
boolean b24 = DateFormat.is24HourFormat(context);
int year = mCalendar.get(Calendar.YEAR);
int month = mCalendar.get(Calendar.MONTH);
int date = mCalendar.get(Calendar.DATE);
int hour = mCalendar.get(Calendar.HOUR_OF_DAY);
int minute = mCalendar.get(Calendar.MINUTE);
int weeks = mCalendar.get(Calendar.DAY_OF_WEEK);
views.setTextViewText(R.id.date, String.valueOf(date)+",");
views.setTextViewText(R.id.month, Months[month]);
views.setTextViewText(R.id.weeks, Weeks[weeks-1]);
views.setTextViewText(R.id.hours, String.valueOf(hour));
views.setTextViewText(R.id.minutes, String.valueOf(minute));
System.out.println("defaultAppWidget ");
System.out.println("year= "+year);
System.out.println("month= "+month);
System.out.println("date= "+date);
System.out.println("hour= "+hour);
System.out.println("minute= "+minute);
System.out.println("weeks= "+weeks);
pushUpdate(context, appWidgetIds, views);
}
private void pushUpdate(Context context, int[] appWidgetIds, RemoteViews views) {
final AppWidgetManager gm = AppWidgetManager.getInstance(context);
if (appWidgetIds != null) {
gm.updateAppWidget(appWidgetIds, views);
} else {
gm.updateAppWidget(THIS_APPWIDGET, views);
}
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context,intent);
String action = intent.getAction();
if (action.equals(Intent.ACTION_TIMEZONE_CHANGED)) {
String tz = intent.getStringExtra("time-zone");
mCalendar = Calendar.getInstance(TimeZone.getTimeZone(tz));
}
System.out.println("onReceive ");
System.out.println("action=:"+action);
updateAppWidget(context);
}
private void updateAppWidget(Context context) {
if(views==null){
views = new RemoteViews(context.getPackageName(),
R.layout.main);
}
mCalendar = Calendar.getInstance(TimeZone.getDefault());
mCalendar.setTimeInMillis(System.currentTimeMillis());
boolean b24 = DateFormat.is24HourFormat(context);
int year = mCalendar.get(Calendar.YEAR);
int month = mCalendar.get(Calendar.MONTH);
int date = mCalendar.get(Calendar.DATE);
int hour = mCalendar.get(Calendar.HOUR_OF_DAY);
int minute = mCalendar.get(Calendar.MINUTE);
int weeks = mCalendar.get(Calendar.DAY_OF_WEEK);
views.setTextViewText(R.id.date, String.valueOf(date)+",");
views.setTextViewText(R.id.month, Months[month]);
views.setTextViewText(R.id.weeks, Weeks[weeks-1]);
views.setTextViewText(R.id.hours, String.valueOf(hour));
views.setTextViewText(R.id.minutes, String.valueOf(minute));
final AppWidgetManager mAppWidgetManager = AppWidgetManager.getInstance(context);
int[] appIds = mAppWidgetManager.getAppWidgetIds(new ComponentName(
context, DigitClockWidgetProvider.class));
mAppWidgetManager.updateAppWidget(appIds, views);
}
}
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="styleWindows">
<item name="android:singleLine">true</item>
<item name="android:textSize">22dip</item>
<item name="android:shadowColor">#BB000000</item>
<item name="android:shadowRadius">1.0</item>
<item name="android:gravity">center_vertical</item>
<item name="android:textColor">#ffffffff</item>
<item name="android:textStyle">bold</item>
</style>
<style name="styleWindowsDatetime" parent="@style/styleWindows">
<item name="android:textSize">48dip</item>
</style>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="290dp"
android:minHeight="70dp"
android:updatePeriodMillis="2000"
android:initialLayout="@layout/main">
</appwidget-provider>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mayj.app"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name=".DigitClockWidgetProvider">
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/appwidget_provider"></meta-data>
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.intent.action.TIME_SET" />
<action android:name="android.intent.action.DATE_CHANGED" />
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
</intent-filter>
</receiver>
</application>
</manifest>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="290dip"
android:layout_height="70dip"
>
<LinearLayout
android:id="@+id/LinearLayout01"
android:orientation="vertical"
android:layout_width="120dip"
android:layout_height="70dip">
<TextView
android:id="@+id/weeks"
style="@style/styleWindows"
android:layout_width="120dip"
android:layout_height="35dip"/>
<LinearLayout
android:id="@+id/LinearLayout04"
android:orientation="horizontal"
android:layout_width="120dip"
android:layout_height="35dip">
<TextView
android:id="@+id/date"
style="@style/styleWindows"
android:layout_width="40dip"
android:layout_height="35dip"/>
<TextView
android:id="@+id/month"
style="@style/styleWindows"
android:layout_width="80dip"
android:layout_height="35dip"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/LinearLayout02"
android:orientation="horizontal"
android:layout_marginLeft="40dip"
android:layout_width="130dip"
android:layout_height="70dip">
<TextView
android:id="@+id/hours"
style="@style/styleWindowsDatetime"
android:layout_width="60dip"
android:layout_height="70dip"/>
<TextView
android:text=":"
android:textSize="40dip"
android:shadowColor="#BB000000"
android:shadowRadius="1.0"
android:gravity="center_vertical"
android:textColor="#ffffffff"
android:textStyle="bold"
android:layout_width="10dip"
android:layout_height="70dip"/>
<TextView
android:id="@+id/minutes"
style="@style/styleWindowsDatetime"
android:layout_width="60dip"
android:layout_height="70dip"/>
</LinearLayout>
</LinearLayout>