অ্যান্ড্রয়েড অ্যাপ্লিকেশানগুলির জন্য একটি সামঞ্জস্য মোড সক্রিয় করে যা অভিযোজন বা পরিবর্তনযোগ্যতা সীমাবদ্ধতা ঘোষণা করে৷ সামঞ্জস্যতা মোড বড় স্ক্রীন ডিভাইস এবং ভাঁজযোগ্য ফ্লিপ ফোনগুলিতে গ্রহণযোগ্য অ্যাপ আচরণ নিশ্চিত করে তবে সাবঅপ্টিমাল ব্যবহারযোগ্যতার সাথে।
প্রতি-অ্যাপ ওভাররাইড ডিভাইস নির্মাতাদের ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে বা অ্যাপগুলিকে নির্দিষ্ট ডিভাইসে ভাঙা থেকে বিরত রাখতে অ্যাপ আচরণ পরিবর্তন করতে সক্ষম করে।
রেফারেন্স ডিভাইস
অস্বাভাবিক কনফিগারেশন বা অ্যাপ্লিকেশানগুলির দ্বারা সমর্থিত নয় এমন কনফিগারেশনগুলির কারণে নিম্নলিখিত ডিভাইসগুলির প্রতি-অ্যাপ ওভাররাইডের প্রয়োজন হতে পারে:
- ট্যাবলেট: পিক্সেল ট্যাবলেটের মতো কিছু ট্যাবলেটের প্রাকৃতিক অভিযোজন হল ল্যান্ডস্কেপ। যখন
Display#getRotation()
Surface.ROTATION_0
ফেরত দেয় তখন একটি ডিভাইস তার স্বাভাবিক অভিযোজনে থাকে। অ্যাপ্লিকেশানগুলি যদি ধরে নেয় যেROTATION_0
পোর্ট্রেট, অ্যাপ্লিকেশান লেআউট এবং ক্যামেরা প্রিভিউ ডিভাইস ডিসপ্লেতে অমিল হতে পারে৷ - ল্যান্ডস্কেপ ফোল্ডেবল: কিছু ভাঁজযোগ্য ডিভাইস, যেমন পিক্সেল ফোল্ড, ভাঁজ করার সময় পোর্ট্রেট ওরিয়েন্টেশনে থাকে, কিন্তু খোলা অবস্থায় ল্যান্ডস্কেপ ওরিয়েন্টেশন হয়। অ্যাপগুলি যদি ধরে নেয় যে উন্মোচিত অভিযোজনটি পোর্ট্রেট, ফ্লিকারিং লুপ বা লেআউট সমস্যা হতে পারে।
- ফোল্ডেবল ফ্লিপ ফোন: আনফোল্ড করা ফ্লিপ ফোন সাধারণত পোর্ট্রেট ওরিয়েন্টেশনে থাকে। কিন্তু, যখন ভাঁজ করা হয়, ফোনগুলিতে সাধারণত ল্যান্ডস্কেপ ওরিয়েন্টেশনে একটি ছোট ডিসপ্লে থাকে। অ্যাপ্লিকেশানগুলিকে অবশ্যই ডিসপ্লের বিভিন্ন অভিযোজন সনাক্ত করতে হবে এবং মিটমাট করতে হবে৷
সাধারণ সামঞ্জস্যের সমস্যা
অ্যাপ ওরিয়েন্টেশন সীমাবদ্ধতা, রিসাইজবিলিটি এবং অ্যাসপেক্ট রেশিও সীমাবদ্ধতা, ক্যামেরা প্রিভিউ ওরিয়েন্টেশনের ভুল হ্যান্ডলিং এবং অপব্যবহৃত API-এর কারণে অ্যাপগুলি প্রায়শই সামঞ্জস্যের সমস্যা অনুভব করে।
লেটারবক্সিং
লেটারবক্সিং অ্যাপটিকে স্ক্রিনের মাঝখানে বা, বড় স্ক্রিনে, সুবিধাজনক অ্যাক্সেসের জন্য একপাশে বা অন্য দিকে অবস্থান করে। ম্যাটস (কঠিন-রঙের বার বা ঝাপসা ওয়ালপেপার) অ্যাপের পাশে বা উপরে এবং নীচে অব্যবহৃত ডিসপ্লে এলাকা পূরণ করে।
লেটারবক্সিং প্রায়শই বড় স্ক্রীনের ডিভাইসগুলিতে ঘটে কারণ ডিভাইসের ডিসপ্লের মাত্রা এবং আকৃতির অনুপাত সাধারণত স্ট্যান্ডার্ড ফোনগুলির থেকে আলাদা হয়, যার জন্য বেশিরভাগ অ্যাপ ডিজাইন করা হয়েছে।
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/letterboxing.png?authuser=4&hl=bn)
চিত্র 1. পোর্ট্রেট অভিযোজনে সীমাবদ্ধ অ্যাপটি ল্যান্ডস্কেপ ট্যাবলেটে লেটারবক্সযুক্ত এবং ভাঁজযোগ্য।
ইস্যু
অ্যাপটি সমস্ত ডিসপ্লে কনফিগারেশনকে সমর্থন করে না কারণ অ্যাপটির স্থির অভিযোজন, স্থির আকৃতির অনুপাত, বা পরিবর্তনযোগ্য নয়।
কনফিগারেশন সেটিংস যা অ্যাপের অভিযোজন এবং পুনরায় পরিবর্তনযোগ্যতা নিয়ন্ত্রণ করে তা নিম্নলিখিতগুলি অন্তর্ভুক্ত করে:
screenOrientation
: একটি অ্যাপের জন্য একটি নির্দিষ্ট অভিযোজন নির্দিষ্ট করে। অ্যাপ্লিকেশানগুলিActivity#setRequestedOrientation()
ব্যবহার করে রানটাইমে ওরিয়েন্টেশন সেট করতে পারে।resizeableActivity
: সিস্টেমটি বিভিন্ন মাত্রার উইন্ডোতে ফিট করার জন্য অ্যাপের আকার পরিবর্তন করতে পারে কিনা তা নির্দেশ করে। অ্যান্ড্রয়েড 11 (API লেভেল 30) এবং তার নিচে, অ্যাপগুলি মাল্টি-উইন্ডো মোড সমর্থন করে কিনা তা নির্দিষ্ট করে। Android 12 (API লেভেল 31) এবং উচ্চতর, ছোট স্ক্রিনে (কম্প্যাক্ট উইন্ডো সাইজ ক্লাস ) অ্যাপগুলি মাল্টি-উইন্ডো মোড সমর্থন করে কিনা তা নির্দিষ্ট করে। Android 12 এবং উচ্চতর সংস্করণে, অ্যাপগুলি এই সেটিং নির্বিশেষে বড় স্ক্রিনে (মাঝারি বা প্রসারিত উইন্ডো সাইজ ক্লাস) মাল্টি-উইন্ডো মোড সমর্থন করে।maxAspectRatio
: অ্যাপ দ্বারা সমর্থিত সর্বাধিক আকৃতির অনুপাত নির্দিষ্ট করে। শুধুমাত্রresizeableActivity
false
সেট করা অ্যাপইmaxAspectRatio
সেট করতে পারে।minAspectRatio
: অ্যাপ দ্বারা সমর্থিত ন্যূনতম আকৃতির অনুপাত নির্দিষ্ট করে। শুধুমাত্রresizeableActivity
সহ যে অ্যাপ্লিকেশানগুলিfalse
সেট করতে পারে সেগুলিminAspectRatio
সেট করতে পারে৷
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/letterboxing_issue.png?authuser=4&hl=bn)
অ্যাপটি পোর্ট্রেট অভিযোজনে সীমাবদ্ধ ল্যান্ডস্কেপ ডিভাইসে ব্যবহারযোগ্য নয়।
অপ্টিমাইজেশান
অ্যাপের সমস্ত ডিভাইস এবং মাল্টি-উইন্ডো মোড প্রদর্শনের অভিযোজন এবং আকার সমর্থন করা উচিত। আপনার অ্যাপ লেআউট এবং অ্যাপ ম্যানিফেস্ট ফাইল থেকে সমস্ত ওরিয়েন্টেশন এবং ফিক্সড অ্যাসপেক্ট রেশিও সীমাবদ্ধতা সরিয়ে দিন।
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/letterboxing_optimization.png?authuser=4&hl=bn)
অ্যাপ্লিকেশন সমস্ত ডিভাইস অভিযোজন সমর্থন করে.
সামঞ্জস্যপূর্ণ সমাধান
যদি স্থির অভিযোজন বা স্থির দৃষ্টিভঙ্গি অনুপাত সহ একটি অ্যাপ এমন একটি উইন্ডোতে চলে যেখানে অ্যাপটি সরাসরি উইন্ডোর আকার বা অভিযোজন সমর্থন করে না, তাহলে ধারাবাহিকতা রক্ষা করতে অ্যান্ড্রয়েড লেটারবক্স অ্যাপটিকে তৈরি করে।
Android 12 (API লেভেল 31) দিয়ে শুরু করে এবং 12L (API লেভেল 32) দিয়ে চালিয়ে যাওয়া, প্ল্যাটফর্মটি লেটারবক্সযুক্ত অ্যাপে বিভিন্ন ধরনের উন্নতি প্রয়োগ করে। ডিভাইস নির্মাতারা UI বর্ধিতকরণ বাস্তবায়ন করে। উন্নতিগুলি থেকে উপকৃত হওয়ার জন্য আপনাকে আপনার অ্যাপের জন্য কোনও অতিরিক্ত বিকাশ করতে হবে না।
অ্যান্ড্রয়েড 12 (এপিআই লেভেল 31) নিম্নলিখিত নান্দনিক উন্নতিগুলি প্রবর্তন করে, যা ডিভাইস নির্মাতাদের দ্বারা কনফিগার করা যেতে পারে:
- গোলাকার কোণগুলি: অ্যাপ উইন্ডোর কোণগুলি আরও পরিমার্জিত চেহারা।
- সিস্টেম বারের স্বচ্ছতা: স্ট্যাটাস এবং নেভিগেশন বার, যা অ্যাপকে ওভারলে করে, সেমিট্রান্সপারেন্ট, বারগুলিতে আইকনগুলিকে লেটারবক্সের পটভূমিতে সর্বদা দেখা যায়।
- কনফিগারযোগ্য আকৃতির অনুপাত: অ্যাপটির চেহারা উন্নত করতে অ্যাপের আকৃতির অনুপাত সামঞ্জস্য করা যেতে পারে।
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/enhanced_letterboxing.png?authuser=4&hl=bn)
চিত্র 2. UI উন্নতকরণ সহ লেটারবক্সযুক্ত অ্যাপ।
12L (API স্তর 32) নিম্নলিখিত কার্যকরী উন্নতি যোগ করে:
কনফিগারেবল পজিশনিং: বড় স্ক্রিনে, ডিভাইস নির্মাতারা অ্যাপটিকে ডিসপ্লের বাম বা ডান দিকে রাখতে পারে, যা মিথস্ক্রিয়াকে সহজ করে তোলে।
পুনরায় ডিজাইন করা রিস্টার্ট বোতাম: ডিভাইস নির্মাতারা ব্যবহারকারীদের দ্বারা আরও ভাল স্বীকৃতির জন্য আকার সামঞ্জস্য মোডের জন্য পুনরায় চালু করার বোতামটিকে একটি নতুন চেহারা দিতে পারে।
অ্যান্ড্রয়েড 13 (এপিআই লেভেল 33) স্ক্রিনে লেটারবক্সযুক্ত অ্যাপের অবস্থান বা স্প্লিট-স্ক্রিন মোডে লেটারবক্স অন্তর্ভুক্ত করার বিষয়ে একটি ব্যবহারকারী শিক্ষা ডায়ালগ যোগ করে:
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/enhanced_letterboxing_user_dialog.png?authuser=4&hl=bn)
চিত্র 3. ব্যবহারকারী শিক্ষা ডায়ালগ সহ লেটারবক্সযুক্ত অ্যাপ।
আকার সামঞ্জস্য মোড
আকার সামঞ্জস্যপূর্ণ মোড হল লেটারবক্সিং যাতে একটি পুনঃসূচনা নিয়ন্ত্রণ অন্তর্ভুক্ত থাকে। কন্ট্রোল ব্যবহারকারীদের অ্যাপ রিস্টার্ট করতে এবং ডিসপ্লে পুনরায় আঁকতে সক্ষম করে। অ্যানড্রয়েড এমন অ্যাপগুলির জন্য সাইজ সামঞ্জস্যতা মোড আহ্বান করে যেগুলি অ-আবর্তনযোগ্য হতে নির্ধারিত হয়। যখন কোনো অ্যাক্টিভিটি এমন একটি ডিসপ্লে কন্টেইনারে চলে যায় যা অ্যাক্টিভিটির মাত্রার সাথে সামঞ্জস্যপূর্ণ নয়, তখন সিস্টেম অ্যাপটিকে রিস্কেল করতে পারে ডিভাইস ডিসপ্লেটি অন্তত একটি ডাইমেনশনে পূরণ করতে।
ডিভাইস কনফিগারেশন পরিবর্তন যা আকার সামঞ্জস্য মোড ট্রিগার করতে পারে নিম্নলিখিত অন্তর্ভুক্ত:
- ডিভাইস ঘূর্ণন
- ভাঁজযোগ্য ডিভাইস ভাঁজ করা বা প্রকাশ করা
- পূর্ণ স্ক্রীন এবং স্প্লিট-স্ক্রীন প্রদর্শন মোডগুলির মধ্যে পরিবর্তন করুন
ইস্যু
আকারের সামঞ্জস্য মোড সাধারণত এমন ক্রিয়াকলাপগুলিতে প্রযোজ্য যা অভিযোজন বা আকৃতির অনুপাতের মধ্যে সীমাবদ্ধ এবং অ-আকারযোগ্য হতে কনফিগার করা (বা সিস্টেম দ্বারা নির্ধারিত)।
আপনার অ্যাপ্লিকেশানটি আকার পরিবর্তনযোগ্য বলে বিবেচিত হয়-এবং এটি আকারের সামঞ্জস্য মোডে রাখা হবে না-যদি এটি নিম্নলিখিত মানদণ্ডগুলির মধ্যে কোনোটি পূরণ করে:
-
resizeableActivity="true"
দিয়ে পুনরায় আকার দেওয়া যায় - পিকচার-ইন-পিকচার (পিআইপি) মোড সমর্থন করে
- এমবেড করা হয়
- ডিভাইস প্রস্তুতকারকের দ্বারা প্রয়োগ করা
FORCE_RESIZE_APP
প্রতি-অ্যাপ ওভাররাইড আছে (অ্যাপ দ্বারা সেট করা বৈশিষ্ট্যগুলি উপেক্ষা করা হয়)
যদি আপনার অ্যাপ কোনো শর্ত পূরণ না করে , তাহলে এটিকে রিসাইজ করা যাবে না বলে মনে করা হয় এবং সাইজ কম্প্যাটিবিলিটি মোডে রাখা যেতে পারে।
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/size_compatibility_mode_issue.gif?authuser=4&hl=bn)
মাল্টি-উইন্ডো মোডে অ-আবর্তনযোগ্য অ্যাপ ক্র্যাশ হয়।
অপ্টিমাইজেশান
অ্যাপের সকল ডিসপ্লে মাপ সমর্থন করা উচিত। অ্যাপ ম্যানিফেস্টে <activity>
বা <application>
এলিমেন্টের android:resizeableActivity
অ্যাট্রিবিউটটিকে true
হিসাবে সেট করে আপনার অ্যাপকে পুনরায় আকারে পরিণত করুন। আপনার অ্যাপের জন্য প্রতিক্রিয়াশীল/অভিযোজিত লেআউট ডিজাইন করুন। আরও তথ্যের জন্য, বিভিন্ন স্ক্রীনের আকার সমর্থন করুন এবং মাল্টি-উইন্ডো মোড সমর্থন করুন দেখুন।
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/size_compatibility_mode_optimization.gif?authuser=4&hl=bn)
অ্যাপ্লিকেশন সমস্ত উইন্ডো আকারে কাজ করে।
সামঞ্জস্যপূর্ণ সমাধান
অ্যান্ড্রয়েড একটি অ্যাপকে সাইজ কম্প্যাটিবিলিটি মোডে রাখে যখন সিস্টেম লেটারবক্সড অ্যাপের ডিসপ্লে নির্ধারণ করে অন্তত একটি ডাইমেনশনে ডিসপ্লে উইন্ডো পূরণ করতে অ্যাপটিকে রিস্কেল করে উন্নত করা যেতে পারে। সিস্টেমটি একটি পুনঃসূচনা নিয়ন্ত্রণ প্রদর্শন করে যা অ্যাপ প্রক্রিয়াটি পুনরায় তৈরি করে, কার্যকলাপ পুনরায় তৈরি করে এবং প্রদর্শনটি পুনরায় অঙ্কন করে। এছাড়াও প্রসেস এবং থ্রেড ওভারভিউ দেখুন।
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/size_compatibility_mode_workaround.gif?authuser=4&hl=bn)
ল্যান্ডস্কেপ ওরিয়েন্টেশনে পোর্ট্রেট-শুধু অ্যাপ লেটারবক্স করা, রিস্টার্ট কন্ট্রোল দ্বারা রিস্কেল করা হয়েছে।
ঝিকিমিকি লুপ
যখন একটি অ্যাপ সমস্ত ডিসপ্লে ওরিয়েন্টেশন সমর্থন করে না, তখন কনফিগারেশনের পরিবর্তন ঘটলে এটি বারবার নতুন ওরিয়েন্টেশনের অনুরোধ করতে পারে, একটি অসীম লুপ তৈরি করে যা ডিসপ্লে ফ্লিকার করে বা অ্যাপটিকে অবিরামভাবে ঘোরে।
ইস্যু
অ্যান্ড্রয়েড 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)
কল করতে পারে এবং অসীম লুপ চালিয়ে যেতে পারে।
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/flickering_loops_issue.gif?authuser=4&hl=bn)
পোর্ট্রেট ডিসপ্লেতে ল্যান্ডস্কেপ-অনলি অ্যাপ Activity#setRequestedOrientation()
এ বারবার কল করে।
অপ্টিমাইজেশান
অ্যাপগুলিকে নিম্নলিখিতগুলি করা উচিত নয় :
- অ্যাক্টিভিটি
onCreate()
পদ্ধতিতেActivity#setRequestedOrientation()
এর সাথে একটি ডিফল্ট ওরিয়েন্টেশন সেট করুন কারণ অনির্বাচিত কনফিগারেশন পরিবর্তনের মাধ্যমে ওরিয়েন্টেশন অনুরোধটি অপ্রত্যাশিতভাবে ট্রিগার হতে পারে - অনুমান করুন যে ডিভাইসের প্রাকৃতিক অভিযোজন (
ROTATION_0
) হল প্রতিকৃতি৷ -
Display#getRotation()
, একটিFoldingFeature
এর উপস্থিতি , অথবা deprecated APIs এর মতো বর্তমান উইন্ডোর আকারের সাথে সম্পর্কিত নয় এমন সংকেতগুলির উপর ভিত্তি করে স্থিতিবিন্যাস সেট করুন৷
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/flickering_loops_optimization.gif?authuser=4&hl=bn)
অ্যাপ কনফিগারেশন পরিবর্তন পরিচালনা করে, অভিযোজন বিধিনিষেধ নেই, তাই ফ্লিকারিং লুপে প্রবেশ করে না।
সামঞ্জস্যপূর্ণ সমাধান
অ্যান্ড্রয়েড নিম্নলিখিত পরিস্থিতিতে Activity#setRequestedOrientation()
এ কলগুলিকে উপেক্ষা করে:
ক্রিয়াকলাপটি ইতিমধ্যে পদ্ধতিতে পূর্ববর্তী কল থেকে পুনরায় চালু করা হয়েছে বা ক্যামেরা কম্প্যাট ফোর্স রোটেশন ট্রিটমেন্ট সক্ষম করা হয়েছে (নীচে ক্যামেরা পূর্বরূপ দেখুন)।
ডিভাইস নির্মাতারা
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION
এর সাথে একটি অ্যাপে এই আচরণটি প্রয়োগ করতে পারে।ক্রিয়াকলাপটি এক সেকেন্ডে দুটির বেশি অভিযোজন অনুরোধ করেছে, যা নির্দেশ করে যে একটি লুপ ঘটেছে৷ লুপে থাকা দুটি অনুরোধের মধ্যে, অ্যান্ড্রয়েড এমন একটি ব্যবহার করে যা অ্যাপ প্রদর্শনের ক্ষেত্রটিকে সর্বাধিক করে তোলে।
ডিভাইস নির্মাতারা
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
এর সাথে একটি অ্যাপে এই আচরণটি প্রয়োগ করতে পারে।
ক্যামেরা প্রিভিউ
ক্যামেরা অ্যাপের ক্যামেরা প্রিভিউ (বা ভিউফাইন্ডার) ট্যাবলেট, ল্যাপটপ এবং ফোল্ডেবল ডিসপ্লেতে ভুলভাবে সারিবদ্ধ বা বিকৃত হতে পারে।
ইস্যু
অ্যান্ড্রয়েড কম্প্যাটিবিলিটি ডেফিনিশন ডকুমেন্টে বলা হয়েছে যে একটি ক্যামেরা ইমেজ সেন্সর "অবশ্যই ওরিয়েন্টেড হতে হবে যাতে ক্যামেরার লম্বা ডাইমেনশন স্ক্রিনের লম্বা ডাইমেনশনের সাথে সারিবদ্ধ হয়।"
অ্যাপ্লিকেশানগুলি প্রায়শই ধরে নেয় যে ডিভাইসের অভিযোজন এবং ক্যামেরা সেন্সর অভিযোজন হল প্রতিকৃতি—মানক মোবাইল ফোনে একটি যুক্তিসঙ্গত অনুমান৷ কিন্তু ট্যাবলেট এবং ল্যাপটপ এবং তাদের ক্যামেরা সেন্সরগুলির প্রাকৃতিক অভিযোজন ল্যান্ডস্কেপ হতে পারে। এছাড়াও, ফোল্ডেবলের মতো নতুন ফর্ম ফ্যাক্টরগুলিতে একাধিক প্রাকৃতিক অভিযোজন এবং বিভিন্ন অভিযোজনে একাধিক ক্যামেরা সেন্সর থাকতে পারে।
অ্যাপটি আশা করে না এমন একটি ক্যামেরা ওরিয়েন্টেশনের সাথে একটি কার্যকলাপ শুরু করা বা বিভিন্ন ক্যামেরা বা ডিভাইসের স্ক্রীনের মধ্যে (ভাঁজযোগ্যগুলির জন্য) স্যুইচ করার ফলে ক্যামেরার প্রিভিউ ভুল বা বিকৃত হতে পারে।
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/camera_preview_issue.png?authuser=4&hl=bn)
ভাঁজযোগ্য বড় স্ক্রীনে মিসলাইনড এবং বিকৃত ক্যামেরা প্রিভিউ।
অপ্টিমাইজেশান
একটি সঠিকভাবে সারিবদ্ধ এবং স্কেল করা ক্যামেরা প্রিভিউ উপস্থাপন করতে ক্যামেরা অ্যাপগুলিকে অবশ্যই ডিভাইসের অভিযোজন এবং ক্যামেরা সেন্সর অভিযোজন সঠিকভাবে সনাক্ত ও পরিচালনা করতে হবে। অ্যাপগুলিকে অবশ্যই ডিভাইসের ঘূর্ণন, সেন্সর ঘূর্ণন, এবং স্ক্রীন বা উইন্ডোর আকৃতির অনুপাত গণনা করতে হবে এবং তারপরে ক্যামেরা প্রিভিউতে ফলাফলগুলি প্রয়োগ করতে হবে। বিস্তারিত নির্দেশনার জন্য, ক্যামেরা প্রিভিউ এবং ক্যামেরা ভিউফাইন্ডার প্রবর্তন দেখুন।
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/camera_preview_optimization.png?authuser=4&hl=bn)
ক্যামেরা প্রিভিউ সঠিকভাবে সারিবদ্ধ এবং সমস্ত ডিভাইসের অভিযোজনে স্কেল করা হয়েছে।
সামঞ্জস্যপূর্ণ সমাধান
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:
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/misused_APIs_issue.png?authuser=4&hl=bn)
অপ্রচলিত API অ্যাপ সীমার ভুল গণনা করে। অ্যাপের বিষয়বস্তু পর্দার বাইরে চলে যায়।
অপ্টিমাইজেশান
UI উপাদানের অবস্থান নির্ধারণের জন্য কখনই শারীরিক প্রদর্শনের আকারের উপর নির্ভর করবেন না। নিম্নলিখিত WindowManager
APIগুলি সহ WindowMetrics
উপর ভিত্তি করে আপনার অ্যাপটিকে API-তে স্থানান্তর করুন:
প্ল্যাটফর্ম:
জেটপ্যাক:
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/misused_APIs_optimization.png?authuser=4&hl=bn)
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
, এমন শৈলী অন্তর্ভুক্ত করতে পারে যা কার্যকলাপকে স্বচ্ছ করে তোলে।
স্বচ্ছ ক্রিয়াকলাপগুলি সমস্ত উপলব্ধ ডিসপ্লে স্থানকে কভার করে না, যা তাদের পরিচালনা করা কঠিন করে তোলে কারণ উপলব্ধ ডিসপ্লে এলাকাটি ডিভাইসের ঘূর্ণন, ডিভাইস ভাঁজ করা এবং উন্মোচন এবং মাল্টি-উইন্ডো মোডের মতো কনফিগারেশন পরিবর্তনের উপর ভিত্তি করে পরিবর্তিত হতে পারে।
ইস্যু
একটি স্বচ্ছ কার্যকলাপ টাস্ক অ্যাক্টিভিটি স্ট্যাকের স্বচ্ছ কার্যকলাপের নীচে প্রথম অস্বচ্ছ কার্যকলাপের সীমার সাথে সামঞ্জস্যপূর্ণ হওয়া উচিত। যাইহোক, একটি অস্বচ্ছ কার্যকলাপ যা একটি অনুমতি ডায়ালগ চালু করে একটি ট্রামপোলিন হতে পারে (একটি কার্যকলাপ যা অন্য একটি কার্যকলাপ চালু করে তারপর অদৃশ্য হয়ে যায়); এবং তাই, সিস্টেমটি ট্রামপোলিন কার্যকলাপের সীমা নির্ধারণ করতে পারে না যা স্বচ্ছ অনুমতি ডায়ালগ কার্যকলাপ চালু করেছে।
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/transparent_activities_issue.png?authuser=4&hl=bn)
ডায়ালগ ভুল অবস্থান কারণ কার্যকলাপ একটি ট্রামপোলিন থেকে চালু করা হয়েছিল.
অপ্টিমাইজেশান
স্বচ্ছ ক্রিয়াকলাপগুলি একটি টাস্কের অ্যাক্টিভিটি স্ট্যাকের মধ্যে তাদের নীচে শীর্ষ-সবচেয়ে অস্বচ্ছ কার্যকলাপ থেকে তাদের সীমাবদ্ধতাগুলিকে উত্তরাধিকার সূত্রে প্রাপ্ত করে। স্বচ্ছ কার্যকলাপের সমগ্র জীবনচক্রের জন্য অস্বচ্ছ কার্যকলাপ উপলব্ধ হতে হবে, কার্যকলাপ সৃষ্টি থেকে ধ্বংস পর্যন্ত। এই কারণে, ট্রামপোলিন কার্যকলাপ থেকে অনুমতি অনুরোধ চালু করবেন না।
যদি একটি ট্রামপোলিন কার্যকলাপ একটি অনুমতি অনুরোধ চালু করে, ব্যবহারকারী অনুমতি ডায়ালগ দেখতে সক্ষম নাও হতে পারে কারণ ব্যবহারকারীর সংলাপে প্রতিক্রিয়া জানানোর সুযোগ পাওয়ার আগেই ট্রামপোলিন কার্যকলাপটি ধ্বংস হয়ে যাবে এবং ডায়ালগ কার্যকলাপের মাত্রা এবং অবস্থান ভুলভাবে গণনা করা হতে পারে।
ব্যবহারকারীর অনুমতির সিদ্ধান্ত না নেওয়া পর্যন্ত অ্যাপ্লিকেশানগুলিকে সর্বদা এমন কার্যকলাপ থেকে অনুমতির অনুরোধ চালু করা উচিত যা দৃশ্যমান থাকে।
বৃত্তাকার কোণগুলি
একটি ক্রিয়াকলাপ স্বচ্ছ হতে পারে কারণ একটি শৈলী যা পটভূমির স্বচ্ছতা নির্দিষ্ট করে বা কার্যকলাপের বিষয়বস্তু উপলব্ধ প্রদর্শন স্থান পূরণ করে না। যদি একটি স্বচ্ছ কার্যকলাপ উপলব্ধ ডিসপ্লে স্থান পূরণ করে, ডিভাইস প্রস্তুতকারকের দ্বারা এটি করার জন্য কনফিগার করা হলে সিস্টেমটি স্বয়ংক্রিয়ভাবে কার্যকলাপে বৃত্তাকার কোণগুলি প্রয়োগ করে। কিন্তু, যদি একটি স্বচ্ছ কার্যকলাপ (যেমন একটি অনুমতি ডায়ালগ) উপলব্ধ স্থান পূরণ না করে, তাহলে বৃত্তাকার কোণগুলি প্রয়োগ করবেন কি না তা আপনার উপর নির্ভর করে।
অনুমতি ডায়ালগ উপলব্ধ প্রদর্শন স্থান পূরণ করে না কারণ ডায়ালগ বিন্যাস সাধারণত LayoutParams.MATCH_PARENT এর পরিবর্তে LayoutParams.WRAP_CONTENT ব্যবহার করে।
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/transparent_activities_optimization.png?authuser=4&hl=bn)
দৃশ্যমান লঞ্চিং কার্যকলাপের উপর সঠিকভাবে অবস্থান করা গোলাকার কোণগুলির সাথে ডায়ালগ৷
সামঞ্জস্যপূর্ণ সমাধান
ব্যবহারকারী ডায়ালগে সাড়া না দেওয়া পর্যন্ত ক্রিয়াকলাপগুলিকে সংলাপ কার্যক্রমগুলিকে দৃশ্যমান রাখুন৷
সিস্টেমটি নিশ্চিত করে যে একটি স্বচ্ছ কার্যকলাপ কার্যকলাপ স্ট্যাকের স্বচ্ছ কার্যকলাপের নীচে প্রথম অস্বচ্ছ কার্যকলাপ থেকে সমস্ত সীমাবদ্ধতা উত্তরাধিকারসূত্রে প্রাপ্ত হয়, যার সাথে সম্পর্কিত সীমাবদ্ধতাগুলি সহ:
- আকার সামঞ্জস্য মোড
- ওরিয়েন্টেশন
- আকৃতির অনুপাত
ঐক্য গেম
ইউনিটি গেমগুলি Android পূর্ণ স্ক্রীনে বা মাল্টি-উইন্ডো মোডে চলে। যাইহোক, অনেক ইউনিটি গেম ফোকাস হারিয়ে ফেলে এবং যখন অ্যাপটি মাল্টি-উইন্ডো মোডে রাখা হয় তখন বিষয়বস্তু আঁকা বন্ধ করে।
ইস্যু
Unity 2019.4-এ Android-এ মাল্টি-উইন্ডো মোড সমর্থন করার জন্য একটি Resizable Window
বিকল্প যোগ করেছে। যাইহোক, প্রাথমিক বাস্তবায়ন মাল্টি-উইন্ডো মোডে অ্যাক্টিভিটি লাইফসাইকেলে সঠিকভাবে প্রতিক্রিয়া দেখায়নি, যার ফলে ইউনিটিপ্লেয়ার প্লেব্যাক স্থগিত করে যখন অ্যাপটি ফোকাস হারায়। প্লেয়ার একটি কালো পর্দা বা গেমের শেষ, হিমায়িত ফ্রেম রেন্ডার করেছে৷ ব্যবহারকারী স্ক্রীন ট্যাপ করলেই গেমপ্লে পুনরায় শুরু হয়। ইউনিটি ইঞ্জিন ব্যবহার করা অনেক অ্যাপ এই সমস্যার মুখোমুখি হয় এবং মাল্টি-উইন্ডো মোডে কালো উইন্ডো হিসেবে রেন্ডার করে।
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/unity_games_issue.gif?authuser=4&hl=bn)
গেমটি মাল্টি-উইন্ডো মোডে ফোকাস হারায় এবং একটি কালো উইন্ডো হিসাবে রেন্ডার করে।
অপ্টিমাইজেশান
ইউনিটি 2019.4.40 বা তার পরে আপগ্রেড করুন এবং আপনার গেম পুনরায় রপ্তানি করুন। অ্যান্ড্রয়েড প্লেয়ার সেটিংসে Resizable Window
বিকল্পটি চেক করে রাখুন, অন্যথায় গেমটি মাল্টি-উইন্ডো মোডে সম্পূর্ণভাবে দৃশ্যমান হওয়া সত্ত্বেও ফোকাসে না থাকলে গেমটি বিরতি দেয়।
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/unity_games_optimization.gif?authuser=4&hl=bn)
ফোকাসে না থাকলেও গেম মাল্টি-উইন্ডো মোডে সঠিকভাবে বিষয়বস্তু রেন্ডার করে।
সামঞ্জস্যপূর্ণ সমাধান
ডিভাইস নির্মাতারা মাল্টি-উইন্ডো মোডে একটি অ্যাপে একটি নকল ফোকাস ইভেন্ট প্রদান করতে 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
সক্ষম থাকে।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
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>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
ওভাররাইড_মিন_এএসপ্যাক্ট_আরটিও_এক্সক্লুড_পোরট্রাইট_ফুলস্ক্রিন
সমস্ত উপলব্ধ স্ক্রিন স্পেস ব্যবহার করতে প্রতিকৃতি পূর্ণ স্ক্রিনে সর্বনিম্ন দিক অনুপাতের ওভাররাইড অক্ষম করে।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
ওভাররাইড_মিন_এএসপেক্ট_আরটিও দেখুন।
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
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>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
ওভাররাইড_ওয়ান_রিয়েন্টেশন
যে কোনও ওরিয়েন্টেশনকে ওভাররাইড করতে নিম্নলিখিত ওভাররাইডগুলি সক্ষম করে:
- ওভাররাইড_আন্ডফাইন্ড_রিয়েন্টেশন_টো_পোরট্রেট
- ওভাররাইড_আন্ডফাইন্ড_রিয়েন্টেশন_টো_নোসেন্সর
- ওভাররাইড_ল্যান্ডস্কেপ_রিয়েন্টেশন_টো_রেভারস_ল্যান্ডস্কেপ
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
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>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
ওভাররাইড_ওয়ান_রিয়েন্টেশন_টো_উসার
উপলব্ধ ডিসপ্লে স্পেস পূরণ করতে অ্যাপ্লিকেশন সক্ষম করে। অ্যাপ্লিকেশন ম্যানিফেস্টে উল্লিখিত যে কোনও ওরিয়েন্টেশন, পুনর্বিবেচনাযোগ্যতা এবং দিক অনুপাতের বিধিনিষেধগুলিকে ওভাররাইড করে। Activity#setRequestedOrientation()
এ কোনও কলকে উপেক্ষা করে।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
অ্যান্ড্রয়েড সেট করবেন না
android:screenOrientation
ম্যানিফেস্ট অ্যাট্রিবিউট, বা"user"
এ বৈশিষ্ট্যটি সেট করুন।android:resizeableActivity
true
কাছে রেজিজিব্যালঅ্যাক্টিভিটি ম্যানিফেস্ট অ্যাট্রিবিউট।ছোট পর্দার উপর,
android:resizeableActivity=false
,android.supports_size_changes
মেটাডেটা পতাকাটিtrue
সেট করুন।minAspectRatio
এবংmaxAspectRatio
সেট করবেন না ।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
আপনার অ্যাপ্লিকেশনটিকে সমস্ত ওরিয়েন্টেশন সমর্থন করতে সক্ষম করুন; আপনার অ্যাপ্লিকেশনটির ম্যানিফেস্টে screenOrientation
স্পেসিফিকেশন সেট করবেন না। সমর্থন অ্যাপ্লিকেশন পুনর্বিবেচনা, মাল্টি -ওয়াইন্ডো মোড এবং সমস্ত প্রদর্শন করে android:resizeableActivity
বৈশিষ্ট্যটি true
। বিভিন্ন পর্দার আকার সমর্থন দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
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_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_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
সম্পত্তি সম্পত্তি op - ডিভাইস প্রস্তুতকারক উপেক্ষা ওরিয়েন্টেশন অনুরোধ সেটিং প্রদর্শনের জন্য সক্ষম করা হয়েছে
- প্রদর্শনের প্রাকৃতিক ওরিয়েন্টেশন হ'ল ল্যান্ডস্কেপ
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
প্রযোজ্য নয়। সমস্যাটি অ্যাপ্লিকেশন যুক্তিতে সমাধান করা উচিত।
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
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()
যখন অ্যাপটি পুনরায় চালু হয় বা একটি সক্রিয় ক্যামেরা কমপ্যাট চিকিত্সা থাকে।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION
পতাকা সেট করুন true
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
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_ANY_ORIENTATION
দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
কোনও অপ্ট-আউট নেই। ওভাররাইড অক্ষম করা বিপজ্জনক হতে পারে যদি অ্যাপ্লিকেশনটি কোনও ডিভাইসের সাথে সামঞ্জস্যপূর্ণ না হয় যা ডিভাইস প্রস্তুতকারক ওরিয়েন্টেশন অনুরোধ সেটিং সক্ষম করা উপেক্ষা করে। ওভাররাইড অক্ষম করতে অ্যান্ড্রয়েড বিকাশকারী সম্পর্কের সাথে যোগাযোগ করুন।
ওভাররাইড সামঞ্জস্য করতে সম্পত্তি পতাকা
এই ওভাররাইডের জন্য কোনও সম্পত্তি পতাকা নেই।
ওভাররাইড পরীক্ষা করার জন্য এডিবি কমান্ড
ওভাররাইড প্রয়োগ করতে:
adb shell am compat enable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>
ওভাররাইড অপসারণ করতে:
adb shell am compat disable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
NEVER_SANDBOX_DISPLAY_APIS
কোনও লেটারবক্সযুক্ত বা আকারের সামঞ্জস্যতা মোড ক্রিয়াকলাপের জন্য প্রয়োগ করা এপিআই স্যান্ডবক্সিং কখনই Display
করতে পারে এমন প্যাকেজগুলি। Display
এপিআইগুলি প্রদর্শন ক্ষেত্রের সীমা সরবরাহ করে।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
android:resizeableActivity
true
বা android.supports_size_changes
কাছে ম্যানিফেস্ট অ্যাট্রিবিউট true
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
যে অ্যাপ্লিকেশনগুলি ঘোষণা করে যে তারা সম্পূর্ণরূপে পুনরুদ্ধারযোগ্য তা ইউআই উপাদানগুলির অবস্থানের জন্য প্রদর্শনের আকারের উপর কখনই নির্ভর করা উচিত নয়। 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>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
ওভাররাইড_কামেরা_ল্যান্ডস্কেপ_ও_পোরট্রেট
যখন প্রতিকৃতি ক্যামেরা ওরিয়েন্টেশন প্রাকৃতিক ডিভাইস ওরিয়েন্টেশনের সাথে একত্রিত হয় না তখন ক্যামেরা আউটপুটকে বিপরীত ওরিয়েন্টেশনে ক্রপ করা যায়। অনেক অ্যাপ্লিকেশন এই পরিস্থিতিটি পরিচালনা করে না এবং অন্যথায় প্রসারিত চিত্রগুলি প্রদর্শন করে।
কীভাবে অ্যাপ্লিকেশনগুলি ওভাররাইড হিসাবে একই ফলাফল অর্জন করতে পারে
PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT
পতাকা সেট করুন true
অ্যাপ্লিকেশনগুলি কীভাবে অনুকূলিত করবেন
ওভাররাইড_কামেরা_কমপ্যাট_ডিসেবল_ফোর্স_রোটেশন দেখুন।
কীভাবে অক্ষম বা ওভাররাইড থেকে বেরিয়ে যায়
সম্পত্তি পতাকা সেট 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>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
ওভাররাইড_ডিসেবল_মিডিয়া_প্রজেকশন_সিংল_এপ_অপশন
অ্যাপসকে অ্যাপ স্ক্রিন ভাগ করে নেওয়ার বাইরে বেছে নেওয়া থেকে বিরত রাখে ( মিডিয়া প্রক্ষেপণ দেখুন)। অ্যাপ্লিকেশনগুলি যখন 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>
দ্রষ্টব্য: কমান্ডগুলি কেবল অস্থায়ীভাবে প্রয়োগ বা ওভাররাইডটি সরিয়ে দেয়।
অতিরিক্ত সম্পদ
- বড় স্ক্রিন অ্যাপ মানের নির্দেশিকা
- মূল অ্যাপ্লিকেশন মানের নির্দেশিকা