专栏首页施炯的IoT开发专栏PhoneFinder--寻找丢失的手机

PhoneFinder--寻找丢失的手机

    手机丢了怎么办?那就打电话给手机,如果运气好的话,捡到的好心人能够把手机还给你。如果手机是被偷的,那就没有办法了,即使手机开着,估计小偷也不会接电话。当然,我们继续下面讨论的前提就是:手机是掉了,而且被好心人捡到,但是他不知道怎么还;或者是手机处在silent状态,你打电话人家听不到。Googlepage上有这么一个类似的应用,也叫PhoneFinder,不过这个软件是要收钱的。在windows mobile 6 SDK自带的例子中,有一个PhoneFinder的应用,通过它,你可以在手机上设置一定的信息,如果你通过SMS,发送这个信息到手机上,手机就会弹出提示框,显示主人的信息,同时播放一段声音,以引起注意。

    开发这样的应用程序,我们首先需要了解一下几方面的内容:

1. State and Notifications Broker API

2. Pocket Outlook Object Model Application Development for Windows Mobile-based Devices

3. MessageInterceptor

    在应用程序的主界面上,我们可以让用户输入信息内容,并且设置应用是否允许。这样,在设备接收到含有预先设定的短信之后,就会做出相应的动作,如弹出提示框,播放声音等等。其中,开启短信拦截的关键代码段如下:

Code
 interceptor = new MessageInterceptor(InterceptionAction.NotifyAndDelete);
 
 interceptor.MessageCondition = new MessageCondition();
 
 interceptor.MessageCondition.CaseSensitive = true;
 
 interceptor.MessageCondition.ComparisonType = MessagePropertyComparisonType.Equal;
 
 interceptor.MessageCondition.ComparisonValue = pin.Text;
 
 interceptor.MessageCondition.Property = MessageProperty.Body;
 
 interceptor.EnableApplicationLauncher(ruleName);
 

播放声音使用PlaySound方法,通过PInvoke得到:

Code
PlaySound#region PlaySound
[System.Runtime.InteropServices.DllImport("coredll.dll")]
static extern int PlaySound(string pszSound, IntPtr hMod, int fdwSound);
const int SND_FILENAME = 0x20000;
const int SND_SYNC = 0x0;
const int SND_ASYNC = 0x1;
const int SND_LOOP = 0x8;
#endregion
 

主人信息通过SystemState获得:

Code
 string owner = SystemState.OwnerName;
 
 string email = SystemState.OwnerEmail;
 
 string phone = SystemState.OwnerPhoneNumber;
 

测试这个应用程序我们可以使用Device Emulator和Cellular Emulator。首先,打开设备模拟器和蜂窝模拟器,并将它们建立联系,具体步骤参考《Ring Tone Manager on Windows Mobile》。然后将程序部署到设备进行调试。调试时,应用程序的主界面如下图1所示:

图1:应用程序主界面

    在Pin的text中设置好相应的文字以后,点击“Enabled”,启动短信拦截,然后点击左下方的Exit退出界面。这时候,我们在蜂窝模拟器里面给设备模拟器发送字符串“1234”,如下图2所示:

图2:蜂窝模拟器中的SMS发送界面

    这时候,我们就可以在设备模拟器中看到相应的消息框,并听到声音了。如下图3所示:

图3:设备模拟器中看到的提示消息框

参考链接:

Google:PhoneFinder

MSDN:

1. State and Notifications Broker API

2. Pocket Outlook Object Model Application Development for Windows Mobile-based Devices

3. MessageInterceptor

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Windows Mobile Device Emulator In-Depth--(2)

    本文继上一篇Windows Mobile Device Emulator In-Depth--(1)。 5. Emulator's Configuration ...

    ShiJiong
  • 在Windows Mobile上使用WINCE自带数据库

        通过数据库,可以方便地存储和检索数据,极大地提高工作效率。在Windows CE .NET 4.2上,自带了一个数据库,具体我们可以参考MSDN上的网页...

    ShiJiong
  • OpenGL ES Wrapper on Windows Mobile

    写在最前     关于在Windows Mobile上使用OpenGL ES,可以参考MVP的这篇文章《Getting Started with OpenGL ...

    ShiJiong
  • 2017信息之美奖作品集 | 今年最好的可视化都在这里了

    大数据文摘
  • 这款安卓后门GhostCtrl可能是“史上功能最多”的后门

    这个世界上从来都不缺Android恶意软件,但我们却很少能够遇到像GhostCtrl后门这种功能如此之多的Android安全威胁。 ? 根据趋势科技的研究人员透...

    FB客服
  • 漫画:什么是二分查找?(修订版)

    2.代码中,获取中位数下标的逻辑不能写成 mid=(start+end)/2,这样写的话,如果start和end值很大,有可能出现溢出。最严谨的写法是:mid=...

    小灰
  • [剑指offer] 数字在排序数组中出现的次数

    正常的思路就是二分查找了,我们用递归的方法实现了查找k第一次出现的下标,用循环的方法实现了查找k最后一次出现的下标。 除此之外,还有另一种奇妙的思路,因为da...

    尾尾部落
  • APP创业者必知的7个API供应平台,任何数据需求都能满足

    编辑导语 我们都知道一句话“巧妇难为无米之炊”,数据源就是让数据产生价值中的那些大米。那大数据时代企业需要哪些数据呢?其实大部分数据源可以大致分为以下几类。 先...

    BestSDK
  • 如何从ERP下载Sales BOM到CRM

    BOM的抬头维护material 1419,在BOM的component部分维护另外两个material 1421和1422。

    Jerry Wang
  • 编程小知识之 Object.Destroy

    Object.Destroy 应该是 Unity 开发中最常用的函数之一了,对于该函数的一个基本认知是:

    用户2615200

扫码关注云+社区

领取腾讯云代金券