سازندگان دستگاه باید یک نمایه قدرت جزء در /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 مراجعه کنید.
نام | شرح | مقدار نمونه | یادداشت |
---|---|---|---|
محیط.روشن | وقتی صفحه نمایش به جای خاموش بودن در حالت چرت زدن/محیط/همیشه روشن است، برق اضافی استفاده می شود. | حدود 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.wake | توان اضافی مورد استفاده زمانی که 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 است. تمام زمان باقیمانده کنترلر به ترافیک شبکه یا برنامه بلوتوث اختصاص داده می شود.