2015-11-05 92 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) { 
     ... 
    } 

);