c# - 在netcf C#中播放铃声期间振动

标签 c# windows-mobile compact-framework audio vibration

播放铃声时,我需要振动手机。

这是我的代码:

   public static bool PlaySound(string soundName)
    {
        try
        {
            WMPLib.WindowsMediaPlayer player = new WMPLib.WindowsMediaPlayer();
            string MediaFile = Assembly.GetExecutingAssembly().GetName().CodeBase.Substring(0, Assembly.GetExecutingAssembly().GetName().CodeBase.LastIndexOf("\\")) + "\\Resources\\" + soundName;
            player.URL = MediaFile;
            WindowsMediaPlayerClass wmp = new WindowsMediaPlayerClass();

            player.settings.volume = 100;
            player.controls.play();
            SetVibrate(true);
            System.Threading.Thread.Sleep((int)wmp.newMedia(MediaFile).duration*1000 + 100);
            SetVibrate(false);
            return true;
        }
        catch
        {
            return false;
        }
    }

我的问题是手机先振动,然后播放声音..在声音持续时间内不振动吗?

谢谢。

@ x86shadow:我尝试使用线程,但是不起作用:(
   public static bool PlaySound(string soundName)
    {
        try
        {
            // 29/11/2010 Luca - Aggiungo vibrazione durante il suono del messaggio.
            WMPLib.WindowsMediaPlayer player = new WMPLib.WindowsMediaPlayer();

            string MediaFile = Assembly.GetExecutingAssembly().GetName().CodeBase.Substring(0, Assembly.GetExecutingAssembly().GetName().CodeBase.LastIndexOf("\\")) + "\\Resources\\" + soundName;
            player.URL = MediaFile;
            WindowsMediaPlayerClass wmp = new WindowsMediaPlayerClass();

            player.settings.volume = 100;
            RingDuration = (int) wmp.newMedia(MediaFile).duration*1000 + 100;

            VibrateWhilePlayingThread = new Thread(VibrateWhilePlaying);


            VibrateWhilePlayingThread.Start();

            player.controls.play();

            VibrateWhilePlayingThread.Join();

            return true;
        }
        catch
        {
            return false;
        }
    }

    private static int RingDuration;

    public static Thread VibrateWhilePlayingThread;

    public static void VibrateWhilePlaying()
    {
        SetVibrate(true);
        System.Threading.Thread.Sleep(RingDuration);
        SetVibrate(false);

    }

最佳答案

添加一个EventHandler:

Player.PlayStateChanged += new AxWMPLib._WMPOCXEvents_PlayChangeEventHandler(player_PlayStateChange);

尝试创建一个事件:
    private void player_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
    {
        if (Player.playState == WMPLib.WMPPlayState.wmppsPlaying)
        {
            SetVibrate(true);
        }
        else
        {
            SetVibrate(false);
        }
    }

关于c# - 在netcf C#中播放铃声期间振动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4303803/

相关文章:

c# - 将字符串严格解析为枚举的最佳方法是什么?

c# - 如何在第二个线程上等待事件

c# - 如何打开图像并使用 C# .Net Compact Framework 编辑图像。

compact-framework - 如何为 .NET Compact Framework 设置 useUnsafeHeaderParsing

c# - 使用 p/invoke 的 Compact Framework 调用输入法选项

c# - 我需要一个解决方案来创建 xUnit 测试吗?

c# - 等待 Task.Run 与等待

.net - 2010 年对 .NET Compact Framework 的更新?

windows-mobile - PocketPC 相机控制问题

c++ - Windows Mobile C++ - 应用程序设计类型的问题