Android 8.0 में, उपयोगकर्ता स्क्रीन के अपने-आप दिशा बदलने (ऑटो-रोटेट) और पोर्ट्रेट ओरिएंटेशन में घुमाने की सुविधा के बीच टॉगल कर सकते हैं मोड, जिनमें Quicksettings टाइल या डिसप्ले सेटिंग का इस्तेमाल किया जा रहा हो. Android में 9, हमने पोर्ट्रेट रोटेशन मोड को पिन करके, डिवाइस की जगह बदलने पर भी मौजूदा स्क्रीन का रोटेशन. उपयोगकर्ता ट्रिगर कर सकते हैं नेविगेशन बार में नया बटन दबाकर जब ज़रूरत हो मैन्युअल रूप से घुमाना. हमने पोर्ट्रेट मोड का नाम बदलकर, रोटेशन लॉक कर दिया है. डिवाइस घुमाने पर यह चालू हो जाएगा बंद है. स्क्रीन के अपने-आप दिशा बदलने की सुविधा के मोड में कोई बदलाव नहीं हुआ है.
जब डिवाइस रोटेशन लॉक मोड में होता है, तो उपयोगकर्ता अपनी स्क्रीन को किसी भी डिवाइस पर लॉक कर सकते हैं
सबसे ऊपर और दिखने वाली गतिविधि (मौजूदा सिस्टम के हिसाब से) के हिसाब से रोटेशन की सुविधा
शर्तें). अगर शीर्ष गतिविधि को
स्क्रीन की ओरिएंटेशन अपने-आप बदलना (ऑटो-रोटेट) मोड पर सेट करना है, तो वही विकल्प, रोटेशन लॉक मोड में उपलब्ध होने चाहिए,
गतिविधि के screenOrientation
के आधार पर कुछ अपवादों के साथ
सेटिंग.
रोटेशन लॉक मोड, डिवाइस घुमाने पर नेविगेशन बार में बटन दिखाकर काम करता है
बदलाव. इसके लिए, डिवाइस का ओरिएंटेशन सेंसर चालू होना चाहिए
स्क्रीन के अपने-आप दिशा बदलने की सुविधा बंद होने पर भी ऐसा किया जा सकता है. इस बटन पर टैप करने से, उपयोगकर्ता के डेटा को घुमाने की सुविधा पहले से चालू हो जाती है
प्राथमिकता (Settings.System.USER_ROTATION
). WindowManager इसका इस्तेमाल करता है
इसमें आपकी प्राथमिकता के साथ-साथ, टॉप ऐक्टिविटी और सिस्टम की स्थिति से जुड़ी अन्य जानकारी भी शामिल होगी,
का इस्तेमाल करें. WindowManager उपयोगकर्ता रोटेशन का इस्तेमाल करना जारी रखता है
को प्राथमिकता देते समय यह तय करना कि सिस्टम को किस रोटेशन में रेंडर करना है
कोई अन्य गतिविधि चुनें.
गतिविधियों के बीच स्विच करते समय, उपयोगकर्ता रोटेशन प्राथमिकता बनाए रखनी चाहिए. हालांकि, फ़ोन इस्तेमाल करने वाले ज़्यादातर लोग कुछ समय के लिए ही लैंडस्केप मोड में रहना चाहते हैं, समयावधि के दौरान, हमने नैचुरल ओरिएंटेशन बायस को शामिल किया. उपयोगकर्ता रोटेशन प्राथमिकता को डिवाइस के नेचुरल ओरिएंटेशन पर रीसेट किया जाता है जब भी सिस्टम का रोटेशन डिवाइस के नैचुरल ओरिएंटेशन में बदल जाता है. ज़्यादातर फ़ोन के लिए, डिवाइस का नैचुरल ओरिएंटेशन पोर्ट्रेट (0o) है. उपयोगकर्ता रोटेशन रीसेट किया जा रहा है प्राथमिकता अक्सर तब होती है, जब आप सिर्फ़ पोर्ट्रेट ऐप्लिकेशन का इस्तेमाल करते हैं, फ़ोन लॉक करते हैं या लॉन्चर फ़ाइल फ़ोल्डर पर वापस भेजा जा रहा है.
पिछले एक दशक में, उपयोगकर्ताओं के लिए रोटेशन इंटरैक्शन में ज़्यादा बदलाव नहीं हुआ है. लोग रोटेशन के साथ उनके पिछले इतिहास को देखते हुए, इस सुविधा को खोजना मुश्किल हो सकता है और नेविगेशन बार में बटन की पोज़िशनिंग करें. इस वजह से, हमने 'घुमाएं' बटन का परिचय मोड पर टैप करें. यह बटन दिखने पर, उसे हाइलाइट करता है. जानकारी इस मोड में, बटन के सिर्फ़ शुरुआती कुछ इंटरैक्शन होते हैं. इसके बाद, परिचय मोड बंद है.
स्रोत
रोटेशन सुझावों के लिए समर्थन इसमें जोड़ दिया गया है Android 9. ज़्यादातर बदलाव इसमें शामिल हैं ये फ़ाइलें खोजी जाएंगी.
services/.../server/policy/PhoneWindowManager.java
:WindowOrientationListener
के आउटपुट का इस्तेमाल करने वाले हुक (MyOrientationListener
, निगरानी करने की ज़िम्मेदारी सेंसर यह पता लगाने के लिए कि डिवाइस को घुमाया गया है या नहींWindowOrientationListener
को तब भी ऐक्टिव रखता है, जब स्क्रीन के अपने-आप दिशा बदलने की सुविधा बंद है (needSensorRunningLp()
देखें)- उपयोगकर्ता के रोटेशन की प्राथमिकता के आधार पर, सिस्टम रोटेशन की गणना करता है, सबसे ऊपर
गतिविधि
screenOrientation
की सेटिंग और सिस्टम की स्थिति (rotationForOrientationLw()
देखें) - तय करें कि क्या शीर्ष गतिविधि किसी दिए गए घूर्णन पर घूम सकती है (देखें
isRotationChoicePossible()
)
SystemUI/.../statusbar/phone/NavigationBarFragment
:- यह तय करता है कि नेविगेशन बार बटन को घुमाने पर दिखाया जाना चाहिए या नहीं
PhoneWindowManager
से कॉलबैक के सुझाव (onRotationProposal()
देखें) - नेविगेशन बार को घुमाने का बटन कब छिपाएं (इसे देखने के लिए कॉल देखें
setRotateSuggestionButtonState(false)
) - बटन के टाइम आउट को हैंडल करता है. इसमें वह खास मामला भी शामिल है जब नेवबार छिपा हुआ है (सामान्यतया फ़ुल स्क्रीन में)
- डिवाइस की नैचुरल पर वापस लौटने पर उपयोगकर्ता की प्राथमिकता को रीसेट करता है
ओरिएंटेशन (
mRotationWatcher
) - नेविगेशन बटन के ऐनिमेशन के लिए सही स्टाइल चुनता है,
NavigationBarView
में लागू किया गया (onRotationProposal()
देखें) - खास तरह के ऐनिमेशन के साथ, परिचय मोड लॉजिक जोड़ता है
(इसके संदर्भ देखें
Settings.Secure.NUM_ROTATION_SUGGESTIONS_ACCEPTED
) - prevent2 रोटेशन फ़्लैग को लागू करता है (
disable()
देखें)
- यह तय करता है कि नेविगेशन बार बटन को घुमाने पर दिखाया जाना चाहिए या नहीं
SystemUI/.../statusbar/phone/NavigationBarView.java
:- लंबित घुमाव से मिलान करने के लिए शैलियां बटन आइकन एनिमेशन (देखें
updateRotateSuggestionButtonStyle()
) - बटन दिखने में होने वाले बदलावों को हैंडल करता है (देखें
setRotateButtonVisibility()
) में, छिपाने का लॉजिक शामिल है कुछ सुलभता सेवाएं चालू होने पर, 'घुमाएं' बटन (सबसे दाईं ओर मौजूद नेवबार बटन स्टैक रैंकिंग को ध्यान में रखा जाता है)
- लंबित घुमाव से मिलान करने के लिए शैलियां बटन आइकन एनिमेशन (देखें
SystemUI/res/layout/menu_ime.xml
:- 'घुमाएं' बटन के लिए एक नया
KeyButtonView
शामिल है, जो मेनू और IME/कीबोर्ड चूज़र के ऊपर, लेकिन सुलभता बटन
- 'घुमाएं' बटन के लिए एक नया
SystemUI/res/drawable/ic_sysbar_rotate_button.xml
:- को ऐनिमेट करने के लिए कॉम्प्लेक्स
AnimatedVectorDrawable
का इस्तेमाल किया जाता है नेविगेशन बार को घुमाने का बटन - स्टाइल (
SystemUI/res/values/styles.xml
में) का इस्तेमाल इन कामों के लिए किया जाता है घूर्णन के प्रारंभ और अंतिम कोण सेट करें ताकि समान ड्रॉएबल हो सके अलग-अलग शुरुआती और आखिरी रोटेशन को ऐनिमेट करने के लिए इस्तेमाल किया जाता है - आइकॉन टिनिंग को
TintedKeyButtonDrawable
के ज़रिए सेट किया गया
- को ऐनिमेट करने के लिए कॉम्प्लेक्स
लागू करना
Android 9 में सभी ज़रूरी बदलाव किए गए हैं रोटेशन सुझाव इसके लिए काम कर रहे हैं ऐसे डिवाइस जो सॉफ़्टवेयर नेविगेशन कुंजियों (वापस जाने, घर पर जाने वगैरह) का इस्तेमाल करते हैं.
डिवाइस बनाने वाली ऐसी कंपनियां जो पसंद के मुताबिक हार्डवेयर नेविगेशन कुंजियों का इस्तेमाल करके डिवाइस बनाती हैं इस सुविधा को लागू करने के लिए, सिस्टम यूआई को खुद डिज़ाइन और लागू करना होगा उसके लिए पैसे चुकाने होंगे या सुविधा को बंद करना होगा. यह सुझाव दिया जाता है कि जब डिवाइस मौजूदा सिस्टम के लिए 90o या 180o पर हो, तब इस्तेमाल करना आसान हो रोटेशन और तेज़ी से ऐक्सेस किया जा सकता है. इन वजहों से, सूचनाओं का इस्तेमाल (जैसा कि IME/कीबोर्ड पिकर पर किया जाता है) का सुझाव नहीं दिया जाता.
इस सुविधा को इस्तेमाल करने के लिए ज़रूरी हार्डवेयर और इसकी ज़रूरी शर्तें एक ही हैं स्क्रीन के अपने-आप दिशा बदलने की सुविधा का इस्तेमाल करने के लिए.
लागू करने की प्रक्रिया के लिए यह ज़रूरी है कि उपयोगकर्ता रोटेशन प्राथमिकता
(Settings.System.USER_ROTATION
) को डिवाइस के नैचुरल पर रीसेट कर दिया गया है
जब सिस्टम किसी वजह से डिवाइस के नैचुरल रोटेशन में बदल जाता है, तो डिवाइस को घुमाना
स्क्रीन के अपने-आप दिशा बदलने की सुविधा बंद होने पर. लागू किए गए तरीके से ऐसा होता है (देखें
NavigationBarFragment.mRotationWatcher
).
कुछ समय के लिए StatusBarManager.disable2
में नया फ़्लैग जोड़ा गया है
रोटेशन सुझावों को दिखने से रोकें. यहां जाएं:
StatusBarManager.DISABLE2_ROTATE_SUGGESTIONS
. यह फ़्लैग
सभी तरह के इस्तेमाल में इसका इस्तेमाल होता है, क्योंकि इसका इस्तेमाल ज़रूरी सिस्टम ऐप्लिकेशन में होता है. इनमें ये भी शामिल हैं
सेटअप विज़र्ड. लागू किया गया यह तरीका इसका समर्थन करता है (देखें
NavigationBarFragment.disable()
).
हमारा सुझाव है कि आप इस सुविधा को चालू करें और एओएसपी का पालन करें लागू किया जा सकता है. हमारा लक्ष्य रोटेशन अनुभव को एक जैसा बनाए रखना है साथ-साथ इस्तेमाल करने के दौरान, आज के दौर में ज़्यादातर फ़ोन स्क्रीन के अपने-आप दिशा बदलने और पोर्ट्रेट लॉक के बीच सेट करें.
पसंद के मुताबिक बनाएं
रोटेशन सुझाव केवल रोटेशन लॉक मोड में दिखाई देते हैं (अपने आप घुमाएं बंद),
से नए इंस्टॉल के लिए यह सुविधा डिफ़ॉल्ट रूप से चालू रखी जाए या नहीं, यह चुना जा सकता है
डिफ़ॉल्ट रूप से, स्क्रीन के अपने-आप दिशा बदलने की सुविधा को बंद करना चुनें. यहां जाएं:
def_accelerometer_rotation
इंच
डिफ़ॉल्ट बदलाव करने के लिए SettingsProvider/res/values/defaults.xml
.
अगर स्क्रीन के अपने-आप दिशा बदलने की सुविधा चालू है या नहीं, तो उपयोगकर्ता इसे आसानी से बदल सकते हैं (डिफ़ॉल्ट पर ध्यान दिए बिना) Quicksettings या Display सेटिंग में जाकर, घुमाएं टाइल की मदद से.
पुष्टि करें
जांच के लिए, गेटिंग का साइज़ बदलकर, इस सुविधा को बंद या चालू किया जा सकता है
Settings.Secure
वैल्यू. यह काम करके सबसे आसान है
विशेष अनुमति वाले adb इंस्टेंस से नीचे दिए गए कमांड का इस्तेमाल करें:
adb shell settings put secure show_rotation_suggestions <x>
x को बंद के लिए 0
और चालू के लिए 1
पर सेट करें.
टेस्टिंग के लिए, शुरुआती जानकारी मोड को रीसेट करने के लिए, संबंधित फ़ील्ड से
Settings.Secure
वैल्यू. यह काम करके सबसे आसान है
विशेष अनुमति वाले adb इंस्टेंस से नीचे दिए गए कमांड का इस्तेमाल करें:
adb shell settings put secure num_rotation_suggestions_accepted 0