亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Android上檢查設備自然(默認)方向

如何在Android上檢查設備自然(默認)方向

千萬里不及你 2019-11-30 13:44:46
我有一個活動顯示來自攝像機的預覽,因此僅需要將其設置為橫向。在底部(無論設備旋轉如何),我想顯示一個文本視圖。我正在使用OrientationEventListener,它從其自然位置給出設備的方向。我可以實現一個在縱向默認設備上運行良好的解決方案,但要使其在橫向默認設備上也可以運行,我需要知道在此類設備上運行。因此問題是如何檢查?
查看完整描述

3 回答

?
UYOU

TA貢獻1878條經驗 獲得超4個贊

此方法可以幫助:-


public int getDeviceDefaultOrientation() {


    WindowManager windowManager =  (WindowManager) getSystemService(Context.WINDOW_SERVICE);


    Configuration config = getResources().getConfiguration();


    int rotation = windowManager.getDefaultDisplay().getRotation();


    if ( ((rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180) &&

            config.orientation == Configuration.ORIENTATION_LANDSCAPE)

        || ((rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270) &&    

            config.orientation == Configuration.ORIENTATION_PORTRAIT)) {

      return Configuration.ORIENTATION_LANDSCAPE;

    } else { 

      return Configuration.ORIENTATION_PORTRAIT;

    }

}


查看完整回答
反對 回復 2019-11-30
?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

好吧,您可以找出@Urboss所說的當前方向是什么。您無法以這種方式獲取布局(橫向/縱向),因此您必須獲取屏幕寬度/高度才能檢查當前(是否已更改,但您已經檢查過;))位置是否為橫向。或肖像:


    DisplayMetrics dm = new DisplayMetrics();

    getWindowManager().getDefaultDisplay().getMetrics(dm);

    wPix = dm.widthPixels;

    hPix = dm.heightPixels;

(因此,如果旋轉角度為0,并且您獲得的景觀水平高于metrix,則您的設備為默認水平景觀。如果旋轉角度為90度并且您是縱向的,則默認情況下也為水平景觀,依此類推)


查看完整回答
反對 回復 2019-11-30
?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

經過數小時的嘗試來解決這個問題。這是不可能的。但是,您最能做的是將方向設置為“ NOSENSOR”


 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);

這將把您的應用程序設置為設備的自然方向。此時,您可以使用DisplayMetrics類獲取顯示的高度和寬度,并計算您是橫向還是縱向。然后確定是橫向還是縱向后,即可執行此操作


setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_XXXXX);


其中XXXX是LANDSCAPE或PORTRAIT。


如果您有滑出式鍵盤,則可能無法執行此操作。


查看完整回答
反對 回復 2019-11-30
  • 3 回答
  • 0 關注
  • 829 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號