navigator.mediaDevices.getUserMedia не работает с Android 7 и Ioni c 1 - PullRequest
0 голосов
/ 26 апреля 2020

Я использую Иони c 1. Мое приложение отображает камеру в режиме реального времени с помощью предварительного просмотра камеры Cordova Plugin (9.0.0 (cordova-lib@9.0.1))

Я предпочитаю apk с этой командой со своего рабочего стола:

ionic cordova run android

Мой код работает очень хорошо с телефоном homtom, используя android 5 .

Но на моем Android 7 телефоне Doggee , это отображает большой треугольник , я даже не могу щелкнуть по нему, чтобы сделать снимок.

big triangle

Это мой код :

var videoElement = document.getElementById("video");
var videoSrc = undefined;

navigator.mediaDevices.enumerateDevices()
  .then(getDevices).then(getStream).catch(handleError);

function getDevices(deviceInfos) {
  for (var i = 0; i !== deviceInfos.length; ++i) {
    var deviceInfo = deviceInfos[i];
    if (deviceInfo.kind === 'videoinput') {
      videoSrc = deviceInfo.deviceId;
      break;
    }
  }
}

function getStream() {    
  navigator.mediaDevices.getUserMedia({
    video: {
      deviceId: {
        exact: videoSrc
      }
    }
  }).
  then(gotStream).catch(handleError);
}

function gotStream(stream) {
  videoElement.srcObject = stream;
}

function handleError(error) {
  console.log('Error: ', error);
}

И мой myproject / platform / android / app / src / amin / AndroidManifest. xml

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="io.ionic.starter" xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:networkSecurityConfig="@xml/network_security_config" android:supportsRtl="true">
        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
            <intent-filter android:label="@string/launcher_name">
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.cordovaplugincamerapreview.CameraActivity" android:screenOrientation="portrait" android:theme="@style/CameraPreviewTheme" />
    </application>
    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="28" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.RECORD_VIDEO" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-feature android:name="android.hardware.camera2.full" />
    <uses-feature android:name="android.hardware.camera2.autofocus" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-feature android:name="android.hardware.location.gps" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.webkit.PermissionRequest" />
    <uses-feature android:name="android.hardware.camera" android:required="true" />
</manifest>

Затем в моем \ myproject \ platform \ android \ app \ src \ main \ res \ xml \ config. xml У меня есть только эта функция камеры:

 <feature name="CameraPreview">
        <param name="android-package" value="com.cordovaplugincamerapreview.CameraPreview" />
        <param name="onload" value="true" />
    </feature>

Это ошибка в консоли телефона

Error:  DOMException: Could not start source 

РЕДАКТИРОВАТЬ: Окончательно решено частично: Мне нужно go в настройки приложения и дать ему доступ к камере. Я думал, что у меня есть разрешение в файле манифеста, но, похоже, он мне его не дал.

Скотт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...