Jump to content


Please Help! Still can't play WAV file Smartphone

- - - - -

  • Please log in to reply
1 reply to this topic

#1
sagewithin

sagewithin

    Newbie

  • Members
  • Pip
  • 8 posts
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.


#2
sagewithin

sagewithin

    Newbie

  • Members
  • Pip
  • 8 posts
As it turns out, there was a problem with the WAV file.  It was set at an incompatible bit rate.  Once I changed the file to 11,025 Hz 16-bit (or 8-bit), it worked perfectly.

sagewithin, on Feb 20 2005, 23:18, said:

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:





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users