在Android应用程序中阻止面部相机

时间:2015-11-05 15:50:15

标签: android webview camera crosswalk-runtime

我正在开发一款允许用户拍摄地点照片的应用。但是,我只会启用后置摄像头。与此应用程序的情况一样,使用自拍相机拍摄照片(脸部相机)并不是一种很酷的体验(相信我)。
该应用程序不是原生的。它是android内的webview。指向特定地址的网站 我想知道如何阻止自拍相机'这个程序 我在AndroidManifest.xml中尝试了一些选项,但没有成功 因为我试图做的是错误地强迫面部相机。而不是阻止它。
关注我的AndroidManifest.xml

错误在于:
<uses-feature android:name="android.hardware.camera.front" android:required="false" />

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.diego.android.crosswalkdemo" >

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera.front" android:required="false" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

1 个答案:

答案 0 :(得分:0)

您可以尝试使用 MediaStreamTrack.getSources() API选择特定的相机,根据&#34;面对&#34;获取前/后相机的ID。属性。

然后在传递给navigator.getUserMedia()API的约束对象中使用此ID来捕获该摄像头的输出。

var constraints;

MediaStreamTrack.getSources(function(sourceInfos) {
    var videoSourceId = null;
    for (var i = 0; i != sourceInfos.length; ++i) {
        var sourceInfo = sourceInfos[i];
        // find rear camera
        if (sourceInfo.kind == "video" && sourceInfo.facing == "environment") {
            videoSourceId = sourceInfo.id;
        }
    }
    constraints = {
        audio: false,
        video: {
          optional: [{sourceId: videoSourceId}]
        }
     }
});


navigator.getUserMedia(constraints,
    function(stream) {
       ...
    }

);