domenica 24 giugno 2007

Compact Framework impostare o rilevare il volume del dispositivo mobile, tramite visual basic net e C# in ambiente windows mobile

Articolo: Compact Framework impostare o rilevare il volume del dispositivo
mobile, tramite visual basic net e C# in ambiente windows mobile.


In questo articolo, vedremo come rilevare ed impostare il volume, in un
dispositivo mobile, in particolare per i pocketpc windows mobile 2003se,
utilizzando il linguaggio di programmazione Viaual Basic Net e C#.


Per impostare il volume, dobbiamo utilizzare l'api waveOutSetVolume
mentre per ottenere il volume occorre utilizzare la funzione api
waveOutGetVolume
della dll coredll.


Inserire lo spazio dei nomi


Inseriamo in un nuovo progetto per dispositivi mobile (pocketpc) lo spazio di
nomi per la gestione delle api di windows mobile, ossia il namespace InteropServices , di seguito si riporta
tale codice.


VB.Net



Imports System.Runtime.InteropServices



C#



using System.Runtime.InteropServices;



Creazione di un enumerazione e dichiarazione di api


Possiamo impostare il volume, in diverse modalità, alto, basso, molto alto,
ecc. a tal proposito dobbiamo crearci un enumerazione, o meglio una serie di
valori che indicano la tonalità del volume. Tale enumerazione va inserita a
livello di classe.


Di seguito si riporta il frammento di codice per le suddette operazioni:


VB.Net



'enumerazione per il volume



Public
Enum Volumes
As
Integer




OFF = 0


LOW = 858993459


NORMAL = 1717986918


MEDIUM = -1717986919


HIGH = -858993460


VERY_HIGH = -1



End
Enum




C#



//enumerazione per il volume



public
enum
Volumes :
int



{



OFF = 0,


LOW = 858993459,


NORMAL = 1717986918,


MEDIUM = -1717986919,


HIGH = -858993460,


VERY_HIGH = -1




}



Dopo aver creato i valori per la tonalità del volume, non ci resta che
inserire la dichiarazione delle api, in particolare per la funzione
waveOutSetVolume e waveOutGetVolume , tale codice va inserito a livello di
classe. Di seguito si riporta il frammento di codice delle suddette operazioni.


VB.Net



'definizione di api



Declare
Function waveOutSetVolume
Lib
"CoreDll.dll" (ByVal
device
As IntPtr,
ByVal volume
As
Integer)
As
Integer



Declare
Function waveOutGetVolume
Lib
"CoreDll.dll" (ByVal
device
As IntPtr,
ByRef volume
As
Integer)
As
Integer



C#



//definizione di api



[DllImport("coredll.dll",
SetLastError =
true)]


internal
static
extern
int waveOutSetVolume(IntPtr
device,
int volume);


[DllImport("coredll.dll",
SetLastError =
true)]


internal
static
extern
int waveOutGetVolume(IntPtr
device,
ref
int volume);



Impostare o rilevare il volume


Terminata la fase per il richiamo delle funzioni di sistema di windows
mobile, non ci resta che scrivere il codice per rilevare (tramite l'api
waveOutGetVolume ) o impostare (tramite l'api waveOutSetVolume ) il
volume del nostro dispositivo.


Nell'evento click di un pulsante o di una voce di menu, inseriamo il seguente
codice per impostare il volume con tonalità alta.


VB.Net



waveOutSetVolume(IntPtr.Zero, CType(Volumes.HIGH,
Integer))



C#



waveOutSetVolume(IntPtr.Zero,
(
int)Volumes.HIGH
);



Mentre per rilevare la tonalità del volume del nostro dispositivo, dobbiamo
utilizzare l'api waveOutGetVolume il quale accetta due valori, uno il
puntare del dispositivo, mentre il secondo, un valore numerico, indicante la
tonalità del volume.


Nell'evento click di un pulsante o di una voce di menu inseriamo il seguente
codice:


VB.Net



Dim intOttieni As
Integer = 0


waveOutGetVolume(IntPtr.Zero, intOttieni)


Dim StrVolume
As
String =
""



Select
Case intOttieni



Case
CType(Volumes.OFF,
Integer)



StrVolume = "OFF"




Case
CType(Volumes.LOW,
Integer)



StrVolume = "LOW"




Case
CType(Volumes.NORMAL,
Integer)



StrVolume = "NORMAL"




Case
CType(Volumes.MEDIUM,
Integer)



StrVolume = "MEDIUM"




Case
CType(Volumes.HIGH,
Integer)



StrVolume = "HIGH"




Case
CType(Volumes.VERY_HIGH,
Integer)



StrVolume = "VERY_HIGH"




Case
Else




StrVolume = "OFF"





End
Select



MessageBox.Show(StrVolume)



C#



int volume = (int)0;


waveOutGetVolume(IntPtr.Zero,
ref volume);


string sVolume =
"";


switch (volume)


{



case (int)Volumes.OFF:



sVolume = "OFF";


break;



case (int)Volumes.LOW:



sVolume = "LOW";


break;



case (int)Volumes.NORMAL:



sVolume = "NORMAL";


break;



case (int)Volumes.MEDIUM:



sVolume = "MEDIUM";


break;



case (int)Volumes.HIGH:



sVolume = "HIGH";


break;



case (int)Volumes.VERY_HIGH:



sVolume = "VERY_HIGH";


break;



default:



sVolume = "OFF";



break;



}


MessageBox.Show(sVolume);




Conclusione.


In questo articolo si è visto come utilizzando le api di windows mobile, per
impostare o rilevare le impostazioni del dispositivo mobile. Si fa presente che
tale codice si può utilizzare sia in ambiente windows mobile 2003 e sia nella
versione 5.0.



Nessun commento: