WAP之家:为您提供最全最新的WAP技术,CP.SP.3G等行业资讯。 WAP之家交流论坛全新开放 点击进入>>
WAP资讯 | 3G动态 | SP动态 | 运营商动态 | 内容商动态 | 制造商动态 | 论坛讨论>> 每次自动访问
WAP技术 | WAP源码 | 手机编程 | 手机源码 | 无线技术 | J2ME技术 | 手机软件 添加到收藏夹
IVR技术 | SP资料 | SMS MMS技术 | 商业方案 | IVR下载 | 书籍教程 | 工具软件 语言:繁體中文

WAP之家技术文章手机编程BlackBerryBlackBerry 应用程序开发者指南 第二卷:高级--第11章 管理通知(Notification)

BlackBerry 应用程序开发者指南 第二卷:高级--第11章 管理通知(Notification)
作者:佚名  来源:本站整理  发布时间:2008-3-15 2:08:36

启动BlackBerry设备数据恢复

SyncConverter.convert()的实现恢复BlackBerry设备上的数据.当数据从用户计算机上恢复到BlackBerry设备上时,调用此方法.

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;

}

定义通知配置

创建一个类描述通知配置信息.此类实现了SyncObjectPersistable.你必须实现SyncObject.getUID()方法,但是如果数据同步不需要,你的实现可以返回0,正如下面的例子.

private static final class Configuration implements SyncObject, Persistable {

    public byte[] _data;

    public Configuration(byte[] data) {

       _data = data;

       }

    public int getUID() {

       return 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;

           }

       }

    }

上一页  [1] [2] [3] [4] 

[] [返回上一页] [打 印]
文章评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码