গাড়ী ব্যবহারকারী অভিজ্ঞতা সীমাবদ্ধতা

আপনি চালিয়ে যাওয়ার আগে, ড্রাইভিং ডিস্ট্রাকশন নির্দেশিকা পর্যালোচনা করুন।

এই পৃষ্ঠাটি গাড়ি ব্যবহারকারীর অভিজ্ঞতা (UX) বিধিনিষেধের নিয়মগুলি বর্ণনা করে যা আপনি একাধিক UX বিধিনিষেধ নিয়ম কনফিগারেশন তৈরি করতে ব্যবহার করতে পারেন (উদাহরণস্বরূপ, ইউরোপীয় ইউনিয়ন বনাম জাপান) এবং তারপরে চালানোর সময় কোন নিয়মগুলি প্রয়োগ করতে হবে তা নির্ধারণ করুন৷ আরও তথ্যের জন্য, CarUxRestrictions দেখুন।

কার UX বিধিনিষেধ পরিষেবা ডেভেলপারদের একটি নতুন কার UX সীমাবদ্ধতা কনফিগারেশন সংজ্ঞায়িত করতে সক্ষম করে। যদি একজন বিকাশকারী বিধিনিষেধের নিয়মগুলি পরিবর্তন করতে চান (যেমন স্থানীয় সুরক্ষা মানগুলি মেনে চলার জন্য), বিকাশকারী নতুন কনফিগারেশনটি সংজ্ঞায়িত করতে API ব্যবহার করতে পারেন৷

কনফিগারেশন সেট করার API শুধুমাত্র নতুন কনফিগারেশনে টিকে থাকে। অন্য কথায়, কনফিগারেশন অবিলম্বে কার্যকর হয় না । পরিবর্তে, নতুন কনফিগারেশন লোড হয় যখন UX বিধিনিষেধ পরিষেবা পুনরায় চালু হয় এবং গাড়িটি পার্কে থাকে। নতুন কনফিগারেশন পুনরায় লোড করার আগে গাড়ি পরিষেবা নিশ্চিত করে যে গাড়িটি পার্কে রয়েছে।

নতুন UX বিধিনিষেধ পরিষেবা পদ্ধতি ছাড়াও, কনফিগারেশন নির্মাণের জন্য API প্রদান করা হয়। গিয়ার নির্বাচন এবং গতির অবস্থা তিনটি ড্রাইভিং স্টেটের একটিতে রূপান্তরিত হয়:

  • পার্ক করা হয়েছে। পার্কে গিয়ার।
  • অলস। পার্কে গিয়ার নেই এবং গতি শূন্য।
  • চলন্ত পার্কে গিয়ার নেই এবং গতি শূন্য নয়।

অ্যাপগুলি কীভাবে গাড়ির ড্রাইভিং অবস্থা এবং সংশ্লিষ্ট UX বিধিনিষেধগুলি ব্যবহার করে তা জানতে, গাড়ি চালানোর অবস্থা এবং UX নিষেধাজ্ঞাগুলি দেখুন৷

ড্রাইভ অবস্থার উপর ভিত্তি করে সীমাবদ্ধতা কনফিগারেশন

ড্রাইভারের বিভ্রান্তি রোধ করতে, Android UX সীমাবদ্ধতার একটি সেটে ড্রাইভিং অবস্থাকে ম্যাপ করে /packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java

  • পার্ক করা হয়েছে। অনিয়ন্ত্রিত।
  • অলস। কোন ভিডিও এবং কোন কনফিগারেশন পর্দা.
  • চলন্ত সম্পূর্ণরূপে সীমাবদ্ধ (সমস্ত বিধিনিষেধ প্রয়োজন)।

উপরে চিত্রিত ম্যাপিং পূর্ব-নির্ধারিত এবং একটি XML সম্পদ হিসাবে কনফিগার করা হয়েছে। দ্য /packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java তারপর নিয়মগুলি মেমরিতে সংরক্ষণ করে। পরিষেবাটি তারপরে বর্তমান ড্রাইভিং অবস্থাকে UX বিধিনিষেধে ম্যাপ করে এবং পুরো সিস্টেমে বর্তমান বিধিনিষেধগুলি সম্প্রচার করে।

<!-- No restrictions when car is parked -->
<DrivingState car:state="parked">
    <Restrictions car:requiresDistractionOptimization="false"
                  car:uxr="baseline"/>
</DrivingState>

<!-- Restrictions when car is idling -->
<DrivingState car:state="idling">
    <Restrictions car:requiresDistractionOptimization="true"
                  car:uxr="no_video|no_config"/>
</DrivingState>

<!-- Restrictions for speed >= 0 m/s -->
<DrivingState car:state="moving" car:minSpeed="0.0">
    <Restrictions car:requiresDistractionOptimization="true"
                  car:uxr="fully_restricted"/>
</DrivingState>

একাধিক প্রদর্শনের জন্য কনফিগারেশন

ডিফল্টরূপে, অতিরিক্ত প্রদর্শনে কোনো বিধিনিষেধ প্রয়োগ করা হয় না। একাধিক প্রদর্শনের জন্য সীমাবদ্ধতা কনফিগারেশন তৈরি করতে, সেই প্রদর্শনের জন্য ফিজিক্যালপোর্টের সাথে RestrictionMapping ট্যাগ অন্তর্ভুক্ত করুন। উপযুক্ত সীমাবদ্ধতা স্বয়ংক্রিয়ভাবে প্রতিটি প্রদর্শনে প্রয়োগ করা হয়. নিম্নলিখিত উদাহরণে, ফিজিক্যাল পোর্ট আইডি 1 এবং 2 এর ডিসপ্লেতে ভিন্ন কনফিগারেশন রয়েছে:

<RestrictionMapping car:physicalPort="1">
       <DrivingState car:state="moving">
           <Restrictions car:requiresDistractionOptimization="true" car:uxr="no_keyboard|no_video"/>
       </DrivingState>
   </RestrictionMapping>

   <RestrictionMapping car:physicalPort="2">
       <DrivingState car:state="moving">
           <Restrictions car:requiresDistractionOptimization="true" car:uxr="no_video"/>
       </DrivingState>
  </RestrictionMapping>

সীমাবদ্ধতা মোডের জন্য কনফিগারেশন

আপনি মোডের জন্য যেকোনো নাম নির্বাচন করতে পারেন, যেমন teen । নিম্নলিখিত উদাহরণে, ডিফল্ট এবং যাত্রী মোডের জন্য বিভিন্ন সীমাবদ্ধতা কনফিগার করা হয়েছে (আগে, শুধুমাত্র যাত্রী মোড সমর্থিত ছিল):

<DrivingState car:state="idling">
    <Restrictions car:mode="passenger" car:requiresDistractionOptimization="false" car:uxr="baseline"/>
    <Restrictions car:requiresDistractionOptimization="true" car:uxr="no_video"/>
</DrivingState>
</Restrictions>
আপনি মোডের জন্য যেকোনো স্ট্রিং নাম সেট করতে API ব্যবহার করতে পারেন। উদাহরণস্বরূপ, CarUxRestrictionsManager-এ setRestrictionMode(@NonNull String mode) পদ্ধতি। (আগে, আপনি CarUxRestrictionsManager-এ setRestrictionMode(@CarUxRestrictionsManager.UxRestrictionMode int mode) পদ্ধতি ব্যবহার করতেন)।

CarUxRestrictionsConfiguration APIs

CarUxRestrictionsConfiguration সহ সীমাবদ্ধতা

নতুন ক্লাস CarUxRestrictionsConfiguration বর্তমান XML কনফিগারেশন স্কিমার সাথে 1:1 ম্যাপ করা হয়েছে। CarUxRestrictionsConfiguration CarUxRestrictions. Builder , যা বিল্ড() এর উপর কনফিগারেশন যাচাই করে।

new CarUxRestrictionsConfiguration.Builder()
        // Explicitly set restrictions for each driving state.
        .setUxRestrictions(CarDrivingStateEvent.DRIVING_STATE_PARKED,
                /* requiresOptimization= */ false,
                /* restrictions= */ UX_RESTRICTIONS_BASELINE)
        .setUxRestrictions(CarDrivingStateEvent.DRIVING_STATE_IDLING,
                true,
                UX_RESTRICTIONS_NO_VIDEO|UX_RESTRICTIONS_NO_SETUP)
        .setUxRestrictions(CarDrivingStateEvent.DRIVING_STATE_MOVING,
                true,
                UX_RESTRICTIONS_FULLY_RESTRICTED)
        // Set restriction parameters.
        .setMaxStringLength(int max)
        .setMaxCumulativeContentItems(int max)
        .setMaxContentDepth(int max)
        // Build a new CarUxRestrictionsConfiguration.
        .build();

CarUxRestrictionsManager API

CarUxRestrictionsManager এর সাথে পরবর্তী ড্রাইভের জন্য CarUxRestrictionsConfiguration সেট করুন। এই পদ্ধতির জন্য অনুমতি প্রয়োজন, Car.PERMISSION_CAR_UX_RESTRICTIONS_CONFIGURATION

public synchronized boolean saveUxRestrictionsConfigurationForNextBoot(
        CarUxRestrictionsConfiguration config);

একটি নতুন UX সীমাবদ্ধতা কনফিগারেশন বজায় রাখুন

যখন একটি নতুন কনফিগারেশন পাস করা হয়, তখন নতুন কনফিগারেশনটি সফলভাবে সংরক্ষিত হয়েছে কিনা তা নির্দেশ করার জন্য UX সীমাবদ্ধতা পরিষেবা একটি বুলিয়ান প্রদান করে। এই নতুন কনফিগারেশনটি শুধুমাত্র তখনই ব্যবহৃত হয় যখন ইন্টিগ্রেটেড হেড ইউনিট (IHU) পুনরায় চালু হয় এবং গাড়িটি পার্ক করা হয়। অভ্যন্তরীণভাবে, UX বিধিনিষেধ পরিষেবাটিতে কনফিগারেশনের দুটি সেট রয়েছে:

  • উৎপাদন। ঐচ্ছিক হলেও, এই কনফিগারেশন প্রায়ই উপস্থিত থাকে। UX সীমাবদ্ধতা পরিষেবা শুরু করার সময় এই কনফিগারেশনটি পড়ে।
  • মঞ্চস্থ। এছাড়াও ঐচ্ছিক, এই কনফিগারেশনের UX বিধিনিষেধের উপর কোন প্রভাব নেই এবং যখন গাড়ি পরিষেবা শুরু হয় এবং যখন গাড়ি পার্ক করা হয় তখন উৎপাদনে উন্নীত হয়।

উত্পাদন কনফিগারেশন

চিত্র 1. উৎপাদন কনফিগারেশন

ঠিকানা ব্যর্থতা

যতক্ষণ না ড্রাইভিং স্টেট তথ্য CarPropertyManager থেকে পাওয়া যায় (উদাহরণস্বরূপ, বুট-আপের সময়), UX বিধিনিষেধ প্রয়োগ করা হবে না। সিস্টেমটি এমনভাবে কাজ করে যেন ড্রাইভিং স্টেট পার্ক করা হয়।

একটি সংরক্ষিত কনফিগারেশন পড়া ব্যর্থ হলে (উদাহরণস্বরূপ, SettingNotFoundException ফলাফল), UX সীমাবদ্ধতা পরিষেবা হার্ড-কোডেড, সম্পূর্ণ সীমাবদ্ধ মোডে ফিরে আসে:

// Idling/moving state is fully restricted.
private static CarUxRestrictionsConfiguration generateDefaultConfig() {}

ড্রাইভিং অবস্থা এবং ব্যবহারকারীর বিধিনিষেধ

নিম্নলিখিত বিষয়বস্তু নিম্নলিখিত নকশা চিত্রে প্রদর্শিত মিথস্ক্রিয়া বর্ণনা করে:

ড্রাইভিং রাষ্ট্র মিথস্ক্রিয়া

চিত্র 2. ড্রাইভিং রাষ্ট্র মিথস্ক্রিয়া

ড্রাইভিং অবস্থা প্রাপ্ত করতে ব্যবহৃত বৈশিষ্ট্য

ড্রাইভিং অবস্থা পেতে নিম্নলিখিত তিনটি VehiclePropertyIds ব্যবহার করুন:

অ্যাপে উপলব্ধ API

কোডটি নিম্নলিখিত অবস্থানগুলিতে থাকে:

কোড অবস্থান
CarUxRestrictionsManager
UX সীমাবদ্ধতা পরিবর্তনের জন্য নিবন্ধন করার জন্য সর্বজনীন APIs।
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
CarUxRestrictions
UX সীমাবদ্ধতার সংজ্ঞা।
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
CarDrivingStateManager
ড্রাইভিং স্টেট পরিবর্তনের জন্য নিবন্ধন করার জন্য সিস্টেম API।
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java

ড্রাইভিং অবস্থা অনুকরণ করতে, পরীক্ষা দেখুন।