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

来电播报

2012年11月20日

CPOL

2分钟阅读

viewsIcon

18884

设备可以提供多种事件和有用的信息,以及它们的使用方式。

 

您可以从 Plantronics 设备获取多种事件和有用的信息,并了解它们的使用方式。

例如,一个易于实现但能提供大量信息的事件是 Don/Doff 事件(在我的 上一篇 文章中提到),当用户戴上或摘下耳机时触发。

在这个例子中,我利用了 Ramesh 关于来电显示 的一篇文章,并将其与 Skype APIMicrosoft Speech API 集成,以便在来电 Skype 电话和消息以及来电移动电话时播放通知。

首先,我将从通知部分开始,它可以很简单,例如

void Speak (String message)
{
     SpVoice Voice = new SpVoice();
     Voice.Speak(message);
}

现在,对于 Skype 部分,类似于 Spokes 事件,您必须注册以接收它们

            Skype skype = new Skype();
            if (!skype.Client.IsRunning)
            {
                skype.Client.Start();
            }

            ((_ISkypeEvents_Event)skype).CallStatus += new _ISkypeEvents_CallStatusEventHandler(SkypeCallStatusEventHandler);
            ((_ISkypeEvents_Event)skype).MessageStatus += new _ISkypeEvents_MessageStatusEventHandler(SkypeMessageStatusEventHandler);
            skype.Attach();

现在连接其他部分,用于来电 Skype 电话和消息

...
       SkypeCallStatusEventHandler(Call call, TCallStatus status)
...
            if (status == TCallStatus.clsRinging && 
                (call.Type == TCallType.cltIncomingP2P || call.Type == TCallType.cltIncomingPSTN))
                Speak(String.Format("Incoming call from {0}", call.PartnerDisplayName));

            
...
        SkypeMessageStatusEventHandler(ChatMessage message, TChatMessageStatus status)
...
            if (status == TChatMessageStatus.cmsReceived)
                Speak(String.Format("Incoming message from {0}", message.FromDisplayName));

同样适用于 Spokes 移动来电通知

           IATDCommand cmd = m_device.HostCommand as IATDCommand;
           String callerId = cmd.CallerID;
          Speak(String.Format("Incoming mobile call from {0}", callerId));

为了确保仅在用户佩戴设备时播放通知,我们额外记录设备的当前状态

           if (e.HeadsetStateChange == HeadsetStateChange.Don)  
               m_Don = true;  
           else if (e.HeadsetStateChange == HeadsetStateChange.Doff)  
               m_Don = false;

现在,让我们在 Speak 方法中使用它,仅在设备开启时才进行语音播报。

void Speak(String message)
{
     if (m_Don)
     {
...

     }
}

就这样了。非常简单明了,无需拿出手机或查看屏幕即可知道谁在呼叫您。只需从设备本身按下接听按钮即可。

现在,您可以继续实现自己的管家,在早上戴上耳机时告诉您当天的天气、日历和通勤路况——或者任何其他对您重要的信息,例如每天早上告诉您有多么出色。

本文由 Ricardo de Andrade 撰写。Ricardo 是 Plantronics 的系统架构师和推广者,致力于帮助开发者社区、客户和合作伙伴使用 Spokes SDK 构建围绕当前和未来产品解决方案。Ricardo 在软件和云分布式架构方面拥有丰富的经验,尤其是在电信领域。Ricardo 之前曾在 Microsoft 工作,帮助客户和合作伙伴开发基于云的语音识别应用程序,并将他们的 Web 服务集成到 Microsoft Tellme 服务中。

© . All rights reserved.