作者: 王恒进 1.??背景 BlackBerry?上的一大特色就是基于消息的功能,其中消息提醒功能是初学?BlackBerry?遇到的一?大难题。BlackBerry?上的消息(Messaging)定义很广,包括邮件、短信/彩信、即使消息(如?MSN/FaceBook/Twitter/BlackBerry?Messenger?等)、以及应用程序自己定义的消息。 ? 这些消息到达?BlackBerry?时,BlackBerry?提供了?5?种消息提醒的方法,它们是:LED?闪烁、提?示音、界面左上方的小图标提醒(叫做?Indicator),应用程序图标的变化(比如在有新消息到?来时,应用程序图标的右上角会出现一个红色的星号)。 ? 同时,BlackBerry?提供一种机制,可以将所有的消息都注册到系统唯一的?Message Inbox?中 (也就是第一排左边第一个图标),在这个?Inbox?中,当不同的应用有新的消息到来时,可以?新添一条自己的记录(包含自定义的应用图标,自定义的打开菜单,在?Message?文件列表中?创建自己的消息目录)。 ? ? 2.??常见的?5?种提醒方式 ? ?? 2.1??????应用程序图标 效果: ? ? 示例代码: ? 1,?更新应用程序图标为已读 ? Bitmap icon=Bitmap.getBitmapResource("icon/read.gif"); ? net.rim.blackberry.api.homescreen.HomeScreen.updateIcon(icon); ? 2,?更新应用程序图标为未读 ? Bitmap icon=Bitmap.getBitmapResource("icon/read.gif"); ? net.rim.blackberry.api.homescreen.HomeScreen.updateIcon(icon); ? ? ? ? ? ? 2.2??????LED?灯 效果: ? ? ? ? ? 示例代码: 1,首先需要?import?相应的?API?包: import?net.rim.device.api.system.*; 或者 import?net.rim.device.api.system.LED; ? 2,关闭?LED?灯 ? if(LED.isSupported(LED.LED_TYPE_STATUS)) { LED.setState(LED.STATE_OFF); } ? 3,打开?LED?灯或者开启?LED?灯闪烁 if(LED.isSupported(LED.LED_TYPE_STATUS)) { //LED.setState(LED.STATE_ON); //or LED.setState(LED.STATE_BLINKING);?LED.setConfiguration(100,?1000,?LED.BRIGHTNESS_100); } ? ? 4,注意捕获抛出的异常 如果?setState(int?state)的输入参数为不正确的状态时,可能会抛出异常: IllegalArgumentException ? ? ? 2.3??????震动 示例代码: ? net.rim.device.api.system.Alert.startVibrate(5*1000); ? 2.4??????提示音 调用系统声音播放的接口,示例如下: ? //?create an?instance of?the?player?from?the?InputStream ? Player player =?javax.microedition.media.Manager.createPlayer(path,?type); ? ? ? player.realize(); ? player.prefetch(); ? ? ? VolumeControl?volumeControl =?(VolumeControl)?player.getControl("VolumeControl"); ? volumeControl.setLevel(100); ? //?start?the player player.start(); 2.5??????Indicator 如下图所示,BlackBerry?提供?Indicator?的机制,可以在顶部状态栏显示一个小图标,同时 还可以在小图标旁边显示一个数字,来标识是否有新消息到来以及新消息的数目。 效果: ? ? 常用的实现步骤:在系统中注册自己的图标。每来一条新的消息,将图标设为显示状态,并且将?图标旁边的数字加?1;当每读一条未读消息,将图标设为隐藏,并将图标旁边的数字减?1. ? 示例代码: ? 第一步:创建?ApplicationIndicatorRegistry?和?ApplicationIcon?对象 ? ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry.getInstance(); ? EncodedImage image = EncodedImage.getEncodedImageResource( "clowds.gif" ); ? ApplicationIcon icon = new ApplicationIcon( image ); ? ? 第二步:注册或者获取?ApplicationIndicator?对象 ? //第一次调用时,通过方法?ApplicationIndicator?register(ApplicationIcon icon, boolean iconOnly, boolean visible)来注册?Indicator,其中第二个参数控制是否只显示?图标而不显示数字 ? ? ApplicationIndicator indicator = reg.register( icon, false, true); ? //以后可以通过以下方法来获取已注册的?Indicator?实例。 ? ApplicationIndicator AppIndicator = reg.getApplicationIndicator(); ? 第三步:操作?Indicator(显示/隐藏/删除) ? //设置图标和数值 ? ? AppIndicator.set( newIcon, newValue ); ? //显示图标 ? ApplicationIndicator.setVisible(true). margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; text-align: ?
?
?