বইয়ের মতো ভাঁজযোগ্য ডিভাইসগুলোতে আপনি টেন্ট এবং ওয়েজ মোড চালু করতে পারেন।
টেন্ট এবং ওয়েজ মোড আপনাকে বাইরের স্ক্রিনটি ব্যবহার করার সুযোগ দেয় যখন ডিভাইসটি সামান্য খোলা থাকে, যেমনটি নিচের চিত্রে দেখানো হয়েছে:

চিত্র ১. তাঁবু এবং কীলক আকৃতির ভাঁজযোগ্য ভঙ্গি।
টেন্ট মোডে, ডিভাইসটি আংশিকভাবে খোলা থাকে এবং এর উভয় অংশ তাঁবুর মতো নিজেকে ধরে রাখে। ওয়েজ মোডে, ডিভাইসটি এর ডান অংশের উপর ভর দিয়ে দাঁড় করানো থাকে, যা কোনো সমতল পৃষ্ঠের উপর রাখা থাকে।
অ্যান্ড্রয়েড ১৬ এবং এর পরবর্তী সংস্করণগুলো আপনার ডিভাইস স্টেট পলিসি হিসেবে BookStyleDeviceStatePolicy ব্যবহার করে এই আচরণটি সমর্থন করে। এই পলিসিটি বইয়ের মতো আকৃতির দুটি স্ক্রিনযুক্ত ফোল্ডেবল ডিভাইসে কাজ করে, যেটির ভাঁজ করা অবস্থায় কব্জাটি ডিভাইসের বাম দিকে থাকে।
এই নীতিটি নির্দিষ্ট কিছু পরিস্থিতিতে, যেমন— খোলার সময় বাইরের স্ক্রিনটিকে বেশিক্ষণ চালু রাখে:
- ডিভাইসটির ডান অর্ধেকটি মূলত সমতল, যা থেকে বোঝা যায় যে ডিভাইসটি সম্ভবত ওয়েজ মোডে রয়েছে।
- ডিভাইসটির ওরিয়েন্টেশন রিভার্স ল্যান্ডস্কেপ, যা থেকে বোঝা যায় এটি সম্ভবত টেন্ট মোডে আছে।
- স্ক্রিনের ওরিয়েন্টেশন ল্যান্ডস্কেপ অথবা রিভার্স ল্যান্ডস্কেপ।
- একটি অ্যাপ স্ক্রিন ওয়েক-লক ধরে রেখেছে (যা স্ক্রিন টাইমআউট প্রতিরোধ করছে)।
এই নীতিটি টেন্ট বা ওয়েজ ভঙ্গির জন্য আলাদা কোনো ডিভাইস স্টেট চালু করে না; এটি এই নির্দিষ্ট শর্তগুলোর অধীনে হিঞ্জের বিস্তৃত কোণ জুড়ে ডিভাইসটিকে বন্ধ অবস্থায় রাখে।
এই হিউরিস্টিকগুলোকে সম্পূর্ণরূপে সমর্থন করার জন্য ডিভাইসটির প্রয়োজন:
- হিঞ্জ অ্যাঙ্গেল সেন্সর ডিভাইসটির দুটি অর্ধাংশের মধ্যবর্তী কোণ পরিমাপ করে।
- ডিভাইসটির প্রতিটি (বাম এবং ডান) অর্ধাংশে অ্যাক্সেলেরোমিটার সেন্সর রয়েছে।
টেন্ট বা ওয়েজ মোড কনফিগার করুন
আপনার ডিভাইসে টেন্ট এবং ওয়েজ মোড সাপোর্ট চালু করতে এই ধাপগুলো অনুসরণ করুন:
DeviceStatePolicy.Providerএর এমন একটি ইমপ্লিমেন্টেশন তৈরি করুন যাBookStyleDeviceStatePolicyএর একটি ইনস্ট্যান্স রিটার্ন করে। এই ইনস্ট্যান্সটিকে অবশ্যইBookStyleDeviceStatePolicyকনস্ট্রাক্টরের জন্য সেন্সর অবজেক্টের মতো সমস্ত প্রয়োজনীয় ডিপেন্ডেন্সি সরবরাহ করতে হবে।নিম্নলিখিত উদাহরণটি একটি বাস্তবায়ন দেখায়:
package com.example; public class MyDevicePolicyProvider implements DeviceStatePolicy.Provider { @Override public DeviceStatePolicy instantiate(@NonNull Context context) { final SensorManager sensorManager = context.getSystemService(SensorManager.class); final Sensor hingeAngleSensor = sensorManager.getDefaultSensor(Sensor.TYPE_HINGE_ANGLE, /* wakeUp= */ true); final List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL); final Sensor hallSensor = CollectionUtils.find(sensors, (sensor) -> Objects.equals(sensor.getStringType(), "com.example.hall_effect")); final Sensor rightAccelerometerSensor = CollectionUtils.find(sensors, (sensor) -> Objects.equals(sensor.getName(), "Accelerometer 0")); final Sensor leftAccelerometerSensor = CollectionUtils.find(sensors, (sensor) -> Objects.equals(sensor.getName(), "Accelerometer 1")); // You can pass a non-null value here to disable tent/wedge mode logic, // so the displays switch will always happen at the fixed hinge angle. // This might be useful, for example, when in a retail demo mode where // the hinge angle range of the device is limited. final Integer closeAngleDegrees = null; return new BookStyleDeviceStatePolicy(new FeatureFlagsImpl(), context, hingeAngleSensor, hallSensor, leftAccelerometerSensor, rightAccelerometerSensor, closeAngleDegrees); } }সিস্টেম সার্ভারের ক্লাসপাথে পলিসি প্রোভাইডারটি যোগ করুন। পূর্ববর্তী ধাপে তৈরি করা ডিভাইস স্টেট পলিসি প্রোভাইডার ক্লাসটি দিয়ে একটি লাইব্রেরি তৈরি করার মাধ্যমে শুরু করুন।
নিম্নলিখিত উদাহরণটি একটি Soong
Android.bpব্লুপ্রিন্ট কনফিগারেশন দেখায়:java_library { name: "my-device-services", installable: true, system_ext_specific: true, srcs: [ "src/**/*.java" ], libs: [ "services", ], }এরপর, সিস্টেম সার্ভারে এই লাইব্রেরিটি যোগ করতে, ডিভাইসটির মেকফাইলে নিম্নলিখিত লাইনগুলো যোগ করে পরিবর্তন করুন:
# Add system service libraries (they contain device-specific policies) PRODUCT_SYSTEM_SERVER_JARS += \ my-device-services PRODUCT_PACKAGES += \ my-device-servicesconfig.xmlফাইলেconfig_deviceSpecificDeviceStatePolicyProviderআপনার প্রোভাইডারের ক্লাস নেম দিয়ে আপডেট করুন, উদাহরণস্বরূপ:<string translatable="false" name="config_deviceSpecificDeviceStatePolicyProvider">com.example.MyDevicePolicyProvider</string>