অ্যান্ড্রয়েড অ্যাপ্লিকেশানগুলির জন্য একটি সামঞ্জস্য মোড সক্রিয় করে যা অভিযোজন বা পরিবর্তনযোগ্যতা সীমাবদ্ধতা ঘোষণা করে৷ সামঞ্জস্যতা মোড বড় স্ক্রীন ডিভাইস এবং ভাঁজযোগ্য ফ্লিপ ফোনগুলিতে গ্রহণযোগ্য অ্যাপ আচরণ নিশ্চিত করে তবে সাবঅপ্টিমাল ব্যবহারযোগ্যতার সাথে।
প্রতি-অ্যাপ ওভাররাইড ডিভাইস নির্মাতাদের ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে বা অ্যাপগুলিকে নির্দিষ্ট ডিভাইসে ভাঙা থেকে বিরত রাখতে অ্যাপ আচরণ পরিবর্তন করতে সক্ষম করে।
রেফারেন্স ডিভাইস
অস্বাভাবিক কনফিগারেশন বা অ্যাপ্লিকেশানগুলির দ্বারা সমর্থিত নয় এমন কনফিগারেশনগুলির কারণে নিম্নলিখিত ডিভাইসগুলির প্রতি-অ্যাপ ওভাররাইডের প্রয়োজন হতে পারে:
- ট্যাবলেট: পিক্সেল ট্যাবলেটের মতো কিছু ট্যাবলেটের প্রাকৃতিক অভিযোজন হল ল্যান্ডস্কেপ। যখন
Display#getRotation()
Surface.ROTATION_0
ফেরত দেয় তখন একটি ডিভাইস তার স্বাভাবিক অভিযোজনে থাকে। অ্যাপ্লিকেশানগুলি যদি ধরে নেয় যেROTATION_0
পোর্ট্রেট, অ্যাপ্লিকেশান লেআউট এবং ক্যামেরা প্রিভিউ ডিভাইস ডিসপ্লেতে অমিল হতে পারে৷ - ল্যান্ডস্কেপ ফোল্ডেবল: কিছু ভাঁজযোগ্য ডিভাইস, যেমন পিক্সেল ফোল্ড, ভাঁজ করার সময় পোর্ট্রেট ওরিয়েন্টেশনে থাকে, কিন্তু খোলা অবস্থায় ল্যান্ডস্কেপ ওরিয়েন্টেশন হয়। অ্যাপগুলি যদি ধরে নেয় যে উন্মোচিত অভিযোজনটি পোর্ট্রেট, ফ্লিকারিং লুপ বা লেআউট সমস্যা হতে পারে।
- ফোল্ডেবল ফ্লিপ ফোন: আনফোল্ড করা ফ্লিপ ফোন সাধারণত পোর্ট্রেট ওরিয়েন্টেশনে থাকে। কিন্তু, যখন ভাঁজ করা হয়, ফোনগুলিতে সাধারণত ল্যান্ডস্কেপ ওরিয়েন্টেশনে একটি ছোট ডিসপ্লে থাকে। অ্যাপ্লিকেশানগুলিকে অবশ্যই ডিসপ্লের বিভিন্ন অভিযোজন সনাক্ত করতে হবে এবং মিটমাট করতে হবে৷
সাধারণ সামঞ্জস্যের সমস্যা
অ্যাপ ওরিয়েন্টেশন সীমাবদ্ধতা, রিসাইজবিলিটি এবং অ্যাসপেক্ট রেশিও সীমাবদ্ধতা, ক্যামেরা প্রিভিউ ওরিয়েন্টেশনের ভুল হ্যান্ডলিং এবং অপব্যবহৃত API-এর কারণে অ্যাপগুলি প্রায়শই সামঞ্জস্যের সমস্যা অনুভব করে।
লেটারবক্সিং
লেটারবক্সিং অ্যাপটিকে স্ক্রিনের মাঝখানে বা, বড় স্ক্রিনে, সুবিধাজনক অ্যাক্সেসের জন্য একপাশে বা অন্য দিকে অবস্থান করে। ম্যাটস (কঠিন-রঙের বার বা ঝাপসা ওয়ালপেপার) অ্যাপের পাশে বা উপরে এবং নীচে অব্যবহৃত ডিসপ্লে এলাকা পূরণ করে।
লেটারবক্সিং প্রায়শই বড় স্ক্রীনের ডিভাইসগুলিতে ঘটে কারণ ডিভাইসের ডিসপ্লের মাত্রা এবং আকৃতির অনুপাত সাধারণত স্ট্যান্ডার্ড ফোনগুলির থেকে আলাদা হয়, যার জন্য বেশিরভাগ অ্যাপ ডিজাইন করা হয়েছে।
ইস্যু
অ্যাপটি সমস্ত ডিসপ্লে কনফিগারেশনকে সমর্থন করে না কারণ অ্যাপটির স্থির অভিযোজন, স্থির আকৃতির অনুপাত, বা পরিবর্তনযোগ্য নয়।
কনফিগারেশন সেটিংস যা অ্যাপের অভিযোজন এবং পুনরায় পরিবর্তনযোগ্যতা নিয়ন্ত্রণ করে তা নিম্নলিখিতগুলি অন্তর্ভুক্ত করে:
screenOrientation
: একটি অ্যাপের জন্য একটি নির্দিষ্ট অভিযোজন নির্দিষ্ট করে। অ্যাপ্লিকেশানগুলিActivity#setRequestedOrientation()
ব্যবহার করে রানটাইমে ওরিয়েন্টেশন সেট করতে পারে।resizeableActivity
: সিস্টেমটি বিভিন্ন মাত্রার উইন্ডোতে ফিট করার জন্য অ্যাপের আকার পরিবর্তন করতে পারে কিনা তা নির্দেশ করে। অ্যান্ড্রয়েড 11 (API লেভেল 30) এবং তার নিচে, অ্যাপগুলি মাল্টি-উইন্ডো মোড সমর্থন করে কিনা তা নির্দিষ্ট করে। Android 12 (API লেভেল 31) এবং উচ্চতর, ছোট স্ক্রিনে (কম্প্যাক্ট উইন্ডো সাইজ ক্লাস ) অ্যাপগুলি মাল্টি-উইন্ডো মোড সমর্থন করে কিনা তা নির্দিষ্ট করে। Android 12 এবং উচ্চতর সংস্করণে, অ্যাপগুলি এই সেটিং নির্বিশেষে বড় স্ক্রিনে (মাঝারি বা প্রসারিত উইন্ডো সাইজ ক্লাস) মাল্টি-উইন্ডো মোড সমর্থন করে।maxAspectRatio
: অ্যাপ দ্বারা সমর্থিত সর্বাধিক আকৃতির অনুপাত নির্দিষ্ট করে। শুধুমাত্রresizeableActivity
false
সেট করা অ্যাপইmaxAspectRatio
সেট করতে পারে।minAspectRatio
: অ্যাপ দ্বারা সমর্থিত ন্যূনতম আকৃতির অনুপাত নির্দিষ্ট করে। শুধুমাত্রresizeableActivity
সহ যে অ্যাপ্লিকেশানগুলিfalse
সেট করতে পারে সেগুলিminAspectRatio
সেট করতে পারে৷
অপ্টিমাইজেশান
অ্যাপের সমস্ত ডিভাইস এবং মাল্টি-উইন্ডো মোড প্রদর্শনের অভিযোজন এবং আকার সমর্থন করা উচিত। আপনার অ্যাপ লেআউট এবং অ্যাপ ম্যানিফেস্ট ফাইল থেকে সমস্ত ওরিয়েন্টেশন এবং ফিক্সড অ্যাসপেক্ট রেশিও সীমাবদ্ধতা সরিয়ে দিন।
সামঞ্জস্যপূর্ণ সমাধান
যদি স্থির অভিযোজন বা স্থির দৃষ্টিভঙ্গি অনুপাত সহ একটি অ্যাপ এমন একটি উইন্ডোতে চলে যেখানে অ্যাপটি সরাসরি উইন্ডোর আকার বা অভিযোজন সমর্থন করে না, তাহলে ধারাবাহিকতা রক্ষা করতে অ্যান্ড্রয়েড লেটারবক্স অ্যাপটিকে তৈরি করে।
Android 12 (API লেভেল 31) দিয়ে শুরু করে এবং 12L (API লেভেল 32) দিয়ে চালিয়ে যাওয়া, প্ল্যাটফর্মটি লেটারবক্সযুক্ত অ্যাপে বিভিন্ন ধরনের উন্নতি প্রয়োগ করে। ডিভাইস নির্মাতারা UI বর্ধিতকরণ বাস্তবায়ন করে। উন্নতিগুলি থেকে উপকৃত হওয়ার জন্য আপনাকে আপনার অ্যাপের জন্য কোনও অতিরিক্ত বিকাশ করতে হবে না।
অ্যান্ড্রয়েড 12 (এপিআই লেভেল 31) নিম্নলিখিত নান্দনিক উন্নতিগুলি প্রবর্তন করে, যা ডিভাইস নির্মাতাদের দ্বারা কনফিগার করা যেতে পারে:
- গোলাকার কোণগুলি: অ্যাপ উইন্ডোর কোণগুলি আরও পরিমার্জিত চেহারা।
- সিস্টেম বারের স্বচ্ছতা: স্ট্যাটাস এবং নেভিগেশন বার, যা অ্যাপকে ওভারলে করে, সেমিট্রান্সপারেন্ট, বারগুলিতে আইকনগুলিকে লেটারবক্সের পটভূমিতে সর্বদা দেখা যায়।
- কনফিগারযোগ্য আকৃতির অনুপাত: অ্যাপটির চেহারা উন্নত করতে অ্যাপের আকৃতির অনুপাত সামঞ্জস্য করা যেতে পারে।
12L (API স্তর 32) নিম্নলিখিত কার্যকরী উন্নতি যোগ করে:
কনফিগারেবল পজিশনিং: বড় স্ক্রিনে, ডিভাইস নির্মাতারা অ্যাপটিকে ডিসপ্লের বাম বা ডান দিকে রাখতে পারে, যা মিথস্ক্রিয়াকে সহজ করে তোলে।
পুনরায় ডিজাইন করা রিস্টার্ট বোতাম: ডিভাইস নির্মাতারা ব্যবহারকারীদের দ্বারা আরও ভাল স্বীকৃতির জন্য আকার সামঞ্জস্য মোডের জন্য পুনরায় চালু করার বোতামটিকে একটি নতুন চেহারা দিতে পারে।
অ্যান্ড্রয়েড 13 (এপিআই লেভেল 33) স্ক্রিনে লেটারবক্সযুক্ত অ্যাপের অবস্থান বা স্প্লিট-স্ক্রিন মোডে লেটারবক্স অন্তর্ভুক্ত করার বিষয়ে একটি ব্যবহারকারী শিক্ষা ডায়ালগ যোগ করে:
আকার সামঞ্জস্য মোড
আকার সামঞ্জস্যপূর্ণ মোড হল লেটারবক্সিং যাতে একটি পুনঃসূচনা নিয়ন্ত্রণ অন্তর্ভুক্ত থাকে। কন্ট্রোল ব্যবহারকারীদের অ্যাপ রিস্টার্ট করতে এবং ডিসপ্লে পুনরায় আঁকতে সক্ষম করে। অ্যানড্রয়েড এমন অ্যাপগুলির জন্য সাইজ সামঞ্জস্যতা মোড আহ্বান করে যেগুলি অ-আবর্তনযোগ্য হতে নির্ধারিত হয়। যখন কোনো অ্যাক্টিভিটি এমন একটি ডিসপ্লে কন্টেইনারে চলে যায় যা অ্যাক্টিভিটির মাত্রার সাথে সামঞ্জস্যপূর্ণ নয়, তখন সিস্টেম অ্যাপটিকে রিস্কেল করতে পারে ডিভাইস ডিসপ্লেটি অন্তত একটি ডাইমেনশনে পূরণ করতে।
ডিভাইস কনফিগারেশন পরিবর্তন যা আকার সামঞ্জস্য মোড ট্রিগার করতে পারে নিম্নলিখিত অন্তর্ভুক্ত:
- ডিভাইস ঘূর্ণন
- ভাঁজযোগ্য ডিভাইস ভাঁজ করা বা প্রকাশ করা
- পূর্ণ স্ক্রীন এবং স্প্লিট-স্ক্রীন প্রদর্শন মোডগুলির মধ্যে পরিবর্তন করুন
ইস্যু
আকারের সামঞ্জস্য মোড সাধারণত এমন ক্রিয়াকলাপগুলিতে প্রযোজ্য যা অভিযোজন বা আকৃতির অনুপাতের মধ্যে সীমাবদ্ধ এবং অ-আকারযোগ্য হতে কনফিগার করা (বা সিস্টেম দ্বারা নির্ধারিত)।
আপনার অ্যাপ্লিকেশানটি আকার পরিবর্তনযোগ্য বলে বিবেচিত হয়-এবং এটি আকারের সামঞ্জস্য মোডে স্থাপন করা হবে না-যদি এটি নিম্নলিখিত মানদণ্ডগুলির যেকোনো একটি পূরণ করে:
-
resizeableActivity="true"
দিয়ে পুনরায় আকার দেওয়া যায় - পিকচার-ইন-পিকচার (পিআইপি) মোড সমর্থন করে
- এমবেড করা হয়
- ডিভাইস প্রস্তুতকারকের দ্বারা প্রয়োগ করা
FORCE_RESIZE_APP
প্রতি-অ্যাপ ওভাররাইড আছে (অ্যাপ দ্বারা সেট করা বৈশিষ্ট্যগুলি উপেক্ষা করা হয়)
যদি আপনার অ্যাপ কোনো শর্ত পূরণ না করে , তাহলে এটিকে রিসাইজ করা যাবে না বলে মনে করা হয় এবং সাইজ কম্প্যাটিবিলিটি মোডে রাখা যেতে পারে।
অপ্টিমাইজেশান
অ্যাপের সকল ডিসপ্লে মাপ সমর্থন করা উচিত। অ্যাপ ম্যানিফেস্টে <activity>
বা <application>
এলিমেন্টের android:resizeableActivity
অ্যাট্রিবিউটটিকে true
হিসাবে সেট করে আপনার অ্যাপকে পুনরায় আকারে পরিণত করুন। আপনার অ্যাপের জন্য প্রতিক্রিয়াশীল/অভিযোজিত লেআউট ডিজাইন করুন। আরও তথ্যের জন্য, দেখুন বিভিন্ন ডিসপ্লে সাইজ সমর্থন করুন এবং মাল্টি-উইন্ডো মোড সমর্থন করুন ।
সামঞ্জস্যপূর্ণ সমাধান
অ্যান্ড্রয়েড একটি অ্যাপকে সাইজ কম্প্যাটিবিলিটি মোডে রাখে যখন সিস্টেম লেটারবক্সড অ্যাপের ডিসপ্লে নির্ধারণ করে অন্তত একটি ডাইমেনশনে ডিসপ্লে উইন্ডো পূরণ করতে অ্যাপটিকে রিস্কেল করে উন্নত করা যেতে পারে। সিস্টেমটি একটি পুনঃসূচনা নিয়ন্ত্রণ প্রদর্শন করে যা অ্যাপ প্রক্রিয়াটি পুনরায় তৈরি করে, কার্যকলাপ পুনরায় তৈরি করে এবং প্রদর্শনটি পুনরায় অঙ্কন করে। এছাড়াও প্রসেস এবং থ্রেড ওভারভিউ দেখুন।
ঝিকিমিকি লুপ
যখন একটি অ্যাপ সমস্ত ডিসপ্লে ওরিয়েন্টেশন সমর্থন করে না, তখন কনফিগারেশনের পরিবর্তন ঘটলে এটি বারবার নতুন ওরিয়েন্টেশনের অনুরোধ করতে পারে, একটি অসীম লুপ তৈরি করে যা ডিসপ্লে ফ্লিকার করে বা অ্যাপটিকে অবিরামভাবে ঘোরে।
ইস্যু
অ্যান্ড্রয়েড 12 (এপিআই স্তর 31) এবং উচ্চতর, ডিভাইস নির্মাতারা তাদের ডিভাইসগুলিকে অ্যাপগুলির দ্বারা নির্দিষ্ট করা অভিযোজন বিধিনিষেধ উপেক্ষা করতে কনফিগার করতে পারে এবং পরিবর্তে সামঞ্জস্য মোডগুলি প্রয়োগ করতে পারে। উদাহরণস্বরূপ, একটি ভাঁজযোগ্য ডিভাইস একটি কার্যকলাপের android:screenOrientation="portrait"
সেটিং উপেক্ষা করতে পারে যখন কার্যকলাপটি ডিভাইসের ল্যান্ডস্কেপ ট্যাবলেট-আকার, ভিতরের স্ক্রিনে প্রদর্শিত হয়।
যদি কোনো অ্যাপের ওরিয়েন্টেশন সীমাবদ্ধতা উপেক্ষা করা হয়, তাহলে অ্যাপ্লিকেশানটি Activity#setRequestedOrientation()
কল করে প্রোগ্রাম্যাটিকভাবে তার ওরিয়েন্টেশন সেট করতে পারে। অ্যাপটি কনফিগারেশন পরিবর্তনগুলি পরিচালনা না করলে কলটি একটি অ্যাপ পুনরায় চালু করতে ট্রিগার করে (দেখুন কনফিগারেশন পরিবর্তনগুলি পরিচালনা করুন )। পুনঃসূচনা করার পরে, অ্যাপটির অভিযোজন সীমাবদ্ধতা আবার উপেক্ষা করা হয়, অ্যাপটি setRequestedOrientation()
এ কলটি পুনরাবৃত্তি করে, কলটি একটি অ্যাপ পুনরায় চালু করে এবং তাই একটি স্ব-স্থায়ী লুপে।
আরেকটি উপায় হল আপনি এটির সম্মুখীন হতে পারেন যখন একটি ডিভাইসের স্ক্রীনের প্রাকৃতিক অভিযোজন (Android দ্বারা নির্ধারিত স্বাভাবিক অভিযোজন) হল ল্যান্ডস্কেপ (অর্থাৎ, Display#getRotation()
কল করলে সারফেস. Surface.ROTATION_0
ফিরে আসে যখন ডিভাইসটির একটি ল্যান্ডস্কেপ অনুপাত থাকে)। ঐতিহাসিকভাবে, অ্যাপ্লিকেশানগুলি ধরে নিয়েছে যে Display.getRotation() = Surface.ROTATION_0
মানে ডিভাইসটি পোর্ট্রেট ওরিয়েন্টেশনে আছে, কিন্তু এটি সবসময় হয় না, উদাহরণস্বরূপ, কিছু ভাঁজযোগ্য ডিভাইসের ভিতরের স্ক্রিনে এবং কিছু ট্যাবলেটে৷
একটি ভাঁজযোগ্য অভ্যন্তরীণ ডিসপ্লেতে ল্যান্ডস্কেপ ওরিয়েন্টেশনে একটি অ্যাপ, স্ক্রিন ঘূর্ণন চেক করতে পারে, ROTATION_0
এর একটি মান পেতে পারে, ডিভাইসের স্বাভাবিক অভিযোজনটি প্রতিকৃতি বলে ধরে নিতে পারে এবং অ্যাপ লেআউটটি পুনরায় কনফিগার করতে setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
)
কল করতে পারে৷ অ্যাপটি পুনরায় চালু হওয়ার পরে (ল্যান্ডস্কেপ অভিযোজনে), এটি আবার স্ক্রিন ঘূর্ণন পরীক্ষা করতে পারে, ROTATION_0
এর একটি মান পেতে পারে, setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
কল করতে পারে এবং অসীম লুপ চালিয়ে যেতে পারে।
অপ্টিমাইজেশান
অ্যাপগুলিকে নিম্নলিখিতগুলি করা উচিত নয় :
- অ্যাক্টিভিটি
onCreate()
পদ্ধতিতেActivity#setRequestedOrientation()
এর সাথে একটি ডিফল্ট ওরিয়েন্টেশন সেট করুন কারণ অনির্বাচিত কনফিগারেশন পরিবর্তনের মাধ্যমে ওরিয়েন্টেশন অনুরোধটি অপ্রত্যাশিতভাবে ট্রিগার হতে পারে - অনুমান করুন যে ডিভাইসের প্রাকৃতিক অভিযোজন (
ROTATION_0
) হল প্রতিকৃতি৷ -
Display#getRotation()
, একটিFoldingFeature
এর উপস্থিতি , অথবা deprecated APIs এর মতো বর্তমান উইন্ডোর আকারের সাথে সম্পর্কিত নয় এমন সংকেতগুলির উপর ভিত্তি করে স্থিতিবিন্যাস সেট করুন৷
সামঞ্জস্যপূর্ণ সমাধান
অ্যান্ড্রয়েড নিম্নলিখিত পরিস্থিতিতে Activity#setRequestedOrientation()
এ কলগুলিকে উপেক্ষা করে:
ক্রিয়াকলাপটি ইতিমধ্যে পদ্ধতিতে পূর্ববর্তী কল থেকে পুনরায় চালু করা হয়েছে বা ক্যামেরা কম্প্যাট ফোর্স রোটেশন ট্রিটমেন্ট সক্ষম করা হয়েছে (নীচে ক্যামেরা পূর্বরূপ দেখুন)।
ডিভাইস নির্মাতারা
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION
এর সাথে একটি অ্যাপে এই আচরণটি প্রয়োগ করতে পারে।ক্রিয়াকলাপটি এক সেকেন্ডে দুটির বেশি অভিযোজন অনুরোধ করেছে, যা নির্দেশ করে যে একটি লুপ ঘটেছে৷ লুপে থাকা দুটি অনুরোধের মধ্যে, অ্যান্ড্রয়েড এমন একটি ব্যবহার করে যা অ্যাপ প্রদর্শনের ক্ষেত্রটিকে সর্বাধিক করে তোলে।
ডিভাইস নির্মাতারা
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
এর সাথে একটি অ্যাপে এই আচরণটি প্রয়োগ করতে পারে।
ক্যামেরা প্রিভিউ
ক্যামেরা অ্যাপের ক্যামেরা প্রিভিউ (বা ভিউফাইন্ডার) ট্যাবলেট, ল্যাপটপ এবং ফোল্ডেবল ডিসপ্লেতে ভুলভাবে সারিবদ্ধ বা বিকৃত হতে পারে।
ইস্যু
অ্যান্ড্রয়েড কম্প্যাটিবিলিটি ডেফিনিশন ডকুমেন্টে বলা হয়েছে যে একটি ক্যামেরা ইমেজ সেন্সর "অবশ্যই ওরিয়েন্টেড হতে হবে যাতে ক্যামেরার লম্বা ডাইমেনশন স্ক্রিনের লম্বা ডাইমেনশনের সাথে সারিবদ্ধ হয়।"
অ্যাপ্লিকেশানগুলি প্রায়শই ধরে নেয় যে ডিভাইসের অভিযোজন এবং ক্যামেরা সেন্সর অভিযোজন হল প্রতিকৃতি—মানক মোবাইল ফোনে একটি যুক্তিসঙ্গত অনুমান৷ কিন্তু ট্যাবলেট এবং ল্যাপটপ এবং তাদের ক্যামেরা সেন্সরগুলির প্রাকৃতিক অভিযোজন ল্যান্ডস্কেপ হতে পারে। এছাড়াও, ফোল্ডেবলের মতো নতুন ফর্ম ফ্যাক্টরগুলিতে একাধিক প্রাকৃতিক অভিযোজন এবং বিভিন্ন অভিযোজনে একাধিক ক্যামেরা সেন্সর থাকতে পারে।
অ্যাপটি আশা করে না এমন একটি ক্যামেরা ওরিয়েন্টেশনের সাথে একটি কার্যকলাপ শুরু করা বা বিভিন্ন ক্যামেরা বা ডিভাইসের স্ক্রীনের মধ্যে (ভাঁজযোগ্যগুলির জন্য) স্যুইচ করার ফলে ক্যামেরার প্রিভিউ ভুল বা বিকৃত হতে পারে।
অপ্টিমাইজেশান
একটি সঠিকভাবে সারিবদ্ধ এবং স্কেল করা ক্যামেরা প্রিভিউ উপস্থাপন করতে ক্যামেরা অ্যাপগুলিকে অবশ্যই ডিভাইসের অভিযোজন এবং ক্যামেরা সেন্সর অভিযোজন সঠিকভাবে সনাক্ত ও পরিচালনা করতে হবে। অ্যাপগুলিকে অবশ্যই ডিভাইসের ঘূর্ণন, সেন্সর ঘূর্ণন, এবং স্ক্রীন বা উইন্ডোর আকৃতির অনুপাত গণনা করতে হবে এবং তারপরে ক্যামেরা প্রিভিউতে ফলাফলগুলি প্রয়োগ করতে হবে। বিস্তারিত নির্দেশনার জন্য, ক্যামেরা প্রিভিউ এবং ক্যামেরা ভিউফাইন্ডার প্রবর্তন দেখুন।
সামঞ্জস্যপূর্ণ সমাধান
Display#getRotation()
যখন Surface.ROTATION_0
ফেরত দেয় তখন একটি ডিভাইস প্রাকৃতিক অভিযোজনে থাকে।ROTATION_0। সিস্টেমটি ডিভাইসের প্রাকৃতিক অভিযোজন থেকে CameraCharacteristics.SENSOR_ORIENTATION
. SENSOR_ORIENTATION গণনা করে৷ অ্যান্ড্রয়েড পোর্ট্রেট-সীমাবদ্ধ অ্যাপের পোর্ট্রেট উইন্ডোকে ডিভাইসের স্বাভাবিক অভিযোজনের সাথে সারিবদ্ধ করে, যা বেশিরভাগ অ্যাপ আশা করে। অ্যান্ড্রয়েড ক্যামেরা সেন্সর ইমেজ ক্রপ করে যখন সেন্সর ওরিয়েন্টেশন ল্যান্ডস্কেপ হয় এবং ক্যামেরা প্রিভিউ পোর্ট্রেট হয়। নির্দিষ্ট সমাধানের মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:
পোর্ট্রেট-সীমাবদ্ধ অ্যাপগুলির জন্য জোর করে ঘোরান ক্যামেরা প্রিভিউ: পোর্ট্রেট অভিযোজনে সীমাবদ্ধ অ্যাপগুলি ডিভাইসের স্বাভাবিক অভিযোজন এবং ক্যামেরা সেন্সর অভিযোজন পোর্ট্রেট হওয়ার আশা করে৷ যাইহোক, অ্যান্ড্রয়েড 12 (এপিআই লেভেল 31) এবং উচ্চতর, ডিভাইস নির্মাতারা ওরিয়েন্টেশন স্পেসিফিকেশন উপেক্ষা করলে অ্যাপগুলি একাধিক ডিভাইস ওরিয়েন্টেশনে চলতে পারে।
যখন একটি পোর্ট্রেট-সীমাবদ্ধ অ্যাপ ক্যামেরার সাথে সংযুক্ত থাকে, তখন অ্যান্ড্রয়েড ফোর্স অ্যাপটিকে ঘোরায় যাতে অ্যাপের প্রতিকৃতি উইন্ডোটিকে ডিভাইসের স্বাভাবিক অভিযোজনের সাথে সারিবদ্ধ করা যায়।
কিছু ট্যাবলেটে ( রেফারেন্স ডিভাইসগুলি দেখুন), ডিভাইসের প্রাকৃতিক অভিযোজনের সাথে সারিবদ্ধ করতে অ্যাপ পোর্ট্রেট উইন্ডোটি পূর্ণ স্ক্রীন প্রতিকৃতিতে ঘোরানো হয়। ফোর্স রোটেশনের পরে অ্যাপটি পূর্ণ স্ক্রীন দখল করে।
ফোল্ডেবলের ল্যান্ডস্কেপ অভ্যন্তরীণ স্ক্রিনে ( রেফারেন্স ডিভাইসগুলি দেখুন), পোর্ট্রেট-শুধুমাত্র ক্রিয়াকলাপগুলিকে ল্যান্ডস্কেপে ঘোরানো হয় যাতে উদ্ভাসিত প্রাকৃতিক স্থিতির সাথে সারিবদ্ধ করা হয়। ফোর্স রোটেশনের পরে অ্যাপটি লেটারবক্সযুক্ত।
ইনার ফ্রন্ট ক্যামেরা ক্রপিং: কিছু ফোল্ডেবলের ভিতরের ফ্রন্ট ক্যামেরা সেন্সর ল্যান্ডস্কেপ ওরিয়েন্টেশনে থাকে। ফোল্ডেবল ইনার ডিসপ্লেতে ক্যামেরা প্রিভিউ জোর করে ঘোরানোর পাশাপাশি, অ্যান্ড্রয়েড ভিতরের ফ্রন্ট (ল্যান্ডস্কেপ) ক্যামেরা ফিল্ড অফ ভিউ ক্রপ করে যাতে সেন্সরটি ডিভাইস ওরিয়েন্টেশনের বিপরীত একটি ভিউ ক্যাপচার করে।
ফোর্স রিফ্রেশ ক্যামেরা প্রিভিউ: সিস্টেম চক্র
onStop()
এবংonStart()
(ডিফল্টরূপে) বাonPause()
এবংonResume()
( OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE প্রতি-অ্যাপ ওভাররাইড দ্বারা প্রযোজ্য) কার্যকলাপ পদ্ধতির মাধ্যমে ক্যামেরা রোটেশন জোরপূর্বক ঘূর্ণন নিশ্চিত করার পরে সঠিকভাবে প্রদর্শিত।আকৃতির অনুপাত স্কেলিং: সিস্টেমটি গতিশীলভাবে ফোর্স রোটেটেড ক্যামেরা প্রিভিউ এর আকৃতির অনুপাতকে একটি উচ্চতর ন্যূনতম আকৃতির অনুপাতে পরিবর্তন করে, যা নিশ্চিত করে যে ক্যামেরা প্রিভিউ সঠিকভাবে স্কেল করা হয়েছে।
অ্যাপ বিকাশকারীরা এই সমাধানগুলিকে ওভাররাইড করতে পারে যদি অ্যাপগুলি ক্যামেরা প্রিভিউ সঠিকভাবে পরিচালনা করে। প্রতি-অ্যাপ ওভাররাইড দেখুন।
সাধারণত অপব্যবহৃত APIs
যেহেতু অ্যান্ড্রয়েড মাল্টি-উইন্ডো মোড এবং ফোল্ডেবলের মতো ডিভাইসগুলির মতো বৈশিষ্ট্যগুলির জন্য সমর্থন যোগ করেছে, তাই লিগ্যাসি APIগুলিকে অবমূল্যায়ন করা হয়েছে এবং আপ-টু-ডেট APIগুলি দ্বারা প্রতিস্থাপিত করা হয়েছে যা সমস্ত ডিসপ্লে আকার এবং ডিভাইস ফর্ম ফ্যাক্টরের জন্য কাজ করে৷ যাইহোক, অননুমোদিত APIগুলি এখনও পশ্চাদগামী সামঞ্জস্যের জন্য উপলব্ধ।
কিছু View
এপিআই বিশেষ উদ্দেশ্যে ডিজাইন করা হয়েছে যা ডেভেলপাররা সবসময় ভালোভাবে বুঝতে পারে না।
ইস্যু
ডেভেলপাররা অবিরত Display
এপিআই ব্যবহার করতে থাকে এবং ভুলভাবে অনুমান করে যে এপিআই ডিভাইস ডিসপ্লে এরিয়া বাউন্ডের পরিবর্তে অ্যাপ বাউন্ড ফিরিয়ে দেয়। অথবা ডেভেলপাররা ভুলবশত সাধারণ প্রদর্শন মেট্রিক্স পেতে বিশেষ-উদ্দেশ্য দৃশ্য API ব্যবহার করে। অ্যাপ উইন্ডো রিসাইজ করার ইভেন্টের পরে UI উপাদানগুলিকে পুনঃস্থাপন করার সময় ভুল গণনা হয়, যার ফলে লেআউট সমস্যা হয়।
অপব্যবহৃত এবং সাধারণত অপব্যবহৃত ডিসপ্লে API:
আরও তথ্যের জন্য, সমর্থন মাল্টি-উইন্ডো মোড দেখুন।
অপব্যবহার করা ভিউ API:
অপ্টিমাইজেশান
UI উপাদানের অবস্থান নির্ধারণের জন্য কখনই শারীরিক প্রদর্শনের আকারের উপর নির্ভর করবেন না। নিম্নলিখিত WindowManager
APIগুলি সহ WindowMetrics
উপর ভিত্তি করে আপনার অ্যাপটিকে API-তে স্থানান্তর করুন:
প্ল্যাটফর্ম:
জেটপ্যাক:
সামঞ্জস্যপূর্ণ সমাধান
দুটি ওভাররাইড অপসারিত Display
এপিআই এবং অপব্যবহৃত View
এপিআই সামঞ্জস্য করে অ্যাপ বাউন্ড ফিরিয়ে আনতে: ALWAYS_SANDBOX_DISPLAY_APIS
Display
API-এর জন্য; এপিআই View
জন্য OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS
। ALWAYS_SANDBOX_DISPLAY_APIS
আকারের সামঞ্জস্য মোডের জন্য যোগ্য অ্যাপ্লিকেশানগুলিতেও ডিফল্টরূপে প্রয়োগ করা হয়৷
স্বচ্ছ কার্যক্রম
স্বচ্ছ কার্যকলাপ স্বচ্ছ ব্যাকগ্রাউন্ড শৈলীর ফলাফল, উদাহরণস্বরূপ:
<style name="Transparent" parent="AppTheme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
ডায়ালগ সম্পর্কিত থিম, যেমন Theme.MaterialComponents.Dialog
, এমন শৈলী অন্তর্ভুক্ত করতে পারে যা কার্যকলাপকে স্বচ্ছ করে তোলে।
স্বচ্ছ ক্রিয়াকলাপগুলি সমস্ত উপলব্ধ ডিসপ্লে স্থানকে কভার করে না, যা তাদের পরিচালনা করা কঠিন করে তোলে কারণ উপলব্ধ ডিসপ্লে এলাকাটি ডিভাইসের ঘূর্ণন, ডিভাইস ভাঁজ করা এবং উন্মোচন এবং মাল্টি-উইন্ডো মোডের মতো কনফিগারেশন পরিবর্তনের উপর ভিত্তি করে পরিবর্তিত হতে পারে।
ইস্যু
একটি স্বচ্ছ কার্যকলাপ টাস্ক অ্যাক্টিভিটি স্ট্যাকের স্বচ্ছ কার্যকলাপের নীচে প্রথম অস্বচ্ছ কার্যকলাপের সীমার সাথে সামঞ্জস্যপূর্ণ হওয়া উচিত। যাইহোক, একটি অস্বচ্ছ কার্যকলাপ যা একটি অনুমতি ডায়ালগ চালু করে একটি ট্রামপোলিন হতে পারে (একটি কার্যকলাপ যা অন্য একটি কার্যকলাপ চালু করে তারপর অদৃশ্য হয়ে যায়); এবং তাই, সিস্টেমটি ট্রামপোলিন কার্যকলাপের সীমা নির্ধারণ করতে পারে না যা স্বচ্ছ অনুমতি ডায়ালগ কার্যকলাপ চালু করেছে।
অপ্টিমাইজেশান
স্বচ্ছ ক্রিয়াকলাপগুলি একটি টাস্কের অ্যাক্টিভিটি স্ট্যাকের মধ্যে তাদের নীচে শীর্ষ-সবচেয়ে অস্বচ্ছ কার্যকলাপ থেকে তাদের সীমাবদ্ধতাগুলিকে উত্তরাধিকার সূত্রে প্রাপ্ত করে। স্বচ্ছ কার্যকলাপের সমগ্র জীবনচক্রের জন্য অস্বচ্ছ কার্যকলাপ উপলব্ধ হতে হবে, কার্যকলাপ সৃষ্টি থেকে ধ্বংস পর্যন্ত। এই কারণে, ট্রামপোলিন কার্যকলাপ থেকে অনুমতি অনুরোধ চালু করবেন না।
যদি একটি ট্রামপোলিন কার্যকলাপ একটি অনুমতি অনুরোধ চালু করে, ব্যবহারকারী অনুমতি ডায়ালগ দেখতে সক্ষম নাও হতে পারে কারণ ব্যবহারকারীর সংলাপে প্রতিক্রিয়া জানানোর সুযোগ পাওয়ার আগেই ট্রামপোলিন কার্যকলাপটি ধ্বংস হয়ে যাবে এবং ডায়ালগ কার্যকলাপের মাত্রা এবং অবস্থান ভুলভাবে গণনা করা হতে পারে।
ব্যবহারকারীর অনুমতির সিদ্ধান্ত না নেওয়া পর্যন্ত অ্যাপ্লিকেশানগুলিকে সর্বদা এমন কার্যকলাপ থেকে অনুমতির অনুরোধ চালু করা উচিত যা দৃশ্যমান থাকে।
বৃত্তাকার কোণগুলি
একটি ক্রিয়াকলাপ স্বচ্ছ হতে পারে কারণ একটি শৈলী যা পটভূমির স্বচ্ছতা নির্দিষ্ট করে বা কার্যকলাপের বিষয়বস্তু উপলব্ধ প্রদর্শন স্থান পূরণ করে না। যদি একটি স্বচ্ছ কার্যকলাপ উপলব্ধ ডিসপ্লে স্থান পূরণ করে, ডিভাইস প্রস্তুতকারকের দ্বারা এটি করার জন্য কনফিগার করা হলে সিস্টেমটি স্বয়ংক্রিয়ভাবে কার্যকলাপে বৃত্তাকার কোণগুলি প্রয়োগ করে। কিন্তু, যদি একটি স্বচ্ছ কার্যকলাপ (যেমন একটি অনুমতি ডায়ালগ) উপলব্ধ স্থান পূরণ না করে, তাহলে বৃত্তাকার কোণগুলি প্রয়োগ করবেন কি না তা আপনার উপর নির্ভর করে।
অনুমতি ডায়ালগ উপলব্ধ প্রদর্শন স্থান পূরণ করে না কারণ ডায়ালগ বিন্যাস সাধারণত LayoutParams.MATCH_PARENT এর পরিবর্তে LayoutParams.WRAP_CONTENT ব্যবহার করে।
সামঞ্জস্যপূর্ণ সমাধান
ব্যবহারকারী ডায়ালগে সাড়া না দেওয়া পর্যন্ত ক্রিয়াকলাপগুলিকে সংলাপ কার্যক্রমগুলিকে দৃশ্যমান রাখুন৷
সিস্টেমটি নিশ্চিত করে যে একটি স্বচ্ছ কার্যকলাপ কার্যকলাপ স্ট্যাকের স্বচ্ছ কার্যকলাপের নীচে প্রথম অস্বচ্ছ কার্যকলাপ থেকে সমস্ত সীমাবদ্ধতা উত্তরাধিকারসূত্রে প্রাপ্ত হয়, যার সাথে সম্পর্কিত সীমাবদ্ধতাগুলি সহ:
- আকার সামঞ্জস্য মোড
- ওরিয়েন্টেশন
- আকৃতির অনুপাত
ঐক্য গেম
ইউনিটি গেমগুলি Android পূর্ণ স্ক্রীনে বা মাল্টি-উইন্ডো মোডে চলে। যাইহোক, অনেক ইউনিটি গেম ফোকাস হারিয়ে ফেলে এবং যখন অ্যাপটি মাল্টি-উইন্ডো মোডে রাখা হয় তখন বিষয়বস্তু আঁকা বন্ধ করে।
ইস্যু
Unity 2019.4-এ Android-এ মাল্টি-উইন্ডো মোড সমর্থন করার জন্য একটি Resizable Window
বিকল্প যোগ করেছে। যাইহোক, প্রাথমিক বাস্তবায়ন মাল্টি-উইন্ডো মোডে অ্যাক্টিভিটি লাইফসাইকেলে সঠিকভাবে প্রতিক্রিয়া দেখায়নি, যার ফলে ইউনিটিপ্লেয়ার প্লেব্যাক স্থগিত করে যখন অ্যাপটি ফোকাস হারায়। প্লেয়ার একটি কালো পর্দা বা গেমের শেষ, হিমায়িত ফ্রেম রেন্ডার করেছে৷ ব্যবহারকারী স্ক্রীন ট্যাপ করলেই গেমপ্লে পুনরায় শুরু হয়। ইউনিটি ইঞ্জিন ব্যবহার করা অনেক অ্যাপ এই সমস্যার মুখোমুখি হয় এবং মাল্টি-উইন্ডো মোডে কালো উইন্ডো হিসেবে রেন্ডার করে।
অপ্টিমাইজেশান
ইউনিটি 2019.4.40 বা তার পরে আপগ্রেড করুন এবং আপনার গেম পুনরায় রপ্তানি করুন। অ্যান্ড্রয়েড প্লেয়ার সেটিংসে Resizable Window
বিকল্পটি চেক করে রাখুন, অন্যথায় গেমটি মাল্টি-উইন্ডো মোডে সম্পূর্ণভাবে দৃশ্যমান হওয়া সত্ত্বেও ফোকাসে না থাকলে গেমটি বিরতি দেয়।
সামঞ্জস্যপূর্ণ সমাধান
ডিভাইস নির্মাতারা মাল্টি-উইন্ডো মোডে একটি অ্যাপে একটি নকল ফোকাস ইভেন্ট প্রদান করতে OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS
প্রতি-অ্যাপ ওভাররাইড প্রয়োগ করতে পারেন। ওভাররাইড ক্রিয়াকলাপটিকে বিষয়বস্তু পুনরায় আঁকতে সক্ষম করে এবং কালো করা না হয়৷
সামঞ্জস্যের সমস্যাগুলির জন্য আপনার অ্যাপ পরীক্ষা করুন
আপনার অ্যাপটি পরীক্ষা করতে এবং এটি বিভিন্ন ফর্ম ফ্যাক্টরের সাথে কীভাবে আচরণ করে তা বুঝতে, নিম্নলিখিত সংস্থানগুলির সুবিধা নিন:
- ডিভাইস স্ট্রিমিং: Google ডেটা সেন্টারে হোস্ট করা প্রোডাকশন ডিভাইসে ( রেফারেন্স ডিভাইস সহ) আপনার অ্যাপটি পরীক্ষা করতে, Firebase দ্বারা চালিত Android ডিভাইস স্ট্রিমিং দেখুন
- অ্যান্ড্রয়েড স্টুডিও হেজহগের এমুলেটর: রেফারেন্স ডিভাইসের জন্য এমুলেটর তৈরির তথ্যের জন্য, ভার্চুয়াল ডিভাইস তৈরি এবং পরিচালনা দেখুন
- অ্যান্ড্রয়েড স্টুডিও রিসাইজযোগ্য এমুলেটর: ভার্চুয়াল ডিভাইস অ্যাক্সেস করার তথ্যের জন্য, অ্যান্ড্রয়েড এমুলেটরে অ্যাপ চালান দেখুন
লেটারবক্স করা হয়
যাচাই করুন যে প্রতিটি কার্যকলাপ অ্যাপে উপলব্ধ সমস্ত প্রদর্শন স্থান ব্যবহার করতে পারে। প্রথমে, আপনার পরীক্ষার ফোল্ডারে নিম্নলিখিত কোড ঘোষণা করুন:
কোটলিন
fun Activity.isLetterboxed() : Boolean { if (isInMultiWindowMode) return false val wmc = WindowMetricsCalculator.getOrCreate() val currentBounds = wmc.computeCurrentWindowMetrics(this).bounds val maxBounds = wmc.computeMaximumWindowMetrics(this).bounds val isScreenPortrait = maxBounds.height() > maxBounds.width() return if (isScreenPortrait) { currentBounds.height() < maxBounds.height() } else { currentBounds.width() < maxBounds.width() } }
জাভা
public boolean isLetterboxed(Activity activity) { if (activity.isInMultiWindowMode()) { return false; } WindowMetricsCalculator wmc = WindowMetricsCalculator.getOrCreate(); Rect currentBounds = wmc.computeCurrentWindowMetrics(activity).getBounds() Rect maxBounds = wmc.computeMaximumWindowMetrics(activity).getBounds(); boolean isScreenPortrait = maxBounds.height() > maxBounds.width(); return (isScreenPortrait) ? currentBounds.height() < maxBounds.height() : currentBounds.width() < maxBounds.width(); }
তারপর আচরণ নিশ্চিত করতে একটি পরীক্ষা চালান এবং লক্ষ্য ক্রিয়াকলাপটি লেটারবক্সযুক্ত নয় তা নিশ্চিত করুন:
কোটলিন
@get:Rule val activityRule = ActivityScenarioRule(MainActivity::class.java) @Test fun activity_launched_notLetterBoxed() { activityRule.scenario.onActivity { assertThat(it.isLetterboxed()).isFalse() } }
জাভা
@Rule public ActivityScenarioRule<MainActivity> rule = new ActivityScenarioRule<>(MainActivity.class); public void activity_launched_notLetterBoxed() { try (ActivityScenario<MainActivity> scenario = ActivityScenario.launch(MainActivity.class)) { scenario.onActivity(activity -> { assertThat(isLetterboxed(activity)).isFalse(); }); } }
আদর্শভাবে, এই ধরনের পরীক্ষা চালান যতক্ষণ না এটি পাস করে এবং দাবি করে যে আপনার অ্যাপের ক্রিয়াকলাপগুলি অ্যাপে উপলব্ধ সম্পূর্ণ প্রদর্শন স্থান গ্রহণ করে। সামঞ্জস্যপূর্ণ আচরণ নিশ্চিত করতে সব ধরনের ডিভাইসে আপনার অ্যাপ পরীক্ষা করুন।
প্রতি-অ্যাপ ওভাররাইড
অ্যান্ড্রয়েড ওভাররাইড প্রদান করে যা অ্যাপের কনফিগার করা আচরণ পরিবর্তন করে। উদাহরণস্বরূপ, FORCE_RESIZE_APP
ওভাররাইড সিস্টেমকে সাইজ সামঞ্জস্যতা মোড বাইপাস করার নির্দেশ দেয় এবং অ্যাপ ম্যানিফেস্টে resizeableActivity="false"
উল্লেখ করা থাকলেও ডিসপ্লে ডাইমেনশন ফিট করার জন্য অ্যাপের আকার পরিবর্তন করে।
ডিভাইস নির্মাতারা নির্দিষ্ট বৃহৎ স্ক্রীন ডিভাইসে অ্যাপগুলি-বা সমস্ত অ্যাপ-নির্বাচনের জন্য ওভাররাইড প্রয়োগ করে। Android 14 (API স্তর 34) এবং উচ্চতর, ব্যবহারকারীরা ডিভাইস সেটিংসের মাধ্যমে অ্যাপগুলিতে ওভাররাইড প্রয়োগ করতে পারেন।
ব্যবহারকারী প্রতি অ্যাপ ওভাররাইড করে
Android 14 এবং উচ্চতর সংস্করণে, একটি সেটিংস মেনু ব্যবহারকারীদের অ্যাপের অনুপাত পরিবর্তন করতে সক্ষম করে। বড় স্ক্রীন ডিভাইস যেমন রেফারেন্স ডিভাইস মেনু বাস্তবায়ন.
মেনুতে ডিভাইসে ইনস্টল করা সমস্ত অ্যাপের একটি তালিকা রয়েছে। ব্যবহারকারীরা একটি অ্যাপ বেছে নেয় এবং তারপরে অ্যাপের আকৃতির অনুপাত 3:4, 1:1, পূর্ণ স্ক্রীন বা ডিভাইস প্রস্তুতকারকের দ্বারা কনফিগার করা অন্যান্য মান সেট করে। ব্যবহারকারীরা অ্যাসপেক্ট রেশিও অ্যাপ ডিফল্টে রিসেট করতে পারেন, যা অ্যাপ ম্যানিফেস্টে উল্লেখ করা আছে।
অ্যাপগুলি নিম্নলিখিত PackageManager.Property
ট্যাগগুলি সেট করে সামঞ্জস্য ওভাররাইড থেকে অপ্ট আউট করতে পারে:
PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
ব্যবহারকারীর দৃষ্টিভঙ্গি অনুপাত সামঞ্জস্য ওভাররাইড থেকে অপ্ট আউট করতে, আপনার অ্যাপ ম্যানিফেস্টে প্রপার্টি যোগ করুন এবং মানটিকে
false
সেট করুন:<application> <property android:name="android.window. PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE" android:value="false" /> </application>
ডিভাইস সেটিংসে থাকা অ্যাপের তালিকা থেকে আপনার অ্যাপটি বাদ দেওয়া হবে। ব্যবহারকারীরা অ্যাপের আকৃতির অনুপাতকে ওভাররাইড করতে পারবেন না।
সম্পত্তি
true
সেট করার কোন প্রভাব নেই.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE
ব্যবহারকারীর দৃষ্টিভঙ্গি অনুপাত সামঞ্জস্য ওভাররাইডের পূর্ণ-স্ক্রীন বিকল্প থেকে অপ্ট আউট করতে, আপনার অ্যাপ ম্যানিফেস্টে সম্পত্তি যোগ করুন এবং মানটিকে
false
সেট করুন:<application> <property android:name="android.window.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE" android:value="false" /> </application>
পূর্ণ-স্ক্রীন বিকল্পটি ডিভাইস সেটিংসে আকৃতির অনুপাত বিকল্পের তালিকা থেকে সরানো হয়েছে। ব্যবহারকারীরা আপনার অ্যাপে পূর্ণ-স্ক্রীন ওভাররাইড প্রয়োগ করতে পারবে না।
এই সম্পত্তিটিকে
true
হিসাবে সেট করার কোন প্রভাব নেই।
সমস্ত স্ক্রিনের জন্য আপনার অ্যাপটি অপ্টিমাইজ করুন: আপনার অ্যাপে আকৃতির অনুপাতের সীমাবদ্ধতা সেট করবেন না। উপলব্ধ ডিসপ্লে স্পেসের পরিমাণের উপর ভিত্তি করে বিভিন্ন লেআউট সমর্থন করতে উইন্ডো আকারের ক্লাস ব্যবহার করুন।
প্রতি-অ্যাপ ওভাররাইড করে ডিভাইস নির্মাতা
ডিভাইস নির্মাতারা নির্বাচিত ডিভাইসে প্রতি-অ্যাপের ভিত্তিতে ওভাররাইড প্রয়োগ করে। রেফারেন্স ডিভাইসগুলি ডিফল্টরূপে বিভিন্ন অ্যাপে কিছু ওভাররাইড প্রয়োগ করতে পারে।
অ্যাপগুলি বেশিরভাগ ওভাররাইড থেকে অপ্ট আউট করতে পারে (নীচে প্রতি-অ্যাপ ওভাররাইড টেবিল দেখুন)।
আপনি সামঞ্জস্যপূর্ণ ফ্রেমওয়ার্ক ব্যবহার করে ওভাররাইড সক্ষম বা অক্ষম করে আপনার অ্যাপটি পরীক্ষা করতে পারেন ( সামঞ্জস্যতা ফ্রেমওয়ার্ক টুল দেখুন)। সক্ষম হলে, ওভাররাইড সমগ্র অ্যাপে প্রযোজ্য হয়।
আপনি ওভাররাইডগুলি সক্ষম বা অক্ষম করতে এবং আপনার অ্যাপে কোন ওভাররাইডগুলি প্রযোজ্য তা নির্ধারণ করতে অ্যান্ড্রয়েড ডিবাগ ব্রিজ (এডিবি) ব্যবহার করতে পারেন৷
নিম্নরূপ ওভাররাইডগুলি সক্ষম বা অক্ষম করুন:
adb shell am compat enable/disable <override name/id> <package>
রেফারেন্স ডিভাইসের জন্য, আপনার অ্যাপে কোন ওভাররাইড প্রযোজ্য তা পরীক্ষা করুন:
adb shell dumpsys platform_compat | grep <package name>
নিম্নলিখিত সারণীতে উপলব্ধ ওভাররাইডের তালিকা রয়েছে এবং কীভাবে আপনার অ্যাপটি অপ্টিমাইজ করতে হয় তার নির্দেশিকা রয়েছে যাতে অ্যাপটিকে ওভাররাইডের উপর নির্ভর করতে হয় না। কিছু ওভাররাইড অপ্ট আউট করতে আপনি আপনার অ্যাপ ম্যানিফেস্টে সম্পত্তির পতাকা যুক্ত করতে পারেন৷
প্রতি-অ্যাপ ওভাররাইড | |||
---|---|---|---|
টাইপ | নাম | আইডি | বর্ণনা |
পরিবর্তনযোগ্যতা | FORCE_RESIZE_APP | 174042936 | কনফিগারেশন পরিবর্তনে অ্যাপের জন্য আকার সামঞ্জস্যপূর্ণ মোড বাইপাস করে। |
FORCE_NON_RESIZE_APP | 181136395 | কনফিগারেশন পরিবর্তনে অ্যাপকে সাইজ সামঞ্জস্য মোডে বাধ্য করে। | |
আকৃতির অনুপাত | OVERRIDE_MIN_ASPECT_RATIO | 174042980 | গেটকিপার ওভাররাইড যা অন্য কোনো আকৃতির অনুপাত ওভাররাইড প্রয়োগ করতে সক্ষম হতে হবে। |
OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY | 203647190 | যদি সক্ষম করা থাকে (ডিফল্ট), শুধুমাত্র পোর্ট্রেট ক্রিয়াকলাপগুলিতে ওভাররাইডের সুযোগ সীমাবদ্ধ করে। | |
OVERRIDE_MIN_ASPECT_RATIO_MEDIUM | 180326845 | ন্যূনতম আকৃতির অনুপাত 3:2 এ পরিবর্তন করে। | |
OVERRIDE_MIN_ASPECT_RATIO_LARGE | 180326787 | ন্যূনতম আকৃতির অনুপাত 16:9 এ পরিবর্তন করে। | |
OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN | 208648326 | ডিসপ্লে সাইজের (বা স্প্লিট-স্ক্রিন অ্যাসপেক্ট রেশিও) 50% ফিট করতে ন্যূনতম আকৃতির অনুপাত পরিবর্তন করে। | |
OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN | 218959984 | ন্যূনতম আকৃতির অনুপাত ওভাররাইড অক্ষম করে যাতে অ্যাপগুলি যখন পোর্ট্রেট হয় তখন পূর্ণ স্ক্রীন হয়৷ | |
ওরিয়েন্টেশন | OVERRIDE_ANY_ORIENTATION | 265464455 | যেকোনো অভিযোজন ওভাররাইডিং সক্ষম করে। |
OVERRIDE_ANY_ORIENTATION_TO_USER | 310816437 | অভিযোজন, পরিবর্তনযোগ্যতা এবং আকৃতির অনুপাতের সীমাবদ্ধতা ওভাররাইড করে। | |
OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT | 265452344 | যখন কোনো কার্যকলাপের একটি অনির্ধারিত অভিযোজন থাকে তখন পোর্ট্রেট হওয়ার অভিযোজন ওভাররাইড করে। | |
OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR | 265451093 | যখন একটি কার্যকলাপের একটি অনির্ধারিত অভিযোজন থাকে তখন nosensor (ডিভাইসের স্বাভাবিক অভিযোজন ব্যবহার করুন) হওয়ার অভিযোজন ওভাররাইড করে। | |
OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE | 266124927 | ল্যান্ডস্কেপ-শুধু অ্যাপগুলিকে 180 ডিগ্রি ঘোরায়। | |
OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA | 265456536 | যখন অ্যাপটি ক্যামেরার সাথে সংযুক্ত থাকে তখন ওরিয়েন্টেশন ওভাররাইডের সুযোগ সীমিত করে। | |
OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION | 255940284 | যখন একটি টাস্ক পূর্ণ স্ক্রীনে (লেটারবক্স করা সহ) তখন স্থির ল্যান্ডস্কেপ প্রাকৃতিক অভিযোজনে প্রদর্শন সেট করে। | |
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION | 254631730 | ঘূর্ণন অসীম লুপ এড়াতে অ্যাপ থেকে অভিযোজন অনুরোধ উপেক্ষা করে। | |
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED | 273509367 | একটি কার্যকলাপ পুনরায় চালু করার সময় বারবার অভিযোজন অনুরোধ উপেক্ষা করে। যদি অ্যান্ড্রয়েড শনাক্ত করে যে একটি অ্যাপ এক সেকেন্ডের মধ্যে কমপক্ষে দুটি নতুন ওরিয়েন্টেশনের জন্য অনুরোধ করছে, সিস্টেম এটিকে একটি ঘূর্ণন অসীম লুপ হিসাবে বিবেচনা করে এবং ওভাররাইড প্রয়োগ করে। | |
OVERRIDE_RESPECT_REQUESTED_ORIENTATION | 236283604 | ডিভাইস প্রস্তুতকারক অভিযোজন অনুরোধ সেটিং উপেক্ষা করে অক্ষম করে লেটারবক্সিং প্রতিরোধ করে। | |
স্যান্ডবক্স API | NEVER_SANDBOX_DISPLAY_APIS | 184838306 | যেকোনো ডিসপ্লে API-এর আচরণ পরিবর্তন করা প্রতিরোধ করে। |
ALWAYS_SANDBOX_DISPLAY_APIS | 185004937 | অ্যাপের Display এপিআইগুলিকে অ্যাপ বাউন্ড ফেরাতে বাধ্য করে। Display এপিআই লজিক্যাল ডিসপ্লে এরিয়া বাউন্ড প্রদান করে, কিন্তু কখনো কখনো অ্যাপ ধরে নেয় Display এপিআই অ্যাপ বাউন্ড রিটার্ন করে, যা UI সমস্যার দিকে নিয়ে যায়। | |
OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS | 237531167 | অ্যাপে ব্যবহৃত View APIগুলিকে অ্যাপ বাউন্ড ফেরাতে বাধ্য করে। View এপিআইগুলি লজিক্যাল ডিসপ্লে এরিয়া বাউন্ড প্রদান করে, কিন্তু কখনও কখনও অ্যাপটি অনুমান করে View এপিআইগুলি অ্যাপ বাউন্ড রিটার্ন করে, যা UI সমস্যার দিকে নিয়ে যায়। | |
ক্যামেরা কম্প্যাট | OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION | 263959004 | বল ঘূর্ণন বন্ধ করে। ডিফল্টরূপে, সমস্ত ফিক্সড-অরিয়েন্টেশন ক্যামেরা অ্যাপগুলি যখন ক্যামেরা প্রিভিউ খোলা থাকে তখন জোর করে ঘোরানো হয়। |
OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH | 264304459 | ক্যামেরা প্রিভিউ জোর করে ঘোরানো হলে প্রয়োগ করা ডিফল্ট হার্ড রিফ্রেশ সরিয়ে দেয়। | |
OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE | 264301586 | একটি ক্যামেরা প্রিভিউ জোর করে ঘোরানো হলে হার্ড রিফ্রেশকে নরম রিফ্রেশে স্যুইচ করে, যা ফোর্স রোটেশনের সময় অবস্থা রক্ষা করতে সাহায্য করে। ডিফল্টরূপে, যখন ক্যামেরা প্রিভিউ জোর করে ঘোরানো হয় তখন Android একটি হার্ড রিফ্রেশ প্রয়োগ করে৷ হার্ড রিফ্রেশ অ্যাপ্লিকেশানগুলি তাদের আগের স্থিতিকে কীভাবে ক্যাশ করেছে তার উপর নির্ভর করে অ্যাপ্লিকেশানগুলিকে স্থিতি হারাতে বা ব্ল্যাক আউট করতে সমস্যা হতে পারে৷ | |
OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT | 250678880 | ভিতরের ফ্রন্ট ক্যামেরার ইমেজ বাফার ক্রপ করে। ওভাররাইড অক্ষম করা হলে, ভিতরের সামনের ক্যামেরা ক্রপিং সরানো হয় এবং ক্যামেরা প্রিভিউ দেখার ক্ষেত্র বাড়ানো হয়। কিছু ফোল্ডেবলে ডিফল্টরূপে ( রেফারেন্স ডিভাইস দেখুন), ভিতরের ফ্রন্ট ক্যামেরা ব্যবহার করার সময় সিস্টেমটি সমস্ত ক্যামেরা অ্যাপের ক্যামেরা প্রিভিউ ক্রপ করে। | |
বিবিধ | OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS | 263259275 | যখন অ্যাপটি স্প্লিট-স্ক্রিন মোডে ফোকাস হারায় তখন অ্যাপটিকে কালো হওয়া থেকে আটকায়। অ্যাপের বিষয়বস্তু আঁকার আগে অ্যাপ ফোকাসের জন্য অপেক্ষা করে, যার ফলে অ্যাপটি হিমায়িত হতে পারে বা কালো হয়ে যেতে পারে। ওভাররাইড অ্যান্ড্রয়েডকে অ্যাপে একটি জাল ফোকাস ইভেন্ট পাঠাতে সক্ষম করে, যা অ্যাপটিকে আবার বিষয়বস্তু আঁকা শুরু করার সংকেত দেয়। |
FORCE_RESIZE_APP
যে প্যাকেজগুলিতে ওভাররাইড প্রয়োগ করা হয়েছে সেগুলিকে পুনরায় আকার দিতে বাধ্য করে। অ্যাপটিকে মাল্টি-উইন্ডো মোডে রাখা যায় কিনা তা পরিবর্তন করে না, তবে স্ক্রীনের আকার পরিবর্তন করার সময় আকারের সামঞ্জস্য মোডে প্রবেশ না করে অ্যাপটিকে আকার পরিবর্তন করার অনুমতি দেয়।
কীভাবে অ্যাপগুলি ওভাররাইডের মতো একই ফলাফল অর্জন করতে পারে
অ্যাপ ম্যানিফেস্টে, হয় android:resizeableActivity
অ্যাট্রিবিউটটিকে true
সেট করুন অথবা, android:resizeableActivity=false
সাথে মাল্টি-উইন্ডো মোড নিষ্ক্রিয় করার সময় আকার পরিবর্তন সমর্থন করতে, android.supports_size_changes
মেটাডেটা ফ্ল্যাগটিকে true
সেট করুন৷
কীভাবে অ্যাপগুলি অপ্টিমাইজ করবেন
সমস্ত ডিসপ্লে আকার এবং আকৃতির অনুপাতের সাথে মানিয়ে নিতে অ্যাপগুলিকে সক্ষম করতে প্রতিক্রিয়াশীল/অভিযোজিত লেআউটগুলি ব্যবহার করুন৷ বিভিন্ন ডিসপ্লে আকার সমর্থন দেখুন.
ওভাররাইড অক্ষম বা অপ্ট আউট কিভাবে
সম্পত্তির পতাকা PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES
false
সেট করুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
android:value="true|false"/>
ওভাররাইড পরীক্ষা করার জন্য adb কমান্ড
ওভাররাইড প্রয়োগ করতে এবং অ্যাপটিকে পুনরায় আকার দেওয়ার যোগ্য করতে:
adb shell am compat enable FORCE_RESIZE_APP <package>
ওভাররাইড সরাতে:
adb shell am compat disable FORCE_RESIZE_APP <package>
দ্রষ্টব্য: কমান্ডগুলি শুধুমাত্র অস্থায়ীভাবে প্রয়োগ করে বা ওভাররাইড সরিয়ে দেয়।
FORCE_NON_RESIZE_APP
যে প্যাকেজগুলিতে ওভাররাইড প্রয়োগ করা হয়েছে তা অ-আকারযোগ্য হতে বাধ্য করে এবং কনফিগারেশন পরিবর্তনের সময় আকার সামঞ্জস্য মোডে প্রবেশ করে।
কীভাবে অ্যাপগুলি ওভাররাইডের মতো একই ফলাফল অর্জন করতে পারে
অ্যাপ ম্যানিফেস্টে android:resizeableActivity
অ্যাট্রিবিউট এবং android.supports_size_changes
মেটাডেটা ফ্ল্যাগ উভয়কেই false
সেট করুন এবং একটি ওরিয়েন্টেশন বা অ্যাসপেক্ট রেশিও সীমাবদ্ধতা ঘোষণা করুন।
কীভাবে অ্যাপগুলি অপ্টিমাইজ করবেন
পুনরায় আকার দেওয়া হলে সমস্ত অ্যাপ্লিকেশনগুলি ভাল আচরণ করে এমন হয় android:resizeableActivity
বা android.supports_size_changes
true
সেট করা উচিত। পুনরায় আকার দেওয়ার সময় ভাল আচরণ করার জন্য অন্যান্য অ্যাপ্লিকেশনগুলি উন্নত করা উচিত। অ্যান্ড্রয়েড দেখুন: রেজিজিব্লাইসিটিভিটি ।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
সম্পত্তি পতাকা PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES
false
বলে সেট করুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
android:value="true|false"/>
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে এবং অ্যাপটিকে অ -রিসাইজযোগ্য করে তুলতে:
adb shell am compat enable FORCE_NON_RESIZE_APP <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable FORCE_NON_RESIZE_APP <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
OVERRIDE_MIN_ASPECT_RATIO
সমস্ত ওভাররাইডের জন্য দারোয়ান যা প্রদত্ত ন্যূনতম দিক অনুপাতকে বাধ্য করে।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
আপনার অ্যাপ্লিকেশনটিতে দিক অনুপাতের সীমাবদ্ধতা সেট করবেন না। আপনার অ্যাপ্লিকেশন বিভিন্ন ডিসপ্লে আকার সমর্থন করে তা নিশ্চিত করুন। আপনার অ্যাপ্লিকেশনটির স্ক্রিনে যে পরিমাণ স্থান রয়েছে তার উপর ভিত্তি করে বিভিন্ন লেআউট সমর্থন করতে উইন্ডো আকারের ক্লাসগুলি ব্যবহার করুন। কমপোজ WindowSizeClass
এপিআই দেখুন এবং WindowSizeClass
এপিআই দেখুন ।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
একটি দিক অনুপাতের সীমাবদ্ধতা নির্দিষ্ট করুন বা সম্পত্তি পতাকা PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE
false
বলে সেট করুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE"
android:value="false"/>
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY
অ্যাপ্লিকেশন সেটিংসকে সীমাবদ্ধ করে যা প্রতিকৃতি - কেবলমাত্র ওরিয়েন্টেশন সহ ক্রিয়াকলাপগুলির জন্য প্রদত্ত ন্যূনতম দিক অনুপাতকে বাধ্য করে। ডিফল্টরূপে সক্ষম করা হয় এবং কেবলমাত্র কার্যকর হয় যদি OVERRIDE_MIN_ASPECT_RATIO
সক্ষম থাকে।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
OVERRIDE_MIN_ASPECT_RATIO_MEDIUM
ক্রিয়াকলাপের ন্যূনতম দিক অনুপাতকে একটি মাঝারি মানের (3: 2) সেট করে
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
OVERRIDE_MIN_ASPECT_RATIO_LARGE
ক্রিয়াকলাপের ন্যূনতম দিক অনুপাতকে একটি বৃহত মানের (16: 9) সেট করে
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_LARGE <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_LARGE <package>`
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
ওভাররাইড_মিন_এএসপেক্ট_আরটিও_ও_এলআইজি_উইথ_স্প্লিট_স্ক্রিন
স্প্লিট-স্ক্রিন দিক অনুপাতের ব্যবহার সক্ষম করে। লেটারবক্সিং এড়িয়ে কোনও অ্যাপ্লিকেশনকে স্প্লিট-স্ক্রিন মোডে সমস্ত উপলভ্য স্থান ব্যবহার করার অনুমতি দেয়।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN
সমস্ত উপলব্ধ স্ক্রিন স্পেস ব্যবহার করতে প্রতিকৃতি পূর্ণ স্ক্রিনে সর্বনিম্ন দিক অনুপাতের ওভাররাইড অক্ষম করে।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
OVERRIDE_ANY_ORIENTATION
যে কোনও ওরিয়েন্টেশনকে ওভাররাইড করতে নিম্নলিখিত ওভাররাইডগুলি সক্ষম করে:
- OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
- OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR
- ওভাররাইড_ল্যান্ডস্কেপ_রিয়েন্টেশন_টো_রেভারস_ল্যান্ডস্কেপ
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
activity:screenOrientation
ম্যানিফেস্ট অ্যাট্রিবিউট, বা Activity#setRequestedOrientation()
এপিআই ব্যবহার করুন।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
আপনার অ্যাপ্লিকেশনটি সমস্ত ওরিয়েন্টেশন সমর্থন করা উচিত। একটি ওরিয়েন্টেশন পরিবর্তন হ'ল একটি কনফিগারেশন পরিবর্তন, যা দুটি উপায়ে উভয়ই পরিচালনা করা যেতে পারে: সিস্টেমটিকে অ্যাপটি ধ্বংস এবং পুনরায় তৈরি করতে দেওয়া, বা কনফিগারেশন পরিচালনা করা নিজেকে পরিবর্তন করে। আপনি যদি কনফিগারেশন পরিচালনা করেন তবে নিজেকে পরিবর্তন করে, অ্যাপ্লিকেশন রাষ্ট্রটি ViewModel
ব্যবহার করে ধরে রাখা যেতে পারে। খুব সীমিত ক্ষেত্রে, আপনি কেবলমাত্র ছোট প্রদর্শনগুলিতে ওরিয়েন্টেশনটি লক করার সিদ্ধান্ত নিতে পারেন, যদিও এটি করা স্কেল না করার পাশাপাশি ব্যবহারকারীকে প্রয়োজনীয় হিসাবে অ্যাপ্লিকেশনটি ঘোরাতে দেয় না। অ্যান্ড্রয়েড 12 এল এবং উচ্চতর সংস্করণগুলিতে, ফিক্সড ওরিয়েন্টেশনটি ডিভাইস কনফিগারেশন দ্বারা ওভাররাইড করা যেতে পারে। কনফিগারেশন পরিবর্তনগুলি পরিচালনা এবং সমস্ত ওরিয়েন্টেশনগুলিকে সমর্থন করার বিষয়ে আরও তথ্যের জন্য, হ্যান্ডেল কনফিগারেশন পরিবর্তনগুলি দেখুন, ভিউমোডেল ওভারভিউ এবং অ্যাপ ওরিয়েন্টেশন ফোনে সীমাবদ্ধ তবে বড় স্ক্রিন ডিভাইসে নয় ।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
সম্পত্তি পতাকা PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE
false
বলে সেট করুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE"
android:value="true|false"/>
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable OVERRIDE_ANY_ORIENTATION <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable OVERRIDE_ANY_ORIENTATION <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
OVERRIDE_ANY_ORIENTATION_TO_USER
উপলব্ধ ডিসপ্লে স্পেস পূরণ করতে অ্যাপ্লিকেশন সক্ষম করে। অ্যাপ্লিকেশন ম্যানিফেস্টে উল্লিখিত যে কোনও ওরিয়েন্টেশন, পুনর্বিবেচনাযোগ্যতা এবং দিক অনুপাতের বিধিনিষেধগুলিকে ওভাররাইড করে। Activity#setRequestedOrientation()
এ কোনও কলকে উপেক্ষা করে।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
অ্যান্ড্রয়েড সেট করবেন না
android:screenOrientation
ম্যানিফেস্ট অ্যাট্রিবিউট, বা"user"
এ বৈশিষ্ট্যটি সেট করুন।android:resizeableActivity
true
কাছে রেজিজিব্যালঅ্যাক্টিভিটি ম্যানিফেস্ট অ্যাট্রিবিউট।ছোট পর্দার উপর,
android:resizeableActivity=false
,android.supports_size_changes
মেটাডেটা পতাকাটিtrue
সেট করুন।minAspectRatio
এবংmaxAspectRatio
সেট করবেন না ।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
আপনার অ্যাপ্লিকেশনটিকে সমস্ত ওরিয়েন্টেশন সমর্থন করতে সক্ষম করুন; আপনার অ্যাপ্লিকেশনটির ম্যানিফেস্টে screenOrientation
স্পেসিফিকেশন সেট করবেন না। সমর্থন অ্যাপ্লিকেশন পুনর্বিবেচনা, মাল্টি -ওয়াইন্ডো মোড এবং সমস্ত প্রদর্শন করে অ্যান্ড্রয়েড সেট করে সমস্ত দিক অনুপাত প্রদর্শন করে: আপনার অ্যাপ্লিকেশনটির ম্যানিফেস্টে true
কাছে android:resizeableActivity
বৈশিষ্ট্যটি সত্য। বিভিন্ন প্রদর্শন আকার সমর্থন দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
OVERRIDE_ANY_ORIENTATION
দেখুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
OVERRIDE_ANY_ORIENTATION
দেখুন।
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable OVERRIDE_ANY_ORIENTATION_TO_USER <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable OVERRIDE_ANY_ORIENTATION_TO_USER <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
প্যাকেজের সমস্ত ক্রিয়াকলাপের জন্য প্রতিকৃতি ওরিয়েন্টেশন সক্ষম করে। ওভাররাইড_ওয়ান_অরিয়েন্টেশন সক্ষম না করা হলে, ওভাররাইডটি কেবল তখনই ব্যবহৃত হয় যখন ক্রিয়াকলাপ দ্বারা অন্য কোনও স্থির ওরিয়েন্টেশন নির্দিষ্ট না করা হয়।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
OVERRIDE_ANY_ORIENTATION
দেখুন।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
OVERRIDE_ANY_ORIENTATION
দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
OVERRIDE_ANY_ORIENTATION
দেখুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
OVERRIDE_ANY_ORIENTATION
দেখুন।
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR
প্যাকেজের সমস্ত ক্রিয়াকলাপের জন্য নোসেন্সর ওরিয়েন্টেশন সক্ষম করে। ওভাররাইড_ওয়ান_অরিয়েন্টেশন সক্ষম না করা হলে, ওভাররাইডটি কেবল তখনই ব্যবহৃত হয় যখন ক্রিয়াকলাপ দ্বারা অন্য কোনও স্থির ওরিয়েন্টেশন নির্দিষ্ট না করা হয়।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
OVERRIDE_ANY_ORIENTATION
দেখুন।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
OVERRIDE_ANY_ORIENTATION
দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
OVERRIDE_ANY_ORIENTATION
দেখুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
OVERRIDE_ANY_ORIENTATION
দেখুন।
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
ওভাররাইড_ল্যান্ডস্কেপ_রিয়েন্টেশন_টো_রেভারস_ল্যান্ডস্কেপ
প্যাকেজের সমস্ত ক্রিয়াকলাপের জন্য রিভার্সল্যান্ডস্কেপ ওরিয়েন্টেশন সক্ষম করে। ওভাররাইড_ওয়ান_অরিয়েন্টেশন সক্ষম না করা হলে, ওভাররাইডটি কেবল তখনই ব্যবহৃত হয় যখন ক্রিয়াকলাপ দ্বারা অন্য কোনও স্থির ওরিয়েন্টেশন নির্দিষ্ট না করা হয়।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
OVERRIDE_ANY_ORIENTATION
দেখুন।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
OVERRIDE_ANY_ORIENTATION
দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
OVERRIDE_ANY_ORIENTATION
দেখুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
OVERRIDE_ANY_ORIENTATION
দেখুন।
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
ওভাররাইড_রিয়েন্টেশন_অনলি_ফোর_কামেরা
ওভাররাইড_উইন্ডফাইন্ড_অরিয়েন্টেশন_টো_পোরট্রেট , ওভাররাইড_অ্যান্ডফাইন্ড_অরিয়েন্টেশন_ও_নোসেন্সর , এবং ওভাররাইড_ল্যান্ডস্কেপ_রিয়েন্টেশন_ও_রভার্স_ল্যান্ডস্কেপ ওভাররাইডগুলি কেবল তখনই ক্যামেরা সংযোগ সক্রিয় থাকলে কার্যকর হওয়ার জন্য সীমাবদ্ধ করে।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
OVERRIDE_ANY_ORIENTATION
দেখুন।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
OVERRIDE_ANY_ORIENTATION
দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
OVERRIDE_ANY_ORIENTATION
দেখুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
OVERRIDE_ANY_ORIENTATION
দেখুন।
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
ওভাররাইড_উস_ডিসপ্লে_ল্যান্ডস্কেপ_নাটাল_রিয়েন্টেশন
নিম্নলিখিত শর্তগুলি পূরণ করার সময় ল্যান্ডস্কেপ প্রাকৃতিক ওরিয়েন্টেশনে প্রদর্শন ওরিয়েন্টেশনকে সীমাবদ্ধ করে:
- ক্রিয়াকলাপ পূর্ণ পর্দা
- কম্পোনেন্ট সম্পত্তি সম্পত্তি
PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE
- ডিভাইস প্রস্তুতকারক উপেক্ষা ওরিয়েন্টেশন অনুরোধ সেটিং প্রদর্শনের জন্য সক্ষম করা হয়েছে
- প্রদর্শনের প্রাকৃতিক ওরিয়েন্টেশন হ'ল ল্যান্ডস্কেপ
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
প্রযোজ্য নয়। সমস্যাটি অ্যাপ্লিকেশন যুক্তিতে সমাধান করা উচিত।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
OVERRIDE_ANY_ORIENTATION
দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
সম্পত্তি পতাকা PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE
false
বলে সেট করুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE"
android:value="true|false"/>
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
ওভাররাইড_নেবল_কমপ্যাট_গনোর_আরকিউস্টেড_অরিয়েন্টেশন
অ্যাপ্লিকেশন কলিং Activity#setRequestedOrientation()
যখন অ্যাপটি পুনরায় চালু হয় বা একটি সক্রিয় ক্যামেরা কমপ্যাট চিকিত্সা থাকে।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
সম্পত্তি পতাকা সেট true
PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
OVERRIDE_ANY_ORIENTATION
দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
সম্পত্তি পতাকা সেট করুন PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION
false
।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
<property android:name="android.window.PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION"
android:value="true|false"/>
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
ওভাররাইড_নেবল_কমপ্যাট_গনোর_রিয়েন্টেশন_আরইকুয়েস্ট_হেন_লুপ_ডেটেকটেড
সামঞ্জস্যতা নীতি সক্ষম করে যা অ্যাপ্লিকেশন কলিং Activity#setRequestedOrientation()
প্রতিক্রিয়া হিসাবে কোনও অ্যাপের অনুরোধ করা ওরিয়েন্টেশনকে উপেক্ষা করে এক সেকেন্ডে যদি কোনও ক্রিয়াকলাপ স্থির ওরিয়েন্টেশনের জন্য লেটারবক্স না করা হয় তবে এক সেকেন্ডে দ্বিগুণেরও বেশি।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
প্রযোজ্য নয়। সমস্যাটি অ্যাপ্লিকেশন যুক্তিতে সমাধান করা উচিত।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
OVERRIDE_ANY_ORIENTATION
দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
সম্পত্তি পতাকা সেট করুন PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
false
হিসাবে চিহ্নিত করা হয়েছে।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED"
android:value="false"/>
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
OVERRIDE_RESPECT_REQUESTED_ORIENTATION
উপেক্ষা ওরিয়েন্টেশন অনুরোধ আচরণ থেকে প্যাকেজগুলি বাদ দেয় যা কোনও ডিসপ্লে অঞ্চল বা পুরো ডিসপ্লে জন্য ডিভাইস প্রস্তুতকারকদের দ্বারা সক্ষম করা যেতে পারে।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
প্রযোজ্য নয়। সমস্যাটি অ্যাপ্লিকেশন যুক্তিতে সমাধান করা উচিত।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
OVERRIDE_ANY_ORIENTATION
দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
কোনও অপ্ট-আউট নেই। ওভাররাইড অক্ষম করা বিপজ্জনক হতে পারে যদি অ্যাপ্লিকেশনটি কোনও ডিভাইসের সাথে সামঞ্জস্যপূর্ণ না হয় যা ডিভাইস প্রস্তুতকারক ওরিয়েন্টেশন অনুরোধ সেটিং সক্ষম করা উপেক্ষা করে। ওভাররাইড অক্ষম করতে অ্যান্ড্রয়েড বিকাশকারী সম্পর্কের সাথে যোগাযোগ করুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
এই ওভাররাইডের জন্য কোনও সম্পত্তি পতাকা নেই।
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
না_স্যান্ডবক্স_ডিসপ্লে_পিস
কোনও লেটারবক্সযুক্ত বা আকারের সামঞ্জস্যতা মোড ক্রিয়াকলাপের জন্য প্রয়োগ করা এপিআই স্যান্ডবক্সিং কখনই Display
করতে পারে এমন প্যাকেজগুলি। Display
এপিআইগুলি প্রদর্শন ক্ষেত্রের সীমা সরবরাহ করে।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
অ্যান্ড্রয়েড সেট করে পুনরায় ব্যবহারযোগ্য ক্রিয়াকলাপগুলি ঘোষণা true
android:resizeableActivity
true
বা android.supports_size_changes
কাছে ম্যানিফেস্ট অ্যাট্রিবিউট B
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
যে অ্যাপ্লিকেশনগুলি ঘোষণা করে যে তারা সম্পূর্ণরূপে পুনরুদ্ধারযোগ্য তা ইউআই উপাদানগুলির অবস্থানের জন্য প্রদর্শনের আকারের উপর কখনই নির্ভর করা উচিত নয়। WindowMetrics
সরবরাহ করে এমন আপনার অ্যাপ্লিকেশনটিকে আপ - তারিখের এপিআইগুলিতে স্থানান্তরিত করুন। আপনি যদি জেটপ্যাক রচনাটি ব্যবহার করে থাকেন তবে বর্তমান ডিসপ্লেতে অ্যাপ্লিকেশনটির কতটা স্ক্রিন অঞ্চল রয়েছে তার ভিত্তিতে ইউআই আঁকতে WindowSizeClass
এপিআইয়ের সুবিধা নিন। উইন্ডো আকারের ক্লাস ব্যবহার দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
কোনও অপ্ট-আউট নেই। অবনমিত এপিআই থেকে স্থানান্তর করুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
এই ওভাররাইডের জন্য কোনও সম্পত্তি পতাকা নেই।
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable NEVER_SANDBOX_DISPLAY_APIS <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable NEVER_SANDBOX_DISPLAY_APIS <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
সর্বদা_স্যান্ডবক্স_ডিসপ্লে_পিস
উইন্ডোয়িং মোড নির্বিশেষে সর্বদা Display
স্যান্ডবক্সিং প্রয়োগ করা প্যাকেজগুলি সর্বদা এপিআই স্যান্ডবক্সিং প্রয়োগ করে। Display
এপিআই সর্বদা অ্যাপের সীমা সরবরাহ করে।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
android:resizeableActivity
false
বা android.supports_size_changes
রিসিজিব্লাইসিটিভিটি বৈশিষ্ট্যটি বৈশিষ্ট্যযুক্ত করুন false
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
যে অ্যাপ্লিকেশনগুলি ঘোষণা করে যে তারা সম্পূর্ণরূপে পুনরুদ্ধারযোগ্য তা ইউআই উপাদানগুলির অবস্থানের জন্য প্রদর্শনের আকারের উপর কখনই নির্ভর করা উচিত নয়। WindowMetrics
সরবরাহ করে এমন আপনার অ্যাপ্লিকেশনটিকে অবমূল্যায়িত এপিআই থেকে আপ -তারিখের এপিআইগুলিতে স্থানান্তর করুন। WindowMetricsCalculator
দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
কোনও অপ্ট-আউট নেই। অবনমিত এপিআই থেকে স্থানান্তর করুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
এই ওভাররাইডের জন্য কোনও সম্পত্তি পতাকা নেই।
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable ALWAYS_SANDBOX_DISPLAY_APIS <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable ALWAYS_SANDBOX_DISPLAY_APIS <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
ওভাররাইড_স্যান্ডবক্স_ভিউ_বাউন্ডস_পিস
ক্রিয়াকলাপের সীমানায় নিম্নলিখিত View
এপিআইগুলিকে স্যান্ডবক্সে প্যাকেজগুলি জোর করে:
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
ডিভাইস প্রদর্শনের সাথে সম্পর্কিত ডিভাইস ডিসপ্লে এবং অফসেটগুলির পরিবর্তে অ্যাপ উইন্ডোটির সাথে সম্পর্কিত অ্যাপ্লিকেশন উইন্ডো এবং অফসেটগুলি সরবরাহ করে এমন এপিআই ব্যবহার করে অ্যাপ্লিকেশন কোডে সমস্যাটি সমাধান করুন।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
অ্যাপ্লিকেশনগুলিতে লেটারবক্সিং এবং মাল্টি-উইন্ডো মোডের সম্ভাবনাটি অ্যাপটিতে প্রয়োগ হওয়ার সম্ভাবনা বিবেচনা করে অ্যাপ্লিকেশনগুলি View
এপিআইগুলি ব্যবহার করা উচিত। WindowMetricsCalculator
দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
সম্পত্তি false
সেট করুন PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS"
android:value="false"/>
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
ওভাররাইড_কামেরা_কমপ্যাট_ডিসেবল_ফোর্স_রোটেশন
ফোর্স রোটেশন অক্ষম করে। কিছু অ্যাপ্লিকেশনগুলিতে ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
সম্পত্তি পতাকা সেট করুন PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION
false
।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
ক্যাশেড ক্যামেরা সেন্সর ওরিয়েন্টেশন বা ডিভাইসের তথ্যের উপর নির্ভর করবেন না। ক্যামেরার সামঞ্জস্যতার দিকনির্দেশনার জন্য, আপনার ক্যামেরা অ্যাপ্লিকেশনটিতে ক্যামেরা ভিউফাইন্ডার এবং সমর্থন পুনর্নির্মাণযোগ্য পৃষ্ঠগুলি প্রবর্তন করা দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
সম্পত্তি পতাকা সেট true
PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION"
android:value="true|false"/>
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে, যা ফোর্স রোটেশন সরিয়ে দেয়:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>
ওভাররাইড অপসারণ করতে, যা বলের ঘূর্ণন ঘটতে দেয়:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
ওভাররাইড_কামেরা_কম্প্যাট_ডিসেবল_রেফ্রেশ
ফোর্স রোটেশনের পরে ক্রিয়াকলাপ রিফ্রেশকে অক্ষম করে। রিফ্রেশ অ্যাপ্লিকেশনগুলিতে রাষ্ট্রীয় ক্ষতির কারণ হয়ে গেলে ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
সম্পত্তি পতাকা সেট করুন PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH
false
।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
ওভাররাইড_কামেরা_কমপ্যাট_ডিসেবল_ফোর্স_রোটেশন দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
সম্পত্তি পতাকা সেট করুন PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH
true
।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH"
android:value="true|false"/>
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে, যা ক্রিয়াকলাপ রিফ্রেশ করে:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>
ওভাররাইড অপসারণ করতে, যা ক্রিয়াকলাপকে রিফ্রেশ করতে দেয়:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
ওভাররাইড_কামেরা_কমপ্যাট_ইনেবল_রেফ্রেশ_ভিয়া_পজ
এটি প্যাকেজগুলি তৈরি করে এটি একটি onResume()
→ onPause()
→ onResume()
চক্রটি onResume()
→ onStop()
→ onResume()
পরিবর্তে ক্যামেরার সামঞ্জস্যতা বল ঘূর্ণনের পরে ব্যবহার করে এটি ক্রিয়াকলাপ রিফ্রেশ করতে প্রয়োগ করা হয়।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
সম্পত্তি পতাকা সেট করুন PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
true
।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
ওভাররাইড_কামেরা_কমপ্যাট_ডিসেবল_ফোর্স_রোটেশন দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
সম্পত্তি পতাকা সেট করুন PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
false
।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE"
android:value="true|false"/>
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
ওভাররাইড_কামেরা_ল্যান্ডস্কেপ_ও_পোরট্রেট
যখন প্রতিকৃতি ক্যামেরা ওরিয়েন্টেশন প্রাকৃতিক ডিভাইস ওরিয়েন্টেশনের সাথে একত্রিত হয় না তখন ক্যামেরা আউটপুটকে বিপরীত ওরিয়েন্টেশনে ক্রপ করা যায়। অনেক অ্যাপ্লিকেশন এই পরিস্থিতিটি পরিচালনা করে না এবং অন্যথায় প্রসারিত চিত্রগুলি প্রদর্শন করে।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
সম্পত্তি পতাকা সেট true
PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
ওভাররাইড_কামেরা_কমপ্যাট_ডিসেবল_ফোর্স_রোটেশন দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
সম্পত্তি false
সেট করুন PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
<property android:name="android.camera.PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT"
android:value="true|false"/>
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে, যা অভ্যন্তরীণ সামনের ক্যামেরা ক্রপিং প্রয়োগ করে:
adb shell am compat enable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>
ওভাররাইড অপসারণ করতে, যা অভ্যন্তরীণ সামনের ক্যামেরা ক্রপিং সরিয়ে দেয়:
adb shell am compat disable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION
অ্যাপসকে অ্যাপ স্ক্রিন ভাগ করে নেওয়ার বাইরে বেছে নেওয়া থেকে বিরত রাখে ( মিডিয়া প্রক্ষেপণ দেখুন)। অ্যাপ্লিকেশনগুলি যখন createConfigForDefaultDisplay()
এপিআইয়ের অপব্যবহারের জন্য সম্পূর্ণ - স্ক্রিন ক্যাপচারকে বাধ্য করতে এবং বিজ্ঞপ্তিগুলির বিষয়বস্তুগুলি প্রকাশ করে ব্যবহারকারীর গোপনীয়তাকে বিপন্ন করে তোলে, যা পুরো -স্ক্রিন দিয়ে ধরা পড়ে তবে অ্যাপ স্ক্রিন ভাগ করে নেওয়ার নয়, এবং সমস্ত অ্যাপ্লিকেশনগুলি উইন্ডোইং মোড নির্বিশেষে সমস্ত অ্যাপ্লিকেশনগুলি নির্বিশেষে প্রয়োগ করা হয়।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
ডিফল্ট মিডিয়া প্রজেকশন আচরণের অনুমতি দিন (অ্যান্ড্রয়েড 14, এপিআই স্তর 34 এ প্রয়োগ করা হয়েছে, createScreenCaptureIntent()
), যা ব্যবহারকারীদের উইন্ডোইং মোড নির্বিশেষে পূর্ণ স্ক্রিন বা একটি একক অ্যাপ্লিকেশন উইন্ডো ভাগ করবেন কিনা তা সিদ্ধান্ত নিতে সক্ষম করে। অথবা মিডিয়াপ্রজেকশন কনফিগ আর্গুমেন্ট সহ createScreenCaptureIntent(MediaProjectionConfig)
MediaProjectionConfig
করুন createConfigForUserChoice()
একটি কল থেকে ফিরে এসেছেন।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
মিডিয়া প্রক্ষেপণের সময় পুরো ডিভাইস ডিসপ্লে বা কোনও অ্যাপ্লিকেশন উইন্ডো ভাগ করে নেওয়ার জন্য ব্যবহারকারীদের নির্বাচন করার অনুমতি দিন, যা অ্যান্ড্রয়েড 14 হিসাবে ডিফল্ট আচরণ।
মাল্টি -ওয়াইন্ডো মোডকে সমর্থন করার জন্য আপনার অ্যাপটিকে পুনরায় আকারযোগ্য ( resizeableActivity="true"
) করুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
ব্যবহারকারীর গোপনীয়তার গুরুতরতার কারণে, আপনার অ্যাপ্লিকেশনটি এই ওভাররাইড থেকে অক্ষম বা অপ্ট আউট করতে পারে না।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
কোনোটিই নয়।
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে, যা অ্যাপটির অপ্টকে আংশিক স্ক্রিন ভাগ করে নেওয়ার বাইরে বাতিল করে (এটি আংশিক স্ক্রিন ভাগ করে নেওয়ার সক্ষম করে):
adb shell am compat enable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>
ওভাররাইড অপসারণ করতে, যা অ্যাপটির অপ্টকে আংশিক স্ক্রিন ভাগ করে নেওয়ার অনুমতি দেয়:
adb shell am compat disable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
ওভাররাইড_ইনেবল_কমপ্যাট_ফেক_ফোকাস
স্প্লিট - স্ক্রিন মোডে আনফোকাসড অ্যাপ্লিকেশনগুলির জন্য জাল ফোকাস প্রেরণ সক্ষম করে। কিছু গেম ইঞ্জিন অ্যাপ্লিকেশনটির সামগ্রী আঁকার আগে ফোকাস পেতে অপেক্ষা করে; এবং তাই, জাল ফোকাস অ্যাপ্লিকেশনগুলিকে পুনরায় শুরু করার সময় ব্ল্যাক আউট এড়াতে সহায়তা করে এবং এখনও ফোকাস নেই।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
সম্পত্তি পতাকা সেট true
PROPERTY_COMPAT_ENABLE_FAKE_FOCUS
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
যদি আপনার অ্যাপ্লিকেশন একাধিক ওরিয়েন্টেশন এবং কনফিগারেশন পরিবর্তনগুলি ভালভাবে পরিচালনা করে তবে আপনি এই সমস্যাটি এড়াতে পারেন। বড় স্ক্রিন অ্যাপের মানের নির্দেশিকাগুলি অনুসরণ করে আপনার অ্যাপ্লিকেশনটিকে বড় স্ক্রিনটি প্রস্তুত করুন।
আপনি যদি ইউনিটি গেম ইঞ্জিনটি চালান তবে সংস্করণ 2019.4.40 বা তার পরে আপগ্রেড করুন এবং আপনার গেমটি পুনরায় রফতানি করুন। অ্যান্ড্রয়েড প্লেয়ার সেটিংসে Resizable Window
বিকল্পটি পরীক্ষা করে রাখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
সম্পত্তি false
সেট করুন PROPERTY_COMPAT_ENABLE_FAKE_FOCUS
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
<property android:name="android.window.PROPERTY_COMPAT_ENABLE_FAKE_FOCUS"
android:value="true|false"/>
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
অতিরিক্ত সম্পদ
- বড় স্ক্রিন অ্যাপ মানের নির্দেশিকা
- মূল অ্যাপ্লিকেশন মানের নির্দেশিকা
অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির জন্য একটি সামঞ্জস্যতা মোড সক্রিয় করে যা ওরিয়েন্টেশন বা পুনর্বিবেচনার সীমাবদ্ধতা ঘোষণা করে। সামঞ্জস্যতা মোড বড় স্ক্রিন ডিভাইস এবং ভাঁজযোগ্য ফ্লিপ ফোনগুলিতে গ্রহণযোগ্য অ্যাপ্লিকেশন আচরণ নিশ্চিত করে তবে সাবপটিমাল ব্যবহারযোগ্যতার সাথে।
প্রতি-অ্যাপ্লিকেশন ওভাররাইডগুলি ডিভাইস নির্মাতাদের ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে বা নির্দিষ্ট ডিভাইসগুলিতে অ্যাপ্লিকেশনগুলি ভাঙতে বাধা দিতে অ্যাপ্লিকেশন আচরণ পরিবর্তন করতে সক্ষম করে।
রেফারেন্স ডিভাইস
অস্বাভাবিক কনফিগারেশন বা কনফিগারেশনের কারণে নিম্নলিখিত ডিভাইসগুলির জন্য প্রতি অ্যাপ্লিকেশন ওভাররাইডগুলির প্রয়োজন হতে পারে যা অ্যাপ্লিকেশনগুলির দ্বারা ভালভাবে সমর্থিত নয়:
- ট্যাবলেট: পিক্সেল ট্যাবলেট হিসাবে কিছু ট্যাবলেটগুলির প্রাকৃতিক ওরিয়েন্টেশন হ'ল ল্যান্ডস্কেপ। একটি ডিভাইস তার প্রাকৃতিক দৃষ্টিভঙ্গিতে থাকে যখন
Display#getRotation()
Surface.ROTATION_0
রিটার্ন দেয় rotrotation_0। যদি অ্যাপ্লিকেশনগুলিROTATION_0
প্রতিকৃতি বলে ধরে নেয় তবে অ্যাপ্লিকেশন লেআউট এবং ক্যামেরা পূর্বরূপটি ডিভাইস ডিসপ্লেতে মেলানো যেতে পারে। - ল্যান্ডস্কেপ ফোল্ডেবলস: কিছু ফোল্ডেবল ডিভাইস, যেমন পিক্সেল ভাঁজগুলি ভাঁজ করার সময় প্রতিকৃতি ওরিয়েন্টেশনে থাকে তবে ল্যান্ডস্কেপ ওরিয়েন্টেশন যখন উদ্ঘাটিত হয় তখন। যদি অ্যাপ্লিকেশনগুলি মনে করে যে উদ্ঘাটন ওরিয়েন্টেশনটি প্রতিকৃতি, তবে ঝাঁকুনি লুপগুলি বা বিন্যাসের সমস্যাগুলি সম্ভবত।
- ভাঁজযোগ্য ফ্লিপ ফোন: উদ্ঘাটিত ফ্লিপ ফোনগুলি সাধারণত প্রতিকৃতি ওরিয়েন্টেশনে থাকে। তবে, যখন ভাঁজ করা হয়, তখন ফোনগুলির সাধারণত ল্যান্ডস্কেপ ওরিয়েন্টেশনে একটি ছোট প্রদর্শন থাকে। অ্যাপ্লিকেশনগুলি অবশ্যই প্রদর্শনগুলির বিভিন্ন ওরিয়েন্টেশনগুলি সনাক্ত এবং সমন্বিত করতে হবে।
সাধারণ সামঞ্জস্যের সমস্যা
অ্যাপ্লিকেশন ওরিয়েন্টেশন বিধিনিষেধ, পুনরুত্থানযোগ্যতা এবং দিক অনুপাতের সীমাবদ্ধতা, ক্যামেরা পূর্বরূপ ওরিয়েন্টেশনটির ভুল হ্যান্ডলিং এবং অপব্যবহার করা এপিআইগুলির কারণে অ্যাপ্লিকেশনগুলি প্রায়শই সামঞ্জস্যতার সমস্যাগুলি অনুভব করে।
লেটারবক্সিং
লেটারবক্সিং স্ক্রিনের কেন্দ্রে বা বড় স্ক্রিনে, একদিকে বা অন্যদিকে সুবিধাজনক অ্যাক্সেসের জন্য অ্যাপটিকে অবস্থান করে। ম্যাটস (সলিড -কালারড বার বা অস্পষ্ট ওয়ালপেপার) অ্যাপ্লিকেশনটির পাশ বা উপরে এবং নীচে বরাবর অব্যবহৃত প্রদর্শন অঞ্চলটি পূরণ করুন।
লেটারবক্সিং প্রায়শই বড় স্ক্রিন ডিভাইসে ঘটে কারণ ডিভাইস ডিসপ্লেটির মাত্রা এবং দিক অনুপাত সাধারণত স্ট্যান্ডার্ড ফোনগুলির চেয়ে আলাদা থাকে, যার জন্য বেশিরভাগ অ্যাপ্লিকেশন ডিজাইন করা হয়।
ইস্যু
অ্যাপ্লিকেশন সমস্ত ডিসপ্লে কনফিগারেশন সমর্থন করে না কারণ অ্যাপ্লিকেশনটিতে স্থির ওরিয়েন্টেশন, স্থির দিক অনুপাত রয়েছে বা পুনরায় আকারযোগ্য নয়।
কনফিগারেশন সেটিংস যা অ্যাপ্লিকেশন ওরিয়েন্টেশন এবং পুনর্বিবেচনা নিয়ন্ত্রণ করে তা নিম্নলিখিতগুলি অন্তর্ভুক্ত করে:
screenOrientation
: একটি অ্যাপের জন্য একটি নির্দিষ্ট ওরিয়েন্টেশন নির্দিষ্ট করে। অ্যাপ্লিকেশনগুলিActivity#setRequestedOrientation()
ব্যবহার করে রানটাইমে ওরিয়েন্টেশনও সেট করতে পারে।resizeableActivity
: সিস্টেমটি বিভিন্ন মাত্রার উইন্ডোজ ফিট করতে অ্যাপ্লিকেশনগুলিকে পুনরায় আকার দিতে পারে কিনা তা নির্দেশ করে। অ্যান্ড্রয়েড 11 এ (এপিআই স্তর 30) এবং লোয়ার, অ্যাপ্লিকেশনগুলি মাল্টি -ওয়াইন্ডো মোডকে সমর্থন করে কিনা তা নির্দিষ্ট করে। অ্যান্ড্রয়েড 12 এ (এপিআই স্তর 31) এবং উচ্চতর, অ্যাপ্লিকেশনগুলি ছোট স্ক্রিনগুলিতে (কমপ্যাক্ট উইন্ডো আকারের শ্রেণি ) মাল্টি -ওয়াইন্ডো মোডকে সমর্থন করে কিনা তা নির্দিষ্ট করে। অ্যান্ড্রয়েড 12 এবং উচ্চতর, অ্যাপ্লিকেশনগুলি এই সেটিংটি নির্বিশেষে বড় স্ক্রিনগুলিতে (মাঝারি বা প্রসারিত উইন্ডো আকারের শ্রেণি) মাল্টি - ওয়াইন্ডো মোডকে সমর্থন করে।maxAspectRatio
: অ্যাপ্লিকেশন দ্বারা সমর্থিত সর্বাধিক দিক অনুপাত নির্দিষ্ট করে।false
হিসাবে সেট করাresizeableActivity
সহ কেবল অ্যাপ্লিকেশনগুলিmaxAspectRatio
সেট করতে পারে।minAspectRatio
: অ্যাপ্লিকেশন দ্বারা সমর্থিত ন্যূনতম দিক অনুপাত নির্দিষ্ট করে।false
হিসাবে সেট করা কেবলresizeableActivity
সহ অ্যাপ্লিকেশনগুলিminAspectRatio
সেট করতে পারে।
অপ্টিমাইজেশান
অ্যাপ্লিকেশনটিতে সমস্ত ডিভাইস এবং মাল্টি-উইন্ডো মোড ডিসপ্লে ওরিয়েন্টেশন এবং আকারগুলি সমর্থন করা উচিত। আপনার অ্যাপ্লিকেশন লেআউট এবং অ্যাপ্লিকেশন ম্যানিফেস্ট ফাইল থেকে সমস্ত ওরিয়েন্টেশন এবং স্থির দিক অনুপাতের সীমাবদ্ধতাগুলি সরান।
সামঞ্জস্যতা workaround
যদি ফিক্সড ওরিয়েন্টেশন বা স্থির দিকের অনুপাত সহ কোনও অ্যাপ্লিকেশনটি কোনও উইন্ডোতে চলে যেখানে অ্যাপটি সরাসরি উইন্ডোর আকার বা ওরিয়েন্টেশনকে সমর্থন করে না, অ্যান্ড্রয়েড লেটারবক্সগুলি ধারাবাহিকতা সংরক্ষণের জন্য অ্যাপ্লিকেশনটিকে লেটারবক্স করে।
অ্যান্ড্রয়েড 12 (এপিআই স্তর 31) দিয়ে শুরু এবং 12 এল (এপিআই স্তর 32) দিয়ে চালিয়ে যাওয়া, প্ল্যাটফর্মটি লেটারবক্সযুক্ত অ্যাপ্লিকেশনগুলিতে বিভিন্ন বর্ধন প্রয়োগ করে। ডিভাইস নির্মাতারা ইউআই বর্ধনগুলি প্রয়োগ করে। উন্নতিগুলি থেকে উপকৃত হওয়ার জন্য আপনার অ্যাপ্লিকেশনটির জন্য আপনার কোনও অতিরিক্ত বিকাশ করার দরকার নেই।
অ্যান্ড্রয়েড 12 (এপিআই স্তর 31) নিম্নলিখিত নান্দনিক বর্ধনগুলি প্রবর্তন করে, যা ডিভাইস প্রস্তুতকারকদের দ্বারা কনফিগার করা যেতে পারে:
- বৃত্তাকার কোণগুলি: অ্যাপ উইন্ডোটির কোণগুলির আরও পরিশোধিত চেহারা রয়েছে।
- সিস্টেম বারের স্বচ্ছতা: স্ট্যাটাস এবং নেভিগেশন বারগুলি, যা অ্যাপ্লিকেশনটিকে ওভারলে করে, সেমিট্রান্সপারেন্ট, বারগুলিতে আইকন তৈরি করে যা লেটারবক্সের পটভূমিতে সর্বদা দেখা যায়।
- কনফিগারযোগ্য দিক অনুপাত: অ্যাপ্লিকেশনটির উপস্থিতি উন্নত করতে অ্যাপ্লিকেশনটির দিক অনুপাতটি সামঞ্জস্য করা যেতে পারে।
12 এল (এপিআই স্তর 32) নিম্নলিখিত কার্যকরী উন্নতিগুলি যুক্ত করে:
কনফিগারযোগ্য অবস্থান: বড় স্ক্রিনগুলিতে, ডিভাইস নির্মাতারা অ্যাপ্লিকেশনটিকে ডিসপ্লেটির বাম বা ডানদিকে অবস্থান করতে পারে, ইন্টারঅ্যাকশনকে আরও সহজ করে তোলে।
পুনরায় ডিজাইন করা পুনঃসূচনা বোতাম: ডিভাইস নির্মাতারা আকার সামঞ্জস্যতা মোডের জন্য পুনরায় আরম্ভ বোতামটি ব্যবহারকারীদের দ্বারা আরও ভাল স্বীকৃতির জন্য একটি নতুন চেহারা দিতে পারে।
অ্যান্ড্রয়েড 13 (এপিআই স্তর 33) স্ক্রিনে লেটারবক্সড অ্যাপটি অবস্থান সম্পর্কে বা স্প্লিট -স্ক্রিন মোডে লেটারবক্স সহ একটি ব্যবহারকারী শিক্ষার ডায়ালগ যুক্ত করেছে:
আকার সামঞ্জস্যতা মোড
সাইজের সামঞ্জস্যতা মোডটি লেটারবক্সিং যা একটি পুনঃসূচনা নিয়ন্ত্রণ অন্তর্ভুক্ত করে। নিয়ন্ত্রণটি ব্যবহারকারীদের অ্যাপ্লিকেশনটি পুনরায় চালু করতে এবং প্রদর্শনটি পুনর্নির্মাণ করতে সক্ষম করে। অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির জন্য আকারের সামঞ্জস্যতা মোডের আহ্বান জানায় যা অযোগ্য হিসাবে নির্ধারিত হয়। যখন কোনও ক্রিয়াকলাপ কোনও ডিসপ্লে পাত্রে চলে যায় যা ক্রিয়াকলাপের মাত্রার সাথে বেমানান, তখন সিস্টেমটি কমপক্ষে একটি মাত্রায় ডিভাইস ডিসপ্লে পূরণ করতে অ্যাপটিকে পুনরুদ্ধার করতে পারে।
ডিভাইস কনফিগারেশন পরিবর্তনগুলি যা আকারের সামঞ্জস্যতা মোডকে ট্রিগার করতে পারে তা নিম্নলিখিতগুলি অন্তর্ভুক্ত করে:
- ডিভাইস ঘূর্ণন
- ভাঁজযোগ্য ডিভাইস ভাঁজ বা উদ্ঘাটন
- পূর্ণ পর্দা এবং স্প্লিট-স্ক্রিন ডিসপ্লে মোডগুলির মধ্যে পরিবর্তন
ইস্যু
আকারের সামঞ্জস্যতা মোড সাধারণত এমন ক্রিয়াকলাপগুলিতে প্রযোজ্য যা ওরিয়েন্টেশন বা দিক অনুপাতের ক্ষেত্রে সীমাবদ্ধ থাকে এবং কনফিগার করা হয় (বা সিস্টেম দ্বারা নির্ধারিত হয়) অ -রিজাইজযোগ্য হতে পারে।
আপনার অ্যাপ্লিকেশনটিকে পুনরায় আকারযোগ্য বলে মনে করা হয় - এবং আকারের সামঞ্জস্যতা মোডে রাখা হবে না - যদি এটি নিম্নলিখিত কোনও মানদণ্ড পূরণ করে:
-
resizeableActivity="true"
এর সাথে পুনরায় চিত্রগ্রহণযোগ্য - চিত্র-ইন-পিকচার (পিআইপি) মোড সমর্থন করে
- এম্বেড করা হয়
- ডিভাইস প্রস্তুতকারকের দ্বারা প্রয়োগ করা
FORCE_RESIZE_APP
পার-অ্যাপ ওভাররাইড রয়েছে (অ্যাপ্লিকেশন দ্বারা সেট করা বৈশিষ্ট্যগুলি উপেক্ষা করা হয়)
যদি আপনার অ্যাপ্লিকেশনটি কোনও শর্ত পূরণ না করে তবে এটি পুনরায় আকারযোগ্য নয় এবং আকারের সামঞ্জস্যতা মোডে রাখা যেতে পারে বলে বিবেচিত হয়।
অপ্টিমাইজেশান
অ্যাপ্লিকেশন সমস্ত প্রদর্শন আকার সমর্থন করা উচিত। android:resizeableActivity
<application>
ম্যানিফেস্টে true
জন্য <activity>
আপনার অ্যাপ্লিকেশনটির জন্য প্রতিক্রিয়াশীল/অভিযোজিত লেআউটগুলি ডিজাইন করুন। আরও তথ্যের জন্য, বিভিন্ন ডিসপ্লে আকারগুলি সমর্থন করুন এবং মাল্টি-উইন্ডো মোড সমর্থন করুন ।
সামঞ্জস্যতা workaround
অ্যান্ড্রয়েড যখন লেটারবক্সযুক্ত অ্যাপটির প্রদর্শন নির্ধারণ করে তখন কমপক্ষে একটি মাত্রায় ডিসপ্লে উইন্ডোটি পূরণ করার জন্য অ্যাপটি উদ্ধার করে উন্নত করা যেতে পারে তখন সিস্টেমটি আকারের সামঞ্জস্যতা মোডে একটি অ্যাপ্লিকেশন রাখে। সিস্টেমটি একটি পুনঃসূচনা নিয়ন্ত্রণ প্রদর্শন করে যা অ্যাপ্লিকেশন প্রক্রিয়াটি পুনরায় তৈরি করে, ক্রিয়াকলাপটি পুনরুদ্ধার করে এবং প্রদর্শনটি পুনরায় চালু করে। প্রক্রিয়া এবং থ্রেড ওভারভিউও দেখুন।
ঝাঁকুনি লুপ
যখন কোনও অ্যাপ্লিকেশন সমস্ত ডিসপ্লে ওরিয়েন্টেশনগুলিকে সমর্থন করে না, তখন কোনও কনফিগারেশন পরিবর্তনের সময় এটি বারবার নতুন ওরিয়েন্টেশনগুলির জন্য অনুরোধ করতে পারে, একটি অসীম লুপ তৈরি করে যা ডিসপ্লেটি ঝাঁকুনিতে বা অ্যাপ্লিকেশনটিকে অবিরামভাবে ঘোরায়।
ইস্যু
অ্যান্ড্রয়েড 12 (এপিআই স্তর 31) এবং উচ্চতর, ডিভাইস নির্মাতারা অ্যাপ্লিকেশন দ্বারা নির্দিষ্ট করা ওরিয়েন্টেশন বিধিনিষেধগুলি উপেক্ষা করতে এবং পরিবর্তে সামঞ্জস্যতা মোডগুলি প্রয়োগ করতে তাদের ডিভাইসগুলি কনফিগার করতে পারে। উদাহরণস্বরূপ, একটি ভাঁজযোগ্য ডিভাইস কোনও ক্রিয়াকলাপের android:screenOrientation="portrait"
সেটিং যখন ডিভাইসের ল্যান্ডস্কেপ ট্যাবলেট-আকার, অভ্যন্তরীণ পর্দায় ক্রিয়াকলাপ প্রদর্শিত হয়।
যদি কোনও অ্যাপের ওরিয়েন্টেশন বিধিনিষেধগুলি উপেক্ষা করা হয়, তবে অ্যাপ্লিকেশনটি প্রোগ্রামে Activity#setRequestedOrientation()
কল করে তার ওরিয়েন্টেশন সেট করতে পারে। কলটি অ্যাপ্লিকেশনটি কনফিগারেশন পরিবর্তনগুলি পরিচালনা না করে যদি একটি অ্যাপ্লিকেশন পুনরায় চালু করে ( কনফিগারেশন পরিবর্তনগুলি হ্যান্ডেল দেখুন)। পুনঃসূচনা করার পরে, অ্যাপটির ওরিয়েন্টেশন বিধিনিষেধগুলি আবার উপেক্ষা করা হয়, অ্যাপটি setRequestedOrientation()
এর কলটি পুনরাবৃত্তি করে, কলটি একটি অ্যাপ্লিকেশন পুনরায় চালু করে এবং আরও একটি স্ব-স্থায়ী লুপে ট্রিগার করে।
আপনি এটির মুখোমুখি হতে পারেন এমন আরেকটি উপায় হ'ল যখন কোনও ডিভাইস স্ক্রিনের প্রাকৃতিক ওরিয়েন্টেশন (অ্যান্ড্রয়েড দ্বারা নির্ধারিত সাধারণ ওরিয়েন্টেশন) ল্যান্ডস্কেপ (অর্থাৎ, কলিং Display#getRotation()
Surface.ROTATION_0
ফিরে আসে rotrotation_0 যখন ডিভাইসটিতে একটি ল্যান্ডস্কেপ দিক অনুপাত থাকে)। .তিহাসিকভাবে, অ্যাপ্লিকেশনগুলি ধরে নিয়েছে যে Display.getRotation() = Surface.ROTATION_0
এর অর্থ ডিভাইসটি প্রতিকৃতি ওরিয়েন্টেশনে রয়েছে, তবে এটি সর্বদা ক্ষেত্রে হয় না, উদাহরণস্বরূপ, কিছু ফোল্ডেবল ডিভাইসের অভ্যন্তরীণ স্ক্রিনে এবং কিছু ট্যাবলেটগুলিতে।
একটি ভাঁজযোগ্য অভ্যন্তরীণ ডিসপ্লেতে ল্যান্ডস্কেপ ওরিয়েন্টেশনের একটি অ্যাপ্লিকেশন, স্ক্রিন রোটেশনটি পরীক্ষা করতে পারে, ROTATION_0
এর একটি মান পেতে পারে, ডিভাইসের প্রাকৃতিক দৃষ্টিভঙ্গি প্রতিকৃতি বলে ধরে নিতে পারে এবং অ্যাপ লেআউটটি পুনরায় কনফিগার করার জন্য setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
)
কল করুন। অ্যাপটি পুনরায় চালু হওয়ার পরে (ল্যান্ডস্কেপ ওরিয়েন্টেশনে), এটি আবার স্ক্রিন রোটেশনটি পরীক্ষা করতে পারে, ROTATION_0
এর একটি মান পেতে পারে, কল করুন setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
, এবং অসীম লুপটি চালিয়ে যেতে পারে।
অপ্টিমাইজেশান
অ্যাপ্লিকেশনগুলি নিম্নলিখিতগুলি করা উচিত নয় :
- ক্রিয়াকলাপ
onCreate()
পদ্ধতিতেActivity#setRequestedOrientation()
এর সাথে একটি ডিফল্ট ওরিয়েন্টেশন সেট করুন কারণ ওরিয়েন্টেশন অনুরোধটি অপ্রত্যাশিতভাবে আনহ্যান্ডড কনফিগারেশন পরিবর্তনগুলি দ্বারা ট্রিগার করা যেতে পারে - ধরুন ডিভাইসের প্রাকৃতিক ওরিয়েন্টেশন (
ROTATION_0
) প্রতিকৃতি - বর্তমান উইন্ডো আকারের সাথে সম্পর্কিত নয় এমন সংকেতগুলির উপর ভিত্তি করে ওরিয়েন্টেশন সেট করুন যেমন
Display#getRotation()
, একটিFoldingFeature
উপস্থিতি বা অবমূল্যায়িত এপিআই ।
Compatibility workaround
Android ignores calls to Activity#setRequestedOrientation()
in the following situations:
The activity has already relaunched from a previous call to the method or the camera compat force rotation treatment has been enabled (see Camera preview below).
Device manufacturers can apply this behavior to an app with
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION
.The activity made more than two orientation requests in one second, which indicates a loop has occurred. Of the two requests in the loop, Android uses the one that maximizes the app display area.
Device manufacturers can apply this behavior to an app with
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
.
ক্যামেরা প্রিভিউ
The camera preview (or viewfinder) of camera apps can be misaligned or distorted on tablets, laptops, and foldable displays.
ইস্যু
The Android Compatibility Definition Document states that a camera image sensor "MUST be oriented so that the long dimension of the camera aligns with the screen's long dimension."
Apps often assume that device orientation and camera sensor orientation are portrait—a reasonable assumption on standard mobile phones. But the natural orientation of tablets and laptops and their camera sensors can be landscape. Also, new form factors like foldables can have multiple natural orientations and multiple camera sensors in varying orientations.
Starting an activity with a camera orientation the app does not expect or switching between different cameras or device screens (for foldables) can cause a misaligned or distorted camera preview.
অপ্টিমাইজেশান
Camera apps must correctly identify and manage device orientation and camera sensor orientation to present a correctly aligned and scaled camera preview. Apps must calculate device rotation, sensor rotation, and screen or window aspect ratio, and then apply the results to the camera preview. For detailed guidance, see Camera preview and Introducing Camera Viewfinder .
Compatibility workaround
A device is in natural orientation when Display#getRotation()
returns Surface.ROTATION_0
. The system calculates CameraCharacteristics.SENSOR_ORIENTATION
from the device's natural orientation. Android aligns the portrait window of portrait‑restricted apps with the natural orientation of the device, which is what most apps expect. Android also crops the camera sensor image when the sensor orientation is landscape and the camera preview is portrait. The specific workarounds include the following:
Force rotate camera previews for portrait-restricted apps: Apps restricted to portrait orientation expect the device's natural orientation and the camera sensor orientation to be portrait. However, on Android 12 (API level 31) and higher, apps can run in multiple device orientations if device manufacturers ignore the orientation specification.
When a portrait-restricted app is connected to the camera, Android force rotates the app to align the app portrait window with the natural orientation of the device.
On some tablets (see reference devices ), the app portrait window is rotated to full screen portrait to align with the device's natural orientation. The app occupies the full screen after force rotation.
On the landscape inner screen of foldables (see reference devices ), portrait-only activities are rotated to landscape to align with the unfolded natural orientation. The app is letterboxed after force rotation.
Inner front camera cropping: The inner front camera sensor on some foldables is in landscape orientation. In addition to force rotating the camera preview on the foldable inner display, Android crops the inner front (landscape) camera field of view so that the sensor captures a view opposite the device orientation.
Force refresh camera previews: The system cycles through activity methods
onStop()
andonStart()
(by default) oronPause()
andonResume()
(applied by the OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE per-app override) after force rotation to make sure the camera preview is properly displayed.Aspect ratio scaling: The system dynamically changes the aspect ratio of the force rotated camera preview to a higher minimum aspect ratio, which ensures the camera preview is properly scaled.
App developers can override these workarounds if the apps handle camera preview correctly. See Per-app overrides .
Commonly misused APIs
As Android has added support for features like multi‑window mode and devices like foldables, legacy APIs have been deprecated and replaced by up‑to‑date APIs that work for all display sizes and device form factors. However, the deprecated APIs are still available for backward compatibility.
Some View
APIs are designed for special purposes that are not always well understood by developers.
ইস্যু
Developers continue to use deprecated Display
APIs and incorrectly assume the APIs return the app bounds instead of device display area bounds. Or developers mistakenly use special‑purpose view APIs to get general display metrics. The result is miscalculations when repositioning UI elements after app window resizing events, causing layout issues.
Deprecated and commonly misused Display APIs:
For more information, see Support multi-window mode .
Misused view APIs:
অপ্টিমাইজেশান
Never rely on physical display size for positioning UI elements. Migrate your app to APIs based on WindowMetrics
, including the following WindowManager
APIs:
প্ল্যাটফর্ম:
Jetpack:
Compatibility workaround
Two overrides adjust the deprecated Display
APIs and misused View
APIs to return the app bounds: ALWAYS_SANDBOX_DISPLAY_APIS
for Display
APIs; OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS
for View
APIs. ALWAYS_SANDBOX_DISPLAY_APIS
is also applied by default to apps that qualify for size compatibility mode.
Transparent activities
Transparent activities are the result of transparent background styles, for example:
<style name="Transparent" parent="AppTheme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
Themes related to dialogs, such as Theme.MaterialComponents.Dialog
, can include styles that make activities transparent.
Transparent activities don't cover all the available display space, which makes them difficult to manage because the available display area can change based on configuration changes like device rotation, device folding and unfolding, and multi‑window mode.
ইস্যু
A transparent activity should conform to the bounds of the first opaque activity below the transparent activity in the task activity stack. However, an opaque activity that launches a permission dialog can be a trampoline (an activity that launches another activity then disappears); and so, the system can't determine the bounds of the trampoline activity that launched the transparent permission dialog activity.
অপ্টিমাইজেশান
Transparent activities inherit their constraints from the top-most opaque activity beneath them in a task's activity stack. The opaque activity must be available for the entire lifecycle of the transparent activity, from activity creation to destruction. For this reason, don't launch permission requests from trampoline activities.
If a trampoline activity launches a permission request, the user might not be able to see the permission dialog because the trampoline activity will have been destroyed before the user has had a chance to respond to the dialog, and the dimensions and position of the dialog activity might have been calculated incorrectly.
Apps should always launch permission requests from activities that remain visible until the user has made a permission decision.
বৃত্তাকার কোণগুলি
An activity can be transparent because of a style that specifies background transparency or because the contents of the activity don't fill the available display space. If a transparent activity fills the available display space, the system automatically applies rounded corners to the activity when configured to do so by the device manufacturer. But, if a transparent activity (like a permission dialog) doesn't fill the available space, it's up to you to decide whether or not to apply rounded corners.
Permission dialogs don't fill the available display space because the dialog layout typically uses LayoutParams.WRAP_CONTENT rather than LayoutParams.MATCH_PARENT .
Compatibility workaround
Keep activities that launch dialog activities visible until the user has responded to the dialog.
The system ensures that a transparent activity inherits all constraints from the first opaque activity beneath the transparent activity in the activity stack, including constraints related to:
- Size compatibility mode
- ওরিয়েন্টেশন
- আকৃতির অনুপাত
ঐক্য গেম
Unity games run on Android full screen or in multi‑window mode. However, many Unity games lose focus and stop drawing content when the app is placed in multi‑window mode.
ইস্যু
Unity added a Resizable Window
option in Unity 2019.4 to support multi‑window mode on Android. However, the initial implementation did not react to the activity lifecycle in multi-window mode correctly, causing UnityPlayer to suspend playback when the app loses focus. The player rendered a black screen or the last, frozen frame of the game. Gameplay resumed only when the user tapped the screen. Many apps using the Unity engine face this issue and render as a black window in multi‑window mode.
অপ্টিমাইজেশান
Upgrade Unity to 2019.4.40 or later and re‑export your game. Keep the Resizable Window
option checked in the Android Player settings , otherwise the game pauses when not in focus even though the game is entirely visible in multi‑window mode.
Compatibility workaround
Device manufacturers can apply the OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS
per‑app override to provide a fake focus event to an app in multi‑window mode. The override enables the activity to redraw content and not be blacked out.
Test your app for compatibility issues
To test your app and understand how it behaves on different form factors, take advantage of the following resources:
- Device streaming: To test your app on production devices (including reference devices ) hosted in Google data centers, see Android Device Streaming, powered by Firebase
- Emulators in Android Studio Hedgehog: For information on creating emulators for reference devices, see Create and manage virtual devices
- Android Studio resizable emulator: For information on accessing virtual devices, see Run apps on the Android Emulator
Is letterboxed
Verify that each activity can use all of the display space available to the app. First, declare the following code in your test folder:
কোটলিন
fun Activity.isLetterboxed() : Boolean { if (isInMultiWindowMode) return false val wmc = WindowMetricsCalculator.getOrCreate() val currentBounds = wmc.computeCurrentWindowMetrics(this).bounds val maxBounds = wmc.computeMaximumWindowMetrics(this).bounds val isScreenPortrait = maxBounds.height() > maxBounds.width() return if (isScreenPortrait) { currentBounds.height() < maxBounds.height() } else { currentBounds.width() < maxBounds.width() } }
জাভা
public boolean isLetterboxed(Activity activity) { if (activity.isInMultiWindowMode()) { return false; } WindowMetricsCalculator wmc = WindowMetricsCalculator.getOrCreate(); Rect currentBounds = wmc.computeCurrentWindowMetrics(activity).getBounds() Rect maxBounds = wmc.computeMaximumWindowMetrics(activity).getBounds(); boolean isScreenPortrait = maxBounds.height() > maxBounds.width(); return (isScreenPortrait) ? currentBounds.height() < maxBounds.height() : currentBounds.width() < maxBounds.width(); }
Then run a test to assert the behavior and make sure the target activity is not letterboxed:
কোটলিন
@get:Rule val activityRule = ActivityScenarioRule(MainActivity::class.java) @Test fun activity_launched_notLetterBoxed() { activityRule.scenario.onActivity { assertThat(it.isLetterboxed()).isFalse() } }
জাভা
@Rule public ActivityScenarioRule<MainActivity> rule = new ActivityScenarioRule<>(MainActivity.class); public void activity_launched_notLetterBoxed() { try (ActivityScenario<MainActivity> scenario = ActivityScenario.launch(MainActivity.class)) { scenario.onActivity(activity -> { assertThat(isLetterboxed(activity)).isFalse(); }); } }
Ideally, run this kind of test only until it passes and asserts that your app's activities take up the entire display space available to the app. Test your app on all device types to ensure consistent behavior.
Per-app overrides
Android provides overrides that change the configured behavior of apps. For example, the FORCE_RESIZE_APP
override instructs the system to bypass size compatibility mode and resize the app to fit display dimensions even if resizeableActivity="false"
is specified in the app manifest.
Device manufacturers apply overrides to select apps—or all apps—on specific large screen devices. On Android 14 (API level 34) and higher, users can apply overrides to apps through device settings.
User per-app overrides
On Android 14 and higher, a settings menu enables users to change the aspect ratio of apps. Large screen devices such as the reference devices implement the menu.
The menu contains a list of all apps installed on the device. Users choose an app and then set the app aspect ratio to 3:4, 1:1, full screen, or other value configured by the device manufacturer. Users can also reset the aspect ratio to the app default, which is specified in the app manifest.
Apps can opt out of the compatibility override by setting the following PackageManager.Property
tags:
PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
To opt out of the user aspect ratio compatibility override, add the property to your app manifest and set the value to
false
:<application> <property android:name="android.window. PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE" android:value="false" /> </application>
Your app will be excluded from the list of apps in device settings. Users won't be able to override the app's aspect ratio.
Setting the property to
true
has no effect.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE
To opt out of the full-screen option of the user aspect ratio compatibility override, add the property to your app manifest and set the value to
false
:<application> <property android:name="android.window.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE" android:value="false" /> </application>
The full-screen option is removed from the list of aspect ratio options in device settings. Users won't be able to apply the full-screen override to your app.
Setting this property to
true
has no effect.
Optimize your app for all screens: Don't set aspect ratio restrictions in your app. Use window size classes to support different layouts based on the amount of available display space.
Device manufacturer per-app overrides
Device manufacturers apply overrides on a per‑app basis on select devices. The reference devices may apply some of the overrides to a variety of apps by default.
Apps can opt out of most overrides (see the Per-app overrides table below).
You can test your app with overrides enabled or disabled using the compatibility framework (see Compatibility framework tools ). When enabled, overrides apply to the entire app.
You can also use the Android Debug Bridge (adb) to enable or disable overrides and determine which overrides apply to your app.
Enable or disable overrides as follows:
adb shell am compat enable/disable <override name/id> <package>
For the reference devices , check which overrides apply to your app:
adb shell dumpsys platform_compat | grep <package name>
The following table lists available overrides along with guidance on how to optimize your app so the app does not need to rely on overrides. You can add property flags to your app manifest to opt out of some overrides.
Per-app overrides | |||
---|---|---|---|
টাইপ | নাম | আইডি | বর্ণনা |
Resizability | FORCE_RESIZE_APP | 174042936 | Bypasses size compatibility mode for app on configuration changes. |
FORCE_NON_RESIZE_APP | 181136395 | Forces app into size compatibility mode on configuration changes. | |
আকৃতির অনুপাত | OVERRIDE_MIN_ASPECT_RATIO | 174042980 | Gatekeeper override that must be enabled to apply any other aspect ratio overrides. |
OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY | 203647190 | If enabled (the default), limits override scope to portrait-only activities. | |
OVERRIDE_MIN_ASPECT_RATIO_MEDIUM | 180326845 | Changes the minimum aspect ratio to 3:2. | |
OVERRIDE_MIN_ASPECT_RATIO_LARGE | 180326787 | Changes the minimum aspect ratio to 16:9. | |
OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN | 208648326 | Changes the minimum aspect ratio to fit 50% of the display size (or split-screen aspect ratio). | |
OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN | 218959984 | Disables the minimum aspect ratio override so that apps are full screen when device is portrait. | |
ওরিয়েন্টেশন | OVERRIDE_ANY_ORIENTATION | 265464455 | Enables overriding any orientation. |
OVERRIDE_ANY_ORIENTATION_TO_USER | 310816437 | Overrides orientation, resizability, and aspect ratio restrictions. | |
OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT | 265452344 | Overrides the orientation to be portrait when an activity has an undefined orientation. | |
OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR | 265451093 | Overrides the orientation to be nosensor (use the natural orientation of device) when an activity has an undefined orientation. | |
OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE | 266124927 | Rotates landscape-only apps 180 degrees. | |
OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA | 265456536 | Limits orientation override scope to when app is connected to the camera. | |
OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION | 255940284 | Sets the display to fixed landscape natural orientation when a task is full screen (including when letterboxed). | |
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION | 254631730 | Ignores orientation requests from app to avoid rotation infinite loops. | |
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED | 273509367 | Ignores repeated orientation requests while an activity is relaunching. If Android detects an app is requesting at least two new orientations within one second, the system considers this a rotation infinite loop and applies the override. | |
OVERRIDE_RESPECT_REQUESTED_ORIENTATION | 236283604 | Prevents letterboxing by disabling the device manufacturer ignore orientation request setting. | |
Sandbox APIs | NEVER_SANDBOX_DISPLAY_APIS | 184838306 | Prevents changing the behavior of any display APIs. |
ALWAYS_SANDBOX_DISPLAY_APIS | 185004937 | Forces the Display APIs in the app to return app bounds. Display APIs return logical display area bounds, but sometimes the app assumes Display APIs return app bounds, which leads to UI issues. | |
OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS | 237531167 | Forces the View APIs used in the app to return app bounds. View APIs return logical display area bounds, but sometimes the app assumes View APIs return app bounds, which leads to UI issues. | |
Camera compat | OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION | 263959004 | Turns off force rotation. By default, all fixed-orientation camera apps are force rotated when the camera preview is open. |
OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH | 264304459 | Removes the default hard refresh applied when a camera preview is force rotated. | |
OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE | 264301586 | Switches the hard refresh to a soft refresh when a camera preview is force rotated, which helps preserve state during the force rotation. By default, Android applies a hard refresh when the camera preview is force rotated. The hard refresh can cause issues with apps losing state or blacking out depending on how the apps cached their previous state. | |
OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT | 250678880 | Crops the image buffer of the inner front camera. If the override is disabled, the inner front camera cropping is removed and the field of view of the camera preview is increased. By default on some foldables (see reference devices ), the system crops the camera preview of all camera apps when using the inner front camera. | |
বিবিধ | OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS | 263259275 | Prevents the app from being blacked out when the app loses focus in split-screen mode. App waits for focus before drawing the app content, which can cause the app to freeze or be blacked out. The override enables Android to send a fake focus event to the app, which signals to the app to begin drawing content again. |
FORCE_RESIZE_APP
Forces the packages to which the override is applied to be resizable. Doesn't change whether the app can be put into multi‑window mode, but allows the app to resize without entering size compatibility mode when the screen resizes.
How apps can achieve same result as override
In the app manifest, either set the android:resizeableActivity
attribute to true
or, to support resizing while disabling multi‑window mode with android:resizeableActivity=false
, set the android.supports_size_changes
metadata flag to true
.
How to optimize apps
Use responsive/adaptive layouts to enable apps to adapt to all display sizes and aspect ratios. See Support different display sizes .
How to disable or opt out of override
Set the property flag PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES
to false
.
Property flags to adjust override
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
android:value="true|false"/>
adb commands to test override
To apply the override and make app resizable:
adb shell am compat enable FORCE_RESIZE_APP <package>
To remove the override:
adb shell am compat disable FORCE_RESIZE_APP <package>
Note: The commands only temporarily apply or remove the override.
FORCE_NON_RESIZE_APP
Forces the packages to which the override is applied to be nonresizable and enter size compatibility mode on configuration changes.
How apps can achieve same result as override
Set both the android:resizeableActivity
attribute and android.supports_size_changes
metadata flag to false
in the app manifest, and declare either an orientation or aspect ratio restriction.
How to optimize apps
All apps that behave well if resized should either have android:resizeableActivity
or android.supports_size_changes
set to true
. Other apps should be improved to behave well when resized. See android:resizeableActivity .
How to disable or opt out of override
Set the property flag PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES
to false
.
Property flags to adjust override
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
android:value="true|false"/>
adb commands to test override
To apply the override and make app nonresizable:
adb shell am compat enable FORCE_NON_RESIZE_APP <package>
To remove the override:
adb shell am compat disable FORCE_NON_RESIZE_APP <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_MIN_ASPECT_RATIO
The gatekeeper for all overrides that force a given minimum aspect ratio.
How apps can achieve same result as override
Set android:minAspectRatio
at the activity or app level.
How to optimize apps
Don't set aspect ratio restrictions in your app. Make sure your app supports different display sizes . Use window size classes to support different layouts based on the amount of space your app has on the screen. See the Compose WindowSizeClass
API and View WindowSizeClass
API .
How to disable or opt out of override
Specify an aspect ratio restriction or set the property flag PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE
to false
.
Property flags to adjust override
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE"
android:value="false"/>
adb commands to test override
To apply the override:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO <package>
To remove the override:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY
Restricts app settings that force a given minimum aspect ratio for activities with portrait‑only orientation. Enabled by default and only takes effect if OVERRIDE_MIN_ASPECT_RATIO
is also enabled.
How apps can achieve same result as override
See OVERRIDE_MIN_ASPECT_RATIO .
How to optimize apps
See OVERRIDE_MIN_ASPECT_RATIO .
How to disable or opt out of override
See OVERRIDE_MIN_ASPECT_RATIO .
Property flags to adjust override
See OVERRIDE_MIN_ASPECT_RATIO .
adb commands to test override
To apply the override:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY <package>
To remove the override:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_MIN_ASPECT_RATIO_MEDIUM
Sets the activity's minimum aspect ratio to a medium value (3:2)
How apps can achieve same result as override
See OVERRIDE_MIN_ASPECT_RATIO .
How to optimize apps
See OVERRIDE_MIN_ASPECT_RATIO .
How to disable or opt out of override
See OVERRIDE_MIN_ASPECT_RATIO .
Property flags to adjust override
See OVERRIDE_MIN_ASPECT_RATIO .
adb commands to test override
To apply the override:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>
To remove the override:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_MIN_ASPECT_RATIO_LARGE
Sets the activity's minimum aspect ratio to a large value (16:9)
How apps can achieve same result as override
See OVERRIDE_MIN_ASPECT_RATIO .
How to optimize apps
See OVERRIDE_MIN_ASPECT_RATIO .
How to disable or opt out of override
See OVERRIDE_MIN_ASPECT_RATIO .
Property flags to adjust override
See OVERRIDE_MIN_ASPECT_RATIO .
adb commands to test override
To apply the override:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_LARGE <package>
To remove the override:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_LARGE <package>`
Note: The commands only temporarily apply or remove the override.
OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN
Enables the use of split-screen aspect ratio. Allows an app to use all the available space in split-screen mode, avoiding letterboxing.
How apps can achieve same result as override
See OVERRIDE_MIN_ASPECT_RATIO .
How to optimize apps
See OVERRIDE_MIN_ASPECT_RATIO .
How to disable or opt out of override
See OVERRIDE_MIN_ASPECT_RATIO .
Property flags to adjust override
See OVERRIDE_MIN_ASPECT_RATIO .
adb commands to test override
To apply the override:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN <package>
To remove the override:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN
Disables the minimum aspect ratio override in portrait full screen to use all available screen space.
How apps can achieve same result as override
See OVERRIDE_MIN_ASPECT_RATIO .
How to optimize apps
See OVERRIDE_MIN_ASPECT_RATIO .
How to disable or opt out of override
See OVERRIDE_MIN_ASPECT_RATIO .
Property flags to adjust override
See OVERRIDE_MIN_ASPECT_RATIO .
adb commands to test override
To apply the override:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN <package>
To remove the override:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_ANY_ORIENTATION
Enables the following overrides to override any orientation:
- OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
- OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR
- OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE
How apps can achieve same result as override
Set the activity:screenOrientation
manifest attribute, or use the Activity#setRequestedOrientation()
API.
How to optimize apps
Your app should support all orientations. An orientation change is a configuration change, which can be handled either of two ways: letting the system destroy and recreate the app, or managing the configuration changes yourself. If you manage configuration changes yourself, the app state can be retained by using ViewModel
. In very limited cases, you can decide to lock the orientation on small displays only, although doing so might not scale as well as letting the user rotate the app as needed. On Android 12L and higher versions, fixed orientation can be overridden by device configuration. For more information about handling configuration changes and supporting all orientations, see Handle configuration changes , ViewModel overview , and App orientation restricted on phones but not on large screen devices .
How to disable or opt out of override
Set the property flag PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE
to false
.
Property flags to adjust override
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE"
android:value="true|false"/>
adb commands to test override
To apply the override:
adb shell am compat enable OVERRIDE_ANY_ORIENTATION <package>
To remove the override:
adb shell am compat disable OVERRIDE_ANY_ORIENTATION <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_ANY_ORIENTATION_TO_USER
Enables app to fill the available display space. Overrides any orientation, resizability, and aspect ratio restrictions specified in the app manifest. Also ignores any calls to Activity#setRequestedOrientation()
.
How apps can achieve same result as override
Do not set the
android:screenOrientation
manifest attribute, or set the attribute to"user"
.Set the
android:resizeableActivity
manifest attribute totrue
.On small screens, to support app resizing while disabling multi‑window mode with
android:resizeableActivity=false
, set theandroid.supports_size_changes
metadata flag totrue
. Do not setminAspectRatio
andmaxAspectRatio
.
How to optimize apps
Enable your app to support all orientations; don't set a screenOrientation
specification in your app's manifest. Support app resizability, multi‑window mode, and all display aspect ratios by setting the android:resizeableActivity
attribute in your app's manifest to true
. See Support different display sizes .
How to disable or opt out of override
See OVERRIDE_ANY_ORIENTATION
.
Property flags to adjust override
See OVERRIDE_ANY_ORIENTATION
.
adb commands to test override
To apply the override:
adb shell am compat enable OVERRIDE_ANY_ORIENTATION_TO_USER <package>
To remove the override:
adb shell am compat disable OVERRIDE_ANY_ORIENTATION_TO_USER <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
Enables portrait orientation for all activities in the package. Unless OVERRIDE_ANY_ORIENTATION is enabled, the override is used only when no other fixed orientation has been specified by the activity.
How apps can achieve same result as override
See OVERRIDE_ANY_ORIENTATION
.
How to optimize apps
See OVERRIDE_ANY_ORIENTATION
.
How to disable or opt out of override
See OVERRIDE_ANY_ORIENTATION
.
Property flags to adjust override
See OVERRIDE_ANY_ORIENTATION
.
adb commands to test override
To apply the override:
adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>
To remove the override:
adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR
Enables nosensor orientation for all activities in the package. Unless OVERRIDE_ANY_ORIENTATION is enabled, the override is used only when no other fixed orientation has been specified by the activity.
How apps can achieve same result as override
See OVERRIDE_ANY_ORIENTATION
.
How to optimize apps
See OVERRIDE_ANY_ORIENTATION
.
How to disable or opt out of override
See OVERRIDE_ANY_ORIENTATION
.
Property flags to adjust override
See OVERRIDE_ANY_ORIENTATION
.
adb commands to test override
To apply the override:
adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>
To remove the override:
adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE
Enables reverseLandscape orientation for all activities in the package. Unless OVERRIDE_ANY_ORIENTATION is enabled, the override is used only when no other fixed orientation has been specified by the activity.
How apps can achieve same result as override
See OVERRIDE_ANY_ORIENTATION
.
How to optimize apps
See OVERRIDE_ANY_ORIENTATION
.
How to disable or opt out of override
See OVERRIDE_ANY_ORIENTATION
.
Property flags to adjust override
See OVERRIDE_ANY_ORIENTATION
.
adb commands to test override
To apply the override:
adb shell am compat enable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>
To remove the override:
adb shell am compat disable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA
Limits OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT , OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR , and OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE overrides to take effect only when camera connection is active.
How apps can achieve same result as override
See OVERRIDE_ANY_ORIENTATION
.
How to optimize apps
See OVERRIDE_ANY_ORIENTATION
.
How to disable or opt out of override
See OVERRIDE_ANY_ORIENTATION
.
Property flags to adjust override
See OVERRIDE_ANY_ORIENTATION
.
adb commands to test override
To apply the override:
adb shell am compat enable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>
To remove the override:
adb shell am compat disable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION
Restricts display orientation to landscape natural orientation when the following conditions are met:
- Activity is full screen
- Opt out component property
PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE
isn't enabled - Device manufacturer ignore orientation request setting is enabled for the display
- Natural orientation of the display is landscape
How apps can achieve same result as override
প্রযোজ্য নয়। The problem should be solved in the application logic.
How to optimize apps
See OVERRIDE_ANY_ORIENTATION
.
How to disable or opt out of override
Set the property flag PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE
to false
.
Property flags to adjust override
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE"
android:value="true|false"/>
adb commands to test override
To apply the override:
adb shell am compat enable OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION <package>
To remove the override:
adb shell am compat disable OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION
Enables compat policy that skips updating app orientation in response to app calling Activity#setRequestedOrientation()
when app is relaunching or has an active camera compat treatment.
How apps can achieve same result as override
Set property flag PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION
to true
.
How to optimize apps
See OVERRIDE_ANY_ORIENTATION
.
How to disable or opt out of override
Set property flag PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION
to false
.
Property flags to adjust override
<property android:name="android.window.PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION"
android:value="true|false"/>
adb commands to test override
To apply the override:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION <package>
To remove the override:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
Enables the compatibility policy that ignores an app's requested orientation in response to the app calling Activity#setRequestedOrientation()
more than twice in one second if an activity is not letterboxed for fixed orientation.
How apps can achieve same result as override
প্রযোজ্য নয়। The problem should be solved in the application logic.
How to optimize apps
See OVERRIDE_ANY_ORIENTATION
.
How to disable or opt out of override
Set property flag PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
to false
.
Property flags to adjust override
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED"
android:value="false"/>
adb commands to test override
To apply the override:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED <package>
To remove the override:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_RESPECT_REQUESTED_ORIENTATION
Excludes packages from ignore orientation request behavior that can be enabled by device manufacturers for a display area or the whole display.
How apps can achieve same result as override
প্রযোজ্য নয়। The problem should be solved in the application logic.
How to optimize apps
See OVERRIDE_ANY_ORIENTATION
.
How to disable or opt out of override
No opt-out. Disabling the override can be dangerous if the app is not compatible with a device that has the device manufacturer ignore orientation request setting enabled. Contact Android Developer Relations to disable the override.
Property flags to adjust override
No property flags for this override.
adb commands to test override
To apply the override:
adb shell am compat enable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>
To remove the override:
adb shell am compat disable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>
Note: The commands only temporarily apply or remove the override.
NEVER_SANDBOX_DISPLAY_APIS
Forces packages to never have Display
API sandboxing applied for a letterboxed or size compatibility mode activity. The Display
APIs continue to provide display area bounds.
How apps can achieve same result as override
Declare activities resizable by either setting the android:resizeableActivity
manifest attribute to true
or the android.supports_size_changes
metadata flag to true
.
How to optimize apps
Apps that declare they are fully resizable should never rely upon display size to position UI elements. Migrate your app to up‑to‑date APIs that provide WindowMetrics
. If you are using Jetpack Compose, take advantage of the WindowSizeClass
API to draw the UI based on how much screen area the app has on the current display. See Use window size classes .
How to disable or opt out of override
No opt-out. Migrate from deprecated APIs.
Property flags to adjust override
No property flags for this override.
adb commands to test override
To apply the override:
adb shell am compat enable NEVER_SANDBOX_DISPLAY_APIS <package>
To remove the override:
adb shell am compat disable NEVER_SANDBOX_DISPLAY_APIS <package>
Note: The commands only temporarily apply or remove the override.
ALWAYS_SANDBOX_DISPLAY_APIS
Forces packages to always have Display
API sandboxing applied regardless of windowing mode. The Display
APIs always provide the app bounds.
How apps can achieve same result as override
Declare activities nonresizable by either setting the android:resizeableActivity
attribute to false
or the android.supports_size_changes
metadata flag to false
.
How to optimize apps
Apps that declare they are fully resizable should never rely on display size to position UI elements. Migrate your app from deprecated APIs to up‑to‑date APIs that provide WindowMetrics
. See WindowMetricsCalculator
.
How to disable or opt out of override
No opt-out. Migrate from deprecated APIs.
Property flags to adjust override
No property flags for this override.
adb commands to test override
To apply the override:
adb shell am compat enable ALWAYS_SANDBOX_DISPLAY_APIS <package>
To remove the override:
adb shell am compat disable ALWAYS_SANDBOX_DISPLAY_APIS <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS
Forces packages to sandbox the following View
APIs to activity bounds:
How apps can achieve same result as override
Resolve the issue in application code by using APIs that provide the bounds of the app window and offsets relative to the app window rather than the bounds of the device display and offsets relative to the device display.
How to optimize apps
Apps should use View
APIs, taking into account the possibility of letterboxing and multi-window mode being applied to the app. See WindowMetricsCalculator
.
How to disable or opt out of override
Set property flag PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS
to false
.
Property flags to adjust override
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS"
android:value="false"/>
adb commands to test override
To apply the override:
adb shell am compat enable OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS <package>
To remove the override:
adb shell am compat disable OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION
Disables force rotation. Improves the user experience on some apps.
How apps can achieve same result as override
Set property flag PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION
to false
.
How to optimize apps
Do not rely on cached camera sensor orientation or device information. For camera compatibility guidance, see Introducing Camera Viewfinder and Support resizable surfaces in your camera app .
How to disable or opt out of override
Set property flag PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION
to true
.
Property flags to adjust override
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION"
android:value="true|false"/>
adb commands to test override
To apply the override, which removes force rotation:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>
To remove the override, which allows force rotation to happen:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH
Disables activity refresh after force rotation. Improves the user experience when refresh causes state loss in apps.
How apps can achieve same result as override
Set property flag PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH
to false
.
How to optimize apps
See OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION .
How to disable or opt out of override
Set property flag PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH
to true
.
Property flags to adjust override
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH"
android:value="true|false"/>
adb commands to test override
To apply the override, which removes activity refresh:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>
To remove the override, which allows activity refresh:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
Makes the packages it is applied to do activity refresh using an onResume()
→ onPause()
→ onResume()
cycle rather than onResume()
→ onStop()
→ onResume()
after camera compatibility force rotation.
How apps can achieve same result as override
Set property flag PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
to true
.
How to optimize apps
See OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION .
How to disable or opt out of override
Set property flag PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
to false
.
Property flags to adjust override
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE"
android:value="true|false"/>
adb commands to test override
To apply the override:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE <package>
To remove the override:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT
Forces camera output to be cropped to the opposite orientation when portrait camera orientation doesn't align with the natural device orientation. Many apps don't handle this situation and display stretched images otherwise.
How apps can achieve same result as override
Set property flag PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT
to true
.
How to optimize apps
See OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION .
How to disable or opt out of override
Set property flag PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT
to false
.
Property flags to adjust override
<property android:name="android.camera.PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT"
android:value="true|false"/>
adb commands to test override
To apply the override, which applies inner front camera cropping:
adb shell am compat enable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>
To remove the override, which removes inner front camera cropping:
adb shell am compat disable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION
Prevents apps from opting out of app screen sharing (see Media projection ). Implemented when apps misuse the createConfigForDefaultDisplay()
API to force full‑screen capture and jeopardize user privacy by exposing the contents of notifications, which are captured with full‑screen but not app screen sharing, and all apps regardless of windowing mode.
How apps can achieve same result as override
Allow the default media projection behavior (implemented in Android 14, API level 34, with createScreenCaptureIntent()
), which enables users to decide whether to share the full screen or a single app window regardless of windowing mode. Or call createScreenCaptureIntent(MediaProjectionConfig)
with a MediaProjectionConfig
argument returned from a call to createConfigForUserChoice()
.
How to optimize apps
Allow users to select whether to share the entire device display or an app window during media projection, which as of Android 14 is the default behavior.
Make your app resizable ( resizeableActivity="true"
) to support multi‑window mode.
How to disable or opt out of override
Because of the seriousness of user privacy, your app cannot disable or opt out of this override.
Property flags to adjust override
কোনোটিই নয়।
adb commands to test override
To apply the override, which cancels the app's opt out of partial screen sharing (that is, enables partial screen sharing):
adb shell am compat enable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>
To remove the override, which allows the app's opt out of partial screen sharing:
adb shell am compat disable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>
Note: The commands only temporarily apply or remove the override.
OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS
Enables sending fake focus for unfocused apps in split‑screen mode. Some game engines wait to get focus before drawing the content of the app; and so, fake focus helps apps avoid staying blacked out when they are resumed and do not yet have focus.
How apps can achieve same result as override
Set property flag PROPERTY_COMPAT_ENABLE_FAKE_FOCUS
to true
.
How to optimize apps
You can avoid this issue if your app handles multiple orientations and configuration changes well. Make your app large screen ready by following the Large screen app quality guidelines.
If you run the Unity game engine, upgrade to version 2019.4.40 or later and re‑export your game. Keep the Resizable Window
option checked in the Android Player settings.
How to disable or opt out of override
Set property flag PROPERTY_COMPAT_ENABLE_FAKE_FOCUS
to false
.
Property flags to adjust override
<property android:name="android.window.PROPERTY_COMPAT_ENABLE_FAKE_FOCUS"
android:value="true|false"/>
adb commands to test override
To apply the override:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS <package>
To remove the override:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS <package>
Note: The commands only temporarily apply or remove the override.
অতিরিক্ত সম্পদ
- Large screen app quality guidelines
- Core app quality guidelines