Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

254
Vistas
Interactuar con el reproductor multimedia de "todo el sistema"

Quiero desarrollar una aplicación de música para Windows 10 y tengo curiosidad acerca de la interfaz proporcionada por Groove Music junto a la barra de volumen. He intentado buscar en Google para obtener más información al respecto, pero no he tenido ningún éxito en absoluto. Cuando estoy reproduciendo música en Groove Music y subo o bajo el volumen, el nombre, así como el artista y la carátula del álbum de la canción actual aparecen con controles de música al lado del indicador de volumen:

captura de pantalla

Me preguntaba cómo podría crear este cuadro de diálogo en mi propia aplicación y qué API de Windows tendría que buscar.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Voy a agregar mi aporte a esto a pesar de que ya hay una gran respuesta de @Stamos , porque descubrí que en realidad es posible usar SystemMediaTransportControls desde una aplicación nativa de Windows (no solo una aplicación universal).

En primer lugar, aún requiere una referencia a los archivos winmd universales, por lo que solo funcionará en Win10. Se ubicarán en el SDK 10, y puede agregarlos a través de Add Reference -> Browse , pero es posible que deba cambiar el filtro en la parte inferior derecha del cuadro de diálogo a "Todos los archivos" para que aparezcan. Se encuentran aquí en mi PC:

  • Windows.Foundation.UniversalApiContract :
    C:\Archivos de programa (x86)\Kits de Windows\10\Referencias\Windows.Foundation.UniversalApiContract\1.0.0.0\Windows.Foundation.UniversalApiContract.winmd
  • Windows.Foundation.FoundationContract :
    C:\Archivos de programa (x86)\Kits de Windows\10\Referencias\Windows.Foundation.FoundationContract\2.0.0.0\Windows.Foundation.FoundationContract.winmd

Una vez que tenga las referencias necesarias, se encontrará con otro problema: no puede acceder a los controles de transporte a través de SystemMediaTransportControls.GetForCurrentView(); (arrojará una excepción) porque en realidad no tiene una vista universal. Esto se alivia usando lo siguiente:

 SystemMediaTransportControls systemControls = BackgroundMediaPlayer.Current.SystemMediaTransportControls;

Después de esto, siéntase libre de usar cualquiera de las muestras en línea o la respuesta de Stamos.

over 4 years ago · Santiago Trujillo Denunciar

0

Necesita usar SystemMediaTransportControls

Aquí hay una configuración básica con Reproducir y Pausa. Si desea habilitar más controles, puede hacerlo utilizando las propiedades disponibles, por ej.

systemControls.IsNextEnabled = true;

y tienes que añadir la case en el interruptor de botón.

 case SystemMediaTransportControlsButton.Next: //handle next song break;

xml

 <MediaElement x:Name="mediaElement" Height="100" Width="100" AreTransportControlsEnabled="True"/>

C#

 public MainPage() { this.InitializeComponent(); systemControls = SystemMediaTransportControls.GetForCurrentView(); // Register to handle the following system transpot control buttons. systemControls.ButtonPressed += SystemControls_ButtonPressed; mediaElement.CurrentStateChanged += MediaElement_CurrentStateChanged; systemControls.IsPlayEnabled = true; systemControls.IsPauseEnabled = true; } private void MediaElement_CurrentStateChanged(object sender, RoutedEventArgs e) { switch (mediaElement.CurrentState) { case MediaElementState.Playing: systemControls.PlaybackStatus = MediaPlaybackStatus.Playing; break; case MediaElementState.Paused: systemControls.PlaybackStatus = MediaPlaybackStatus.Paused; break; case MediaElementState.Stopped: systemControls.PlaybackStatus = MediaPlaybackStatus.Stopped; break; case MediaElementState.Closed: systemControls.PlaybackStatus = MediaPlaybackStatus.Closed; break; default: break; } } void SystemControls_ButtonPressed(SystemMediaTransportControls sender, SystemMediaTransportControlsButtonPressedEventArgs args) { switch (args.Button) { case SystemMediaTransportControlsButton.Play: PlayMedia(); break; case SystemMediaTransportControlsButton.Pause: PauseMedia(); break; case SystemMediaTransportControlsButton.Stop: StopMedia(); break; default: break; } } private async void StopMedia() { await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { mediaElement.Stop(); }); } async void PlayMedia() { await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { if (mediaElement.CurrentState == MediaElementState.Playing) mediaElement.Pause(); else mediaElement.Play(); }); } async void PauseMedia() { await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { mediaElement.Pause(); }); }

Producción

Producción

Además, si desea que todo esto funcione en segundo plano, deberá hacer una Declaración en Package.appxmanifest para Tareas en segundo plano, habilitar el audio y agregar un punto de entrada como TestUWP.MainPage

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo Denunciar

0

<MediaElement x:Name="Media" AreTransportControlsEnabled="True"> <MediaElement.TransportControls> <MediaTransportControls Style="{StaticResource MediaTCStyle}"/> </MediaElement.TransportControls> </MediaElement>

El estilo es bastante grande, así que adjunto un enlace Estilos y plantillas de MediaTransportControls Obtuve el estilo del artículo (enlace anterior) y lo modifiqué en mi propio ResourceDictionary.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda