使用C#开发SmartPhone程序入门

 介绍

  本文的目的是引导SmartPhone编程的初学者进入SmartPhone世界,以及学会如何使用C#编写SmartPhone程序。本文首先介绍了什么是SmartPhone,以及SmartPhone的一些特性和用于编程的API。为了更好地掌握如何使用C#编写SmartPhone程序,在本文还提供了一个使用C#编写的简单的SmartPhone程序的例子,读者可以通过这个例子快速地掌握如何使用C#为SmartPhone编写程序。

  近来,移动这个新兴的领域正在受到许多移动设备的使用者和一些世界级的公司的关注和追捧。现在移动设备使用了先进的信息访问和获取技术,用户可以通过移动设备访问到世界的任何角落,因此,可以毫不夸张地说,先进的移动设备将使人们如虎添翼。

  就象任何其它技术的快速发展一样,移动设备也在迅猛地发展。可以肯定地说,移动设备将创造一个新世界,无论是平民还是富翁,移动设备都将成为他们的好帮手。也许在不远的将来,它还会以其它的形式出现,到那时,移动设备将成为你生活的一部分。

  真是太棒了,开发人员除了可以做手头的工作…事实上,他们完全可以进入一个另人激动、充满了刺激的世界,在这个世界中,颠覆了传统的桌面和Web开发。在这个世界中,有新的技术、新的挑战、新的机会,当然,更重要的是,有新的挣钱方法…$Money$。

  移动设备的发展

  移动设备发展到今天已经变得丰富多彩,现在我们有各种各样的移动设备可以选择,如手持设备,Pocket PC,PDA等等。现在移动设备正在试图利用手机已被全球的人们普遍使用的优势迅猛发展。

  今天的移动电话市场已经有多种多样的型号可供选择。目前,手机市场已经被使用Symbion操作系统的Nokia、索尼和三星等公司垄断。

  就象当年的Web浏览器市场一样,Microsoft在移动世界中也是姗姗来迟。今天的Microsoft已经拥有了自己的用于移动设备的操作,它就是Microsoft Windows Mobile2003,还有更为强大的WinCE4.2。那些使用Microsoft操作系统的手机正在蚕食市场份额,并且有越来越多的开发人员也转向了Microsoft阵营。

  按着Microsoft的一贯做法,Microsoft在推出相应的手机和操作系统后,在第一时间就为开发人员提供了相应的支持,包括可以使用现有的语言为Microsoft的手机开发软件。由于目前Microsoft主推.net framework,因此,使.net framework可以在手机上运行就变得非常必要。由于考虑到了手机的硬件环境,Microsoft推出了一个.net framework的精简版,这就是Microsoft .NET Compact Framework,这个framework是PC机上的.net framework的一个子集。

  特性

  在Microsoft的SmartPhone上拥有丰富的软件,用户可以通过声音、文字以及Internet(如GSM、GPRS、SMS、PPTP、蓝牙等)进行相互通讯。

  以下是Microsoft SmartPhone所安装的软件列表




































Pocket 浏览器 这个浏览器比WAP浏览器强大得多,它完全可以取代手机中的IE5。这个浏览器可以支持HTML3.2、XML、XSL、cHTML、WAP1.2.1、WML脚本、Active脚本、ActiveX、SSL、JPEG、GIF等。
Pocket Outlook 这个工具和PC机上的Outlook类似,它除了可以管理联系人、写日记、任务管理和记录音频,还可以发送和接收邮件。
MSN Messenger 一个聊天客户端,和PC机上的MSN Messenger类似。
Microsoft ActiveSync 使客户端和服务器同步
Windows Media Player 一个媒体播放器,可播放MP3、WMA和AVI。
Voice Notes 一个录音软件。
Games 一些小游戏
File Management Utilities 文件和任务管理,类似于windows的文件管理器。
Wireless Modem 可以通过USB、IR和COM连接Internet。
MMS Client 接收MMS信息。
Camera 一个视频采集软件,可以录制和捕捉视频

  SmartPhone的外观

  图1是微软建议的移动设备的标准外观和控制面板。

#p#副标题#e#







图1 标准的SmartPhone界面

  在这个控制面版上有两个Soft键、一个Home键、一个Back键和五个方向键,下面是十个数字键以及”*”和”#” 键。Microsoft强烈建议使用这个按键结构。在这些键中,所有的控制键(如Soft和Home键等)是必须的。然而,这些设备并不是由Microsoft制造的,而是由大大小小的移动设备生产商所制造,因此,这些设备的外观和结构可能和Microsoft所推荐的这个设备有一些出入。

  最近,Microsoft发布了Windows Mobile 2003的第二版,开发人员可以选择以下的开发工具为Windows Mobile开发软件,这些软件有基于Win32的,也有基于Microsoft .NET Compact Framework的。

  1、 Embedded VC++ 4.0
  2、 Visual Studio .NET – C#, VB.NET
 一个简单的Hello World程序

  现在让我们进入主题,开发一个简单的Hello World程序。编写这个程序最先要做的就是下载可以运行在Visual Studio2003中的SmartPhone2003开发包。在安装完这个开发包后,SmartPhone的开发环境和一个SmartPhone模拟器已经被安装到了你的机器上。

  在安装完SDK后,启动Visual Studio,在工程模板中选择Smart Device应用程序,给它起一个名字,然后点击OK,现在,你将看到如图2的欢迎界面。






点击放大此图片
图2 Smart Phone的欢迎界面

  选择SmartPhone和Windows Application后,点击OK按钮。现在,你将看到如图3所示的开发界面。






点击放大此图片
图3 SmartPhone的开发界面

  在右侧的工具栏上,你可以看到一个控件面版,在这个面版上有一些我们熟悉的控件,但这些控件是不可用的,这是因为SmartPhone并不支持这些控件。

  现在,我们已经可以开发SmartPhone应用程序了。我们首先应该考虑到,通常手机只用一只手操作,因此,应用程序的导航键应该容易操作。在手机上的”Soft”键通常充当导航键。如果你仔细观察Visual Studio,你就可以注意到Visual Studio已经为我们建立了一个默认的菜单控件。Visual Studio建议我们使用这个MainMenu控件,这个菜单最终将成为导航键来控制我们的SmartPhone应用程序。

  现在,让我们按图4所示建立一个菜单结构:







图4 SmartPhone菜单

  双击”Say Hello”菜单可以写执行代码:





private void menuItem2_Click(object sender,System.EventArgs e)
{
 MessageBox.Show(“Hello Logu!”);
}

  下面是 “Exit”菜单的代码:





private void menuItem3_Click(object sender, System.EventArgs e)
{
 this.Close();
}

  现在按F5运行程序,将会弹出一个如图5的对话框,这个弹出的对话框可以让你选择使用哪一个设备运行这个程序,我们选择”Smartphone 2003 Emulator(Virtual Radio)(Default)”,然后点击”Deploy”







图5 选择运行设备对话框

  现在模拟器已经启动,界面如图6所示。我们的应用程序已经被安装在模拟器上了,在上面出现了一个提示,并且左下角出现一个”OK”。







图6 模拟器

  单击”OK”运行我们的程序。

  现在我们的.NET程序已经运行了。在应用程序被运行后,单击”My Menu”中的”Say Hello”,你将看到如图7所示的信息框。现在,你还可以选择SmartPhone设备,并这个程序直接发布到这个设备上。由于打包和发布并不属于本文的内容,因此,在这里不再讨论。www.xker.com() 







图7 程序运行界面

  SmartPhone所支持的API

  以下是SmartPhone所支持的API列表

  · ActiveSync API
  · Bluetooth(蓝牙)API
  · CE Messaging API
  · Device Management(设备管理) API
  · Home Screen API
  · Object Exchange (OBEX)
  · Pocket Outlook Object Model (POOM)
  · Speech Recognizer
   o Telephony – TAPI
   o Accessing the SIM card

#p#副标题#e#
   o P/Invoke to native SIM Toolkit APIs
  · RAPI – Remote API to connect to the desktops programmatically
  · GAPI – To develop Mobile games(用于开发游戏的API)
  · Vibrate API
  · Voice Recorder Controls (用于录音的API)