Compact Framework impostare o rilevare il volume del dispositivo mobile in VB.Net e C#

In questo articolo viene descritto come impostare e rilevare tramite le api di windows mobile, il volume di un dispositivo mobile, tramite i linguaggi di programmazione Visual Basic Net e C#.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

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.