package org.andengine.util.system; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import org.andengine.util.StreamUtils; import org.andengine.util.TextUtils; import org.andengine.util.debug.Debug; /** * (c) Zynga 2011 * * @author Nicolas Gramlich <ngramlich@zynga.com> * @since 21:48:14 - 22.10.2011 */ public class CPUUsage { // =========================================================== // Constants // =========================================================== // =========================================================== // Fields // =========================================================== private long mTotal = 0; private long mIdle = 0; private float mUsage = 0; // =========================================================== // Constructors // =========================================================== public CPUUsage() { } // =========================================================== // Getter & Setter // =========================================================== /** * @return in percent. */ public float getUsage() { return this.mUsage; } // =========================================================== // Methods for/from SuperClass/Interfaces // =========================================================== // =========================================================== // Methods // =========================================================== public void update() { BufferedReader reader = null; try { reader = new BufferedReader(new InputStreamReader(new FileInputStream("/proc/stat")), StreamUtils.IO_BUFFER_SIZE); final String procStatString = reader.readLine(); final String[] parts = TextUtils.SPLITPATTERN_SPACE.split(procStatString); final long user = Long.parseLong(parts[2]); final long nice = Long.parseLong(parts[3]); final long system = Long.parseLong(parts[4]); final long idle = Long.parseLong(parts[5]); final long total = user + nice + system; this.mUsage = 100.0f * (total - this.mTotal) / (total - this.mTotal + idle - this.mIdle); this.mTotal = total; this.mIdle = idle; } catch (final IOException e) { Debug.e(e); } finally { StreamUtils.close(reader); } } // =========================================================== // Inner and Anonymous Classes // =========================================================== }