在 Flutter Web 视图中启用摄像头和麦克风

Vib*_*era 6 android flutter

我是新来的扑腾。我正在使用 flutter 中的 Web 视图将现有的 Web 应用程序转换为移动应用程序。目标是首先使其在 Android 中运行。

我正在尝试在 flutter 移动应用程序中启用相机、麦克风选项,该应用程序已经在网络上运行。我正在为此使用webview_flutter:库。pubspec.yml

这是我下面使用的简单代码。

主程序.dart

import 'package:flutter/material.dart';
import 'package:samplewebviewapplication/webview.dart';
 
void main() => runApp(MyApp());
 
// ignore: use_key_in_widget_constructors
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Webview Project',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home:  const WebviewMobileApplication(),
      debugShowCheckedModeBanner: false,
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

网页视图.dart

import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
 
class samplewebviewapplication extends StatelessWidget {
  const samplewebviewapplication({Key? key}) : super(key: key);
 
  @override
  Widget build(BuildContext context) {
    return _buildWebView();
  }
 
  Widget _buildWebView() {
    return const WebView(
      javascriptMode: JavascriptMode.unrestricted,
      initialUrl: 'https://webrtc.github.io/samples/src/content/devices/input-output/',
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

安装后生成的 APK 无法打开摄像头或麦克风选项。我还在文件中添加了以下内容AndoroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.AUDIO_CAPTURE"/>
<uses-permission android:name="android.permission.CAMERA"/>
Run Code Online (Sandbox Code Playgroud)

目前网络摄像头或麦克风尚未启用。我发现需要在 flutter 中使用 Permissionhandler 为此。但只是看不到样品来开始。

我之前已经使用 InAppWebview从社区看到过这个解决方案,但它也没有帮助,代码使用该库呈现了很多问题。让我知道是否有更好的解决方案来处理这个问题。

Ayo*_*che 0

您需要请求相机和麦克风(如果需要)权限,例如使用permission_handler插件:

import 'package:permission_handler/permission_handler.dart';

Future main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Permission.camera.request();
  await Permission.microphone.request();

  runApp(MyApp());
}
Run Code Online (Sandbox Code Playgroud)

此外,您需要在 AndroidManifest.xml 文件中添加这些权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.VIDEO_CAPTURE" />
<uses-permission android:name="android.permission.AUDIO_CAPTURE" />
Run Code Online (Sandbox Code Playgroud)