package com.chinaece.gaia.service; import java.net.MalformedURLException; import java.net.URL; import com.chinaece.gaia.R; import com.chinaece.gaia.db.DataStorage; import com.chinaece.gaia.gui.GaiaActivity; import com.chinaece.gaia.gui.MainActivity; import com.chinaece.gaia.gui.PendingsActivity; import com.chinaece.gaia.gui.quick.WidgetProvider; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; import android.appwidget.AppWidgetManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.Typeface; import android.graphics.Bitmap.Config; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.IBinder; import android.text.format.Time; import android.widget.RemoteViews; import android.widget.Toast; public class UpdateService extends Service { private Bitmap contactCountIcon; private NotificationManager nm; private Bitmap icon; private Bitmap quickicon; int contacyCount; int strorend; private String token; private URL formatUrl; @Override public void onStart(Intent intent, int startId) { // TODO Auto-generated method stub super.onStart(intent, startId); UpdateWidget(this); } private void UpdateWidget(Context context) { quickicon=quickmission(); try { token = DataStorage.properties.getProperty("token"); formatUrl = new URL(DataStorage.properties.getProperty("url")); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } Time time = new Time(); time.setToNow(); RemoteViews updateView = new RemoteViews(context.getPackageName(), R.xml.quick); updateView.setImageViewBitmap(R.id.quickcoin,quickicon ); // if(token==null){ //// Intent intent = new Intent(Intent.ACTION_MAIN); //// intent.addCategory(Intent.CATEGORY_HOME); //// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // // Intent intent = new Intent(UpdateService.this, GaiaActivity.class); // PendingIntent pendingIntent = PendingIntent.getActivity(UpdateService.this, 0,intent, 0); // updateView.setOnClickPendingIntent(R.id.quickcoin, pendingIntent); // AppWidgetManager awg = AppWidgetManager.getInstance(context); // awg.updateAppWidget(new ComponentName(context, WidgetProvider.class), // updateView); // Toast.makeText(getApplicationContext(), "请检查华东有色OA系统是否登陆", Toast.LENGTH_LONG).show(); // // }else { if(contacyCount==0){ Intent intent = new Intent(UpdateService.this, MainActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(UpdateService.this, 0,intent, 0); updateView.setOnClickPendingIntent(R.id.quickcoin, pendingIntent); AppWidgetManager awg = AppWidgetManager.getInstance(context); awg.updateAppWidget(new ComponentName(context, WidgetProvider.class), updateView); }else{ Intent intent = new Intent(UpdateService.this, PendingsActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(UpdateService.this, 0,intent, 0); updateView.setOnClickPendingIntent(R.id.quickcoin, pendingIntent); AppWidgetManager awg = AppWidgetManager.getInstance(context); awg.updateAppWidget(new ComponentName(context, WidgetProvider.class), updateView); } // } } @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } public Bitmap quickmission(){ Bitmap icon; PendingService pendingService=new PendingService(); contacyCount=pendingService.getListsize(); if(contacyCount==0){ icon=getResIcon(getResources(), R.drawable.appicon); contactCountIcon=generatorContactCountIcon(icon); nm=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); showNotifacation(contactCountIcon); }else { icon=getResIcon(getResources(), R.drawable.appicon1); contactCountIcon=generatorContactCountIcon(icon); nm=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); showNotifacation(contactCountIcon); } return contactCountIcon; } /** * 根据id获取一个图片 * @param res * @param resId * @return */ private Bitmap getResIcon(Resources res,int resId){ Drawable icon=res.getDrawable(resId); if(icon instanceof BitmapDrawable){ BitmapDrawable bd=(BitmapDrawable)icon; return bd.getBitmap(); }else{ return null; } } /** * 在给定的图片的右上角加上联系人数量。数量用红色表示 * @param icon 给定的图片 * @return 带联系人数量的图片 */ private Bitmap generatorContactCountIcon(Bitmap icon){ //初始化画布 int iconSize=(int)getResources().getDimension(android.R.dimen.app_icon_size); Bitmap contactIcon=Bitmap.createBitmap(iconSize, iconSize, Config.ARGB_8888); Canvas canvas=new Canvas(contactIcon); //拷贝图片 Paint iconPaint=new Paint(); iconPaint.setDither(true);//防抖动 iconPaint.setFilterBitmap(true);//用来对Bitmap进行滤波处理,这样,当你选择Drawable时,会有抗锯齿的效果 Rect src=new Rect(0, 0, icon.getWidth(), icon.getHeight()); Rect dst=new Rect(0, 0, iconSize, iconSize); canvas.drawBitmap(icon, src, dst, iconPaint); //在图片上创建一个覆盖的联系人个数 if(contacyCount==0){ //启用抗锯齿和使用设备的文本字距 Paint countPaint=new Paint(Paint.ANTI_ALIAS_FLAG|Paint.DEV_KERN_TEXT_FLAG); countPaint.setColor(Color.WHITE); countPaint.setTextSize(15); Typeface font = Typeface.create(Typeface.DEFAULT_BOLD, Typeface.BOLD);//黑体,加粗 countPaint.setTypeface(font); canvas.drawText(String.valueOf(""), icon.getWidth()/2-10, 16, countPaint); }else{ Paint countPaint=new Paint(Paint.ANTI_ALIAS_FLAG|Paint.DEV_KERN_TEXT_FLAG); countPaint.setColor(Color.WHITE); countPaint.setTextSize(15); Typeface font = Typeface.create(Typeface.DEFAULT_BOLD, Typeface.BOLD);//黑体,加粗 countPaint.setTypeface(font); canvas.drawText(String.valueOf(contacyCount), icon.getWidth()/2-10, 16, countPaint); } return contactIcon; } /** * 显示状态栏通知 * @param icon 通知内容图标 */ private void showNotifacation(Bitmap icon){ Notification notification=new Notification(R.drawable.appicon,"代办事项数量",System.currentTimeMillis()); //使用RemoteView自定义通知视图 // RemoteViews contentView=new RemoteViews(getPackageName(), R.xml.notification); // contentView.setImageViewBitmap(R.id.image, icon); // contentView.setTextViewText(R.id.text, "图标上的红色数字表示手机中联系人的数量"); // notification.contentView=contentView; // Intent notificationIntent=new Intent(this, QuicklymissionActivity.class); // PendingIntent contentIntent=PendingIntent.getActivity(this, 0, notificationIntent, 0); // notification.contentIntent=contentIntent; // nm.notify(NOTIFICATION_CONTACT_ID, notification); } }