WEB开发网
开发学院手机开发Windows Mobile 开发 为Windows Mobile设备创建位置感知的应用程序 阅读

为Windows Mobile设备创建位置感知的应用程序

 2011-01-06 10:59:01 来源:WEB开发网   
核心提示: 首页完成改版,来提意见的回调函数pfnResult返回的,为Windows Mobile设备创建位置感知的应用程序(7),回调函数返回一个结构体,这个结构体必须先经过整理然后才能在托管代码中使用,因为位置感知的应用程序在Windows Mobile获知自己的位置之前无法做任何有用的工作,所以RIL_GetCellT
首页完成改版,来提意见 的回调函数pfnResult返回的。回调函数返回一个结构体,这个结构体必须先经过整理然后才能在托管代码中使用。下面的代码展示了在调用RIL_GetCellTowerInfo之后由RIL返回的结构体。

[StructLayout(LayoutKind.Explicit)]

internal class RILCELLTOWERINFO

{

[FieldOffset(0)]

uint dwSize;

[FieldOffset(4)]

uint dwParams;

[FieldOffset(8)]

public uint dwMobileCountryCode;

[FieldOffset(12)]

public uint dwMobileNetworkCode;

[FieldOffset(16)]

public uint dwLocationAreaCode;

[FieldOffset(20)]

public uint dwCellID;

}

在这段代码中,你将看到如何取得最重要的结构体成员以传递给一个可以返回蜂窝基站位置的Web服务。在RILCELLTOWERINFO结构体中还有一些更有趣的字段,譬如,你所连接的基站的信号强度。通过这个结构体的其他成员,你可以自己计算出一个更为精确的当前位置。然而为了简单起见,我们只关注你所连接的蜂窝基站和它的位置。现在在托管代码中,你可以取得你所连接的基站的信息并存储到一个类中了。

如下的代码示范了托管类如何存储蜂窝基站信息。

public class CellTower

{

public int CellId { get; set; }

public int LAC { get; set; }

public int MCC { get; set; }

public int MNC { get; set; }

}

你可以使用下面的示例代码来调用必须的RIL APIs。有趣的部分是蜂窝基站信息被返回给RIL_GetCellTowerInfo调用者的方式。信息不是至极返回的,而是通过一个回调函数返回的。因为位置感知的应用程序在Windows Mobile获知自己的位置之前无法做任何有用的工作,所以RIL_GetCellTowerInfo的异步行为通过基站信息可用时设置的一个托管事件转变成了同步行为。

如下的代码示范了在托管代码中如何获取基站信息。

public class CellTowerInfo

{

private static AutoResetEvent dataReceived = new AutoResetEvent(false);

private static RIL.RILCELLTOWERINFO towerInfo;

public static CellTower GetCellTowerInfo()

上一页  2 3 4 5 6 7 8 9 10 11 12  下一页

Tags:Windows Mobile 设备

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接