2010-11-29 8 views
0

Ich muss das Telefon vibrieren, während ein Klingelton zu spielen.Vibrieren während des Spiels einen Klingelton in netcf C#

Dies ist mein Code:

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; 
     } 
    } 

Mein Problem ist, dass das Telefon FIRST Vibrieren, dann Klang abspielen .. ist nicht für die Dauer des Tons vibrieren possibile?

danke.

@ x86shadow: Ich mit Thread versucht, aber funktioniert nicht :(

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); 

    } 
+0

Sie möchten benutze dazu zwei Threads, einen für Vibration und einen für das Abspielen von Sound – fardjad

+0

@ x86shadow: könntest du mir ein Beispiel geben? – Leen15

+0

http://stackoverflow.com/questions/2533266/how-to-start-a-smartdevice-application-minimized-in-c/2544463#2544463 Dies ist nicht was Sie wollen, aber, kann helfen. Ich habe zwei Threads verwendet, wobei einer auf die Arbeit in einem anderen Thread wartet und beide laufen. – fardjad

Antwort

1

einen Eventhandler hinzu:

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

versuchen, ein Ereignis zu erstellen:

private void player_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e) 
    { 
     if (Player.playState == WMPLib.WMPPlayState.wmppsPlaying) 
     { 
      SetVibrate(true); 
     } 
     else 
     { 
      SetVibrate(false); 
     } 
    } 
+0

ich denke, diese Klasse ist für wp7, und nicht für Windows Mobile .. – Leen15

+0

ja, tut mir leid. Dieser Link ist für Windows Mobile 6.5: http://msdn.microsoft.com/en-us/library/bb416323.aspx – martinhodler

+0

hilft vielleicht dies: http://msdn.microsoft.com/en-us/library/bb158486. aspx – martinhodler

Verwandte Themen