سازندگان دستگاه باید یک نمایه قدرت جزء در /frameworks/base/core/res/res/xml/power_profile.xml
ارائه کنند.
برای تعیین مقادیر پروفیلهای قدرت، از سختافزاری استفاده کنید که توان مصرفی دستگاه را اندازهگیری میکند و عملیات مختلفی را انجام میدهد که برای آن اطلاعات مورد نیاز است. مصرف توان را در طول آن عملیات اندازه گیری کنید و مقادیر را محاسبه کنید (در صورت لزوم، تفاوت ها را از سایر مصارف توان پایه استخراج کنید).
از آنجایی که هدف پروفیل قدرت تخمین تخلیه مناسب باتری است، مقادیر پروفیل توان بر حسب جریان (آمپر) داده می شود. فریم ورک اندروید جریان را در زمانی که زیرسیستم فعال بوده ضرب می کند و مقدار میلی آمپر ساعت را محاسبه می کند که سپس برای تخمین میزان تخلیه باتری توسط برنامه یا زیرسیستم استفاده می شود.
دستگاههای دارای بلوتوث، مودم، و کنترلکنندههای Wi-Fi دارای Android نسخه ۷.۰ و بالاتر میتوانند مقادیر انرژی اضافی را که از دادههای چیپست به دست میآیند ارائه دهند.
دستگاه هایی با CPU های ناهمگن
مشخصات قدرت برای دستگاههایی با هستههای CPU با معماری ناهمگن باید شامل فیلدهای اضافی زیر باشد:
- تعداد کل CPUها برای هر خوشه (بیان شده در cpu.clusters.cores).
- سرعت های CPU که توسط هر خوشه پشتیبانی می شود.
- مصرف انرژی CPU فعال برای هر خوشه.
برای تمایز بین مصرف انرژی فعال CPU و سرعت پشتیبانی شده CPU برای خوشه ها، شماره خوشه را به نام آرایه اضافه کنید. اعداد خوشه به ترتیب هسته های CPU در درخت دستگاه هسته اختصاص داده می شوند. به عنوان مثال، در یک معماری ناهمگن که دارای دو (2) خوشه با چهار (4) هسته است:
- cluster0 از cpu0-3 تشکیل شده است
- cluster1 از cpu4-7 تشکیل شده است
فریم ورک اندروید از این اعداد هسته CPU هنگام خواندن آمار از فایلهای sysfs
در: /sys/devices/system/cpu/cpu<number>/cpufreq/stats
استفاده میکند.
نمونه ای از CPU های خوشه ای و سرعت:
<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 مراجعه کنید.
نام | توضیحات | ارزش نمونه | یادداشت ها |
---|---|---|---|
محیط.روشن | وقتی صفحه نمایش به جای خاموش بودن در حالت Doze/Ambient/Always-On باشد، برق اضافی استفاده می شود. | حدود 100 میلی آمپر | - |
صفحه نمایش.روشن | وقتی صفحه نمایش با حداقل روشنایی روشن است، برق اضافی استفاده می شود. | 200 میلی آمپر | شامل کنترلر لمسی و نور پس زمینه صفحه نمایش. در روشنایی 0، نه حداقل اندروید که 10 یا 20 درصد است. |
صفحه نمایش.کامل | وقتی صفحه نمایش در حداکثر روشنایی است، در مقایسه با صفحه نمایش با روشنایی حداقل، انرژی اضافی استفاده می شود. | 100 mA-300 mA | کسری از این مقدار (بر اساس روشنایی صفحه نمایش) به مقدار screen.on اضافه می شود تا میزان مصرف برق صفحه را محاسبه کند. |
wifi.on | وقتی Wi-Fi روشن است اما دریافت، ارسال یا اسکن نمی شود، برق اضافی استفاده می شود. | 2 میلی آمپر | - |
wifi.active | برق اضافی که هنگام ارسال یا دریافت از طریق Wi-Fi استفاده می شود. | 31 میلی آمپر | - |
wifi.scan | وقتی Wi-Fi در حال اسکن نقاط دسترسی است، برق اضافی استفاده میشود. | 100 میلی آمپر | - |
صوتی | برق اضافی برای رمزگشایی/رمزگذاری صدا از طریق DSP استفاده میشود. | حدود 10 میلی آمپر | برای صدای DSP استفاده می شود. |
ویدئو | انرژی اضافی برای رمزگشایی ویدیو از طریق DSP استفاده می شود. | حدود 50 میلی آمپر | برای ویدئوهای DSP استفاده می شود. |
دوربین.میانگین | میانگین مصرف انرژی توسط زیرسیستم دوربین برای یک برنامه معمولی دوربین. | 600 میلی آمپر | به عنوان یک تخمین تقریبی برای برنامهای در نظر گرفته شده است که پیشنمایش را اجرا میکند و تقریباً 10 عکس با وضوح کامل در دقیقه میگیرد. |
دوربین.چراغ قوه | میانگین توان مصرفی ماژول فلاش دوربین در هنگام روشن بودن. | 200 میلی آمپر | - |
gps.signalqualitybased | قدرت اضافی مورد استفاده توسط GPS بر اساس قدرت سیگنال. این یک ورودی چند مقدار است، یک در هر قدرت سیگنال، از ضعیف ترین به قوی ترین. | 30 میلی آمپر، 10 میلی آمپر | - |
gps.on | وقتی GPS در حال دریافت سیگنال است، انرژی اضافی استفاده می شود. | 50 میلی آمپر | - |
رادیو.فعال | انرژی اضافی که در هنگام ارسال/دریافت رادیو سلولی استفاده می شود. | 100 mA-300 mA | - |
رادیو.اسکن | وقتی رادیو سلولی در حال صفحهبندی برج است، برق اضافی استفاده میشود. | 1.2 میلی آمپر | - |
رادیو.روشن | وقتی رادیو سلولی روشن است، برق اضافی استفاده میشود. این یک ورودی چند مقدار است، یک در هر قدرت سیگنال (بدون سیگنال، ضعیف، متوسط، قوی). | 1.2 میلی آمپر | برخی از رادیوها وقتی به دنبال دکل سلولی میگردند و سیگنالی را تشخیص نمیدهند، برق را افزایش میدهند. مقادیر می توانند یکسان باشند یا با افزایش قدرت سیگنال کاهش پیدا کنند. اگر فقط یک مقدار ارائه کنید، برای همه نقاط قوت از یک مقدار استفاده می شود. اگر دو مقدار ارائه کنید، مقدار اول برای بدون سیگنال، مقدار دوم برای تمام نقاط قوت دیگر و غیره استفاده می شود. |
bluetooth.controller.idle | میانگین مصرف جریان (mA) کنترلر بلوتوث در حالت بیکار. | - | این مقادیر تخمین زده نمی شوند، اما از برگه داده کنترلر گرفته شده اند. اگر چندین حالت دریافت یا ارسال وجود داشته باشد، میانگین آن حالت ها گرفته می شود. علاوه بر این، این سیستم اکنون داده ها را برای اسکن های کم انرژی (LE) و بلوتوث جمع آوری می کند. Android نسخه 7.0 و بالاتر دیگر از مقادیر قدرت بلوتوث برای bluetooth.active (که هنگام پخش صدا از طریق بلوتوث A2DP استفاده می شود) و bluetooth.on (مورد استفاده در زمانی که بلوتوث روشن است اما غیرفعال است) استفاده نمی کند. |
bluetooth.controller.rx | میانگین مصرف جریان (mA) کنترلر بلوتوث هنگام دریافت. | - | |
bluetooth.controller.tx | میانگین جریان مصرفی (mA) کنترلر بلوتوث هنگام ارسال. | - | |
بلوتوث.کنترلر.ولتاژ | میانگین ولتاژ کاری (mV) کنترلر بلوتوث. | - | |
مودم.کنترلر.خواب | میانگین مصرف جریان (mA) کنترلر مودم در حالت خواب. | 0 میلی آمپر | این مقادیر تخمین زده نمی شوند، اما از برگه داده کنترلر گرفته شده اند. اگر چندین حالت دریافت وجود داشته باشد، میانگین آن حالت ها گرفته می شود. اگر چندین حالت انتقال وجود داشته باشد، از Android 9، تعیین یک مقدار برای هر وضعیت ارسال پشتیبانی میشود. |
modem.controller.idle | میانگین مصرف جریان (mA) کنترلر مودم در حالت بیکار. | - | |
modem.controller.rx | میانگین کشش جریان (mA) کنترلر مودم هنگام دریافت. | - | |
modem.controller.tx | میانگین کشش جریان (mA) کنترلر مودم هنگام انتقال در سطوح مختلف توان RF. این یک ورودی چند مقدار با یک مقدار در هر سطح توان انتقال است. | 100 میلی آمپر، 200 میلی آمپر، 300 میلی آمپر، 400 میلی آمپر، 500 میلی آمپر | |
مودم.کنترلر.ولتاژ | میانگین ولتاژ کاری (mV) کنترلر مودم. | - | |
wifi.controller.idle | میانگین مصرف جریان (mA) کنترلر Wi-Fi در حالت بیکار. | - | این مقادیر تخمین زده نمی شوند، اما از برگه داده کنترلر گرفته شده اند. اگر چندین حالت دریافت یا ارسال وجود داشته باشد، میانگین آن حالت ها گرفته می شود. |
wifi.controller.rx | میانگین مصرف جریان (mA) کنترلر Wi-Fi هنگام دریافت. | - | |
wifi.controller.tx | میانگین مصرف جریان (mA) کنترلر Wi-Fi هنگام ارسال. | - | |
wifi.controller.ولتاژ | میانگین ولتاژ کاری (mV) کنترلر Wi-Fi. | - | |
cpu.speeds | این یک ورودی چند ارزشی است که هر سرعت ممکن CPU را بر حسب کیلوهرتز فهرست می کند. | 125000 کیلوهرتز، 250000 کیلوهرتز، 500000 کیلوهرتز، 1000000 کیلوهرتز، 1500000 کیلوهرتز | تعداد و ترتیب ورودی ها باید با ورودی های mA در cpu.active مطابقت داشته باشد. |
cpu.idle | کل توانی که سیستم گرفته می شود زمانی که CPU ها (و SoC) در حالت تعلیق سیستم هستند. | 3 میلی آمپر | - |
cpu.awake | توان اضافی مورد استفاده زمانی که CPU ها در حالت زمان بندی بیکار هستند (حلقه بیکار هسته)؛ سیستم در حالت تعلیق سیستم نیست. | 50 میلی آمپر | پلت فرم شما ممکن است بیش از یک حالت بیکار در حال استفاده با سطوح مختلف مصرف انرژی داشته باشد. یک حالت بیکار نماینده را برای دوره های طولانی تری از زمانبندی بیکار (چند میلی ثانیه) انتخاب کنید. نمودار قدرت روی تجهیزات اندازه گیری خود را بررسی کنید و نمونه هایی را انتخاب کنید که CPU کمترین مصرف خود را دارد، نمونه های بالاتر را در جایی که CPU از حالت آماده به کار خارج شده است دور بیندازید. |
cpu.active | توان اضافی مورد استفاده CPU ها هنگام کار با سرعت های مختلف. | 100 میلی آمپر، 120 میلی آمپر، 140 میلی آمپر، 160 میلی آمپر، 200 میلی آمپر | مقدار قدرتی را نشان میدهد که ریلهای CPU هنگام کار با سرعتهای مختلف استفاده میکنند. حداکثر سرعت هسته را روی هر یک از سرعت های مجاز تنظیم کنید و CPU را با آن سرعت ثابت کنید. تعداد و ترتیب ورودی ها با تعداد و ترتیب ورودی ها در cpu.speeds مطابقت دارد. |
cpu.clusters.cores | تعداد هسته هایی که هر خوشه CPU شامل می شود. | 4، 2 | فقط برای دستگاه هایی با معماری CPU ناهمگن مورد نیاز است. تعداد ورودیها و ترتیب باید با تعداد ورودیهای کلاستر برای cpu.active و cpu.speed مطابقت داشته باشد. ورودی اول نشان دهنده تعداد هسته های CPU در cluster0، ورودی دوم نشان دهنده تعداد هسته های CPU در cluster1 و غیره است. |
باتری.ظرفیت | ظرفیت کل باتری به میلی آمپر ساعت | 3000 میلی آمپر ساعت | - |
اسکن کم انرژی (LE) و بلوتوث
برای دستگاههایی که Android 7.0 دارند، سیستم دادهها را برای اسکنهای کم انرژی (LE) و ترافیک شبکه بلوتوث (مانند RFCOMM و L2CAP) جمعآوری میکند و این فعالیتها را با برنامه شروعکننده مرتبط میکند. اسکنهای بلوتوث با برنامهای که اسکن را آغاز کرده است مرتبط است، اما اسکنهای دستهای اینطور نیستند (و در عوض با برنامه بلوتوث مرتبط هستند). برای اسکن برنامه برای N میلی ثانیه، هزینه اسکن N میلی ثانیه زمان rx و N میلی ثانیه زمان tx است. تمام زمان باقیمانده کنترلر به ترافیک شبکه یا برنامه بلوتوث اختصاص داده می شود.