65.9K
CodeProject 正在变化。 阅读更多。
Home

移动生日提醒器和自动短信发送器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.91/5 (16投票s)

2010年7月4日

CPOL

5分钟阅读

viewsIcon

82906

downloadIcon

13888

这段代码会向生日的亲朋好友发送自动短信 :)

引言

大家好,你们好吗?我很好,谢谢。

手机已经成为我们生活中不可或缺的一部分。它们已经比我们的另一半更好,充当计划器、提醒器、组织者、文件共享器、个性化音乐系统等等,远超人们的预期。我本人就是一个电话迷。三年来,我是诺基亚(Symbian OS)的粉丝,现在我是 Windows Mobile 的粉丝。

拥有 Windows Mobile 为 Windows 开发者提供了很多机会。如果您了解 .NET 编码,您可以为您的手机创建炫酷的定制应用程序。

工作原理

我经常忘记生日,经常被妻子埋怨,也因为忘记朋友的生日而感到尴尬。为了克服这个缺点,我制作了这个炫酷的工具来拯救我。

我手机里的代码会扫描应用程序数据库中存储的联系人信息,以匹配他们的生日和当前日期。如果匹配,代码会自动向该联系人的手机号码以及本机号码(用于所有者提醒)发送短信。现在无需记住任何生日,只需在应用程序中录入一次,然后就可以忘记它。代码会处理其余的事情。

先决条件

您需要一部支持 .NET Compact Framework (.NET CF) 3.0 和 SQL Server CE (Compact Edition) 的手机。Windows Mobile 6.0 及以上版本默认支持。对于 Symbian 手机,.NET CF 可以从 Red Five Labs 下载,但现在我不知道为什么,他们的网站无法访问,所以您需要搜索一下,找到从哪里可以下载。

明确要求安装在手机上的文件列表包括:

  1. Sqlce.dev.ENU.phone.wce5.armv4i.cab
  2. Sqlce.dev.ENU.wce.armv4i.cab
  3. Sqlce.ppc.wce5.armv4i.cab
  4. Sqlce30.wce5.armv4i.cab
    (您会在 SQL Server 2005 CE 文件夹中找到这 4 个文件。)
  5. 计划器(文章中附带)

开发时,您需要 Visual Studio 2005/2008 IDE 和 Smartphone 开发 SDK。

提示

您可以为开发目的下载以下内容:

准备用户界面

这很简单,只需要一点创意,因为手机屏幕相对比电脑/笔记本小。使用标签页控件(Tabbed control)非常有用,可以将功能分成多个标签页,这样屏幕就不会显得拥挤。

我将发布我的应用程序中使用的 UI 图片。您可以随意根据自己的意愿进行自定义。

要创建移动应用程序,请打开 Visual Studio 2005/2008 并创建一个新项目。这将打开“新建项目”窗口。在您喜欢的语言下选择“Smart Device”。

MobileBirthdayReminder/1.png

点击“确定”后,会打开一个屏幕,用于选择智能手机平台类型。

MobileBirthdayReminder/2.png

在此处选择“Device Application”。

屏幕 #1 详细视图

MobileBirthdayReminder/3.png

这里显示每个字段的单条记录详情。暂时忽略“Stop the Timer”按钮,我稍后会解释。

屏幕 #2 网格视图

MobileBirthdayReminder/4.png

在一屏上显示所有记录。

屏幕 #3 消息窗口

MobileBirthdayReminder/5.png

这个屏幕显示一个文本框,其中包含将自动发送给寿星的消息。

屏幕 #4 关于界面,对您来说不重要。

MobileBirthdayReminder/6.png

在经历了妻子如此严厉的批评之后,我理应为我的工作获得赞誉。

这里使用的控件与 .NET Windows 应用程序中使用的控件没有区别,只是编码方式略有不同,并且功能有所减少(因为手机的内存和资源有限)。

源代码

没什么技术性的,以下是操作指南。

  1. 准备表结构。打开 SQL Server Management Studio 并创建一个新表。它会将数据库保存在您选择的位置,文件扩展名为 SDF。例如 – abc.sdf

    MobileBirthdayReminder/7.png

    字段“sno”是自动生成的表示键。

  2. 将这个新创建的表添加到应用程序中的“sdf”文件数据库。添加数据库时会提示您创建 DataSet。继续并创建它。这将在您的项目中添加 Dataset Table Adapter 和 binding source。

    MobileBirthdayReminder/8.png

一切就绪,我们就可以开始工作了。Table Adapter 非常有用,它使执行 DML(Data Manipulation Language)任务更加轻松,例如删除一条记录,您只需要编写以下代码即可:

BirthDayInfoTableAdapter.Delete(<primary key value to be deleted>)

BirthDayInfoTableAdapter.Fill(BirthDayInfoDataSet.BirthDayInfo)

在上面的代码中,我们首先删除记录,然后重新填充数据集(相当于刷新数据集)。

用于检查生日的主要代码是:

For i = 0 To BirthDayInfoDataSet.BirthDayInfo.Rows.Count - 1

If BirthDayInfoDataSet.BirthDayInfo(i).dateOfBirth.Day = Date.Now.Day And _
    BirthDayInfoDataSet.BirthDayInfo(i).dateOfBirth.Date.Month = Date.Now.Month Then
Dim sms As New SmsMessage(BirthDayInfoDataSet.BirthDayInfo(i).mobileNumber, 
    _ "Hi " & BirthDayInfoDataSet.BirthDayInfo(i).fullName & vbCrLf & txtMessage.Text)
sms.Send()

Dim sms2 As New SmsMessage("mobile number", _ 
"Hi " & BirthDayInfoDataSet.BirthDayInfo(i).fullName & vbCrLf & txtMessage.Text)
sms2.Send()
End If
Next 

匹配了,所有的生日和月份都存储在表中,并与当前日期和月份进行匹配。如果匹配,则发送短信,否则跳过。SmsMessage 是一个内置的发送消息库。

所以这就是项目的主要功能,为了增加一些“甜点”,我添加了“Stop the Timer”按钮。当代码运行时,窗口会保持打开状态,占用手机宝贵的内存,从而耗尽电池。所以我添加了一个计时器,它会在 10 秒后自动关闭应用程序。因此,当您将应用程序添加到计划器(使用文章中附带的 Scheduler 应用程序)时,代码会在您指定的星期几和时间运行,检查生日,向符合条件的条目发送短信,然后自动关闭。由于应用程序会自动关闭,我添加了那个“Stop the timer”按钮,如果您在 10 秒内点击它,就可以阻止应用程序关闭(仅限当前一次)。

高潮

所以,在写了这么长的文章之后,我已经涵盖了应用程序的主要部分。您可以在附带的代码中找到其余的精彩内容。我希望您觉得这段代码很有趣,如果不是,请随时尽管批评我。

© . All rights reserved.