2011-04-18 144 views
2

我一直在尋找一個解決方案,一段時間,並相信它,它的核心,是不可能的。攝像頭捕獲方位檢測

我想知道是否有人發現一個體面的黑客或繞行。

我的問題是這樣的:

我已經捕獲照片的應用程序,那麼該照片作爲畫布,用戶可以點擊到的地方標記。

標籤放置後,用戶上傳照片並將標籤提交給客戶端服務進行解析。

如果照片是在橫向拍攝的,我需要檢測橫向是左還是橫向,以便我可以在它到達畫布時以正確的方向顯示它,並在用戶更改時將其正確翻轉到相反的風景模式。

我怎樣才能捕捉照片拍攝的方向?

回答

1
function getOrientation(o) { 
    switch (o){ 
     case Titanium.UI.PORTRAIT: 
      return 'portrait'; 
     case Titanium.UI.UPSIDE_PORTRAIT: 
      return 'upside portrait'; 
     case Titanium.UI.LANDSCAPE_LEFT: 
      return 'landscape left'; 
     case Titanium.UI.LANDSCAPE_RIGHT: 
      return 'landscape right'; 
     case Titanium.UI.FACE_UP: 
      return 'face up'; 
     case Titanium.UI.FACE_DOWN: 
      return 'face down'; 
     case Titanium.UI.UNKNOWN: 
      return 'unknown'; 
     } 
    } 
} 

Ti.Gesture.addEventListener('orientationchange',function(e){ 
    Ti.API.info('Current Orientation: ' + getOrientation(Titanium.Gesture.orientation)); 
    var orientation = getOrientation(e.orientation); 
    Titanium.API.info(
     "orientation changed = "+orientation+", is  portrait?"+e.source.isPortrait()+", orientation = "+Ti.Gesture.orientation + "is landscape?"+e.source.isLandscape() 
    ); 
}); 

KS修改了一些,但應該做的伎倆。

本應該做上面什麼不

Titanium.Media.showCamera({ 
    success:function(event) { 
    var orientationWhilePictureTaken = Ti.Gesture.orientation; 
     // all other camera code... 
    } 
}); 
+0

也就是說,如果你旋轉設備工程目前的方向,我的問題是我需要的方向當圖像被捕獲時。每當設備方向改變時,上述內容都會改變。 – joseym 2011-04-18 17:52:08

+0

不,與應用拍攝的照片。我寫了一個類似於你所呈現的功能,但如果用戶改變方向,那麼返回改變。 – joseym 2011-04-18 18:06:09

+0

如果您在應用程序中拍攝照片,則可以使用「Ti.Gesture.orientation」捕捉方向,並將其保存在某個地方,然後在應用程序中拍攝每張照片以瞭解方向。 – bh88 2011-04-18 18:07:35

2

只要看看event.media高度和寬度至少確定縱向或橫向。這不會幫助你向哪個方向翻轉,但我不知道爲什麼你需要從捕捉中弄清楚。圖像保存爲正確的自然方向的風景照片,這樣你會簡單地把它旋轉到手機

Titanium.Media.showCamera({ 
    success: function(event) { 
     var isLandscape = event.media.width > event.media.height; 
    } 
} 
+0

是的,我已經在測試寬度是否大於高度。但是,這不允許我在屏幕更改時旋轉到適當的位置。 – joseym 2011-04-20 02:47:00