For Programmers: Free Programming Magazines  


Home > Archive > Smartphone Developer Forum > February 2005 > Please Help! Still can't play WAV file on Smartphone









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Please Help! Still can't play WAV file on Smartphone
sagewithin

2005-02-20, 8:58 pm

Hi everyone:
I hope someone can help me with this as I don't understand what's going on.
I am trying to play a WAV file on the smartphone and can't get it to work for
the life of me. I want to play it from a resource file, but I can't even get
it to play from the a regular filename. Here's the code I'm using:

Public Class Sound
Private m_soundBytes() As Byte
Private m_fileName As String

Public Declare Function WCE_PlaySound Lib "CoreDll.dll" Alias "PlaySound"
(ByVal szSound As String, ByVal hMod As IntPtr, ByVal flags As Integer) As
Integer
Public Declare Function WCE_PlaySoundBytes Lib "CoreDll.dll" Alias
"PlaySound" (ByVal szSound() As Byte, ByVal hMod As IntPtr, ByVal flags As
Integer) As Integer

Private Enum Flags
SND_SYNC = &H0 ' play synchronously (default)
SND_ASYNC = &H1 ' play asynchronously
SND_NODEFAULT = &H2 ' silence (!default) if sound not found
SND_MEMORY = &H4 ' pszSound points to a memory file
SND_LOOP = &H8 ' loop the sound until next sndPlaySound
SND_NOSTOP = &H10 ' don't stop any currently playing sound
SND_NOWAIT = &H2000 ' don't wait if the driver is busy
SND_ALIAS = &H10000 ' name is a registry alias
SND_ALIAS_ID = &H110000 ' alias is a predefined ID
SND_FILENAME = &H20000 ' name is file name
SND_RESOURCE = &H40004 ' name is resource name or atom
End Enum

' Construct the Sound object to play sound data from the specified file.
Public Sub New(ByVal fileName As String)
m_fileName = fileName
End Sub

' Construct the Sound object to play sound data from the specified stream.
Public Sub New(ByVal stream As Stream)
' read the data from the stream
m_soundBytes = New Byte(stream.Length) {}
stream.Read(m_soundBytes, 0, Fix(stream.Length))
End Sub 'New

' Play the sound
Public Sub Play()
' If a file name has been registered, call WCE_PlaySound,
' otherwise call WCE_PlaySoundBytes.
If Not (m_fileName Is Nothing) Then
MessageBox.Show(WCE_PlaySound(m_fileName, IntPtr.Zero, Fix(Flags.SND_SYNC Or
Flags.SND_FILENAME)))
Else
MessageBox.Show(WCE_PlaySoundBytes(m_soundBytes, IntPtr.Zero,
Fix(Flags.SND_ASYNC Or Flags.SND_MEMORY)))
End If
End Sub
End Class

And then to call the sound file (as content):
Dim mySound As New Sound(dirProgram & "FANFAR1.WAV")
mySound.Play()

OR (this WAV file is an embedded resource)
Dim mySound As New
Sound([Assembly].GetExecutingAssembly().GetManifestResourceStream("myname.HIT.WAV"))
mySound.Play()

The function to play the sound file returns a 0, which I assume means it
didn't work. I don't get any errors or anything. The file just doesn't play.

As a side note, if I use the following, I AM able to get the function to
return 1 and the sound DOES play:
Dim mySound As New Sound("SystemAsterisk")
mySound.Play()

Does anyone have any idea why this isn't working?? Please help!

Thanks in advance.
Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2009 codecomments.com