如何在 Symbian OS 上的 SMS 编写器中捕获用户击键,特别是对于诺基亚 N73(或任何 symbian 支持的设备http://en.wikipedia.org/wiki/Symbian_OS#Devices_that_have_used_the_Symbian_OS)?我是 symbian 开发的新手,我正在尝试编写一个应用程序来分析发送 SMS 的人的写作风格。任何信息(或朝着正确的方向推进)都会很棒。
非常感谢,
一种
如何在 Symbian OS 上的 SMS 编写器中捕获用户击键,特别是对于诺基亚 N73(或任何 symbian 支持的设备http://en.wikipedia.org/wiki/Symbian_OS#Devices_that_have_used_the_Symbian_OS)?我是 symbian 开发的新手,我正在尝试编写一个应用程序来分析发送 SMS 的人的写作风格。任何信息(或朝着正确的方向推进)都会很棒。
非常感谢,
一种
实际上,您可以捕获用于 Symbian OS 中任何应用程序的击键。
RWindowGroup::CaptureKey()
并RWindowGroup::CaptureLongKey()
允许您的可执行文件从任何应用程序中捕获密钥,无论您的应用程序是否在前台。但是,在这种情况下,这可能会变得乏味 - 这两个功能通过捕获特定的键码和修饰符组合来工作,因此您必须设置大量捕获来处理 SMS 编写器中的所有键组合。
一旦您的可执行文件捕获了事件,您还必须将事件传递给 SMS 编写器。虽然名义上可以使用RWsSession::SendEventToWindowGroup()
or TApaTask::SendKey()
,但涉及事件以正确的顺序到达(即按下键、键事件、按下键)和不同 FEP(前端处理器)的行为以供用户输入的复杂性。
因此,尽管按照上述要求做名义上是可行的,但实施和测试将被证明是乏味的,近乎冒险。如果您只想分析写作风格以收集数据(而不是在产品应用程序中),您最好编写自己的 SMS 编写器 - 诺基亚论坛网站上有很多关于编辑器和 SMS 发送的示例。
好吧,有几个级别可以回答您的问题。
击键实际上是由消息编辑器应用程序捕获的。因此,要么它提供了一个 API 来为你提供所有击键(你可以在http://forum.nokia.com上寻找一个。你会找到消息编辑器 API,但它主要是关于重用 GUI 控件和不是您要查找的内容),或者您需要自己的透明应用程序,该应用程序位于前台并捕获击键,然后再将其反馈给恰好在后面的任何应用程序。幸运的是(出于明显的安全原因),Symbian OS 不允许您这样做。
但是,当消息保存在手机内存中时,您可以让自己的应用程序读取消息:当它们保存在草稿文件夹或 SMS 发件箱中时。
强制性无耻插件:我建议阅读http://www.quickrecipesonsymbianos.com的消息传递章节,以了解如何使用 Symbian 消息存储
您感兴趣的类别是:CmsvEntry、CMsvSession、MMsvSessionObserver、CMsvOperation 和 CSmsClientMtm。
在相关的说明中——当我在我的 Symbian 手机上对其 API 感到沮丧时,是否有一个 API 可以检测到所有被按下的键?;-)