mercoledì 15 ottobre 2008

Eseguire un file audio, in ambiente smartdevice tramite CF 2.0 (VB.Net e C#)

Vi propongo un articolo pubblicato per il sito iprogrammatori http://www.iprogrammatori.it/articoli/programmazione/art_compact-framework-eseguire-un-file-audio_130.aspx riguardante la possibilità di eseguire file audio, in ambiente mobile, tramite il Compact Framework 2.0 con il linguaggio Visual Basic Net e C#.



In ambiente mobile, può essere utile utilizzare i file audio, nel formato .wav. In questo articolo vedremo come utilizzare le api di windows mobile, in particolare l'api PlaySound della dll coredll.


l'esempio utilizzato sarà per il dispositivo windows mobile smartphone, nella parte conclusiva dell'articolo è possibile scaricare il file di esempio utilizzato in questo articolo.


Creazione del progetto.


Si crea un nuovo progetto di tipo smart device, aggiungiamo al progetto un file audio di tipo .wav. Aggiungiamo due voci di menu, uno che avvia l'esecuzione del file audio ed il secondo, che blocca l'esecuzione del file audio, il tutto come mostrato in figura 1.



Figura 1


Stesura del codice


A questo punto non ci resta che scrivere il codice per eseguire il nostro file audio, per far si dobbiamo ricorrere alle funzioni api. Dobbiamo aggiungere a livello di form, la dichiarazione di api, la funzione che avrà il compito di eseguire il file audio.


Di seguito si riporta il frammento di codice delle suddette operazioni.


VB.Net


Declare Function PlaySound Lib "coredll.dll" (ByVal pszSound As String, ByVal hMod As IntPtr, ByVal fdwSound As Integer) As Integer


C#


[System.Runtime.InteropServices.DllImport("coredll.dll")]


static extern int PlaySound(string pszSound, IntPtr hMod, int fdwSound);


Sempre a livello di form, occorre creare delle costanti, che permettono di impostare l'avvio del suono, come il loop, ossia il suono in modalità continua.


Di seguito si riporta il frammento di codice delle suddette operazioni.


VB.Net


Const SND_SYNC As Integer = &H0


Const SND_ASYNC As Integer = &H1


Const SND_LOOP As Integer = &H8


Const SND_FILENAME As Integer = &H20000


C#


const int SND_FILENAME = 0x20000;


const int SND_SYNC = 0x0;


const int SND_ASYNC = 0x1;


const int SND_LOOP = 0x8;


La voce di menu con la scritta Avvia suono, dovrà avviare il file audio, in modalità loop.


Di seguito si riporta il codice di tale operazione.


VB.Net


Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem4.Click


Dim File As String = "\Program Files\DeviceSPSuono\brano.wav"


PlaySound(File, IntPtr.Zero, SND_FILENAME Or SND_ASYNC Or SND_LOOP)


End Sub


C#


private void menuItem3_Click(object sender, EventArgs e)


{


string file = "\\Program Files\\DeviceSPSuonoCS\\brano.wav";


PlaySound(file, IntPtr.Zero, SND_FILENAME SND_ASYNC SND_LOOP);


}



Per fermare l'esecuzione del suono, si richiama sempre la funzione di api playsound, ma questa volta come parametro, si passa null, per l'argomento dove e richiesto nome del file.


Di seguito si riporta il frammento di codice di tali operazioni.



VB.Net


Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click


PlaySound(Nothing, IntPtr.Zero, 0)


End Sub


C#


private void menuItem2_Click(object sender, EventArgs e)


{


PlaySound(null, IntPtr.Zero, 0);


}



Conclusioni.

Ora non ci resta che avviare il programma, ed eseguire il programma, come si è visto tramite l'utilizzo delle api di windows mobile, è possibile eseguire e fermare i file audio.

Tramite la parola download potete scaricare il file di esempio utilizzato nell'articolo.



Nessun commento: