来电播报





0/5 (0投票)
设备可以提供多种事件和有用的信息,以及它们的使用方式。
您可以从 Plantronics 设备获取多种事件和有用的信息,并了解它们的使用方式。
例如,一个易于实现但能提供大量信息的事件是 Don/Doff 事件(在我的 上一篇 文章中提到),当用户戴上或摘下耳机时触发。
在这个例子中,我利用了 Ramesh 关于来电显示 的一篇文章,并将其与 Skype API 和 Microsoft 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 服务中。