Jump to content

Please Help! Still can't play WAV file Smartphone


Guest sagewithin

Recommended Posts

Guest sagewithin

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.

Link to comment
Share on other sites

Guest sagewithin

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.

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:

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.