En esta ocasió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