Android Open Source - rfcx-guardian-android Cpu Usage






From Project

Back to project page rfcx-guardian-android.

License

The source code is released under:

Apache License

If you think the Android project rfcx-guardian-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.rfcx.guardian.device;
//  w w w.j  a  v  a2s.c  o m
import java.io.IOException;
import java.io.RandomAccessFile;

import android.text.TextUtils;
import android.util.Log;

public class CpuUsage {

  private static final String TAG = CpuUsage.class.getSimpleName();
  private static final String NULL_EXC = "Exception thrown, but exception itself is null.";
  
  public static final int REPORTING_SAMPLE_COUNT = 60;
  
  private float cpuUsageNow = 0;
  private float cpuUsageAvg = 0;
  private float[] prevCpuUsage = new float[REPORTING_SAMPLE_COUNT];
  
  private float cpuClockNow = 0;
  private float cpuClockAvg = 0;
  private float[] prevCpuClock = new float[REPORTING_SAMPLE_COUNT];
  private boolean updateClockSpeed = false;
  
  public static final int SAMPLE_LENGTH_MS = 360;
  
  public int getCpuUsageAvg() {
    return Math.round(100*cpuUsageAvg);
  }
  
  public int getCpuClockAvg() {
    return Math.round(cpuClockAvg/1000);
  }
  
  public void updateCpuUsage() {
    updateUsage();
    incrementAvg();
    updateClockSpeed = !updateClockSpeed;
  }
  
  private void incrementAvg() {
    float usageAvgTotal = 0;
    float clockAvgTotal = 0;
    for (int i = 0; i < REPORTING_SAMPLE_COUNT-1; i++) {
      this.prevCpuUsage[i] = this.prevCpuUsage[i+1];
      usageAvgTotal = usageAvgTotal + this.prevCpuUsage[i+1];
      this.prevCpuClock[i] = this.prevCpuClock[i+1];
      clockAvgTotal = clockAvgTotal + this.prevCpuClock[i+1];
    }
    this.prevCpuUsage[REPORTING_SAMPLE_COUNT-1] = this.cpuUsageNow;
    this.cpuUsageAvg = (usageAvgTotal + this.cpuUsageNow) / REPORTING_SAMPLE_COUNT;
    this.prevCpuClock[REPORTING_SAMPLE_COUNT-1] = this.cpuClockNow;
    this.cpuClockAvg = (clockAvgTotal + this.cpuClockNow) / REPORTING_SAMPLE_COUNT;
  }
  
  private void updateUsage() {
    try {
          RandomAccessFile reader = new RandomAccessFile("/proc/stat", "r");
          String load = reader.readLine();
          String[] toks = load.split(" ");
          long idle1 = Long.parseLong(toks[5]);
          long cpu1 = Long.parseLong(toks[2]) + Long.parseLong(toks[3]) + Long.parseLong(toks[4])
                + Long.parseLong(toks[6]) + Long.parseLong(toks[7]) + Long.parseLong(toks[8]);
          try {
              Thread.sleep(SAMPLE_LENGTH_MS);
          } catch (Exception e) { Log.e(TAG,(e!=null) ? (e.getMessage() +" ||| "+ TextUtils.join(" | ", e.getStackTrace())) : NULL_EXC); }
          reader.seek(0);
          load = reader.readLine();
          reader.close();
          toks = load.split(" ");
          long idle2 = Long.parseLong(toks[5]);
          long cpu2 = Long.parseLong(toks[2]) + Long.parseLong(toks[3]) + Long.parseLong(toks[4])
              + Long.parseLong(toks[6]) + Long.parseLong(toks[7]) + Long.parseLong(toks[8]);
          this.cpuUsageNow = (float)(cpu2 - cpu1) / ((cpu2 + idle2) - (cpu1 + idle1));
      } catch (IOException e) {
        Log.e(TAG,(e!=null) ? (e.getMessage() +" ||| "+ TextUtils.join(" | ", e.getStackTrace())) : NULL_EXC);
      }
    
    if (updateClockSpeed) {
      try {
        RandomAccessFile scaling_cur_freq = new RandomAccessFile("/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq", "r");
        this.cpuClockNow = Integer.parseInt(scaling_cur_freq.readLine());
        scaling_cur_freq.close();
      }
      catch (Exception e) {
        Log.e(TAG,(e!=null) ? (e.getMessage() +" ||| "+ TextUtils.join(" | ", e.getStackTrace())) : NULL_EXC);
      }
    }
  }
}




Java Source Code List

net.sourceforge.javaFlacEncoder.ArrayRecycler.java
net.sourceforge.javaFlacEncoder.BlockEncodeRequest.java
net.sourceforge.javaFlacEncoder.BlockThreadManager.java
net.sourceforge.javaFlacEncoder.CRC16.java
net.sourceforge.javaFlacEncoder.CRC8.java
net.sourceforge.javaFlacEncoder.ChannelData.java
net.sourceforge.javaFlacEncoder.EncodedElement_32.java
net.sourceforge.javaFlacEncoder.EncodedElement.java
net.sourceforge.javaFlacEncoder.EncodingConfiguration.java
net.sourceforge.javaFlacEncoder.FLACEncoder.java
net.sourceforge.javaFlacEncoder.FLACFileOutputStream.java
net.sourceforge.javaFlacEncoder.FLACOutputStream.java
net.sourceforge.javaFlacEncoder.FLACStreamController.java
net.sourceforge.javaFlacEncoder.FLACStreamIdentifier.java
net.sourceforge.javaFlacEncoder.FLACStreamOutputStream.java
net.sourceforge.javaFlacEncoder.FLAC_ConsoleFileEncoder.java
net.sourceforge.javaFlacEncoder.FLAC_FileEncoder.java
net.sourceforge.javaFlacEncoder.FLAC_MD5.java
net.sourceforge.javaFlacEncoder.FrameHeader.java
net.sourceforge.javaFlacEncoder.FrameThread.java
net.sourceforge.javaFlacEncoder.Frame.java
net.sourceforge.javaFlacEncoder.LPC.java
net.sourceforge.javaFlacEncoder.MetadataBlockHeader.java
net.sourceforge.javaFlacEncoder.MetadataBlockStreamInfo.java
net.sourceforge.javaFlacEncoder.RiceEncoder.java
net.sourceforge.javaFlacEncoder.StreamConfiguration.java
net.sourceforge.javaFlacEncoder.Subframe_Constant.java
net.sourceforge.javaFlacEncoder.Subframe_Fixed.java
net.sourceforge.javaFlacEncoder.Subframe_LPC.java
net.sourceforge.javaFlacEncoder.Subframe_Verbatim.java
net.sourceforge.javaFlacEncoder.Subframe.java
net.sourceforge.javaFlacEncoder.UTF8Modified.java
org.rfcx.guardian.RfcxGuardianPrefs.java
org.rfcx.guardian.RfcxGuardian.java
org.rfcx.guardian.activity.MainActivity.java
org.rfcx.guardian.activity.PrefsActivity.java
org.rfcx.guardian.api.ApiCore.java
org.rfcx.guardian.audio.AudioCore.java
org.rfcx.guardian.database.AlertDb.java
org.rfcx.guardian.database.AudioDb.java
org.rfcx.guardian.database.DeviceStateDb.java
org.rfcx.guardian.database.SmsDb.java
org.rfcx.guardian.device.AirplaneMode.java
org.rfcx.guardian.device.CpuUsage.java
org.rfcx.guardian.device.DeviceState.java
org.rfcx.guardian.intentservice.ApiCheckInTriggerIntentService.java
org.rfcx.guardian.intentservice.AudioEncodeIntentService.java
org.rfcx.guardian.intentservice.ServiceMonitorIntentService.java
org.rfcx.guardian.receiver.AirplaneModeReceiver.java
org.rfcx.guardian.receiver.BootReceiver.java
org.rfcx.guardian.receiver.ConnectivityReceiver.java
org.rfcx.guardian.receiver.SmsReceiver.java
org.rfcx.guardian.service.ApiCheckInService.java
org.rfcx.guardian.service.AudioCaptureService.java
org.rfcx.guardian.service.CarrierCodeService.java
org.rfcx.guardian.service.DeviceStateService.java
org.rfcx.guardian.telecom.CarrierInteraction.java
org.rfcx.guardian.utility.DateTimeUtils.java
org.rfcx.guardian.utility.DeviceGuid.java
org.rfcx.guardian.utility.ExtAudioRecorderModified.java
org.rfcx.guardian.utility.FileUtils.java
org.rfcx.guardian.utility.HttpGet.java
org.rfcx.guardian.utility.HttpPostMultipart.java
org.rfcx.guardian.utility.TimeOfDay.java