যখন কোনো ব্যবহারকারী আর ঘড়ি ব্যবহার করেন না তখন Wear OS একটি সক্রিয় অ্যাপের জন্য স্বয়ংক্রিয়ভাবে লো-পাওয়ার মোডে যাওয়ার ব্যবস্থা করে। একে সিস্টেম অ্যাম্বিয়েন্ট মোড বলা হয়। ব্যবহারকারীর ঘড়ির সাথে ইন্টারঅ্যাক্ট করার পরে অ্যাপটি পুনরায় চালু করা হয় যদি নিম্নলিখিত শর্তগুলির মধ্যে কোনটি পূরণ করা হয়:
- ব্যবহারকারীর মিথস্ক্রিয়া একটি নির্দিষ্ট সময়সীমার মধ্যে ঘটে (সময় শেষ হওয়ার আগে)।
- অ্যাপটি ঘোষণা করে এবং একটি চলমান কার্যকলাপ শুরু করেছে।
নির্দিষ্ট ব্যবহারের ক্ষেত্রে-উদাহরণস্বরূপ, একজন ব্যবহারকারী দৌড়ানোর সময় হার্ট রেট এবং গতি দেখতে চান-আপনি সিস্টেম অ্যাম্বিয়েন্ট মোডে কী প্রদর্শন করে তাও নিয়ন্ত্রণ করতে পারেন। পরিবেষ্টিত এবং ইন্টারেক্টিভ উভয় মোডে চলা Wear OS অ্যাপগুলিকে সর্বদা-অন অ্যাপ বলা হয়।
একটি অ্যাপকে ক্রমাগত দৃশ্যমান করা ব্যাটারির আয়ুকে প্রভাবিত করে, তাই আপনার অ্যাপে এই বৈশিষ্ট্যটি যোগ করার সময় সেই প্রভাবটি বিবেচনা করুন।
আপনার প্রকল্প কনফিগার করুন
পরিবেষ্টিত মোড সমর্থন করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
- পরিধানযোগ্য অ্যাপ পৃষ্ঠা তৈরি করুন এবং চালানোর কনফিগারেশনের উপর ভিত্তি করে আপনার প্রকল্প তৈরি করুন বা আপডেট করুন।
- (শুধু Wear OS 4 বা তার নিচের জন্য প্রয়োজন) Android ম্যানিফেস্ট ফাইলে
WAKE_LOCK
অনুমতি যোগ করুন:
<uses-permission android:name="android.permission.WAKE_LOCK" android:maxSdkVersion="33"/>
সর্বদা-অন মোড সক্ষম করুন
Wear OS 6 থেকে শুরু করে, targetSdkVersion
36 বা তার উপরে সেট করা অ্যাপগুলি সর্বদা ডিফল্টরূপে চালু থাকে। এই অ্যাপগুলো কোনো কনফিগারেশন ছাড়াই সীমিত সময়ের জন্য সিস্টেম অ্যাম্বিয়েন্ট মোডে দৃশ্যমান থাকে। আপনার অ্যাপের targetSdkVersion
যদি 36-এর কম হয়, অথবা যদি আপনার অ্যাপটিকে Wear OS 5 বা তার নিচে চালানোর প্রয়োজন হয়, তাহলে আপনার অ্যাপকে সবসময় চালু রাখতে AmbientLifecycleObserver
ক্লাস ব্যবহার করুন।
AmbientLifecycleObserver ক্লাস ব্যবহার করে অ্যাম্বিয়েন্ট মোড ইভেন্টগুলিতে প্রতিক্রিয়া জানান
অ্যাম্বিয়েন্ট মোড ইভেন্টগুলিতে সরাসরি প্রতিক্রিয়া জানাতে অ্যাপগুলি AmbientLifecycleObserver
ক্লাস ব্যবহার করতে পারে:
- নিম্নলিখিত উদাহরণের মতো
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. } }
- একটি
AmbientLifecycleObserver
তৈরি করুন এবং পর্যবেক্ষক নিবন্ধন করুন। সাধারণত, এটিonCreate()
বা টপ-লেভেল কম্পোজেবলে ব্যবহার করা হবে যদি কম্পোজ ফর Wear OS ব্যবহার করা হয়, যাতে অ্যাক্টিভিটির পুরো জীবনচক্র জুড়ে সর্বদা-চালু আচরণ সক্ষম করা যায়।কোটলিন
private val ambientObserver = AmbientLifecycleObserver(activity, callback) override fun onCreate(savedInstanceState: Bundle) { super.onCreate(savedInstanceState) lifecycle.addObserver(observer) // ... }
-
removeObserver()
কল করে পর্যবেক্ষককে সরান, যখন সর্বদা চালু আচরণের আর প্রয়োজন হয় না। উদাহরণস্বরূপ, আপনি এই পদ্ধতিটিকে আপনার কার্যকলাপেরonDestroy()
পদ্ধতিতে কল করতে পারেন।
TimeText উইজেট ব্যবহার করে সময়ের পাঠ্য আপডেট করুন
Wear OS 6 থেকে শুরু করে, TimeText
উইজেট অ্যাম্বিয়েন্ট-মোড সচেতন। অ্যাম্বিয়েন্ট মোড চলাকালীন আপনার অ্যাপের যদি প্রতি মিনিটে একটি টাইম টেক্সট আপডেট করতে হয়, তাহলে আপনি AmbientLifecycleObserver
ব্যবহার না করেই TimeText
উইজেট ব্যবহার করতে পারেন।
সর্বদা চালু থাকা অ্যাপগুলি ব্যাকগ্রাউন্ডে যেতে পারে
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
এর পদ্ধতিগুলিকে ওভাররাইড করে এই আচরণটি পরিবর্তন করতে পারেন।
শক্তি সংরক্ষণে সাহায্য করার জন্য, নিম্নলিখিতগুলি করুন:
- কম পিক্সেল আলোকিত করুন। পরিবেষ্টিত মোডে শুধুমাত্র সমালোচনামূলক তথ্য দেখানোর কথা বিবেচনা করুন এবং ব্যবহারকারী যখন ইন্টারেক্টিভ মোডে প্রবেশ করে তখন আরও বিশদ প্রদান করুন।
- স্ক্রীনের কমপক্ষে 85% কালো রাখুন, ফিলগুলি সরান এবং বোতাম এবং বড় আইকনগুলির জন্য রূপরেখা ব্যবহার করুন।
- বহিরাগত তথ্য প্রদর্শন এড়িয়ে চলুন, যেমন অ-কার্যকর ব্র্যান্ডিং এবং পটভূমি ছবি।
- সক্রিয় এবং সর্বদা চালু মোড জুড়ে উপাদানগুলিকে একই অবস্থানে রাখুন এবং সর্বদা সময় দেখান।
- কম ঘন ঘন আপডেটের জন্য যেকোনো বিষয়বস্তু সামঞ্জস্য করুন। উদাহরণস্বরূপ, নিকটতম সেকেন্ডের পরিবর্তে নিকটতম মিনিটে টাইমার দেখান।
- দূরত্ব বা সময়ের মতো ঘন ঘন আপডেট হওয়া আলফানিউমেরিক সামগ্রীর জন্য স্থানধারক UI সরান বা দেখান।
- অগ্রগতি সূচকগুলি সরান যা ঘন ঘন আপডেট হয়, যেমন কাউন্টডাউন রিং এবং মিডিয়া সেশনের জন্য।
- সর্বদা মোডে প্রবেশ করার সময়, ব্যবহারকারী যদি পূর্বে আপনার অ্যাপের একটি কনফিগারেশন বা সেটিংস স্ক্রিনে থাকে, তবে পরিবর্তে আপনার অ্যাপে আরও প্রাসঙ্গিক স্ক্রীন দেখানোর কথা বিবেচনা করুন।
-
AmbientDetails
অবজেক্টেonEnterAmbient()
এ পাস করা হয়েছে:- যদি
deviceHasLowBitAmbient
সেট করা থাকে, যেখানে সম্ভব অ্যান্টি-আলিয়াসিং অক্ষম করুন। -
burnInProtectionRequired
সেট করা থাকলে, পর্যায়ক্রমে ভিজ্যুয়ালাইজেশনটি স্থানান্তর করুন এবং কঠিন সাদা এলাকাগুলি এড়িয়ে চলুন।
- যদি
- অ্যাম্বিয়েন্ট মোড চলাকালীন একটানা অ্যানিমেশন চালানো এড়িয়ে চলুন। Wear OS 5.1 থেকে শুরু করে, অ্যানিমেটরগুলি পরিবেষ্টিত মোডে চলা বন্ধ হতে পারে।
নিরবচ্ছিন্ন প্রদর্শনের জন্য চেকলিস্ট
এমন পরিস্থিতি হতে পারে যেখানে ডিভাইসটি বিভিন্ন অবস্থার মধ্য দিয়ে চলে যাওয়ার সাথে সাথে আপনি ডিসপ্লের উপর সর্বাধিক নিয়ন্ত্রণ চান, উদাহরণস্বরূপ যখন একটি ওয়ার্কআউট অ্যাপ ওয়ার্কআউটের সময় ডিসপ্লেতে উপস্থিত ওয়াচফেস এড়াতে চায়। এই ক্ষেত্রে, নিম্নলিখিতগুলি করুন:
- AmbientLifecycleObserver.AmbientLifecycleCallback ইন্টারফেস প্রয়োগ করুন।
- যখন ডিভাইসটি সিস্টেম অ্যাম্বিয়েন্ট মোডে থাকে তখন ব্যবহারের জন্য একটি নতুন কম-পাওয়ার লেআউট তৈরি করুন৷
- ওয়ার্কআউটের সময়কালের জন্য, একটি চলমান কার্যকলাপ বাস্তবায়ন করুন।
এটি কীভাবে অর্জন করা যায় তার একটি উদাহরণের জন্য, GitHub-এ রচনা-ভিত্তিক অনুশীলনের নমুনাটি দেখুন, যা Horologist লাইব্রেরি থেকে AmbientAware
কম্পোজযোগ্য ব্যবহার করে।