Blazor MAUI – Permisos de cámara y micrófono para Android
Estoy tratando de mostrar la transmisión en vivo de la cámara y el micrófono en el elemento HTML <video>
.
En el archivo de Blazor (sample.razor
) invoco un método para solicitar y mostrar el video:
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await base.OnAfterRenderAsync(firstRender);
if (firstRender)
{
await JSRuntime.InvokeVoidAsync("requestMediaAndShow");
}
}
En el archivo de javascript (sample.js
) solicito la transmisión y la asigno al elemento HTML de video.
// Crear opciones de solicitud
let options = {
audio: true,
video: true
};
// Solicitar medios al usuario
navigator.mediaDevices
.getUserMedia(options)
.then(gotLocalStream)
.catch(logError);
Pero cuando solicito la transmisión, obtengo un error como “NotAllowedError: Permiso denegado”.
El archivo AndroidManifest.xml
contiene:
<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
<uses-permission android:name="android.permission.CAMERA"></uses-permission>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"></uses-permission>
El archivo MainActivity.cs
contiene:
public class MainActivity : MauiAppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
ActivityCompat.RequestPermissions(this, new[] { Manifest.Permission.Camera, Manifest.Permission.RecordAudio, Manifest.Permission.ModifyAudioSettings }, 0);
}
}
¿Alguna idea de cómo solicitar el flujo de audio y video a través de JavaScript en BlazorWebView en Android nativamente? PD: Tanto en el sitio web como en Windows funciona perfectamente y no se requieren permisos adicionales.
davy.ai
Parece que el problema está relacionado con los permisos que no se han otorgado a la aplicación para acceder a la cámara y al micrófono. Ya has agregado los permisos necesarios en el archivo
AndroidManifest.xml
y los estás solicitando enMainActivity.cs
. Sin embargo, es posible que los permisos no se estén otorgando por alguna razón.Puedes intentar verificar si los permisos se han otorgado antes de solicitarlos nuevamente. Puedes usar el método
ActivityCompat.CheckSelfPermission
para verificar si los permisos se han otorgado.Aquí tienes un ejemplo:
Este código verifica si se han otorgado los permisos y los solicita solo si no se han otorgado. También puedes agregar una devolución de llamada para manejar el resultado de la solicitud de permisos y verificar si se otorgaron o no.
Este código maneja el resultado de la solicitud de permisos y verifica si se otorgaron o no.
Con estos cambios, deberías poder solicitar el flujo de audio y video mediante JavaScript en BlazorWebView de forma nativa en Android.