一个应用在不同类型BREW 手机上的移植主要是处理手机之间的差异性,这里的差异性包括硬件差异性和软件差异性。硬件差异性是指手机自身的内存和存储空间大小,屏幕尺寸和色深,键盘布局以及手机中的特殊硬件的支持(如照相机,游戏手柄等)。软件差异性包括BREW的版本,手机软件编译器的版本,一些多媒体编解码器的异同,以及对某些BREW API是否支持等等。由此可见,了解运营商所制定的手机相关规范对移植BREW应用是非常有益的。
针对手机的硬件差异性,为了减少应用移植中的工作,可以在应用中采用自适应的方法。每个手机都有各自的类型标识——平台标识,如果应用自身根据平台标识以及相应硬件信息动态加载相应的资源,无疑可以实现某些应用的零工作量移植。获得手机平台标识和相关硬件信息的方式之一是使用ISHELL_GetDeviceInfo()和ISHELL_GetDeviceInfoEx()。
ISHELL_GetDeviceInfo()可以在 AEE层中查询有关手机性能的信息,例如所支持的 RAM 总量、屏幕显示等其它项目。要获取 AEEDeviceInfo结构中的 dwNetLinger 和 dwSleepDefer值,在调用此函数之前,wStructSize 必须等于sizeof(AEEDeviceInfo)。其中AEEDeviceInfo是这样一个数据结构:
typedef struct
{
uint16 cxScreen; // 实际屏幕大小 (像素)
uint16 cyScreen; // 实际屏幕大小 (像素)
uint16 cxAltScreen; // 第二显示屏幕的屏幕大小
uint16 cyAltScreen; // 第二显示屏幕的屏幕大小
uint16 cxScrollBar; // 标准滚动条的宽度
uint16 wEncoding; // 字符集编码 (AEE_ENC_UNICODE, ....)
uint16 wMenuTextScroll; // 应该用于自动滚动的毫秒
uint16 nColorDepth; // 色深 (1表示黑色,2表示灰色等)
EmptyEnum unused2;
uint32 wMenuImageDelay; // 应该用于影像延迟的毫秒
uint32 dwRAM; // 已安装的 RAM 总量 (RAM)
flg bAltDisplay:1; // 设备具有备选显示屏幕 (寻呼机)
flg bFlip:1; // 设备为翻盖电话
flg bVibrator:1; // 安装了振动器
flg bExtSpeaker:1; // 安装了外部扬声器
flg bVR:1; // V支持语音识别
flg bPosLoc:1; // 支持定位
flg bMIDI:1; // 支持 MIDI 文件格式
flg bCMX:1; // 支持 CMX 音频
uint32 dwPromptProps; // 默认提示属性
uint16 wKeyCloseApp; // 关闭当前应用的按键
uint16 wKeyCloseAllApps; // 关闭所有应用的按键 (默认为 AVK_END)
uint32 dwLang; // 由 Resource Loader 使用 (见下方的 AEE_LNG_XXX)
//
// 注:要使用以下各字段,必须先将结构的
// wStructSize 填用才能将其传送到 GetDeviceInfo调用
//
uint16 wStructSize; // 该结构的大小1
uint32 dwNetLinger; // PPP 振铃定时器 (毫秒)
uint32 dwSleepDefer; // 激活的非睡眠模式 (毫秒)
uint16 wMaxPath; // 文件路径最大长度
uint32 dwPlatformID; // 平台 ID
} AEEDeviceInfo;
ISHELL_GetDeviceInfoEx()用于获取有关设备的特定信息(AEEDeviceItem)。此函数使用 ID 指定所需的信息,返回时在缓冲区中包含对应的信息。这些ID所表示的含义如表15-2所示。
ID的名称
|
含义说明
|
AEE_DEVICEITEM_CHIP_ID
|
标识芯片组 ID 的字符串
|
AEE_DEVICEITEM_MOBILE_ID
|
标识手持设备的移动 ID 的一个 ASCII 字符串
|
AEE_DEVICEITEM_AMR_VOCODER_SUPPORT
|
是否支持 AMR (Adaptive Multi-Rate) 声码器
|
AEE_DEVICEITEM_EVRC_VOCODER_SUPPORT
|
是否支持 EVRC(增强型变速率编码)声码器
|
AEE_DEVICEITEM_IS96_VOCODER_SUPPORT
|
否支持 QCELP-IS96(8K)(Qualcomm 码激励线性预测编码)声码器
|
AEE_DEVICEITEM_IS96A_VOCODER_SUPPORT
|
否支持 QCELP-IS96A(8K)(Qualcomm 码激励线性预测编码)声码器
|
AEE_DEVICEITEM_IS733_VOCODER_SUPPORT
|
是否支持 QCELP-IS733(Qualcomm 码激励线性预测编码)声码器
|
AEE_DEVICEITEM_SMV_VOCODER_SUPPORT
|
是否支持可选择模式的声码器
|
AEE_DEVICEITEM_SYS_COLORS_DISP1 AEE_DEVICEITEM_SYS_COLORS_DISP2 AEE_DEVICEITEM_SYS_COLORS_DISP3 AEE_DEVICEITEM_SYS_COLORS_DISP4
|
返回与特定显示屏幕关联的系统颜色列表
|
AEE_DEVICEITEM_DISPINFO1 AEE_DEVICEITEM_DISPINFO2 AEE_DEVICEITEM_DISPINFO3 AEE_DEVICEITEM_DISPINFO4
|
返回特定显示屏幕的相关信息
|
AEE_DEVICEITEM_CARRIER_ID
|
标识手持设备的运营商 ID 的一个 uint32 值
|
AEE_DEVICEITEM_SIDHASH
|
返回手持设备的支付帐户的一个散列。 可用于确定是否已更换了支付帐户,例如在调换了 RUIM 卡时。 请注意,不会返回具体的帐号,而只是返回一个帐户字符串的散列。
|
AEE_DEVICESTATE_KEYS_PRESSED
|
返回处于按下状态的按键的值
|
AEE_DEVICESTATE_FLIP_OPEN
|
在设备翻盖处于打开状态时返回 TRUE,否则返回 FALSE
|
AEE_DEVICESTATE_HEADPHONE_ON
|
如果设备耳机是打开的,返回 TRUE,否则返回 FALSE
|
AEE_DEVICESTATE_KEYGUARD_ON
|
如果设备的键盘是打开,将返回 TRUE,否则返回 FALSE
|
AEE_DEVICESTATE_SPEAKER_ON
|
如果设备的扬声器为打开则返回 TRUE,否则返回 FALSE
|
AEE_DEVICEITEM_USER
|
OEM 定义项目的起始点
|
表 15-2:可以用ISHELL_GetDeviceInfoEx()获取的有关设备的特定信息
根据AEEDeviceInfo和AEEDeviceItem中的信息,应用可以做到动态加载资源文件。当然这些资源信息也可以保存在服务器上,应用程序通过网络通信的方式获得这些资源数据,从而完成一个应用在不同手机上的适配。
如果某些手机不支持某些接口,应用程序可以通过判断该接口是否创建成功获得该信息。例如在内存没有问题的情况下,创建IPosDet接口失败,很可能是由于该手机不支持定位功能造成的。这时,应用程序就应该不提供定位功能,从而成为只具备浏览查询功能的一个LBS应用。
如果是两台手机对同一接口的功能存在差异(一般出现在IRingerMgr或者IAddrBook),这时需要应用程序多做一些工作。例如采用一个配置文件来定义地址簿或者铃声目录中的域,应用程序在启动时根据手机信息来读取配置文件,这样就能够进一步弥补手机间的差异进而很好的实现移植了。
分享到:
相关推荐
【BrewMP应用开发与移植】的详细解析 BrewMP是高通公司推出的一款操作系统,主要用于移动设备,尤其在功能手机和入门级智能手机中广泛使用。本文将深入讲解BrewMP应用的开发过程,包括SDK的获取与安装、开发工具的...
《深入brew开发 brew及buiw进阶手册》是一本专为已对brew有一定基础的开发者设计的深度学习资源,旨在帮助读者全面理解和掌握这个强大的包管理工具及其相关生态系统。brew是Mac OS X系统中广泛使用的开源包管理器,...
海信作为手机制造商,其设备可能预装了BREW环境,开发者可以利用BREW SDK针对海信手机进行定制化开发。开发过程中需要考虑海信设备的硬件特性,如屏幕分辨率、内存限制等,确保应用能在这些设备上流畅运行。 7. ...
Brew是由美国高通公司(Qualcomm)推出的移动应用开发框架,旨在提供一个统一的、跨平台的环境,使开发者能够轻松创建和部署针对多种不同手机型号的应用。Brew支持多种编程语言,包括C++和JavaScript,具有高效、...
这三个词语都是与手机应用安装相关的关键词,BREW是手机应用开发平台,手机是安装应用的设备,应用是被安装的软件。 部分内容 部分内容主要介绍了使用BREW工具将应用灌入手机的操作步骤,包括: 1. 使用数据线将...
### 敏捷与高效——手机应用程序开发模式研究 #### 一、手机应用程序开发现状 随着信息技术的迅猛发展,智能手机正逐步从简单的通讯工具转变为功能强大的个人数字助手。硬件方面,ARM内核CPU的广泛应用极大地提升...
BREW平台的核心优势在于其高效、灵活和对各种设备的良好兼容性,使得开发者可以为不同类型的手机创建定制化的应用。 在BREW平台上进行手机应用的开发,首先需要了解BREW SDK(Software Development Kit),这是高通...
BREW Software Development Kit (SDK) 包含了编译器、调试器、模拟器和各种库文件,是开发者进行BREW应用开发的基础。通过SDK,开发者可以在桌面系统上构建和测试应用,然后将其部署到目标设备上。 三、BREW应用...
2. 开发工具:介绍用于BREW应用开发的IDE、编译器、调试器等工具,以及如何配置和使用它们来优化开发流程。 3. BREW API:详述BREW提供的各种API,包括用户界面、网络通信、数据存储等方面,这些API是构建功能丰富...
BREW技术是高通公司开发的一套为无线设备开发、部署和管理应用...整体而言,本论文基于BREW技术,详细讨论了移动办公系统的开发过程、结构设计、实现以及测试,为基于BREW平台的移动办公应用提供了理论基础与实践指导。
《深入研究BREW手机游戏开发BREW开发-海信(王宏兵)》是一份针对BREW(Binary Runtime Environment for ...同时,了解BREW平台的历史和现状,也能帮助开发者理解移动应用开发的演进历程,为未来的技术选择提供参考。
随着手机软件市场的不断扩大,越来越多的开发者们致力于移动应用的开发,本文简要论述了在BREW和J2ME平台下应用程序开发的特点和区别,并从接口和框架设计方面提出了易于进行平台移植的方法,以便于帮助那些准备将...
目录:(BREW 初级开发者 教程):第1章 BREW技术特点与发展趋势第2章 BREW SDK简介 第3章 BREW开发基础第4章 BREW手机简介 第5章 ISHELL第6章 IDISPLAY使用简介 第7章 ISTATIC第8章 IMENUCTL 第9章 IImage第10章 ...
BREW,全称为Binary Runtime Environment for Wireless,是由高通公司开发的一种操作系统平台,主要用于早期的移动设备,尤其是CDMA网络的手机。它提供了一个高效、安全的环境来运行各种应用程序,促进了无线应用的...
联通博路编写的开发者进阶教程,pdf版本,转载。 共18部分: 第一部分目录如下: Brew概述 Brew技术演进 Brew3.1.5 sp01 Brew 4.0简介 Brew Mobile Platform简介 Brew 技术优势 Brew与其他技术的对比 以后各部分为...