2015-11-05 85 views
0

我正在开发一个应用程序,允许用户拍照的地方。但是,我只会启用后置摄像头。就像这款应用程序一样,用“自拍相机”(脸部相机)拍照并不是一个很酷的体验(相信我)。
该应用程序不是本地的。它是android中的一个webview。指向位于特定地址的网站。
我想知道如何阻止这款应用程序的“自拍相机”。
我在AndroidManifest.xml中尝试了一些选项,但没有成功。
因为我试图做的是错误地强迫人脸相机。而不是阻止它。
按照我的AndroidManifest.xml在Android应用程序块脸相机

的错误是在这里:
<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> 
+0

你的应用程序使用'android.media.action.IMAGE_CAPTURE'意图拍照。在幕后,它实际上启动了一个外部摄像头应用程序,并且您几乎无法控制该应用程序将或不会执行的操作。但是,您可以分析您接收到的图像文件,并且(取决于相机应用程序),您可以验证它的EXIF标题表示照片是及时拍摄的,并使用后置相机。 –

+0

即使是在webview上运行的应用程序? –

+0

是否有任何策略可以放入主类或AndroidManifest中,强制使用后置摄像头? –

回答

0

你可以尽量选择使用MediaStreamTrack.getSources() API特定的摄像头,让前的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) { 
     ... 
    } 

);