ডিভাইস প্রস্তুতকারকদের অবশ্যই
/frameworks/base/core/res/res/xml/power_profile.xml-এ একটি কম্পোনেন্ট পাওয়ার প্রোফাইল প্রদান করতে হবে।
পাওয়ার প্রোফাইলের ভ্যালু নির্ধারণ করতে, এমন হার্ডওয়্যার ব্যবহার করুন যা ডিভাইসের দ্বারা ব্যবহৃত পাওয়ার পরিমাপ করে এবং বিভিন্ন অপারেশন পারফর্ম করে যার জন্য তথ্য প্রয়োজন। সেইসব অপারেশন চলাকালীন বিদ্যুতের ব্যবহার পরিমাপ করুন এবং ভ্যালু গণনা করুন (অন্যান্য বেসলাইন পাওয়ার ব্যবহার থেকে পার্থক্য বের করে উপযুক্ত হিসেবে)।
পাওয়ার প্রোফাইলের লক্ষ্য হল ব্যাটারির চার্জ দ্রুত শেষ হয়ে যাওয়ার বিষয়টি সঠিকভাবে অনুমান করা, পাওয়ার প্রোফাইলের ভ্যালু কারেন্ট (অ্যাম্পিয়ার)-এ দেওয়া হয়। Android ফ্রেমওয়ার্ক সাবসিস্টেম অ্যাক্টিভ থাকার সময় বর্তমানের সাথে গুণ করে এবং mAh ভ্যালু গণনা করে, যা পরে অ্যাপ বা সাবসিস্টেমের দ্বারা ব্যবহৃত ব্যাটারির পরিমাণ অনুমান করতে ব্যবহার করা হয়।
Android 7.0 ও তার পরের যেকোনও ভার্সন থাকা ব্লুটুথ, মডেম ও ওয়াই-ফাই কন্ট্রোলার সহ ডিভাইস, চিপসেট ডেটা থেকে পাওয়া অতিরিক্ত পাওয়ার ভ্যালু প্রদান করতে পারে।
হেটেরোজেনাস সিপিইউ সহ ডিভাইস
হেটেরোজেনাস আর্কিটেকচার CPU কোর সহ ডিভাইসের পাওয়ার প্রোফাইলে নিম্নলিখিত অতিরিক্ত ফিল্ড অবশ্যই থাকতে হবে:
- প্রতিটি ক্লাস্টারের জন্য মোট সিপিইউয়ের সংখ্যা (cpu.clusters.cores হিসেবে দেখানো হয়)।
- প্রতিটি ক্লাস্টারে কাজ করে এমন CPU স্পিড।
- প্রতিটি ক্লাস্টারের জন্য অ্যাক্টিভ CPU পাওয়ার কনজাম্পশন।
ক্লাস্টারের জন্য অ্যাক্টিভ সিপিইউ পাওয়ার কনজাম্পশন ও কাজ করে এমন সিপিইউ স্পিডের মধ্যে পার্থক্য করতে, অ্যারের নামের সাথে ক্লাস্টার নম্বর যোগ করুন। কার্নেল ডিভাইস ট্রি-তে CPU কোরের ক্রম অনুসারে ক্লাস্টার নম্বর অ্যাসাইন করা হয়। যেমন, দুটি (২) ক্লাস্টার সহ একটি হেটেরোজেনিয়াস আর্কিটেকচারে চারটি (৪) কোর আছে:
- cluster0-তে cpu0-3 আছে
- cluster1-এ cpu4-7 আছে
Android ফ্রেমওয়ার্ক, sysfs ফাইল থেকে পরিসংখ্যান
পড়তে এইসব CPU কোর নম্বর ব্যবহার করে, যা এখানে থাকে:
/sys/devices/system/cpu/cpu<number>/cpufreq/stats.
ক্লাস্টার সিপিইউ ও স্পিডের উদাহরণ:
<array name="cpu.active.cluster0"> <value>200</value> <value>300</value> <value>400</value> </array> <array name="cpu.speeds.cluster0"> <value>600000</value> <value>800000</value> <value>1200000</value> </array> <array name="cpu.active.cluster1"> <value>400</value> <value>500</value> <value>600</value> </array> <array name="cpu.speeds.cluster1"> <value>800000</value> <value>1200000</value> <value>1400000</value> </array>
পাওয়ার ভ্যালু
নিম্নলিখিত সারণীতে উপলভ্য পাওয়ার ভ্যালু সেটিংস বর্ণনা করা আছে। AOSP-তে স্যাম্পেল ফাইল দেখতে, power_profile.xml দেখুন।
| নাম | বর্ণনা | উদাহরণ হিসেবে দেওয়া ভ্যালু | নোট |
|---|---|---|---|
| ambient.on | স্ক্রিন বন্ধ থাকার পরিবর্তে ডোজ/অ্যাম্বিয়েন্ট/সবসময় চালু মোডে থাকলে অতিরিক্ত পাওয়ার ব্যবহার করা হয়। | প্রায় ১০০ মিলিঅ্যাম্পিয়ার | - |
| screen.on | স্ক্রিন ন্যূনতম ব্রাইটনেসে চালু থাকলে অতিরিক্ত পাওয়ার ব্যবহার করা হয়। | ২০০ mA | এর মধ্যে টাচ কন্ট্রোলার ও ডিসপ্লে ব্যাকলাইট অন্তর্ভুক্ত। ০ ব্রাইটনেসে, Android-এর ন্যূনতম ব্রাইটনেস নয়, যা সাধারণত ১০ বা ২০% হয়। |
| screen.full | স্ক্রিন সবচেয়ে বেশি উজ্জ্বলতায় থাকলে, সবচেয়ে কম উজ্জ্বলতায় থাকার তুলনায় অতিরিক্ত পাওয়ার খরচ হয়। | ১০০ mA-৩০০ mA | এই ভ্যালুর একটি অংশ (স্ক্রিনের উজ্জ্বলতার উপর ভিত্তি করে) স্ক্রিনের পাওয়ার ব্যবহার হিসেব করতে screen.on ভ্যালুর সাথে যোগ করা হয়। |
| wifi.on | ওয়াই-ফাই চালু থাকলে কিন্তু কোনও ডেটা না পেলে, ট্রান্সমিট বা স্ক্যান করলে অতিরিক্ত পাওয়ার খরচ হয়। | ২ mA | - |
| wifi.active | ওয়াই-ফাইয়ের মাধ্যমে ট্রান্সমিট বা রিসিভ করার সময় অতিরিক্ত পাওয়ার ব্যবহার করা হয়। | ৩১ mA | - |
| wifi.scan | ওয়াই-ফাই অ্যাক্সেস পয়েন্ট স্ক্যান করার সময় অতিরিক্ত পাওয়ার ব্যবহার করা হয়। | ১০০ mA | - |
| অডিও | DSP-এর মাধ্যমে অডিও ডিকোডিং/এনকোডিং করার সময় অতিরিক্ত পাওয়ার ব্যবহার করা হয়। | প্রায় ১০ mA | DSP অডিওর জন্য ব্যবহার করা হয়। |
| ভিডিও | DSP-এর মাধ্যমে ভিডিও ডিকোড করার সময় অতিরিক্ত পাওয়ার ব্যবহার করা হয়। | প্রায় ৫০ mA | DSP ভিডিওর জন্য ব্যবহার করা হয়। |
| camera.avg | সাধারণ ক্যামেরা অ্যাপের জন্য ক্যামেরা সাবসিস্টেমের গড় পাওয়ার ব্যবহার। | ৬০০ mA | কোনও অ্যাপের প্রিভিউ চালানোর এবং প্রতি মিনিটে আনুমানিক ১০টি সম্পূর্ণ রেজোলিউশনের ছবি ক্যাপচার করার জন্য একটি মোটামুটি অনুমান হিসেবে ব্যবহার করা হয়। |
| camera.flashlight | ক্যামেরা ফ্ল্যাশ মডিউল চালু থাকলে, তার দ্বারা ব্যবহৃত গড় পাওয়ার। | ২০০ mA | - |
| gps.signalqualitybased | সিগন্যালের ক্ষমতার উপর নির্ভর করে জিপিএস অতিরিক্ত পাওয়ার ব্যবহার করে। এটি হল একাধিক ভ্যালু এন্ট্রি, প্রতিটি সিগন্যাল ক্ষমতার জন্য একটি করে, সবচেয়ে দুর্বল থেকে সবচেয়ে শক্তিশালী। | ৩০ মিলিঅ্যাম্পিয়ার, ১০ মিলিঅ্যাম্পিয়ার | - |
| gps.on | জিপিএস সিগন্যাল পাওয়ার সময় অতিরিক্ত ব্যাটারি খরচ হয়। | ৫০ মিলিঅ্যাম্পিয়ার | - |
| radio.active | সেলুলার রেডিও ট্রান্সমিট/রিসিভ করার সময় অতিরিক্ত পাওয়ার ব্যবহার করা হয়। | ১০০ mA-৩০০ mA | - |
| radio.scanning | টাওয়ারে পেজ করার সময় অতিরিক্ত পাওয়ার ব্যবহার করা হয়। | ১.২ মিলিঅ্যাম্পিয়ার | - |
| radio.on | মোবাইল রেডিও চালু থাকলে অতিরিক্ত পাওয়ার খরচ হয়। এটি একটি মাল্টি-ভ্যালু এন্ট্রি, সিগন্যাল শক্তি (সিগন্যাল নেই, দুর্বল, মাঝারি, শক্তিশালী) অনুযায়ী একটি করে। | ১.২ mA | কিছু রেডিও সেল টাওয়ার সার্চ করার সময় এবং সিগন্যাল শনাক্ত করতে না পারলে পাওয়ার বুস্ট করে। সিগন্যাল স্ট্রেংথ বাড়ার সাথে সাথে ভ্যালু একই থাকতে পারে বা কমতে পারে। আপনি যদি শুধুমাত্র একটি ভ্যালু প্রদান করেন, তাহলে সবকটি স্ট্রেন্থের জন্য একই ভ্যালু ব্যবহার করা হয়। আপনি দুটি ভ্যালু দিলে, প্রথমটি সিগন্যাল না থাকার জন্য ব্যবহার করা হয়, দ্বিতীয় ভ্যালুটি অন্যান্য সব স্ট্রেন্থের জন্য ব্যবহার করা হয় এবং এইভাবে চলতে থাকে। |
| bluetooth.controller.idle | অ্যাক্টিভ না থাকলে ব্লুটুথ কন্ট্রোলারের গড় কারেন্ট ড্র (mA)। | - | এইসব মান অনুমান করা হয় না, বরং কন্ট্রোলারের
ডেটা শিট থেকে নেওয়া হয়। একাধিক রিসিভ বা ট্রান্সমিট স্টেট থাকলে, সেইসব স্টেটের গড়
মান নেওয়া হয়। এছাড়াও, সিস্টেম এখন
লো এনার্জি (LE) এবং ব্লুটুথ স্ক্যান-এর জন্য ডেটা সংগ্রহ করে। Android 7.0 এবং তার পরবর্তী ভার্সনগুলি bluetooth.active (ব্লুটুথ A2DP-এর মাধ্যমে অডিও চালানোর সময় ব্যবহৃত হয়) এবং bluetooth.on (ব্লুটুথ চালু থাকলেও নিষ্ক্রিয় থাকলে ব্যবহৃত হয়)-এর জন্য ব্লুটুথ পাওয়ার ভ্যালু আর ব্যবহার করে না। |
| bluetooth.controller.rx | রিসিভ করার সময় ব্লুটুথ কন্ট্রোলারের গড় কারেন্ট ড্র (mA)। | - | |
| bluetooth.controller.tx | ট্রান্সমিট করার সময় ব্লুটুথ কন্ট্রোলারের গড় কারেন্ট ড্র (mA)। | - | |
| bluetooth.controller.voltage | ব্লুটুথ কন্ট্রোলারের গড় অপারেটিং ভোল্টেজ (mV)। | - | |
| modem.controller.sleep | স্লিপ মোডে থাকাকালীন মডেম কন্ট্রোলারের গড় কারেন্ট ড্র (mA)। | ০ mA | এইসব মান অনুমান করা হয় না, কন্ট্রোলারের ডেটা শিট থেকে নেওয়া হয়। একাধিক রিসিভিং স্টেট থাকলে, সেইসব স্টেটের গড় নেওয়া হয়। একাধিক ট্রান্সমিট স্টেট থাকলে, Android 9 থেকে শুরু করে প্রতিটি ট্রান্সমিট স্টেটের জন্য ভ্যালু নির্দিষ্ট করা যায়। |
| modem.controller.idle | মডেম কন্ট্রোলার যখন অলস থাকে তখন তার গড় কারেন্ট ড্র (mA)। | - | |
| modem.controller.rx | মডেম কন্ট্রোলার রিসিভ করার সময় সেটির গড় কারেন্ট ড্র (mA)। | - | |
| modem.controller.tx | বিভিন্ন RF পাওয়ার লেভেলে ট্রান্সমিট করার সময় মডেম কন্ট্রোলারের গড় কারেন্ট ড্র (mA)। এটি হল একটি মাল্টি-ভ্যালু এন্ট্রি, যেখানে প্রতিটি ট্রান্সমিট পাওয়ার লেভেলের জন্য একটি করে ভ্যালু থাকে। | ১০০ মিলিঅ্যাম্পিয়ার, ২০০ মিলিঅ্যাম্পিয়ার, ৩০০ মিলিঅ্যাম্পিয়ার, ৪০০ মিলিঅ্যাম্পিয়ার, ৫০০ মিলিঅ্যাম্পিয়ার | |
| modem.controller.voltage | মডেম কন্ট্রোলারের গড় অপারেটিং ভোল্টেজ (mV)। | - | |
| wifi.controller.idle | ওয়াই-ফাই কন্ট্রোলার যখন অলস থাকে তখন সেটির গড় কারেন্ট ড্র (mA)। | - | এইসব মান অনুমান করা হয় না, বরং কন্ট্রোলারের ডেটা শিট থেকে নেওয়া হয়। একাধিক রিসিভ বা ট্রান্সমিট স্টেট থাকলে, সেইসব স্টেটের গড় নেওয়া হয়। |
| wifi.controller.rx | রিসিভ করার সময় ওয়াই-ফাই কন্ট্রোলারের গড় কারেন্ট ড্র (mA)। | - | |
| wifi.controller.tx | ট্রান্সমিট করার সময় ওয়াই-ফাই কন্ট্রোলারের গড় কারেন্ট ড্র (mA)। | - | |
| wifi.controller.voltage | ওয়াই-ফাই কন্ট্রোলারের গড় অপারেটিং ভোল্টেজ (mV)। | - | |
| cpu.speeds | এটি একটি মাল্টি-ভ্যালু এন্ট্রি যা KHz-এ প্রতিটি সম্ভাব্য CPU স্পিড তালিকাভুক্ত করে। | ১২৫০০০ KHz, ২৫০০০০ KHz, ৫০০০০০ KHz, ১০০০০০০ KHz, ১৫০০০০০ KHz | এন্ট্রির সংখ্যা ও ক্রম অবশ্যই cpu.active-এ mA এন্ট্রির সাথে মিলতে হবে। |
| cpu.idle | CPU (এবং SoC) সিস্টেম সাসপেন্ড স্টেটে থাকলে সিস্টেমের দ্বারা মোট বিদ্যুৎ খরচ। | ৩ মিলিঅ্যাম্পিয়ার | - |
| cpu.awake | CPU শিডিউল করা আইডল অবস্থায় থাকলে অতিরিক্ত পাওয়ার ব্যবহার করা হয় (কার্নেল আইডল লুপ); সিস্টেম সাসপেন্ড অবস্থায় থাকে না। | ৫০ mA | আপনার প্ল্যাটফর্মে একাধিক আইডল স্টেট থাকতে পারে যেগুলি আলাদা আলাদা পাওয়ার কনজাম্পশন লেভেল ব্যবহার করে; শিডিউলার আইডল থাকার (কয়েক মিলি সেকেন্ড) দীর্ঘ সময়ের জন্য একটি প্রতিনিধিত্বমূলক আইডল স্টেট বেছে নিন। আপনার পরিমাপের যন্ত্রে পাওয়ার গ্রাফ পরীক্ষা করুন এবং এমন স্যাম্পেল বেছে নিন যেখানে সিপিইউ সবচেয়ে কম বিদ্যুৎ খরচ করে, যেখানে সিপিইউ নিষ্ক্রিয় অবস্থা থেকে বেরিয়ে এসেছে এমন বেশি স্যাম্পেল বাতিল করুন। |
| cpu.active | বিভিন্ন স্পিডে চলার সময় CPU-এর ব্যবহার করা অতিরিক্ত পাওয়ার। | ১০০ mA, ১২০ mA, ১৪০ mA, ১৬০ mA, ২০০ mA | ভ্যালু হল আলাদা আলাদা স্পিডে চলার সময় CPU রেলের ব্যবহার করা পাওয়ারের প্রতিনিধিত্ব করে। অনুমোদিত প্রতিটি স্পিডে কার্নেলে সর্বাধিক স্পিড সেট করুন এবং সেই স্পিডে CPU পেগ করুন। এন্ট্রি সংখ্যা ও ক্রম cpu.speeds-এর এন্ট্রি সংখ্যা ও ক্রমের সাথে সামঞ্জস্যপূর্ণ। |
| cpu.clusters.cores | প্রতিটি CPU ক্লাস্টারে কোরের সংখ্যা। | ৪, ২ | শুধুমাত্র হেটেরোজেনাস CPU আর্কিটেকচার সহ ডিভাইসের জন্য প্রয়োজন। cpu.active ও cpu.speeds-এর জন্য এন্ট্রি সংখ্যা ও ক্রম ক্লাস্টার এন্ট্রির সংখ্যার সাথে মিলতে হবে। প্রথম এন্ট্রিটি cluster0-এ CPU কোরের সংখ্যাকে বোঝায়, দ্বিতীয় এন্ট্রিটি cluster1-এ CPU কোরের সংখ্যাকে বোঝায় এবং এইভাবেই চলতে থাকে। |
| battery.capacity | mAh-এ ব্যাটারির মোট ক্ষমতা। | ৩০০০ mAh | - |
লো এনার্জি (LE) ও ব্লুটুথ স্ক্যান
Android 7.0 ভার্সনে চলা ডিভাইসের জন্য, সিস্টেম লো এনার্জি (LE) স্ক্যান ও ব্লুটুথ নেটওয়ার্ক ট্রাফিক (যেমন, RFCOMM ও L2CAP) সংক্রান্ত ডেটা সংগ্রহ করে এবং এইসব অ্যাক্টিভিটি যে অ্যাপ শুরু করেছে তার সাথে অ্যাসোসিয়েট করে। ব্লুটুথ স্ক্যান যে অ্যাপ শুরু করেছে তার সাথে অ্যাসোসিয়েট করা হয়, কিন্তু ব্যাচ স্ক্যান অ্যাসোসিয়েট করা হয় না (এবং এর পরিবর্তে ব্লুটুথ অ্যাপের সাথে অ্যাসোসিয়েট করা হয়)। N মিলিসেকেন্ডের জন্য স্ক্যান করা কোনও অ্যাপের ক্ষেত্রে, স্ক্যানের খরচ হল rx সময়ের N মিলিসেকেন্ড এবং tx সময়ের N মিলিসেকেন্ড; কন্ট্রোলারের বাকি থাকা সব সময় নেটওয়ার্ক ট্রাফিক বা ব্লুটুথ অ্যাপের জন্য অ্যাসাইন করা হয়।