`

android NoticificationManager状态栏操作

阅读更多

 

NoticificationManager很容易可以放在状态栏,也很容易实现从statusbar进入程序 中,
NoticificationManager中通过intent执行此程序的activity就可以了

NoticificationManager状态栏操作

NotificationManager(通知管理器):
NotificationManager负责通知用户事件的发生.
NotificationManager有三个公共方法:
1. cancel(int id) 取消以前显示的一个通知.假如是一个短暂的通知,试图将隐藏,假如是一个持久的通知,将从状态条中移走.
2. cancelAll() 取消以前显示的所有通知.
3. notify(int id,  Notification notification) 把通知持久的发送到状态条上.


//初始化NotificationManager:
NotificationManager nm =
      (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

Notification代表着一个通知.
Notification的属性:
audioStreamType 当声音响起时,所用的音频流的类型
contentIntent 当通知条目被点击,就执行这个被设置的Intent.
contentView 当通知被显示在状态条上的时候,同时这个被设置的视图被显示.
defaults 指定哪个值要被设置成默认的.
deleteIntent 当用户点击"Clear All Notifications"按钮区删除所有的通知的时候,这个被设置的Intent被执行.
icon 状态条所用的图片.
iconLevel 假如状态条的图片有几个级别,就设置这里.
ledARGB LED灯的颜色.
ledOffMS LED关闭时的闪光时间(以毫秒计算)
ledOnMS LED开始时的闪光时间(以毫秒计算)
number 这个通知代表事件的号码
sound 通知的声音
tickerText 通知被显示在状态条时,所显示的信息
vibrate 振动模式.
when 通知的时间戳.

将Notification发送到状态条上:
Notification notification = new Notification();
Notification的设置过程……..
nm.notify(0, notification);   //发送到状态条上

创建和触发Notification

 创建和配置新的Notification需要经历三步。
  
  首先,你要创建一个新的Notification对象,传入要在状态条上显示的图 标、文字和Notification的 当前时间,如下面的代码片段所示:
  
  // Choose a drawable to display as the status bar icon
  int icon = R.drawable.icon;
  
  // Text to display in the status bar when the notification is launched
  String tickerText = “Notification”;
  
  // The extended status bar orders notification in time order
  long when = System.currentTimeMillis();
  Notification notification = new Notification(icon, tickerText, when);
  
  当Notification触发时,文本将沿着状态条进行滚动 显示。

其次,使用setLatestEventInfo方法来配置Notification在扩展的状态窗口中的外观。扩展 的状态窗口将显示图标和在构造函数中传入的时间,以及显示标题和一个详细的字符串。Notification一般表示为对一个动作的请求或引起用户的注意,所以,当用户点击Notification项目时你可以指定一个PendingIntent来触发。
  
  下面的代码片段使用了setLastestEventInfo来设置这些值:
  
  Context context = getApplicationContext();
  
  // Text to display in the extended status window
  String expandedText = “Extended status text”;
  
  // Title for the expanded status
  String expandedTitle = “Notification Title”;
  
  // Intent to launch an activity when the extended text is clicked
  Intent intent = new Intent(this, MyActivity.class);
  PendingIntent launchIntent = PendingIntent.getActivity(context, 0, intent, 0);
  notification.setLatestEventInfo(context,
expandedTitle,
expandedText,
launchIntent);
  
  一个好的形式是显示相同事件(例如,接 收多个SMS消息)的多个对象时 使用一个Notification图 标。为了呈现给用户,使用setLastestEventInfo更新数据集来呈现最近的消息以及重新触发Notification来更新它的值。
  
  你还可以使用number属性来显示一个状态条图标所表示的事件数目。
  
  设置为比1大的数,如下所示,将在状态条图标上以一个小小的数字进行 显示:
  
  notification.number++;
  
  任何对Notification的变更,你都需要重新触发来进行更 新。如果要删除这个数字,设置number的值为0或者-1。
  
  最后,你可以对Notification对象使用多种属性来增强Notification的效果,如闪烁LED、震动电话和播放音乐文件。这些高级特征将在本章的后面部分进行详细描述。
  
  触发Notification
  
  为了触发一个Notification,使用NotificationManager的notify方法,将一个整数的ID和Notification对象传入,如下的片段所示:
  
  int notificationRef = 1;
  notificationManager.notify(notificationRef, notification);
  
  为了更新一个已经触发过的Notification,传入相同的ID。你既可以传入相同的Notification对象,也可以是一个全新的对象。只 要ID相同,新的Notification对象会替换状态条
图标和扩展的状态窗口的细节。
  
  你还可以使用ID来取消Notification,通过调用NotificationManager的cancel方法,如下所示:
  
  notificationManager.cancel(notificationRef);
  
  取消一个Notification时,将移除它的状态条图标以及清除 在扩展的状态窗口中的信息。


Notification和NotificationManager的基本使用方法

1. NotificationManager和Notification用来设置通知。

通知的设置等操作相对比较简单,基本的使用方式就是用新建一个Notification对象,然后设置好通知的各项参数,然后使用系统后台运行的 NotificationManager服务将通知发出来。

基本步骤如下:

1)得到NotificationManager:

String ns = Context.NOTIFICATION_SERVICE;

NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);



2)创建一个新的Notification对象:

Notification notification = new Notification();

notification.icon = R.drawable.notification_icon;



也可以使用稍微复杂一些的方式创建Notification:

int icon = R.drawable.notification_icon; //通知图标

CharSequence tickerText = "Hello";  //状态栏(Status Bar)显示的通知文本提示

long when = System.currentTimeMillis(); //通知产生的时间,会在通知信息里显示

Notification notification = new Notification(icon, tickerText, when);



3)填充Notification的各个属性:

Context context = getApplicationContext();

CharSequence contentTitle = "My notification";

CharSequence contentText = "Hello World!";

Intent notificationIntent = new Intent(this, MyClass.class);

PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);



Notification提供了丰富的手机提示方式:

a)在状态栏(Status Bar)显示的通知文本提示,如:

notification.tickerText = "hello";



b)发出提示音,如:

notification.defaults |= Notification.DEFAULT_SOUND;

notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");

notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");



c)手机振动,如:

notification.defaults |= Notification.DEFAULT_VIBRATE;

long[] vibrate = {0,100,200,300};

notification.vibrate = vibrate;



d)LED灯闪烁,如:

notification.defaults |= Notification.DEFAULT_LIGHTS;

notification.ledARGB = 0xff00ff00;

notification.ledOnMS = 300;

notification.ledOffMS = 1000;

notification.flags |= Notification.FLAG_SHOW_LIGHTS;



4)发送通知:

private static final int ID_NOTIFICATION = 1;

mNotificationManager.notify(ID_NOTIFICATION, notification);



2. 通知的更新

   如果需要更新一个通知,只需要在设置好notification之后,再调用setLatestEventInfo,然后重新发送一次通知即可。



3. 自定义通知视图

   这部分可以参考官方文档,讲的很详细了。

AndroidSDK: docs/guide/topics/ui/notifiers/notifications.html 



参考文档:

AndroidSDK1.5 :  docs/guide/topics/ui/notifiers/notifications.html
分享到:
评论

相关推荐

    Unity显示Android手机状态栏

    首先,我们要了解Unity引擎本身并不直接支持对Android状态栏的操作,这需要借助于Java插件或者Unity的`AndroidJavaObject`类来调用Android原生API。在提供的文件名`AndroidStatusBar.cs`和`AppStatusBar.cs`中,我们...

    Android 沉浸式状态栏(亲测好用)

    在Android开发中,沉浸式状态栏(Immersive Status Bar)是一种常见的设计手法,它能够使应用的内容无缝地延伸到状态栏下方,提供更全面、更沉浸的用户体验。这种技术尤其在游戏和全屏应用中非常受欢迎,因为它最大...

    Android自定义状态栏颜色与应用标题栏颜色一致

    在Android开发中,为了让应用的用户体验更加统一和美观,有时我们需要自定义状态栏的颜色,使其与应用的标题栏颜色保持一致。在iOS系统中,这种效果很常见,但早期的Android版本并不支持这一特性。不过,从Android ...

    Android状态栏透明(沉浸式)Demo

    在Android开发中,状态栏透明,也称为沉浸式(Immersive Mode)或者全屏模式,是一种提升用户体验的设计,使得应用内容可以延伸到系统状态栏下方,提供更广阔、更沉浸式的视觉效果。本Demo主要展示了如何实现Android...

    android沉浸式状态栏、变色状态栏、透明状态栏、修改状态栏颜色及透明

    在Android开发中,沉浸式状态栏(Immersive Mode)是一种设计趋势,它允许应用程序的内容扩展到设备的状态栏和导航栏,提供更为沉浸式的用户体验。本文将深入探讨如何在Android 4.4(KitKat)及更高版本上实现沉浸式...

    android状态栏显示

    在Android开发中,状态栏(StatusBar)是用户界面不可或缺的一部分,它显示了系统时间、电池状态、网络连接等重要信息。有时候,开发者需要对状态栏进行定制,例如改变颜色、图标或者隐藏/显示状态栏,以实现特定的...

    android沉浸状态栏和顶部状态栏背景色的设置

    在Android开发中,沉浸式状态栏(Immersion Bar)是一种流行的设计趋势,它使得应用界面能够无缝延伸到状态栏下方,创造出更为统一且沉浸式的用户体验。这种设计在现代应用程序中非常常见,尤其在游戏和全屏展示内容...

    Android状态栏一体化(沉浸式)的实现(Eclipse版)

    在Android应用开发中,"状态栏一体化"或"沉浸式状态栏"是一种常见的设计手法,它使得应用界面能够无缝地延伸到状态栏区域,提供更美观、统一的视觉体验。在Eclipse环境下实现这一功能虽然相对较为繁琐,但仍然可以...

    android沉浸式状态栏 布局可以顶到状态栏上

    在Android开发中,沉浸式状态栏(Immersive Status Bar)是一种设计趋势,它使得应用内容可以延伸到手机屏幕的状态栏区域,提供更沉浸式的用户体验。这种效果常见于全屏游戏或视频播放等应用场景,目的是减少界面...

    android状态栏一体化,沉浸式状态栏,状态栏管理类

    "android状态栏一体化,沉浸式状态栏,状态栏管理类"是一个重要的主题,主要涉及到如何使应用的界面与状态栏无缝融合,提升用户体验,实现更美观的界面设计。 沉浸式状态栏(Immersive StatusBar)是一种流行的设计...

    Android系统控制状态栏下拉

    因此,对于禁止状态栏下拉这样的操作,可能需要根据不同的Android版本采取不同的策略。 对于Android 6.0及更高版本,应用需要`SYSTEM_ALERT_WINDOW`权限来改变系统级别的UI,这需要在运行时请求用户授权。在代码中...

    android 沉浸式状态栏

    4. **系统UI可见性变化监听**:在某些情况下,可能需要在状态栏或导航栏的可见性发生变化时执行某些操作。这时可以使用`View.OnSystemUiVisibilityChangeListener`接口,注册一个监听器来接收这些变化的通知。 5. *...

    Android-自定义Android平台的状态栏

    在Android应用开发中,自定义状态栏是一种常见的需求,它能提供更加个性化和沉浸式的用户体验。状态栏一体化指的是让应用的界面与系统状态栏无缝融合,通常涉及到颜色、透明度以及在不同场景下的动态变化。在本教程...

    Unity3D Android 状态栏

    在Android平台上,Unity3D允许开发者实现丰富的用户界面,包括控制状态栏和虚拟按键的功能。本文将深入探讨如何在Unity3D 5.3.4版本中实现在Android 2.0系统上显示状态栏和虚拟按键,并支持沉浸式透明效果。 首先,...

    Android透明状态栏demo

    在Android开发中,透明状态栏(Transparent Status Bar)是一种流行的设计趋势,它使得应用界面能够延伸至设备的状态栏区域,创造出更加沉浸式的用户体验。透明状态栏允许内容无缝地过渡到状态栏下方,使得整体视觉...

    Android 状态栏添加图标

    在Android开发中,状态栏图标是提供应用通知或者系统状态的一种常见方式。用户可以通过这些图标了解应用程序的实时状态,例如新消息、未读邮件或者其他重要事件。本篇将详细讲解如何在Android状态栏添加和移除图标。...

    Android透明状态栏和着色状态栏

    Android着色状态栏和透明状态栏小Demo,可直接运行

    Android隐藏状态栏和标题栏,相当于全屏效果

    Android 操作系统中,状态栏和标题栏是默认情况下显示的,但是有时候,我们需要隐藏它们以实现全屏效果。隐藏状态栏和标题栏可以通过两种方式来实现:使用预定义样式和编程方式。 使用预定义样式隐藏标题栏和状态栏...

    Android-Android状态栏问题汇总

    在Android开发中,状态栏(StatusBar)是手机屏幕顶部显示时间、电量、网络信号等信息的区域,也是系统和应用通知的重要入口。由于Android系统的开放性,不同设备的制造商可以根据自己的喜好对状态栏进行定制,这给...

    Android之简单的实现透明状态栏

    在Android开发中,透明状态栏是一种常见的设计手法,它能够为应用提供更加沉浸式的用户体验,让用户感觉内容直接延伸到了屏幕的顶部。透明状态栏可以使应用的界面看起来更加现代且时尚,尤其是在那些需要全屏显示...

Global site tag (gtag.js) - Google Analytics