কমপ্লিকেশন ব্যবহার করে উপযোগী ডেটা প্রদান করা

কমপ্লিকেশন হল ফিজিক্যাল ও স্মার্টওয়াচ, দু'টি ওয়াচফেসেরই একটি ফিচার যা অতিরিক্ত তথ্য দেখায়। সাধারণত, ব্যবহারকারী বেছে নেন যে কোন তথ্য কমপ্লিকেশন হিসেবে দেখানো হবে।

সাধারণত, জটিলতা বিভিন্ন ধরনের হয়:

  1. আয়তক্ষেত্রাকার
  2. বৃত্তাকার
  3. ওয়াচফেসের প্রান্ত বরাবর বৃত্তচাপ
  4. ব্যাকগ্রাউন্ড, যা ওয়াচফেসের পুরোটা জুড়ে থাকে

Wear OS-এ, জটিলতা সিস্টেমকে দুটি ভাগে ভাগ করা যায়:

  1. কমপ্লিকেশন ডেটা সোর্স
  2. কমপ্লিকেশন রেন্ডারিং

যেমন, কোনও স্বাস্থ্য ও ফিটনেস অ্যাপ হয়ত 'দৈনিক পদক্ষেপ' জটিলতা ডেটা সোর্স প্রয়োগ করতে পারে। এটি WFF ওয়াচফেসের মাধ্যমে রেন্ডার করা হতে পারে।

কমপ্লিকেশন ডেটা সোর্স

কমপ্লিকেশন ডেটা সোর্স শুধুমাত্র রেন্ডার করা ডেটা এবং কমপ্লিকেশনের ধরন নির্দিষ্ট করে। ওয়াচ ফেসে ডেটা কীভাবে দেখানো হবে তা নির্ধারণ করার ক্ষেত্রে ডেটা সোর্সের কোনও ভূমিকা নেই।

যেমন, স্বাস্থ্য ও ফিটনেস সংক্রান্ত দৈনিক পদক্ষেপের জটিল ডেটা সোর্স নিম্নলিখিত ডেটা তৈরি করতে পারে যা থেকে বোঝা যায় যে ব্যবহারকারী আজ তার টার্গেট ১০,০০০ পদক্ষেপের মধ্যে ২৪০০ পদক্ষেপ হেঁটেছেন:

  • টাইপ: GOAL_PROGRESS
  • মূল্য: 2400
  • TargetValue: 10000

মনে রাখবেন, এই ডেটাতে এমন কিছু নেই যা নির্দেশ করে যে এটি কীভাবে রেন্ডার করা উচিত।

ওয়াচ ফেসে উল্লেখ করা থাকে যে এটি কোন ধরনের জটিলতা রেন্ডার করতে পারে। এর ফলে ব্যবহারকারী কোন ডেটা সোর্স বেছে নিতে পারবেন তা নির্ধারিত হয় ।

দৈনিক পদক্ষেপের উদাহরণের ক্ষেত্রে, আপনি ওয়াচফেসের সংজ্ঞায় কীভাবে Value ও TargetValue রেন্ডার করবেন তা ঠিক করেন: এটি কি টেক্সট হিসেবে, নাকি প্রগ্রেস ইন্ডিকেটর হিসেবে দেখানো হবে? ওয়াচফেস ডিজাইনার হিসেবে সেই সিদ্ধান্ত আপনাকে নিতে হবে।

জটিলতা বলতে কী বোঝায় তা ব্যাখ্যা করো

আপনার ওয়াচফেসে কমপ্লিকেশন দেখানোর সুবিধা প্রদান করা ব্যবহারকারীদের জন্য মূল্যবান হতে পারে, কারণ এটি তাদের এক নজরে আরও বেশি তথ্য দেখতে এবং তাদের প্রয়োজন অনুযায়ী কাস্টমাইজ করতে দেয়।

আপনার ওয়াচ ফেসে কতগুলি জটিলতা কাজ করবে এবং কীভাবে কাজ করবে তা ঠিক করুন, সেগুলির আকার ও পজিশনিং কেমন হবে এবং কোন ধরনের ডেটা সেগুলি সাপোর্ট করবে তা ঠিক করুন।

ওয়াচ ফেসে জটিলতার জন্য প্রতিটি স্পেসকে ComplicationSlot হিসেবে সংজ্ঞায়িত করা হয়, যার মধ্যে জটিলতা রেন্ডার করার জন্য একটি বাউন্ডিং এরিয়া সংজ্ঞায়িত করা হয়:

<ComplicationSlot slotId="1" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY"
    x="100" y="100" width="100" height="100">
    <BoundingOval x="0"  y="0" width="100" height="100" />
    <Complication type="SHORT_TEXT">
        <!-- Complication content for rendering SHORT_TEXT data goes here -->
    </Complication>
    <Complication type="SMALL_IMAGE">
        <!-- Complication content for rendering SMALL_IMAGE data goes here -->
    </Complication>
</ComplicationSlot>

আয়তক্ষেত্র এবং উপবৃত্তের মতো অন্যান্য বাউন্ডিং শেপের ক্ষেত্রেও একই ধরনের পদ্ধতি প্রয়োগ করা যেতে পারে।

জটিলতার ধরন ও ডিফল্ট সেট করা

কমপ্লিকেশন সিস্টেম বিভিন্ন ধরনের সংখ্যা প্রদান করে, যা ওয়াচ ফেসে স্ক্রিনে কী ধরনের ডেটা দেখানো যাবে তা প্রকাশ করতে দেয়। যেমন, আগে দেখানো Arc কমপ্লিকেশন, SMALL_IMAGE-এর মতো ছবি-ভিত্তিক কমপ্লিকেশন ডেটা টাইপের জন্য খুব উপযুক্ত নয় কিন্তু RANGED_VALUE-এর মতো সংখ্যাসূচক ডেটার জন্য খুব ভালো কাজ করতে পারে।

আপনার ComplicationSlot ঘোষণায়, এই স্লটে রেন্ডার করা যায় এমন ধরনের স্পেস-সেপারেটেড তালিকা supportedTypes হিসেবে সেট করুন।

এছাড়াও, আপনাকে ComplicationSlot-এর জন্য ডিফল্ট সোর্স সেট করতে হবে, যদি না আপনি EMPTY টাইপ অনুমোদন করেন। সেই ক্ষেত্রে ডিফল্ট সেট করা ঐচ্ছিক:

<ComplicationSlot slotId="2" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY"
    x="250" y="100" width="100" height="100">
    <DefaultProviderPolicy
        defaultSystemProvider="STEP_COUNT"
        defaultSystemProviderType="SHORT_TEXT" />
    <!-- ... -->
</ComplicationSlot>

সিস্টেম প্রদানকারী নির্দিষ্ট করার পাশাপাশি, আপনি ঐচ্ছিকভাবে নন-সিস্টেম প্রদানকারী নির্দিষ্ট করতে পারেন, যেমন ডিফল্ট হিসেবে ব্যবহার করার জন্য থার্ড-পার্টি প্রদানকারী, যদি সেগুলি আগে থেকেই ইনস্টল করা থাকে।

জটিল ডেটা রেন্ডার করা

ComplicationSlot, bounds এবং কন্টেনিং Complication এলিমেন্টকে সংজ্ঞায়িত করার পরে, জটিল ডেটা দেখাতে PartDraw, PartImage এবং PartText-এর মতো স্ট্যান্ডার্ড WFF কম্পোনেন্ট ব্যবহার করুন।

Complication ডেটার মধ্যে থাকা এলিমেন্ট বিশেষ ডেটা সোর্স অ্যাক্সেস করতে পারে: COMPLICATION, যা কমপ্লিকেশন ডেটা সোর্স দ্বারা সেট করা বিভিন্ন ডেটা প্রপার্টি প্রদান করে।

যেমন, SMALL_IMAGE জটিলতা COMPLICATION.SMALL_IMAGE এবং COMPLICATION.SMALL_IMAGE_AMBIENT ভ্যালু সেট করতে পারে। Image এলিমেন্টে রিসোর্সের পরিবর্তে এগুলি ব্যবহার করা যেতে পারে:

<Complication type="SMALL_IMAGE">
    <PartImage x="0" y="0" width="100" height="100">
        <Image resource="[COMPLICATION.SMALL_IMAGE]" />
    </PartImage>
</Complication>

প্রতিটি আলাদা আলাদা জটিলতার ধরনের জন্য উপলভ্য প্রপার্টির আলাদা আলাদা সেট থাকে যা সেট করা যেতে পারে; প্রতিটি সেটের সম্পূর্ণ তালিকা দেখতে, Complication রেফারেন্স দেখুন। এই উদাহরণে SHORT_TEXT জটিলতা থেকে টেক্সট দেখানো হয়েছে:

<Complication type="SHORT_TEXT">
    <PartText x="0" y="0" width="100" height="100">
        <Text>
            <Font size="32">
                <Template>
                    <![CDATA[%s]]><Parameter expression="[COMPLICATION.TEXT]" />
                </Template>
            </Font>
        </Text>
    </PartText>
</Complication>

কমপ্লিকেশন রেন্ডার করার সময় উপযোগিতা সর্বাধিক করা

আপনার ওয়াচফেসে ComplicationSlots যোগ করার সময় বেশ কিছু সমস্যা হতে পারে:

  1. কমপ্লিকেশন ডেটা টাইপের সংখ্যা অনেক। বিভিন্ন অ্যাপ এইসব বিকল্পের একটি বা একাধিক বিকল্প প্রদান করতে পারে।
  2. প্রতিটি জটিল ডেটা টাইপের বাধ্যতামূলক প্রপার্টি থাকার পাশাপাশি অনেক ঐচ্ছিক প্রপার্টিও থাকে। উপলভ্য প্রপার্টি থেকে সবচেয়ে উপযোগী রেন্ডারিং করা হয়েছে কিনা তা চেক করুন। এর জন্য বিভিন্ন কম্বিনেশন বিবেচনা করে দেখুন।

এইসব সমস্যার সমাধান করতে, কিছু কৌশল হল:

  1. প্রতিটি স্লটের জন্য একাধিক ধরনের জটিলতা কাজ করে। যেমন, SHORT_TEXT কমপ্লিকেশন ডেটা সোর্সের সাথে খুব ভালভাবে কাজ করে, তাই বিভিন্ন ধরনের নাম্বার কাজ করলে, যেমন ছোট বৃত্তাকার কমপ্লিকেশনের জন্য SHORT_TEXT RANGED_VALUE, মানানসই হওয়ার সম্ভাবনা বেড়ে যায়।
  2. ওয়াচফেস জুড়ে বিভিন্ন ধরনের কমপ্লিকেশন অফার করে। যেমন, আপনি এজ-পজিশন করা Arc কমপ্লিকেশনে RANGED_VALUE ও GOAL_PROGRESS এবং ওয়াচফেসের বডির মধ্যে বৃত্তাকার কমপ্লিকেশনে SHORT_TEXT ও SMALL_IMAGE ব্যবহার করতে পারেন।
  3. প্রতিটি ডেটা ধরনের জন্য ঐচ্ছিক এলিমেন্ট চেক করুন। যেমন, SHORT_TEXT ঐচ্ছিকভাবে একটি শীর্ষক প্রপার্টি ও ছবি ব্যবহার করা যায়। কোনও ছবি বা শীর্ষক উপলভ্য আছে কিনা তার উপর নির্ভর করে উপলভ্য ডেটা রেন্ডার করার জন্য আপনার লেআউট আলাদা হতে পারে।