首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

建立牢固的多功能Smartphone应用程序 04

建立牢固的多功能Smartphone应用程序 04

访问电话特性

通过Windows CE API,开发人员能简单地给应用程序添加电话功能。类似自动拨号、与调用日志交互、访问SIM卡的能力、发送和接收SMS消息等等特性可以简单地添加到应用程序。为了工作正常,大多数技术API需要真实的设备或者GSM无线设备连接到模拟器,因此如果你计划开发这些类型的特性,准备好测试真实的设备。

电话特性的一个最简单的例子是在应用程序中建立语音通话。因为我们有随着Smartphone一起发布的辅助TAPI,只需要一行代码。所有需要作的是在代码中包含astdtapi.h文件,在连接程序设置中添加cellcore.lib,并调用tapiRequestMakeCall函数:


TCHAR szDefaultNum[] = TEXT("+1 (555) 555-5555");LONG lResult;lResult = tapiRequestMakeCall((LPTSTR) szDefaultNum, NULL, NULL, NULL);return TRUE;


发送SMS消息也很简单。有了辅助TAPI,你只需要在代码中添加一个文件引用(sms.h),在连接程序设置中添加一个库(sms.lib)。发送或者接收消息的第一步是调用SmsOpen函数,下一步初始化源和目的地址,完成后调用SmsSendMessage函数。最后一步是调用SmsClose函数清除建立的SMS_HANDLE。代码见图5。

SMS_HANDLE smshHandle;SMS_ADDRESS smsaSource;SMS_ADDRESS smsaDestination;TEXT_PROVIDER_SPECIFIC_DATA tpsd;SMS_MESSAGE_ID smsmidMessageID;//尝试打开一个SMS句柄if(FAILED(SmsOpen(SMS_MSGTYPE_TEXT, SMS_MODE_SEND, &smshHandle, NULL))){    MessageBox(NULL,L"Call to SmsOpen failed.",L"Error",MB_OK |                MB_IConERROR);    return;}//建立源地址if(!bUseDefaultSMSC){    smsaSource.smsatAddressType = SMSAT_INTERNATIONAL;    _tcsncpy(smsaSource.ptsAddress, lpszSMSC, SMS_MAX_ADDRESS_LENGTH);}//建立目标地址smsaDestination.smsatAddressType = SMSAT_INTERNATIONAL;_tcsncpy(smsaDestination.ptsAddress, lpszRecipient, SMS_MAX_ADDRESS_LENGTH);//建立提供者特定数据tpsd.dwMessageOptions = bSendConfirmation ? PS_MESSAGE_OPTION_STATUSREPORT : PS_MESSAGE_OPTION_NONE;tpsd.psMessageClass = PS_MESSAGE_CLASS1;tpsd.psReplaceOption = PSRO_NONE;//发送消息,显示源或者失败if(SUCCEEDED(SmsSendMessage(smshHandle, ((bUseDefaultSMSC) ? NULL :              &smsaSource),              &smsaDestination, NULL, (PBYTE) lpszMessage,              _tcslen(lpszMessage) * sizeof(TCHAR), (PBYTE) &tpsd,              sizeof(TEXT_PROVIDER_SPECIFIC_DATA), SMSDE_OPTIMAL,              SMS_OPTION_DELIVERY_NONE, &smsmidMessageID))){    MessageBox(NULL, L"Message sent", L"Success",MB_OK);}else{    MessageBox(NULL, L"SmsSendMessage Failed", L"Error",MB_OK |                MB_IConERROR);}//清除VERIFY(SUCCEEDED(SmsClose(smshHandle)));


图5.SMS代码例子

它还提供了更多的API,我只介绍了几个基本的。有了这些能力,移动应用程序在原来的基础上有了很大的扩充。例如,当应用程序中特定事件发生时能够触发自动呼叫或消息。


结论

本文我讨论了建立真实Smartphone应用程序的一些基础。你可以看到该类型的Smartphone应用程序在企业计算领域是非常引人注目的。
返回列表