使用Android Studio的webview时,无法在HTML文件中使用相机

问题描述 投票:0回答:1

我的目标是 在Android Studio中打开一个摄像头. 此外,我想做的是将摄像头的视图画面进行剪切和合并。但是上面的代码只是用于打开摄像机。

我正在尝试的方法是 制作一个HTML文件并将其嵌入到Android Studio的 "webview "元素中。. 由于我对Java不熟悉,我决定在应用中使用webview,并在html文件中写下摄像头的javascript代码。

下面是activity_main.java中的代码。

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
    tools:context="com.example.javascript_testing.MainActivity">

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.webkit.PermissionRequest" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>

MainActivity.java中的代码

package com.example.javascript_testing;

import androidx.appcompat.app.AppCompatActivity;
import android.webkit.WebView;
import android.webkit.WebSettings;

import android.os.Bundle;

public class MainActivity extends AppCompatActivity {
    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView = (WebView) findViewById(R.id.webView);
        webView.loadUrl("file:///android_asset/www/index.html");

        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setAllowFileAccessFromFileURLs(true);
        webSettings.setAllowUniversalAccessFromFileURLs(true);
    }
}

最后,HTML文件(路径:android_assetwwwindex.html)

<!DOCTYPE html>
<html>
<head>
    <title>TEST</title>
</head>
<body>
    <video id="video" width="640" height="480" autoplay></video>
    <canvas id="canvas" width="640" height="480"></canvas>
    <script>
            var video = document.getElementById('video');

            if(navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
                navigator.mediaDevices.getUserMedia({ video: true }).then(function(stream) {
                video.srcObject = stream;
                video.play();
                });
            }
            </script>
    </body>
</html>

我在google浏览器中打开HTML文件,它可以成功运行,但当我尝试在Android Studio中运行时,相机的显示屏幕无法加载(而不是播放默认图片的视频填充画布),因此我无法看到相机的录制内容。但是当我试图在Android Studio中运行它时,相机的显示屏幕无法加载(相反,一个播放默认图片的视频填充了画布),所以我无法看到相机的记录。

我有什么地方做错了吗?谢谢你。

[编辑]如果我没记错的话,我没有改变android studio项目文件夹中的任何其他文件,上面没有提到。

java html android-studio android-webview
1个回答
1
投票

来自 https:/developer.android.comguidetopicsmediacamera。

在使用相机API开始开发您的应用程序之前,您应该确保您的清单具有适当的声明,以允许使用相机硬件和其他相关功能。

Camera Permission - Your application must request permission to use a device camera.

<uses-permission android:name="android.permission.CAMERA" />

正如他们所说,你需要编辑你的manifest文件来使用相机。

© www.soinside.com 2019 - 2024. All rights reserved.