BlackBerry 上不同的消息提醒方法
作者: 王恒进
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);
?
?
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?灯
?
{
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: