اطلاعات مربوط به مصرف باتری از آمار مصرف باتری و مقادیر پروفایل توان استخراج میشود.
آمار مصرف باتری
این چارچوب به طور خودکار آمار مصرف باتری را با ردیابی مدت زمانی که اجزای دستگاه در حالتهای مختلف میگذرانند، تعیین میکند. با تغییر حالت اجزا (چیپست Wi-Fi، رادیو تلفن همراه، بلوتوث، GPS، صفحه نمایش، CPU) (خاموش/روشن، بیکار/پرقدرت، روشنایی کم/زیاد و غیره)، سرویس کنترل به سرویس BatteryStats چارچوب گزارش میدهد. BatteryStats اطلاعات را به مرور زمان جمعآوری کرده و آن را برای استفاده در هنگام راهاندازی مجدد ذخیره میکند. این سرویس جریان مصرفی باتری را مستقیماً ردیابی نمیکند، بلکه در عوض اطلاعات زمانبندی را جمعآوری میکند که میتواند برای تخمین مصرف باتری توسط اجزای مختلف استفاده شود.
این چارچوب با استفاده از روشهای زیر آمار را جمعآوری میکند:
- سرویسهایی که از تغییرات کامپوننت آگاه هستند، تغییرات وضعیت را به سرویس BatteryStats ارسال میکنند .
- کشیدن (Pull ). برای اجزایی مانند میزان استفاده از CPU توسط برنامهها، این چارچوب به طور خودکار دادهها را در نقاط انتقال (مانند شروع یا توقف یک فعالیت) برای گرفتن یک عکس فوری (snapshot) میکشد.
مصرف منابع به برنامهای که از آن منبع استفاده میکند، بستگی دارد. وقتی چندین برنامه به طور همزمان از یک منبع استفاده میکنند (مانند wakelockهایی که از تعلیق سیستم جلوگیری میکنند)، چارچوب، مصرف را بین آن برنامهها پخش میکند، هرچند نه لزوماً به طور مساوی.
برای جلوگیری از از دست دادن آمار استفاده برای یک رویداد خاموش شدن، که ممکن است نشاندهنده مشکلات مصرف باتری باشد (یعنی خاموش شدن به دلیل رسیدن ظرفیت باقیمانده باتری به صفر رخ میدهد)، این چارچوب تقریباً هر 30 دقیقه آمار را چشمک میزند.
آمار مصرف باتری کاملاً توسط چارچوب مدیریت میشود و نیازی به اصلاحات OEM ندارد.
مقادیر پروفیل توان
احتیاط: تولیدکنندگان دستگاه باید یک پروفایل توان قطعه ارائه دهند که مقدار مصرف فعلی قطعه و میزان تقریبی تخلیه باتری ناشی از قطعه در طول زمان را تعریف کند. این پروفایل در platform/frameworks/base/core/res/res/xml/power_profile.xml تعریف شده است. برای راهنمایی در مورد این تنظیمات، به Power Values مراجعه کنید.
در یک پروفایل توان، مصرف توان بر حسب میلیآمپر (mA) جریان مصرفی در ولتاژ نامی مشخص میشود و میتواند مقدار کسری باشد که بر حسب میکروآمپر (uA) مشخص میشود. این مقدار باید میلیآمپر مصرف شده در باتری باشد و نه مقداری که برای یک ریل برق که با جریان مصرفی از باتری مطابقت ندارد، قابل استفاده باشد.
برای مثال، یک پروفایل توان نمایشگر، میلیآمپر جریان مورد نیاز برای روشن نگه داشتن نمایشگر در حداقل روشنایی و حداکثر روشنایی را مشخص میکند. برای تعیین هزینه توان (یعنی باتری تخلیه شده توسط قطعه نمایشگر) برای روشن نگه داشتن نمایشگر، این چارچوب زمان صرف شده در هر سطح روشنایی را ردیابی میکند، سپس آن فواصل زمانی را در هزینه روشنایی نمایشگر درونیابی شده ضرب میکند.
این چارچوب همچنین زمان CPU برای هر برنامه را در میلیآمپر مورد نیاز برای اجرای CPU با سرعتی خاص ضرب میکند. این محاسبه، رتبهبندی مقایسهای از میزان مصرف باتری یک برنامه با اجرای کد CPU را تعیین میکند (زمان اجرای برنامه در پسزمینه و کل زمان شامل فعالیت پسزمینه به طور جداگانه گزارش میشوند).