簡體   English   中英

Android人像攝影機的可靠性

[英]Android portrait camera reliability

我正在開發針對應用程序的SDK 8,其中包含使用相機視圖的最小SDK 7。

顯然,存在旋轉攝影機肖像的問題,對此已經進行了大量討論。 我目前擁有將SDK 7和8+分開的以下修復程序:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.FROYO){
    theCamera.setDisplayOrientation(90);
} else {
    parameters.set("orientation", "portrait");
    parameters.set("rotation",90);
}

它在我擁有的2.1update1設備和SGS2上均可運行(運行ICS)。

我的問題是,這些解決方案在設備之間具有什么樣的可靠性? 我已經看到了一些針對“先驅”情況的解決方案,因此我懷疑該解決方案適用於所有設備。 我也想知道在不同設備上對'setdisplayorientation'的尊重程度如何...

聽到其他人對此的經驗,我將非常感激。


因此,更多信息: 如何正確設置Android攝像頭方向? 這說明這些方法有時會起作用。 因此,從什么時候開始(SDK版本)的另一個問題是setDisplayOrientation一直都在起作用嗎?

一種怪異的解決方案,並不是所有設備的方向都完全相同。 它完全取決於OEM,可以隨設備而異(我在許多設備上都嘗試過)。 您不能簡單地解決它。 在首次啟動時顯示帶有“相機預覽”的“活動”,然后僅詢問用戶所提議的輪播是否是他想要的,並允許他更改它。 根據用戶選擇,您可以進行處理。

我相信您的方法行之有效。 如果您認為該應用程序與設備無關,那么唯一可能要做的就是構建不同版本的APK。

我認為在api級別進行檢查不是解決此問題的正確方法。 檢查以下代碼以鎖定方向。

public static void lockRotation(final AndroidActivity activity) {
    Display display = ((WindowManager) activity.getSystemService(activity.WINDOW_SERVICE)).getDefaultDisplay();

    // Lock the rotation effect
    // For every 90 degrees we have an other orientation (not only landscape & portrait)
    if (Surface.ROTATION_0 == display.getOrientation()) {
        activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    } else if (Surface.ROTATION_270 == display.getOrientation()) {
        activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    } else if (Surface.ROTATION_90 == display.getOrientation()) {
        activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
    } else if (Surface.ROTATION_180 == display.getOrientation()) {
        activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM