您的位置:首页 > 其它

如何将MIDlet应用移植到BlackBerry(三)

2010-09-13 23:22 225 查看
作者: 邓明轩、王恒进、王志刚

通过应用图标
提醒用


除了使
用主
屏幕
标记
以后

开发
人员
还可
以使
用改
变应用
图标
的方
式提
醒用
户。

如下

图为正
常的
应用
图标




开发人
员可
以通


AP
I


改图标
,提
示用
户该
应用
有新的
事件
发生
,如
下图


修改应
用图
标相
对比
较简
单,
只需
要调


n
et
.rim
.b
la
ck
berry
.a
pi
.ho
m
e
s
cr
ee
n.
Ho
m
eSc
re
en

的静态方


up
da
t
eIc
o
n


可以更
改本
应用
的图
标,
参数为一


Bitm
ap


片。

下面是
修改
应用
图标
的代
码片段


Bitmap
icon=Bitmap.
getBitmapResource
(

"
cn/searb/test/unread.gif"

);

net.rim.blackberry.api.homescreen.HomeScreen.
updateIcon
(icon);

网络连接调整

Bla
ck
Be
rr
y


口使


j2
m
e

标准的
方法实


Ht
t
p

连接
或者


So
ck
et

连接



MI
Dl
et

中的

网络连
接程
序可
以不
加修
改地


Bla
ck
Be
rry

平台上
运行

然而




Bla
ck
Ber
ry


供更
多的

网络连
接选择

开发
人员
可以对
网络
连接
代码
进行
调整

使
用应
用的网
络连
接更加
稳定



加符合
用户
的网
络选
择。

因为

Bla
ck
B
er
r
y


要支持
标准


j2
m
e

,所
以还
是通


ja
v
a
x.m
ic
r
o
e
dit
io
n.
io
.
Co
nn
ect
o
r



实现各
种连
接。
为了
提供
更多的
网络
选择

Bla
c
kBer
ry

平台


Co
nn
ect
o
r



o
p
en


法中


U
RL

进行
了特
殊处
理,开
发人员
可以


U
RL

后面加
上一些
特殊
的参
数以
标明
不同的
网络


接。比
如,
下面
的语
句在

U
RL

后面
加上
了“
d
ev
ic
e
s
id
e=
f
als
e


,表
明程
序希
望通


BE
S

MD
S
连接网
络:

Co
nn
ect
o
r
.o
pe
n(“
h
t
t
p://w
ww
.m
y
s
er
v
er
.co
m
;
d
ev
ic
e
s
id
e=
f
als
e”)
;

需要了
解不
同参
数的
详细
情况,
可以参


AP
I

文档


ja
v
a
x.m
ic
r
o
e
dit
io
n.
io
.
Co
nn
ect
o
r



的说明


下面我
们根
据不
同的
链路
从整体
上简
单介


Bla
c
kBe
rry

上的
不同
连接
方式


B

l

ac
kB
erry


En
t
e
rprise


S


e

rv
er(B
ES)


方式

这种方
式通
过使


BE
S



Bla
c
kBe
rry

MDS

S
e
r
vic
e
s

来进
行网
络连
接,

Bla
ck
B
er
ry

MD
S S
er
vic
e
s

负责
处理
所有
的浏
览器请
求或
者连
接请
求、
并负责
数据
加密
,这
是黑
莓手机
的默


连接方
式,
如下


(
Ht
t
pCo
nn
ect
io
n)
Co
nn
ect
o
r
.
o
pen("h
t
t
p://www
.
t
e
s
t
s
er
ve
r
.c
o
m"
)
;

以上代
码会
自动


Bla
c
kBe
rry
MD
S
S
e
rvice
s


为它的
默认连
接路
径。
实际
开发
中,如


要确保
应用
程序使


us
e
s
B
la
ck
Be
rry
MDS S
e
r
vic
e
s


为它的
连接
路径

需要


U
RL


后加


参数“

de
vice
s
id
e=
f
alse



这也是
我们
推荐
的方
式,
如下:

(
Ht
t
pCo
nn
ect
io
n)
Co
nn
ect
o
r
.
o
pen(“
h
t
t
p:/
/www
.
t
e
s
t
s
er
v
e
r
.c
om
;
de
vice
s
id
e=
f
alse
”)
;

B

l

ac
kB
erry


Int
er
ne
t

S
erv
ie


方式

这种方
式是
为第
三方
提供
的连接
接口

它对
数据不
进行加密


户可
以通过
使用

HT
TP
S



SS
L


进行
安全的
连接




前仅
对加
入了

Bla
ck
Be
rry
All
ia
nc
e
P
r
og
r
am


第三方
开放


作伙伴
开放
,详
情参
考:
h
t
t
p://na
.b
la
ck
be
rry
.c
om
/
eng
/p
art
ne
r
s
/
al
li
an
ce.js
p



Di
r
ect

T
CP


方式

这种方
式允
许在
没有
使用

B
la
ck
Be
rry M
DS

的黑莓
手机
上直接

T
CP

连接。
为了
能启


di
r
ec
t T
CP

方式,
用户
需要
在手机

“选

-

级选

-T
CP
/IP


中设


AP
N

以及
相应
的用户
名和


码。

运行


iD
E
N


络上
的黑莓
手机

包括

6
5
1
0

7
51
0

7
5
2
0



7
10
0
i
),

果不指


d
e
vice
s
id
e
参数,
默认
的连
接是

di
r
ect
T
CP


运行在

iD
EN

网络上
的其他
黑莓
手机


果不指


de
vice
s
id
e
参数,
默认
的连接


Bla
ck
Berr
y MDS



如果连接


Bla
ck
Be
rry M
D
S

不存在
,黑
莓手
机也会
自动采


di
r
ect
T
CP

方式


因此

如果



di
r
ect

T
C
P


为黑莓

机的默认连接方

,我们建



U
R
L






de
vice
s
id
e=t
ru
e


参数,
如下:

(
St
re
am
Co
nn
ect
io
n)Con
n
ect
o
r
.o
pen("so
ck
et
:
//t
e
s
t
s
er
v
er
:
60
0;
d
e
vice
s
id
e
=t
ru
e")
;

W

i

-Fi



如果需要


W
i
-F
i

上创建
网络连
接,
不需
要在
应用
程序中
考虑
特别
的底
层逻
辑,

以在

U
RL


加入
参数

in
t
er
f
ac
e
=wifi


就能实


W
i
-F
i

连接
,如下


(
St
re
am
Co
nn
ect
io
n)Con
nect
o
r
.o
pen(“
so
ck
et
:
/
/

t
e
s
t
s
er
v
e
r:
6
00
;
in
t
er
f
ac
e
=wi
fi
”)
;

W

AP


1.x


并不是
所有
的移
动运
营商
都支持通


W
AP

网关
进行
连接的


以如
果要
创建

W
AP

连接


开发者
需要
和移
动运
营商
联系,
获取
是否
提供
这种
支持、
并且
获取
他们


W
A
P

网管参
数。

以下是
一个基


W
AP

网关
进行

HT
TP

连接
的例子


(
Ht
t
pCo
nn
ect
io
n)
Co
nn
ect
o
r
.
o
pen("h
t
t
p://w
ap
.
g
oog
le.c
om
;
W
AP
G
a
t
ew
a
yIP
=
1
2
7
.
0
.0.
1
;
W
AP
G
a
t
e
w a
yAP
N=
c
ar
rie
r
.c
om
.
g
pr
s"
)
;

其中

W
AP
G
a
t
ew
a
yIP



W
A
P
G
a
t
ew
a
yAP
N

这两
项参数
必须指
定,
参数
之间
用“

;
”隔开


以下是
所有


W
AP

参数列
表,

际开
发时
请根
据运营
商提供
的信
息决
定哪
些参
数需要
设置


参数

描述

W
apGa
t
eway
I
P

网关地址

W
apGa
t
ewayAP
N

AP
N

的名称

W
apGa
t
ewayPo
r
t

网关端口号,
如果使用端口


920
3

的话,
会自动启用


W
i
r
e
le
s
s T
r
an
s
po
r
t

La
y
e
r

Se
c
u
r
it
y



(
W
TLS
)













W

apE

n

ab

l

e

WT
LS=
f
a
ls
e


参数。

W
apSou
rc
e
I
P

W
a
p


务器的地址。

W
apSou
rc
ePo
r
t

W
a
p


务器的端口号


T
u
n
ne
lA
u
t
hU
s
e
r
na
me

AP
N

的用户名,当网关启


Pa
ss
wo
r
d
Au
t
hen
t
ic
a
t
io
n
P
r
o
t
o
c
o
l

(
P
AP
)







Cha
lleng
e

H
an
d
s
ha
k
e

A
p
p
lic
a
t
io
n

P
r
o
t
o
c
o
l

(
CHAP
)

时才需要提
供。

T
u
n
ne
lA
u
t
hPa
ss
wo
r
d

AP
N

密码,当网关启用

P
A
P


者是

CHA
P

时才需要提
供。

W
apEnab
le
W
TL
S

指定是否启用

W
TL
S

如果没有
指定该参数,
当端
口号为

9203

时会自动应用

W
TL
S


W

AP


2.0


如果手
机上


S
e
r
vic
e
Boo
k

上有

W
AP
2
.
0


网关
记录

可以通


AP
N=
<AP
N
Nam
e
>

的方法

指定网
关,
系统会


S
er
vic
e
Boo
k

上找
到对
应的
信息
连接网
关。
不过
,对
于不
同的运
营商


W
AP
2
.
0


关的
名称
是不同
的,

果在
程序
里通
过网
关名称
指定
所需
要连
接的
网关,
则有


能在不同的
运营商环境
中出现连接问
题。有一个
相对通用的做
法是通过程
序遍历手机
上的

S
er
vic
e
Boo
k





W
AP
2
.
0


网关
记录


后通
过该
记录


U
ID


行连
接,
因为


Bla
ck
Be
rry
上可以


RU
L


面加


Co
nn
ect
io
nU
ID
=<
G
a
t
ew
a
yU
ID>

的方式
指定
网关




















S
e
r
vic
eBoo
k




g
et
S
B









S
er
vice

Boo
k











S
er
vic
eBoo
k

实例


fin
dR
ec
o
r
ds
B
yCi
d


法查
找在

Cid

中带“

WP
T
CP

”字
样的记
录。这
些记


里可能包


W
ifi

或者


m
m
s

对应的
记录


以要排
除这些
记录

使
用的
方法
是判断


U
id



查找

U
id

里不
带“
W
i
fi

”和

mms
”字
样的
记录


代码片
段如
下:

ServiceBook
sb
=
ServiceBook.
getSB
();

ServiceRecord[]
records
=
sb.findRecordsByCid(
"WPTCP"
); String

uid
=

null


;

for


(
int


i

=
0;
i
<
records.

length
;

i++)
{

if


(records[i].isValid()
&&
!records[i].isDisabled())
{

if


(records[i].getUid()
!=

null


&&
records[i].getUid().length()
!=
0)
{

if


((records[i].getUid().toLowerCase().indexOf(

"wifi"

)
==
-1)

&&
(records[i].getUid().toLowerCase()

.indexOf(

"mms"
)
==
-1))
{

uid
=
records[i].getUid();

break

;

}

}

}

}

if


(uid

!=

null

)

{

//

在参数中指

Co
nn
ec
t
io
nU
ID

Connector.open

(_url
+

";ConnectionUID="

+
uid);

}

else


{

//

没找到
Wap
2.0


se
r
vi
ce
bo
ok
,
做其它处


.

}

数据存储与共享

使


RM
S


进行



j2
m
e

提供


R
MS

存储机
制,
MI
DP

规范
定义
了持久
的、基
于记
录的
存储
功能
,叫记


管理存

(
RMS)

。一


MI
D
let


件可
以使


R
MS


建一个
或多
个记
录存
储,
每个

录由一

个唯一
的名
字标
识。


j
a
v
a
x.m
ic
r
o
e
dit
io
n.
rm
s

包中可
以找到
必要
的类
和接口


RMS


行操

作,其
中关
键是


R
ec
o
r
dSt
o
r
e


R
eco
r
dS
t
o
r
e

提供了
打开,
关闭
,读
取,
写入
和更新
操作


也提供方法删除单个记录或者整个存储。这个包包含
各种接口用于列举、排序和筛选

RMS
内容。

Bla
ck
Be
rry

平台
提供
了对标


j2
m
e

的支
持,
所以
也支
持标准


RMS

存储机
制,
开发人

员在

MI
Dl
et

中使
用的

RMS

存储代
码可
以不
加修
改直
接在

Bla
ck
B
er
r
y


运行




MI
DP
1
.
0

时候,



RM
S

存储只
属于
创建
它的

MI
D
let


件,
不能
用于不
同程
序之间

的数据
共享

MI
DP
2
.
0


范给

RMS

包增
加了
一个非
常有用
的能
力:
它允
许一


MI
Dl
et

套件

和另一


MI
Dl
et

套件
共享
记录存
储。

共享一


RMS


录存
储需
要两个
或者
多个
参与
者:

个拥有
者和
一个
或者
多个
消费者


拥有者
负责创
建和命
名存
储,建
立授权
模式指
定存
诸为“
共享”
或者“
不共


,同
时可


指定它
的访问
模式“
可写
”或者
“不可
写”

消费者
通过名
字获得
记录存
储的
访问。
消费者

不能访
问没
有共
享的
存储
,也不
能修
改不
可写
的存
储。

一个共享


RMS

被一
个三
元组标

(
提供
者名
字,

MI
Dl
et


件名
字,
记录
存储
名字
)


l

提供者
名字


J
AD

或者

m
a
ni
f
e
s
t


件里
面的

MI
Dl
et
-
V
endo
r


性的
值。

l

MI
Dl
et


件名字


J
AD


件里


MI
Dl
et
-nam
e

字段
的值

l

记录存
储名
字是一


1



3
2


长的
区分
大小写


U
ni
c
o
de

字符
串,
是当
你创
建记

录存储
时候
用的
名字


为了支
持共
享,

MI
DP
2
.
0

标准


ja
v
a
x.m
ic
r
o
e
dit
io
n.
r
m
s

中添一
些方
法:

第一个
方法
用于
打开
一个
已经存
在的
记录
存储

或者
创建一
个新
的记
录存
储并
设置它


授权和
可写
特性


s
t
a
t
ic

R
ec
o
r
dS
t
o
r
e

Op
enR
ec
o
r
dS
t
o
r
e

(
St
rin
g

r
ec
o
r
d
S
t
o
r
eN
am
e
,

boo
le
an

c
re
a
t
e,

i
n
t aut
hmo
de, boo
le
an
w
rit
ab
le
)
;

参数说
明如下

:

l

r
ec
o
r
dS
t
o
r
eN
am
e

设置记
录存储
的名


l

cre
a
t
e

是否
强制
创建
,如
果为

t
ru
e


存储
不存
在时
会强制
创建

l

aut
hmo
de




定授权
模式

:

使


R
eco
r
dS
t
o
r
e.A
U
TH
MO
D
E_P
RI
V
A
TE


表示
不允

许共享


使用

R
ec
o
r
dS
t
o
r
e
.
A
U
T
HMO
D
E_A
NY

则允许
共享


果存
储已
经存在
这个

参数会
被忽
略。

l

wr
it
e
ab
le

,是
否可
写,如
果为

t
ru
e,

指定
其他

MI
Dl
e
t

套件可
以修
改这
个记
录存
储,

如果存
储已
经存
在这
个参
数会被
忽略


第二个
方法
用于
打开
共享
记录存
储:

s
t
a
t
ic

R
ec
o
r
dS
t
o
r
e

o
penR
ec
o
r
dS
t
o
r
e(

St
rin
g

r
ec
o
r
dS
t
o
r
eN
am
e,

St
rin
g

v
endo
r
Nam
e
,

St
rin
g

s
ui
t
eN
am
e)

参数说
明如
下:

l

r
ec
o
r
dS
t
o
r
eN
am
e


要打开
的共享
记录
存储
的名


l

v
endo
r
Nam
e

是拥有


MI
D
let


件的

MI
Dl
et
-
V
endo
r

属性的


l

s
ui
t
eN
am
e

是拥
有者

MI
Dl
e
t

套件的
名字

仅当记
录存
储的
拥有
者设
置了

au
t
omo
de



A
U
TH
M
OD
E_A
NY


这个
方法
才能
成功打


记录存
储。
需要
注意
的是
你不能
直接
检测
存储
的可
写属性


发现
一个
记录
存储是
否可
写的

唯一方
法是
试着
向记
录存
储写入
,如
果不
可写
就捕
获相应
的异
常。

记住


J
AD




m
an
i
f
e
s
t
M
ID
let
-V
er
s
io
n


不在
参数
列表中

这意
味着
拥有者
套件无


在影响
消费
者的
前提
下改
变共享
的存
储的
记录
格式


第三个
方法
用于
修改
存诸
的属性


V
o
id
s
et
Mo
de(
in
t
aut
hmo
de, boo
le
an
w
rit
ab
le
)
;

参数说
明如
下:

l

aut
hmo
de

指定记录存储
的新的授权模式,
可以设
置为

A
U
T
HMO
D
E_P
RI
V
A
T
E

或者



A
U
TH
MO
DE_
AN
Y



l

wr
it
ab
le

指定
存储
的信息
是否可
写。

注意只
有存
诸的
拥有
者才
能改变

aut
hmo
de



w
rit
ab
le


性。
另外
,没
有方
法能够


来查询
这些
设置


如上所述


Bla
ck
Be
rry

平台
提供

j
2
m
e

支持

所以
开发
人员可以


Bla
ck
Be
rry


台上使


RMS


法完
成数
据的
存诸
和共享


使


R

u

nT
imeS
t
or
e


进行存储

相对于
静态


R
MS

的繁琐
配置和
不灵
活,

Bla
ck
B
er
r
y

提供了

R
un
T
im
eS
t
o
r


e

运行
时存储



使用非
常灵
活和
方便


RunT
im
eSt
o
r
e


平台
级别提供
了数据存储方
式和共享方
式,它提供了
一个中间区
域让

不同应
用可
以共
享对
象,
任何通
过数
字签
名的
应用
程序都
可以
访问
运行
时存
储。

对于

RunT
im
eSt
o
r
e

的使用
需要注
意的
是:

l

对象可
以添
加到
运行
时存
储或者
从运
行时
存储
中替
换掉

l

运行时
存储
必须
以一
个独
一无二


ID

创建

l

任何类
型的
对象
都可
以放
到运行
时存
储中

l

设备掉
电的时


Run
t
im
eSt
o
r
e

中的
数据
会丢
失。

下面是
创建
运行
时存
储和
写入简
单数
据的
代码
示例

:

class


CreateStoreDemo

extends


UiApplication
{

//
通过包名
生成的
唯一的长
整型

ID

public

static
long


STORE_ID

=
0x23ad23489a243L;

public


CreateStoreDemo()
{

String
msg
=
“S
ha
re
d
te
xt
f
or
a
no
th
er
a
pp
li
ca
ti
on

; RuntimeStore
st
or
e
=
RuntimeStore
.getRuntimeStore();

try


{
store.put(S
TORE_ID,
msg);

}

catch


(Exception
ex)
{}

}

}

创建好
了以
后就
可以
通过
相应代
码获
取其
中的
数据

下面
是读


RunT
im
eSt
o
r
e


代码
示例


class


ReadStoreDemo

extends


UiApplication
{

public


ReadStoreD
emo()
{

RuntimeStore
st
ore
=
RuntimeStore.getRuntimeStore();

try


{

//cast
the
r
eturned
object
to
a
string

String
msg
=

(String)store.get(
CreateStoreDemo.STORE
_ID);

}

catch


(E
xc
ep
t
io
n
ex
)
{

//handle
exc
eption

}

}

}

BlackBerry SDK下载

BlackBerry Java Plug-in for Eclipse v1.1

Java Plug-in for Eclipse Update Site

BlackBerry Web Plug-in v2.0

BlackBerry Widget SDK v1.0

BlackBerry Theme Studio v5.0

Plazmic Content Developer’s Kit v4.7

BlackBerry smartphone simulators

相关链接:

如何将MIDlet

应用移植到BlackBerry

(一)

如何将MIDlet

应用移植到BlackBerry

(二)

如何将MIDlet

应用移植到BlackBerry

(三)

如何将MIDlet

应用移植到BlackBerry

(四)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: