MIDP2.0及其移植技术分析
在不同的平台上,能最大地发挥其作图功能的函数和算法不尽相,这就要求移植者作大量细致的工作,按照MIDP规范的要求逐一重新实现每一个作图函数和屏幕刷新函 数。下面我们就以将画线函数和位图拷贝函数在Windows上的实现为例,简单说明移植要做的工作(键盘、触控笔是以事件消息的方式实现的,它们的移植与事件消息的移植相同)。
Windows的画线函数接口:
Void LCDUIdrawLine(int pixel,short*clip,void*dst,int dotted,int x1,int y1,int x2,int y2){
……
Polyline(hdc,pts,2);/*绘x1,y1点像素信号*/
……
}
Windwos的屏幕刷新函数:
Void refreshPaintWindow(int x1,int y1,int x2,int y2){
RECT r;
If(x1<x2){
r.left=x1+x_offset;r.right=x2+x_offset;
}else{
r.left=x2+x_offset;r.right=x1+x_offset;
}
if(y1<y2){
r.top=y1+y_offset;r.bottom=y2+y_offset;
}else{
r.top=y2+y_offset;r.bottom=y1+y_offset;
}
++r.bottom;++r.right;
InvalidateRect(hMainWindow,&r,KNI_TRUE);
}
如果目标平台对这些GUI接口函数有不同实现法,可以用这些方法替换以上的Windows系统调用,这样才能使MIDP图形化用户接口正确地工作,并充分发挥目标平台的工作效率。
2.4 网络
MIDP的网络功能是指基于MIDP的J2ME应用可以通过HTTP等网络协议进行下载安装,不同的MIDlet实体也可以通过它交换信息,实现资源共享。遵循HTTP协议的规定,移植者必须利用目标平台的底层网络接口重新实现网络的初始化(networkInit)、建立连接(open0)、断开连接(close0)、接收数据(read0)、获取缓冲区的剩余空间(available0)、关闭发送(shutdownOutput)。如果目标设备具有服务器功能,还要实现serversocket所有上述功能。所有上述接口都在文件socketProtocol_md.c中实现。
Windwos中获取IP地址的实现:
Int prim_com_sun_midp_io_j2me_socket_Protocol_getIpNumber
(char*host)
{
……
《MIDP2.0及其移植技术分析(第4页)》