您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > Android通知管理
Android通知管理(NotificationManager)的使用,包括震动,led闪屏在android开发中经常要使用到通知,比如:收到短息,来电等等,通知是应用程序提醒用户的一种方式,他不需要使用Activity。通知向用户传递信息有多种方式:(1)状态栏图标(2)扩展的通知状态绘制器(3)声音、震动、LED闪烁通过一个小例子将上面几种方式集成到一起。在配置扩展状态通知显示的时候,有两种方法:1,使用setLatestEventInfo方法更新标准的扩展的状态通知显示中所显示的详细信息。2,使用远程视图(RemoteView)设置contentView和contentIntent,这样可以为扩展状态显示分配一个你需要的定制UI.扩展状态窗口定制布局my_status.xml(一个简单线性布局,前面放一个imageview,后面一个textview)[html]viewplaincopy1.?xmlversion=1.0encoding=utf-8?2.LinearLayout3.xmlns:android=:layout_width=fill_parent5.android:layout_height=fill_parent6.android:orientation=horizontal7.ImageView8.android:id=@+id/status_icon9.android:layout_width=wrap_content10.android:layout_height=wrap_content11./12.TextView13.android:id=@+id/status_text14.android:layout_width=wrap_content15.android:layout_height=wrap_content16./17./LinearLayout要把这个定制布局分配给通知,要创建一个新的RemoteView对象,并把它分配给contentView属性,还需要想contentIntent属性分配一个待处理的意图(PendingIntent)代码如下:[java]viewplaincopy1.mNotification.contentView=newRemoteViews(this.getPackageName(),R.layout.my_status);2.mNotification.contentIntent=mContentIntent;如果要修改定制布局中视图的属性或者外观,可以使用远程视图对象的set*方法[java]viewplaincopy1.mNotification.contentView.setImageViewResource(R.id.status_icon,R.drawable.icon);[java]viewplaincopy1.mNotification.contentView.setTextViewText(R.id.status_text,Thisistestcontent);向通知添加声音、闪屏、振动效果的最简单最一致的方式是使用当前用户的默认设置。[java]viewplaincopy1.mNotification.defaults=Notification.DEFAULT_SOUND|Notification.DEFAULT_VIBRATE;如果想全部默认设置就使用DEFAULT_ALL常量如果要使用自己的定制的声音或者动态修改声音就可以设置mNotification.sound=ringURI;要设置振动类型的话,需要向通知的vibrate属性分配一个longs类型的数组;比如:[java]viewplaincopy1.long[]vibreate=newlong[]{1000,1000,1000,1000,1000};2.mNotification.vibrate=vibreate;上面代码的作用是振动按照振动1秒,暂停1秒的模式进行振动,整个过程持续5秒。需要注意的是,使用振动必须添加一个权限:1.uses-permissionandroid:name=android.permission.VIBRATE/设置闪屏mNotification.ledARGB=Color.BLUE;mNotification.ledOffMS=0;mNotification.ledOnMS=1;mNotification.flags=mNotification.flags|Notification.FLAG_SHOW_LIGHTS;ledARGB属性可以用来设置LED的颜色,ledOffMS和ledOnMS属性则可以设置LED闪烁的频率和模式。ledOnMS设置为1并把ledOffMS设置为0来打开LED,两个都设置为0则关闭LED.完整的代码:主界面布局文件1.?xmlversion=1.0encoding=utf-8?2.LinearLayoutxmlns:android=:orientation=vertical4.android:layout_width=fill_parent5.android:layout_height=fill_parent6.7.TextView8.android:layout_width=fill_parent9.android:layout_height=wrap_content10.android:text=通知测试小程序11./12.Button13.android:id=@+id/showStatusButton14.android:layout_width=fill_parent15.android:layout_height=wrap_content16.android:text=测试通知17./18.Button19.android:id=@+id/cancelButton20.android:layout_width=fill_parent21.android:layout_height=wrap_content22.android:text=取消通知23./24./LinearLayoutactivity1.importandroid.app.Activity;2.importandroid.app.Notification;3.importandroid.app.NotificationManager;4.importandroid.app.PendingIntent;5.importandroid.content.Context;6.importandroid.content.Intent;7.importandroid.graphics.Color;8.importandroid.os.Bundle;9.importandroid.view.View;10.importandroid.view.View.OnClickListener;11.importandroid.widget.Button;12.importandroid.widget.RemoteViews;13.publicclassNotificationDemoextendsActivityimplementsOnClickListener{14.15.privateContextmContext;16.privateButtonshowStatusButton,cancelButton;17.privateNotificationmNotification;18.privateNotificationManagermNotificationManager;19.privatefinalstaticintNOTIFICATION_ID=0x0001;20.21.@Override22.publicvoidonCreate(BundlesavedInstanceState){23.super.onCreate(savedInstanceState);24.setContentView(R.layout.main);25.mNotification=newNotification(R.drawable.icon,Thisisanotification.,System.currentTimeMillis());26.mNotificationManager=(NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);27.28.findViews();29.}30.31.publicvoidfindViews(){32.mContext=NotificationDemo.this;33.showStatusButton=(Button)findViewById(R.id.showStatusButton);34.cancelButton=(Button)findViewById(R.id.cancelButton);35.36.37.showStatusButton.setOnClickListener(this);38.cancelButton.setOnClickListener(this);39.}40.publicvoidstatusNotifi(){41.42.IntentmIntent=newIntent(mContext,NotificationDemo.class);43.//这里需要设置Intent.FLAG_ACTIVITY_NEW_TASK属性44.mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);45.PendingIntentmContentIntent=PendingIntent.getActivity(mContext,0,mIntent,0);46.//1,使用setLatestEventInfo47.//这里必需要用setLatestEventInfo(上下文,标题,内容,PendingIntent)不然会报错.48.//mNotification.setLatestEventInfo(mContext,新消息,主人,您孙子给你来短息了,mContentIntent);49.50.51.//2,使用远程视图52.mNotification.contentView=newRemoteViews(this.getPackageName(),R.layout.my_status);53.mNotification.contentView.setImageViewResource(R.id.status_icon,R.drawable.icon);54.mNotification.contentView.setTextViewText(R.id.status_text,Thisistestcontent);55.56.//使用默认的声音,闪屏,振动效果57.//mNotification.defaults=Notification.DEFAULT_ALL;58.//mNotification.defaults=Notification.DEFAULT_SOUND|Notification.DEFAULT_VIBRATE;59.60.//添加震动61.long[]vibreate=newlong[]{1000,1000,1000,1000};62.mNotification.vibrate=vibreate;63.64.//添加led65.mNot
本文标题:Android通知管理
链接地址:https://www.777doc.com/doc-7190495 .html