FAQ 3a:
问:非高通的芯片能够使用BREW吗?
答:目前的BREW仅支持高通MSM芯片,但是我们认为将来BREW也能很好的支持非高通芯片。现在谈论BREW除了支持高通MSM系列芯片之外还支持其他芯片,尚为之过早。
FAQ 3b:
问:BREW支持那些设备?
答:当前,BREW支持高通系列芯片:MSM3100, MSM3300, MSM5000, MSM5100, and MSM5105。而且,对于特定电话机或者其他设备,需要具有"BREW enabled"。
FAQ 4a:
问:应用程序需要处理什么事件?
答:除了EVT_APP_START和EVT_APP_STOP之外的事件,为了通过TRUE BREW测试,你的应用程序还必须处理EVT_APP_SUSPEND和EVT_APP_RESUME事件。
暂停和恢复应用程序的更多信息参看暂停和恢复事件。
FAQ 4b:
问:使用电话的"End"键和"Clear"键有什么不同?
答:对于一个OEM设备,指定的按键有下面两种行为:
1、一个键,在被按下时,关闭当前应用程序。大多数的OEM都指定这种键为AVK_CLR键。
2、一个键,在被按下时,关闭所有应用程序。大多数的OEM都指定这种键为AVK_END键。
AVK_END被按下时,BREW立即给活动的应用程序发送EVT_APP_STOP消息,而不是先发送AVK_END消息。另外卸载应用程序之前,调用FreeAppData()回调程序;其它的事件和回调将不会发生。
AVK_CLR被按下时,BREW首先给应用程序发送该消息。如果应用程序不能处理这个事件(比如,返回FALSE),BREW就将关闭应用程序。在执行AVK_CLR过程中,记住要调用FreeAppData,例:
case AVK_CLR:
if (pMe->OnMainMenu == TRUE) {
// App is on main menu. Therefore pressing CLR key should cause app to exit
HelloWorld_FreeAppData(pi); //clean up
return FALSE; //return FALSE so that BREW will now close application
}
else { // Not on main menu.
// Therefore pressing CLR key should cause app to undo one level of menu
// nesting. Show previous menu in menu hierarchy
return TRUE;
}
确认FreeAppletData()完全地清除所有分配的内存和资源,即由CreateInstance, CreateDialog, MALLOC创建的对象和接口必须相应被Release和FREE掉。
FAQ 4c:
问:我如何处理电池电量低的警告?
答:BREW在发生低电量警告时发送EVT_APP_SUSPEND事件。为了处理低电量情况,你必须正确的处理EVT_APP_SUSPEND和EVT_APP_RESUME事件。
FAQ 4d:
问:ISHELL_SendEvent()和ISHELL_PostEvent()有什么不同?
答:ISHELL_SendEvent()和ISHELL_PostEvent()都是用来发送事件的函数。不同的是发送的方式不同。
ISHELL_SendEvent()是把事件立即发送到某类ID的应用程序。如果当前类的实例不能获得,AEE外壳就创建一个,然后以特定的事件代码和数据参数调用IAPPLET_HandleEvent()函数。除非选择启动自己,应用程序会在完全处理事件后终止。
ISHELL_PostEvent()和ISHELL_SendEvent()类似,除了目标类的IAPPLET_HandleEvent()函数不能立即被调用。发送的事件放置到队列重,之后再发送,这就允许应用程序不必中断运行,在当前函数运行完毕后,再处理事件。
ISHELL_SendEvent()函数允许控制目标类应用程序。这个函数直接向目标应用程序发送事件。ISHELL_PostEvent()则是在下一个事件处理周期开始后才会处理。这个函数非常实用,使得系统允许事件处理时,才会处理发送的事件。
FAQ 4e:
问:我的应用程序可以向系统注册哪些通知事件?
答:应用程序能够向系统注册的系统通知有:
TAPI (Class ID: 0x01001007)
NMASK_TAPI_STATUS 0x0001 TAPI状态处理事件
NMASK_TAPI_SMS_TEXT 0x0002 短消息到达事件
NMASK_TAPI_SMS_TS 0x0004 特定通信服务ID短消息
INETMGR
NMASK_OPENED 0x0001 网络层可获得
NMASK_CLOSED 0x0002 网络层关闭
NMASK_IDLE 0x0004 网络层可获得且空闲
请注意INETMGR NMASK_UDP_LISTEN不能工作,不推荐使用。
应用程序还能够注册来自动态应用和模块的接收通知回调。参加INotifier接口获得更多信息。
FAQ 4f:
问:在没有供应电话的情况下,我如何测试应用程序Suspend/Resume事件?
答:在Kyocera 3035,你可以在使能自动keyguard(Main Menu->Settings->Keyguard)后测试应用程序的Suspend/Resume事件的处理。当Keyguard触发,运行的应用将接收到Suspend事件。屏幕被锁定时,应用程序将接收到Resume事件。
在Sharp Z-800,你可以在设置闹钟一段时间后取消(Main Menu->Setup/Tools->Alarm->Daily Alarm)后测试应用程序的Suspend/Resume事件的处理。运行应用程序后,就可以测试了。注意,要使应用程序在闹钟取消后能够成功suspended,那么需要关闭BREW优先级(Main Menu->Setup/Tools->BREW Priority Setting)。