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.