[CF.Skills]Windows Mobile如何编程实现免提功能

本文介绍如何在Windows Mobile设备上通过托管代码触发扬声器实现免提功能,利用按键模拟来接听电话并开启扬声器。
摘要:本文阐述了如何在Windows mobile的设备上使用托管代码在来电时触发扬声器,间接实现免提的功能
Keywords
Windows Mobile,.NET CompactFramework,Speaker,keybd_event,C#

相关文章
http://www.cnblogs.com/fox23/archive/2008/02/15/phoneincoming.html
http://www.cnblogs.com/fox23/archive/2008/03/12/phonestate1.html

前提
你的WM设备必须支持扬声器,模拟器自然不行

首先,需要导入用于发送按键消息的本地函数
     class  NativeHelper
    
{
        
private const int KEYEVENTF_KEYUP = 0x0002;
        [DllImport(
"coredll.dll")]
        
private static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
        
/// <summary>
        
/// 模拟按键触发扬声器
        
/// </summary>

        public static void TriggleSpeaker()
        
{
            keybd_event((
byte)Keys.F16, 000);
            Thread.Sleep(
500);
            keybd_event((
byte)Keys.F16, 0, KEYEVENTF_KEYUP, 0);
        }

        
/// <summary>
        
/// 模拟按键接电话
        
/// </summary>

        public static void AcceptCall()
        
{
            keybd_event((
byte)Keys.F3, 000);
            Thread.Sleep(
500);
            keybd_event((
byte)Keys.F3, 0, KEYEVENTF_KEYUP, 0);
        }

    }

调用的时候:
            SystemState phonestate  =   new  SystemState(SystemProperty.PhoneIncomingCall);
            phonestate.Changed 
+=   new  ChangeEventHandler(phonestate_Changed);


        
void  phonestate_Changed( object  sender, ChangeEventArgs args)
        
{
            NativeHelper.AcceptCall();
            NativeHelper.TriggleSpeaker();
        }

论坛上也有相关问题,欢迎来做进一步的讨论:
http://forums.microsoft.com/china/ShowPost.aspx?PostID=3210021&SiteID=15
http://www.winbile.net/bbs/forums/threads/1036681.aspx

Enjoy it!

©Freesc Huang
  黄季冬<fox23>@HUST
  2008.04.27


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值