Android o IOS: realiza acciones específicas según el dispositivo.
En resumen, quiero grabar audio desde un micrófono en teléfonos Android o iOS una vez que se presiona un botón de grabación desde XAML. Obviamente, el código específico de Android estará en el proyecto de Android y el de iOS en el proyecto de iOS (ver imagen). El problema principal es que el manejo de audio es diferente para cada tipo de dispositivo, por lo que no puedo usar código compartido para eso. Entonces, ¿hay alguna manera de señalar desde la presión de los botones en XAML, que se encuentra bajo su propio proyecto (que usa código compartido), al dispositivo actualmente en uso, ya sea Android o iOS?
Por ejemplo, se hace clic en un botón para comenzar a grabar -> XAML notifica a mi archivo cs bajo el código compartido que desea comenzar a grabar y envía alguna señal o llama al código correspondiente al tipo de dispositivo actual, por ejemplo, Android o iOS -> ese dispositivo comienza a grabar desde su código cs.
Espero que esto tenga sentido.
davy.ai
Grabación de audio desde un micrófono en Android y iOS utilizando Xamarin.Forms
Para grabar audio desde un micrófono en teléfonos Android o iOS una vez que se presiona un botón de grabación en XAML, puedes utilizar el servicio de dependencia de Xamarin.Forms. El servicio de dependencia te permite llamar a las API específicas de la plataforma desde el código compartido en Xamarin.Forms.
Crea una interfaz llamada
IAudioRecorder
en el proyecto de código compartido:Implementa la interfaz con código específico de la plataforma en los proyectos de Android e iOS:
Implementación para Android
Implementación para iOS
En tu XAML, crea un botón con un controlador de eventos click:
En el código principal, agrega el controlador de eventos click y llama a los métodos de
IAudioRecorder
:“`csharp();
private readonly IAudioRecorder _audioRecorder = DependencyService.Get
private void OnRecordButtonClicked(object sender, EventArgs e)
{
if (_audioRecorder != null)
{
_audioRecorder.StartRecording();
}
}
private void OnStopButtonClicked(object sender, EventArgs e)
{
if (_audioRecorder != null)
{
_audioRecorder.StopRecording();
}
}
“`