En esta o
casión nos enfocaremos a la programación en dispositivos móviles más específicamente en las Pocket PC, para esto daré por hecho que ya han desarrollado algún pequeño “hola mundo” en dicho dispositivo.
Ok perfecto para seguir con el “Tip” primero que nada les comento que esta idea de bajar o subir el volumen a la Pocket PC surgió de un amigo para un proyecto que ya está establecido y que se piensa mejorar.
Primero que todo diseñamos un formulario sencillo como el que se muestra en la imagen:

Bien, recordarles nada más que en mi caso yo al botón le puse el nombre de “bton_volumen” y a los RadioButton “rbt_01”, “rbt_02”, “rbt_03”, “rbt_04”, “rbt_05”, “rbt_06”, respectivamente ya que asi se hace referencia a 6 niveles de volumen, y al formulario le llame "Frm_principal”.
Una vez que diseñamos, primeramente importamos las siguientes librerías a como se muestra en el código siguiente.
Imports System Imports System.Linq Imports System.Collections.Generic Imports System.ComponentModel Imports System.Data Imports System.Drawing Imports System.Text Imports System.Windows.Forms
Perfecto, luego de esto declaramos los siguientes métodos que nos permitirán interactuar mediante la librería “coredll.dll” con el dispositivo, estas métodos van después de “Partial Public Class Form1” no al inicio del código, además si quieren saber más de esta librería no duden en preguntarle a Google que de una vez les adelanto tiene muchas funciones…
<System.Runtime.InteropServices.DllImport("coredll.dll", SetLastError:=True)> _
Public Shared Function waveOutSetVolume(ByVal device As IntPtr, ByVal volume As Integer) As Integer
End Function
<System.Runtime.InteropServices.DllImport("coredll.dll", SetLastError:=True)> _
Public Shared Function waveOutGetVolume(ByVal device As IntPtr, ByRef volume As Integer) As Integer
End Function
Ok en mi caso realice un método que retorna el nivel de volumen dependiendo del “RadioButton” seleccionado, acá el código..
Private Function nivel_volumen(ByVal nivel As Integer) As String Dim volumen As Integer Select Case nivel '' dependiendo del numero que se reciba por parametro Case 0 volumen = 0 ''no hay sonido Case 1 volumen = 858993459 'volumen bajo Case 2 volumen = 1717986918 'volumen normal Case 3 volumen = -1717986919 'volumen medio Case 4 volumen = -858993460 'volumen alto Case 5 volumen = -1 'volumen muy Alto End Select Return volumen End Function
Ok excelente solo queda el código que ira en el botón el cual se los muestro a continuación…
Private Sub bton_volumen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bton_volumen.Click If rbt_01.Checked = True Then waveOutSetVolume(IntPtr.Zero, nivel_volumen(0)) ' el 0 es para indicarle al case el nivel de volumen End If If rbt_02.Checked = True Then waveOutSetVolume(IntPtr.Zero, nivel_volumen(1)) End If If rbt_03.Checked = True Then waveOutSetVolume(IntPtr.Zero, nivel_volumen(2)) End If If rbt_04.Checked = True Then waveOutSetVolume(IntPtr.Zero, nivel_volumen(3)) End If If rbt_05.Checked = True Then waveOutSetVolume(IntPtr.Zero, nivel_volumen(4)) End If If rbt_06.Checked = True Then waveOutSetVolume(IntPtr.Zero, nivel_volumen(5)) End If End Sub
Una vez esto ejecutamos nuestro código veremos cómo interactuamos con el volumen de la PDA...

Acá todo el código del formulario completo:
Imports System
Imports System.Linq
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Partial Public Class Frm_principal
<System.Runtime.InteropServices.DllImport("coredll.dll", SetLastError:=True)> _
Public Shared Function waveOutSetVolume(ByVal device As IntPtr, ByVal volume As Integer) As Integer
End Function
<System.Runtime.InteropServices.DllImport("coredll.dll", SetLastError:=True)> _
Public Shared Function waveOutGetVolume(ByVal device As IntPtr, ByRef volume As Integer) As Integer
End Function
Private Sub bton_volumen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bton_volumen.Click
If rbt_01.Checked = True Then
waveOutSetVolume(IntPtr.Zero, nivel_volumen(0)) ' el 0 es para indicarle al case el nivel de volumen
End If
If rbt_02.Checked = True Then
waveOutSetVolume(IntPtr.Zero, nivel_volumen(1))
End If
If rbt_03.Checked = True Then
waveOutSetVolume(IntPtr.Zero, nivel_volumen(2))
End If
If rbt_04.Checked = True Then
waveOutSetVolume(IntPtr.Zero, nivel_volumen(3))
End If
If rbt_05.Checked = True Then
waveOutSetVolume(IntPtr.Zero, nivel_volumen(4))
End If
If rbt_06.Checked = True Then
waveOutSetVolume(IntPtr.Zero, nivel_volumen(5))
End If
End Sub
Private Function nivel_volumen(ByVal nivel As Integer) As String
Dim volumen As Integer
Select Case nivel '' dependiendo del numero que se reciba por parametro
Case 0
volumen = 0 ''no hay sonido
Case 1
volumen = 858993459 'volumen bajo
Case 2
volumen = 1717986918 'volumen normal
Case 3
volumen = -1717986919 'volumen medio
Case 4
volumen = -858993460 'volumen alto
Case 5
volumen = -1 'volumen muy Alto
End Select
Return volumen
End Function
End Class
Ok espero que este tip le ayude montones...
Hasta la Proxima :)






0 comentarios:
Publicar un comentario