অ্যাপ্লিকেশান এবং সিস্টেম অ্যাম্বিয়েন্ট মোড সর্বদা চালু থাকে৷

যখন কোনো ব্যবহারকারী আর ঘড়ি ব্যবহার করেন না তখন Wear OS একটি সক্রিয় অ্যাপের জন্য স্বয়ংক্রিয়ভাবে লো-পাওয়ার মোডে যাওয়ার ব্যবস্থা করে। একে সিস্টেম অ্যাম্বিয়েন্ট মোড বলা হয়। ব্যবহারকারী যদি একটি নির্দিষ্ট সময়সীমার মধ্যে আবার ঘড়ির সাথে ইন্টারঅ্যাক্ট করেন, Wear OS ব্যবহারকারীকে সেই অ্যাপে ফিরিয়ে আনে যেখানে তারা ছেড়েছিল।

নির্দিষ্ট ব্যবহারের ক্ষেত্রে-উদাহরণস্বরূপ, একজন ব্যবহারকারী দৌড়ানোর সময় হার্ট রেট এবং গতি দেখতে চান—আপনি কম-পাওয়ার অ্যাম্বিয়েন্ট মোডে কী প্রদর্শন করে তাও নিয়ন্ত্রণ করতে পারেন। পরিবেষ্টিত এবং ইন্টারেক্টিভ উভয় মোডে চলা Wear OS অ্যাপগুলিকে সর্বদা-অন অ্যাপ বলা হয়।

একটি অ্যাপকে ক্রমাগত দৃশ্যমান করা ব্যাটারির আয়ুকে প্রভাবিত করে, তাই আপনার অ্যাপে এই বৈশিষ্ট্যটি যোগ করার সময় সেই প্রভাবটি বিবেচনা করুন।

আপনার প্রকল্প কনফিগার করুন

পরিবেষ্টিত মোড সমর্থন করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. পরিধানযোগ্য অ্যাপ পৃষ্ঠা তৈরি করুন এবং চালানোর কনফিগারেশনের উপর ভিত্তি করে আপনার প্রকল্প তৈরি করুন বা আপডেট করুন।
  2. Android ম্যানিফেস্ট ফাইলে WAKE_LOCK অনুমতি যোগ করুন:
<uses-permission android:name="android.permission.WAKE_LOCK" />

সর্বদা চালু মোড সক্ষম করুন

AmbientLifecycleObserver ক্লাস ব্যবহার করতে, নিম্নলিখিতগুলি করুন:

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

    কোটলিন

    val ambientCallback = object : AmbientLifecycleObserver.AmbientLifecycleCallback {
        override fun onEnterAmbient(ambientDetails: AmbientLifecycleObserver.AmbientDetails) {
        // ... Called when moving from interactive mode into ambient mode.
        }
    
        override fun onExitAmbient() {
        // ... Called when leaving ambient mode, back into interactive mode.
        }
    
        override fun onUpdateAmbient() {
        // ... Called by the system in order to allow the app to periodically
        // update the display while in ambient mode. Typically the system will
        // call this every 60 seconds.
        }
    }
  2. একটি AmbientLifecycleObserver তৈরি করুন এবং পর্যবেক্ষক নিবন্ধন করুন। সাধারণত, এটি onCreate() বা টপ-লেভেল কম্পোজেবলে ব্যবহার করা হবে যদি কম্পোজ ফর Wear OS ব্যবহার করা হয়, যাতে অ্যাক্টিভিটির পুরো জীবনচক্র জুড়ে সর্বদা-চালু আচরণ সক্ষম করা যায়।

    কোটলিন

    private val ambientObserver = AmbientLifecycleObserver(activity, callback)
    
    override fun onCreate(savedInstanceState: Bundle) {
      super.onCreate(savedInstanceState)
      lifecycle.addObserver(observer)
    
      // ...
    }
    
  3. removeObserver() কল করে পর্যবেক্ষককে সরান, যখন সর্বদা চালু আচরণের আর প্রয়োজন হয় না। উদাহরণস্বরূপ, আপনি এই পদ্ধতিটিকে আপনার কার্যকলাপের onDestroy() পদ্ধতিতে কল করতে পারেন।

সর্বদা চালু থাকা অ্যাপগুলি ব্যাকগ্রাউন্ডে যেতে পারে

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

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

চলমান ক্রিয়াকলাপকে সিস্টেমটি সনাক্ত করার জন্য, চলমান বিজ্ঞপ্তির স্পর্শ অভিপ্রায় অবশ্যই আপনার সর্বদা-চালু কার্যকলাপের দিকে নির্দেশ করবে, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:

// Create a pending intent that point to your always-on activity
val touchIntent =
    PendingIntent.getActivity(
        context,
        0,
        Intent(context, MyAlwaysOnActivity::class.java),
        PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
    )

val notificationBuilder =
    NotificationCompat.Builder(this, CHANNEL_ID)
    // ...
    .setOngoing(true)

val ongoingActivity =
    OngoingActivity.Builder(
        applicationContext, NOTIFICATION_ID, notificationBuilder
    )
    // ...
    .setTouchIntent(touchIntent)
    .build()

ongoingActivity.apply(applicationContext)

notificationManager.notify(
    NOTIFICATION_ID,
    notificationBuilder.build()
)

পরিবেষ্টিত মোডে চাক্ষুষ চেহারা পরিবর্তন করুন

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

শক্তি সংরক্ষণে সাহায্য করার জন্য, নিম্নলিখিতগুলি করুন:

  • কম পিক্সেল আলোকিত করুন, এবং স্ক্রীনের অধিকাংশ কালো ছেড়ে দিন। পরিবেষ্টিত মোডে শুধুমাত্র সমালোচনামূলক তথ্য দেখানোর কথা বিবেচনা করুন এবং ব্যবহারকারী যখন ইন্টারেক্টিভ মোডে প্রবেশ করে তখন আরও বিশদ প্রদান করুন।
  • কম ঘন ঘন আপডেটের জন্য যেকোনো বিষয়বস্তু সামঞ্জস্য করুন। উদাহরণস্বরূপ, নিকটতম সেকেন্ডের পরিবর্তে নিকটতম মিনিটে টাইমার দেখান।
  • AmbientDetails অবজেক্টে onEnterAmbient() এ পাস করা হয়েছে:
    • যদি deviceHasLowBitAmbient সেট করা থাকে, যেখানে সম্ভব অ্যান্টি-আলিয়াসিং অক্ষম করুন।
    • burnInProtectionRequired সেট করা থাকলে, পর্যায়ক্রমে ভিজ্যুয়ালাইজেশনটি স্থানান্তর করুন এবং কঠিন সাদা এলাকাগুলি এড়িয়ে চলুন।

Wear OS-এর জন্য কম্পোজ ব্যবহার করার সময়, আমরা স্টেট আপডেট করতে এই কলব্যাক পদ্ধতিগুলি ব্যবহার করার পরামর্শ দিই, যা সিস্টেমকে আপনার UI যথাযথভাবে পুনরায় কম্পোজ করতে দেয়।

এটি কীভাবে অর্জন করা যায় তার একটি উদাহরণের জন্য, GitHub-এ রচনা-ভিত্তিক অনুশীলনের নমুনাটি দেখুন, যা Horologist লাইব্রেরি থেকে AmbientAware কম্পোজযোগ্য ব্যবহার করে।