主页> 常见问题> BlackBerry 应用程序开发者指南 第一卷:基础--第

BlackBerry 应用程序开发者指南 第一卷:基础--第

阅读: 常见问题

作者:Confach 发表于March 19,200614:59 pm
版权信息 :可以任意转载, 转载时请务必以超链接形式标明文章原始出处 和作者信息.

第 1 章 BlackBerry API

使用 BlackBerry API                                                    

在 BlackBerry 设备上使用 Java                                           

应用程序控制

使用 BlackBerry API

  BlackBerry Java 开发环境(简称 JDE )的设计提供了一套完整的 API 和工具 , 来开发在 BlackBerry 设备上运行的 Java 应用程序。

  BlackBerry 设备包含了一个基于 CLDC1.1 以及 MIDP 的 Java ME ( Java Platform Micro Edition )运行时环境。 BlackBerry API 扩展提供了额外的功能 , 并且和 BlackBerry 集成得更紧密。

   你可以在你的应用程序中使用 CLDC/MIDP 和 BlackBerry API 。为了能让你的应用程序在任何采用 JTWI ( Java Technology for Wireless Industry , 无线领域的 Java 技术 )的设备上运行,你仅需要使用 CLDC 和 MIDP API 来编写标准的 MIDP 应用程序。

       [if gte vml 1]>

BlackBerry 手持设备软件组件

为了查看 API 参考。 点击任务栏的开始 > 程序 >Research In Motion>BlackBerry JDE 4.1.0>API Java Doc Reference

BlackBerry API

BlackBerry API 为访问 BlackBerry 特性提供了用户界面,本地化,网络,以及其他功能。

  注:访问某些特性,如高级的加密,同步,以及消息的额外 API ,是受限制的。为了使用这些 API, 你必须收到专门来自 Research In Motion 的认证中心编写的许可。为了得到更多信息,参看 BlackBerry 应用程序开发者指南第一卷:基础 第二卷:高级

 

CLDC API

CLDC API

描述

java.io

提供数据流的系统输入和输出。

java.lang

提供 Java 编程语言基础类。

java.lang.ref

提供引用对象类,它们支持一定程度上的垃圾回收。

java.util

包含集合类,时间,以及多样的实用类。

javax.microedition.io

包含一般连接的类。

MIDP API

MIDP API

描述

javax.microedition.lcdui

包含 MIDP 用户界面 API ,它为 MIDP 应用程序的用户界面实现提供了一组特性。

javax.microedition.lcdui.game

包含了可以为 BlackBerry 设备进行丰富游戏内容开发的类。

javax.microedition.midlet

定义了 MIDP 应用程序以及应用程序和应用程序运行的环境之间的交互。

: BlackBerry IDE 可以在启动时,使参数传递到一个 BlackBerry CLDC 应用程序中。

javax.microedition.pki

定义了用来验证安全连接信息的证书。

javax.microedition.rms

为 MIDlet 提供一种机制来存储和取得持久性数据。

PDAP API

MIDP API

描述

javax.microedition.pim

. 提供标准机制来访问 PIM 信息。

在 BlackBerry 设备上使用 Java

编译源代码,打包为.cod 文件,并将.cod 文件加载到BlackBerry 设备上,通过虚拟机运行。

        注:.cod 文件名控制在128 字节。

如CLDC 中描述的那样,BlackBerry IDE 使用一个分割的VM 架构。为了降低内存的数量以及BlackBerry 设备需要的处理能力,部分类加载过程,称为预验证,它在Java 代码加载到BlackBerry 之前发生。在将源代码打包为.cod 文件之前,自动验证它。在类加载到BlackBerry 设备时完成验证的提示。

限制

在 CLDC1.1 中描述的那样BlackBerry 虚拟机有以下限制:

  • 没有对象的析构(finalization )
  • 没有用户类的加载
  • 没有反射,因此不支持RMI 和Jini 网络技术。
  • 没有原生方法(Native method )
  • 没有Runtime.exec() 执行外部的进程
多线程

BlackBerry Java 环境提供一个真正的多线程环境来运行应用程序。这个环境允许多个应用程序同时运行,允许事件广播到多个应用程序,以及长操作和监听线程在背后运行。

持久数据

存储在闪存中的数据在 BlackBerry 重新设置之间持久保存。在BlackBerry 设备上存储数据可以采用以下二种方式中的一种:

  • 使用MIDP 记录存储
  • 使用BlackBerry 持久模型

为了得到关于使用 BlackBerry API 存储持久数据的更多信息,参看BlackBerry 应用程序开发者指南第一卷:基础 第二卷:高级。

网络通信

BlackBerry JDE 根据 MIDP2.0 , 实现了网络通信。它提供多种连接选项,包括通过使用HTTP 代理连接在公司防火墙背后安全连接的能力。

BlackBerry JDE 提供了以下几种连接类型:

  • 流连接(StreamConnection 接口,包括:

1.          HTTP 连接(HttpConnection 接口)

2.          HTTPS 连接(HttpsConnection 接口)

3.          Socket 连接(SocketConnection 接口)

4.          安全socket 连接(SecureConnection 接口)

5.          序列连接到BlackBerry 设备的一个通信接口(CoomConnection 接口)

  • 数据报连接(DtagramConnection 接口),包含

1. UDP 数据报连接(UDPDatagramConnection 接口)

Javax.microedition.io.PushRegistry 类对BlackBerry 设备保持了一些进入的连接。

 BlackBerry JDE 为包含在CLDC java.io 包里的流提供了标准的接口和类。

MIME 编码

BlackBerry IDE 提供了MIMEInputStream 和MIMEOutputStream 类来读写一个MIME 编码的数据流。

类  

描述

MIMEInputStream

实现一个流来读取一个 MIME 消息,然后根据 MIME 标准格式化和分解这个消息为其部分

MIMEOutputStream

 

实现一个输出流,这个流可以根据 MIME 标准格式化输出为其部分。本类不会完成实际的数据编码,因此你必须在写入它到本数据流治安编码它。

压缩

在net.rim.device.api.compress 包里,BlackBerry JDE 提供类来读取使用Zlib 或者GZip 格式压缩的数据流。这些类的行为如Java 标准版本里的java.util.zip 包里对应的类一样。

  缺省的,压缩是允许的,BlackBerry 设备可以写有效的GZip 和Zlib 文件为这样压缩文件的内容。解压缩同样也是支持的。

集合

BlackBerry IDE 提供了一组接口和实用类来管理BlackBerry 设备上的集合。

net.rim.device.api.collection 包包含了许多接口,这些接口为某些特定类型数据类型多定义了种类型的集合,例如列表,数组以及映射。这些接口定义了与Java 标准版本集合框架的list,set 和map 接口类似的功能。

在你自己的类中实现这些接口,或者使用在net.rim.device.api.collection.util 包里提供的使用类。

向量

  标准的java.util.Vector 实现了一个大小可以改变的对象数组。BlackBerry JDE 也提供了合适的类,例如rim.device.api.util.IntVector 和rim.device.api.util.ByteVector 来对主要类型进行工作。这些类看起来和普通的Vector 一样, 除了它们优化了在任何位置上插入的项。相反,如果你使用标准的大Vector 作随机的改变,大量的数据会在闪存和RAM 移动。

列表

BlackBerry JDE 在net.rim.device.api.collection.util 包里提供了一些类来管理元素的列表

描述

SortedReadableList 和

UnsortedReadableList

使用这些类来维护已排序的和未排序的元素列表。 SortedReadableList 类需要你使用一个比较对象来排序列表中的元素。增加到列表中的每一个元素必须被比较对象视为有效的。

IntSortedReadableList 和 LongSortedReadableList

使用这些类自动排序整形列表或与长整形关键字相关的元素。

BigSortedReadableList  和 BigUnsortedReadableList

使用这些类来存储大的数据集合(大于 10 或者 15K). 这些类不会存储数据到一个数组中,因此你可以对大数据集合更有效的做出随意改变。

ReadableListCombiner

 

使用这个类合并 2 个或者更多的 ReadableList 对象并且将他们作为一单个 ReadableList 来存储。

ReadableListUtil

此类提供一些有用的方法如 getAt() 和 getIndex() 。我们可以使用此类得到只读列表中的数

                           

哈希表

除了 CLDC 提供的标准 java.util.Hashtable  之外, BlackBerry JDE 包含了特定的 net.rim.device.api.collection.util.LongHashtableCollection 类,这个类提供了使用长整形作为关键字的哈希表集合。一个 LongHashtableCollection  对象,写操作作为一个映射(使用一个关键字 - 元素对),读操作作为一个映射或者作为一个集合(在集合里作为一个数组来得到数据)。

事件监听者

事件监听者接口根据事件类型划分。每个应用程序注册来接收特定类型的事件。应用程序事件队列然后调度事件到一个合适的监听者。
应用程序可以实现合适的监听者接口或者在各种 Screen 对象里重写监听者方法。大多数应用程序实现了 KeyListener  和 TrackwheelListener  接口,而且注册了监听者来接收键盘和滑轮的事件。键盘和滑轮是用户和应用程序交互的主要方式。

下列的事件监听者放在  net.rim.device.api.system 包中

监听者接口  

事件类型

AlertListener

实现接口来监听 alert 事件

BluetoothSerialPortListener

实现接口来监听蓝牙序列端口事件,例如打开一个蓝牙序列端口连接作为服务器或者客户端。

GlobalEventListener

 

实现接口来监听可以广播到所有应用程序的全局事件。

HolsterListener

实现接口来监听套装事件,例如 BlackBerry 设备从套装中插入和移开。

IOPortListener

实现接口监听 I/O 端口事件。

KeyListener

 

实现接口监听键盘事件,例如用户按住或释放一个键。

RealTimeClockListener

实现本接口来监听实时时钟事件,例如时钟更新。

SerialPortListener

实现此接口监听序列化端口事件,例如对于一个已经和计算机序列端口连接的 BlackBerry 设备,一个在数据正在被发送到序列化端口连接状态中的改变。

SystemListener

 

实现此接口来监听系统事件,例如电池状态和电源的改变。

TrackwheelListener

实现本接口监听滑轮事件,例如按住滑轮。

USBPortListener

实现本接口监听 USB 端口事件,例如对于一个已经和计算机 USB 端口连接的 BlackBerry 设备,数据正被发送到 USB 端口连接的状态。

系统功能

net.rim.device.api.system 包的类提供了访问Java VM 和BlackBerry 设备上系统资源的能力。
得到信号信息

RadioInfo 提供了访问信号状态信息的能力。
得到设备信息

DeviceInfo 类可以访问下列 BlackBerry 设备的信息:

  • 电池电源和状态
  • Blackerry 设备号
  • 空闲时间
  • 平台版本

系统事件通知用户

当一个事件,例如一条新消息到来的时候, Alert 类允许应用程序通知用户。
监视内存使用情况

使用一个 Memory 类提供的静态方法来得到 VM 内存使用统计信息。

Memory 类很多实用方法返回一个 MemoryStats 对象。使用 MemoryStats 类提供的实用方法得到 BlackBerry 设备上内存和可用存储空间的详细信息。
日志事件

EventLogger 允许应用程序在持久存储里存储事件日志。 BlackBerry 设备维护事件队列,以至当日志满时,会删除最早的事件,并增加新的事件。用户可以按住 Alt +lglg 来查看 BlackBerry 设备的系统事件日志。

使用工具

BlackBerry JDE 在 net.rim.device.api.util 包里提供了一组实用工具,这些类里的许多类提供了和 Java 标准版本里相似的功能

  • Comparator 接口定义了对象集合上的顺序的方法。
  • Arrays 提供方法来操作数组,例如排序,查找,以及作为列表来查看数组。
  • BitSet 类维护 bit 的集合。

net.rim.device.api.util 包包含了多个类来管理特定类型的数据集合,包括向量,哈希表,映射以及栈。

应用程序控制

应用程序控制允许系统管理员操作以下动作:

  • 控制内部连接(公司防火墙背后的连接)
  • 控制外部连接
  • 控制本地连接(序列和 USB 连接)
  • 控制访问键存储 (key store)
  • 控制访问特殊的 API.
  • 阻止第三方应用程序存在 BlackBerry 设备上。

为了得到更多信息,参看 BlackBerry Enterprise Server Handheld Management Guide 的应用程序管理。

受限制访问的 API, 类 , 和方法

使用了下列受限的 API, 类,以及方法的应用程序可以加载到 BlackBerry 设备,但是如果他们访问了一个没有在应用程序控制下得到允许的 API 时,在运行时会抛出一个 ControlledAccessException 或者 NoClassDefFoundError 的异常。

 

类,方法或 API

缺省值

应用程序菜单项 API(net.rim.blackberry.api.menuitem)

允许

蓝牙 API (net.rim.device.api.bluetooth)

允许

Connector.open() (javax.microedition.io)

提示

: 内部和外部的连接由不同的应用程序控制策略来管理

DeviceKeyStore 类 (net.rim.device.api.crypto.keystore)

允许

EventInjector 类 (net.rim.device.api.system)

不允许

HTTP Filter API (net.rim.device.api.io.http)

不允许

Notification API (net.rim.device.api.notification)

允许

电 API 和 呼叫 API ( 用来调用电话应用程序 ) (net.rim.blackberry.api.phone 和 net.rim.blackberry.api.invoke)

允许 ( 缺省,用户提示 )

电话日志 API (net.rim.blackberry.api.phone.phonelogs)

允许 ( 缺省,用户提示 )

PIM API (net.rim.blackberry.api.pdap)

允许

RuntimeStore 类 (net.rim.device.api.system)

允许

SerialPort 类 (net.rim.device.api.system)

允许

Session 类 (net.rim.blackberry.api.mail)

允许

StringPatternRepository 类 (net.rim.device.api.util)

允许

USBPort 类 (net.rim.device.api.system)

允许

 



[1] 也许有人会问,为什么 BlackBerry 需要压缩数据,又在什么地方用到呢 ? 非常简单,就是减小数据所占用的空间 , 最好的一个例子是 BES 发送邮件,译者注。

[2] 服务约定, Service Book, 这是 BlackBerry 使用中一个非常重要的概念。功能就是你订阅的服务,例如你订阅了 MMS 的功能,它会在你 BlackBerry 手持设备上出现。译者注。

【温馨提示】倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至55506560@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于本站观点。用户与作者的任何交易与本站无关,请知悉。

客服
套餐咨询,操作答疑等
在线客服