BlackBerry 应用程序开发者指南 第二卷:高级--第11章 管理通知(Notification) |
||
| 作者:佚名 来源:本站整理 发布时间:2008-3-15 2:08:36 | ||
启动BlackBerry设备数据恢复
SyncConverter.convert()的实现恢复BlackBerry设备上的数据.当数据从用户计算机上恢复到BlackBerry设备上时,调用此方法.
定义通知配置
创建一个类描述通知配置信息.此类实现了SyncObject和Persistable.你必须实现SyncObject.getUID()方法,但是如果数据同步不需要,你的实现可以返回0,正如下面的例子.
注册一个结果
如果你创建一个自定义的Consequence,调用registerNotificationsObjects(long, Consequence)方法将之在NotificationsManager上注册. NotificationsManager.registerConsequence(ConsequenceImpl.ID, new ConsequenceImpl()); 当BlackBerry设备启动时,为了注册consequence,在一个类库工程里完成这个注册.为获得更多信息,参看116页的”当BlackBerry启动时注册一个事件源”. 代码实例
例: ConsequenceDemo.java /** * ConsequenceDemo.java * Copyright (C) 2001-2005 Research In Motion Limited. All rights reserved. */ package com.rim.samples.docs.notifications; import net.rim.device.api.synchronization.*; import net.rim.device.api.notification.*; import net.rim.device.api.system.*; import net.rim.device.api.util.*; import java.io.*; public class ConsequenceDemo implements Consequence, SyncConverter { public static final long ID = 0xbd2350c0dfda2a51L; private static final int TYPE = 'n’ << 24 | 'o' << 16 | 't' << 8 | 'd'; private static final byte[] DATA = new byte[] { 'm', 'y', '-', 'c’, 'o', 'n', 'f', 'i’, 'g’, '-', 'o', 'b', 'j', 'e', 'c', 't' }; private static final Configuration CONFIG = new Configuration(DATA); private static final short BFlat = 466; // The actual value is 466.16. private static final short TEMPO = 125; private static final short d16 = 1 * TEMPO; private static final short pause = 10; // 10 millisecond pause. private static final short[] TUNE = new short[] {BFlat, d16, pause, BFlat}; private static final int VOLUME = 80; // Percentage volume. public void startNotification(long consequenceID, long sourceID, long eventID, Object configuration, Object context) { LED.setConfiguration(500, 250, LED.BRIGHTNESS_50); LED.setState(LED.STATE_BLINKING); Alert.startAudio(TUNE, VOLUME); Alert.startBuzzer(TUNE, VOLUME); } public void stopNotification(long consequenceID, long sourceID, long eventID, Object configuration, Object context) { LED.setState(LED.STATE_OFF); Alert.stopAudio(); Alert.stopBuzzer(); } public Object newConfiguration(long consequenceID, long sourceID, byte profileIndex, int level, Object context) { return CONFIG; } public SyncObject convert(DataBuffer data, int version, int UID) { try { int type = data.readInt(); int length = data.readCompressedInt(); if ( type == TYPE ) { byte[] rawdata = new byte[length]; data.readFully(rawdata); return new Configuration(rawdata); } } catch (EOFException e) { System.err.println(e); } return null; } public boolean convert(SyncObject object, DataBuffer buffer, int version) { boolean retval = false; if ( object instanceof Configuration ) { Configuration c = (Configuration)object; buffer.writeInt(TYPE); buffer.writeCompressedInt(c._data.length); buffer.write(c._data); retval = true; } return retval; } /* Inner class to store configuration profile. */ private static final class Configuration implements SyncObject, Persistable { public byte[] _data; public Configuration(byte[] data) { _data = data; } public int getUID() { return 0; } } } |
||
| [] [返回上一页] [打 印] | ||
文章评论 |
||
