গাড়ির ডিসপ্লে সামঞ্জস্যতা

গাড়ির ডিসপ্লের সাথে সামঞ্জস্যপূর্ণ হওয়ায় ফোন ও ট্যাবলেট অ্যাপগুলো গাড়ির ডিভাইসগুলোতে ভালোভাবে কাজ করে।

বৈশিষ্ট্যগুলির মধ্যে রয়েছে:

  • ডিপিআই স্কেলিং: ডিসপ্লে ডিপিআই-এর উপর ভিত্তি করে অ্যাপের ইউআই এলিমেন্টগুলোর আকার পরিবর্তন করুন।
  • অ্যাপ রেন্ডারিংয়ের জন্য নিরাপদ এলাকা: অ্যাপের বিষয়বস্তুকে একটি নিরাপদ এলাকার মধ্যে রাখুন, যাতে সিস্টেমের UI উপাদান দ্বারা তা আবৃত না হয়।
  • অ্যাপ শ্রেণিবিন্যাস যুক্তি: সেই অ্যাপগুলো শনাক্ত করুন যেগুলোর জন্য কার ডিসপ্লে কম্প্যাটিবিলিটি প্রয়োজন।

সামঞ্জস্য বৈশিষ্ট্য

প্ল্যাটফর্মটি গাড়ির ডিসপ্লেতে অ্যাপের রেন্ডারিং এবং স্কেলিং অপ্টিমাইজ করার জন্য বিভিন্ন ব্যবস্থা প্রদান করে।

ডিপিআই স্কেলিং

ডিপিআই স্কেলিং ফিচারটি ডিভাইস নির্মাতাদেরকে স্বতন্ত্র অ্যাপ অথবা কার ডিসপ্লে কম্প্যাট প্রয়োজন এমন সমস্ত অ্যাপের ডিপিআই ঘনত্ব স্কেল করার সুযোগ দেয়।

অ্যাপগুলির ঘনত্ব স্কেলিং কনফিগার করতে:

  1. /product/etc/display_compat_config.xml একটি কনফিগারেশন ফাইল যোগ করুন:

    <?xml version="1.0" encoding="utf-8"?>
    <!--
        Each scale factor can have the following attributes
    
        display     (required) Specifies the displayId to which this scale factor will be applied.
        packageName (optional) Specifies the packageName to which the scale factor will be applied.
                    If omitted, the scaling will apply to all packages.
    
        For example:
        <scale display="0" packageName="com.android.car.media.localmediaplayer">0.5</scale>
    
        This means that only package `com.android.car.media.localmediaplayer` on display `0` will be scaled.
    -->
    <config>
    <scale display="0">1.0</scale>
    </config>
    
  2. যেসব অ্যাপের জন্য কার ডিসপ্লে কম্প্যাট প্রয়োজন, সেগুলোর জন্য একটি ডিফল্ট স্কেল ভ্যালু সেট করতে, ডিসপ্লে 0-এর ডিফল্ট স্কেল পরিবর্তন করে <scale display="0">1.0</scale> করুন। এই ভ্যালুটি হলো স্কেল ভ্যালুর বিপরীত । উদাহরণস্বরূপ, যেসব অ্যাপের জন্য কার ডিসপ্লে কম্প্যাট প্রয়োজন, সেগুলোকে 1.5x স্কেল করতে, স্কেল ভ্যালুটি (1 / 1.5) = 0.67 সেট করুন।

    <config>
        <scale display="0">0.67</scale>
    </config>
    
  3. কোনো নির্দিষ্ট অ্যাপের জন্য স্কেল ভ্যালু সেট করতে, কনফিগে একটি নতুন scale এলিমেন্ট যোগ করুন। এই উদাহরণে, YouTube Automotive-কে 1.43x-এ স্কেল করা হয়েছে (যেমন, (1 / 1.43) = 0.7 )।

    <config>
        <scale display="0">0.67</scale>
        <scale display="0" packageName="com.google.android.apps.automotive.youtube">0.7</scale>
    </config>
    

আপনি যখন /product/etc/display_compat_config.xml পরিবর্তন করেছেন, তখন যদি সিস্টেমটি চালু থাকে, তবে নতুন কনফিগারেশনটি কার্যকর হওয়ার জন্য আপনাকে অবশ্যই ক্যাশে পরিষ্কার করতে হবে। ক্যাশে পরিষ্কার করতে এই ম্যাক্রোটি ব্যবহার করুন:

SECURE_SETTING_KEY="android.software.car.display_compatibility:settings:secure"
USER_ID_LIST=$(adb shell cmd user list -v | grep 'id=' | cut -d'=' -f2 | cut -d',' -f1)
for USER_ID in $USER_ID_LIST; do
    echo "Deleting Display Compat config for user: $USER_ID"
    adb shell settings delete secure --user $USER_ID $SECURE_SETTING_KEY
    sleep 1
    echo
done
  1. একটি AAOS বিল্ডে কনফিগারেশন ফাইল এবং ফিচার ডিক্লারেশন যোগ করুন, উদাহরণস্বরূপ, vendor/ OEM_NAME /products/displaycompat এ:

    # File: vendor/OEM_NAME/products/displaycompat/Android.bp
    
    prebuilt_etc {
        name: "display_compat_config",
        filename: "display_compat_config.xml",
        src: "display_compat_config.xml",
        product_specific: true,
    }
    

নিরাপদ অ্যাপ এলাকা

ফোন এবং ট্যাবলেটের অ্যাপগুলো প্রায়শই অটোমোটিভে থাকা বড় সিস্টেম বারের জন্য ডিজাইন করা হয় না। এই অ্যাপগুলোকে অবশ্যই সিস্টেম বার বা সিস্টেম ওভারলে-র নিচে কন্টেন্ট প্রদর্শন করা থেকে বিরত রাখতে হবে। অন্যথায়, এগুলো এমন কোনো জায়গায় ইন্টারেক্টিভ এলিমেন্ট রেন্ডার করতে পারে যা ব্যবহারকারীর দৃষ্টির আড়ালে থেকে যাবে।

নিরাপদ অ্যাপ এলাকাটি স্কেলেবল ইউআই SafeBounds (Scalable UI SafeBounds) ব্যবহার করে বাস্তবায়ন করা হয়েছে।

অ্যাপ শ্রেণিবিন্যাস যুক্তি

অ্যাপের সামঞ্জস্যতা বাড়ানোর জন্য আপনি CarPackageManager.requiresDisplayCompat(..) ব্যবহার করে অতিরিক্ত কার্যকারিতা তৈরি করতে পারেন। উদাহরণস্বরূপ, আপনি এই কার্যকারিতা ব্যবহার করে একটি ব্যাক বাটন বা অতিরিক্ত UI যোগ করতে পারেন।

অ্যাপ ডেভেলপাররা অ্যাপের ম্যানিফেস্টে মেটাডেটা অন্তর্ভুক্ত করার মাধ্যমে গাড়ির ডিসপ্লের সাথে সামঞ্জস্যতা বেছে নিতে পারেন:

<meta-data
    android:name="android.software.car.display_compatibility"
    android:value="true" />

সিস্টেমটি নিম্নলিখিত লজিক (ক্রমানুসারে মূল্যায়ন করা) ব্যবহার করে মূল্যায়ন করে যে, কোনো অ্যাপের জন্য গাড়ির ডিসপ্লে সামঞ্জস্যপূর্ণ বৈশিষ্ট্যের প্রয়োজন আছে কি না।

  1. ম্যানিফেস্ট মেটাডেটা android.software.car.display_compatibility :
    • যদি android:value="true"অ্যাপটির কম্প্যাটিবিলিটি প্রয়োজন
    • যদি android:value="false" হয় → অ্যাপটির সামঞ্জস্যের প্রয়োজন নেই
    • যদি মেটাডেটা অনুপস্থিত থাকে, তাহলে পরবর্তী যাচাইকরণে অগ্রসর হন।
  2. android.hardware.type.automotive বৈশিষ্ট্যটি ব্যবহার করে:
    • যদি ফিচারটি ডিক্লেয়ার করা থাকে ( android:required true বা false যাই হোক না কেন) → অ্যাপটির কম্প্যাটিবিলিটির প্রয়োজন নেই।
    • বৈশিষ্ট্যটি অনুপস্থিত থাকলে, পরবর্তী যাচাইয়ে যান।
  3. অ্যাপের কার্যকলাপ:
    • যদি অ্যাপটিতে কোনো অ্যাক্টিভিটি (যেমন RRO, হেডলেস অ্যাপ বা সার্ভিস) না থাকে → অ্যাপটির কম্প্যাটিবিলিটির প্রয়োজন নেই
    • অ্যাপটিতে কোনো কার্যকলাপ থাকলে, পরবর্তী যাচাইকরণে যান।
  4. আবেদনের তথ্য:
    • অ্যাপটি বিশেষাধিকারপ্রাপ্ত হলে → অ্যাপটির সামঞ্জস্যের প্রয়োজন নেই
    • অ্যাপটি যদি একটি সিস্টেম অ্যাপ হয় ( FLAG_SYSTEM ) → অ্যাপটির সামঞ্জস্যের প্রয়োজন নেই।
    • অন্যথায়, পরবর্তী ধাপে এগিয়ে যান।
  5. স্বাক্ষরের তথ্য:
    • যদি অ্যাপটি প্ল্যাটফর্ম-স্বাক্ষরিত হয় (অর্থাৎ অ্যান্ড্রয়েড ফ্রেমওয়ার্কের মতো একই স্বাক্ষর দিয়ে স্বাক্ষরিত) → অ্যাপটির সামঞ্জস্যের প্রয়োজন নেই
    • অন্যথায়, পরবর্তী ধাপে এগিয়ে যান।
  6. বিকল্প সিদ্ধান্ত:
    • অপ্ট-আউট না করে সমস্ত যাচাই সফল হলে → অ্যাপটির সামঞ্জস্যতা প্রয়োজন

CarDisplayCompatScaleProviderUpdatableImpl.requiresDisplayCompatNotCachedLocked দেখুন।

ডিভাইস সমর্থন

যেসব ডিভাইস গাড়ির ডিসপ্লে সামঞ্জস্যতা সমর্থন করে, সেগুলোকে অবশ্যই ফিচার ডিক্লারেশন ব্যবহার করে এই সমর্থন ঘোষণা করতে হবে:

<feature name="android.software.car.display_compatibility" />