Android Open Source - callmeter Sys Class Net






From Project

Back to project page callmeter.

License

The source code is released under:

GNU General Public License

If you think the Android project callmeter 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

/*
 * Copyright (C) 2010 Cyril Jaquier, Felix Bechstein
 * /*  w  ww. j av  a  2  s .  c om*/
 * This file is part of NetCounter.
 * 
 * This program is free software; you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation; either version 3 of the License, or (at your option) any later
 * version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * this program; If not, see <http://www.gnu.org/licenses/>.
 */

package de.ub0r.de.android.callMeterNG;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;

import android.util.Log;

/**
 * Acces /sys/class/net/ files.
 */
public final class SysClassNet {
  /** Tag for output. */
  private static final String TAG = "CallMeterNG.Sys";

  /** Prefix of all interfaces. */
  private static final String SYS_CLASS_NET = "/sys/class/net/";
  /** carrier postfix. */
  private static final String CARRIER = "/carrier";
  /** Postfix: received bytes. */
  private static final String RX_BYTES = "/statistics/rx_bytes";
  /** Postfix: sent bytes. */
  private static final String TX_BYTES = "/statistics/tx_bytes";

  /**
   * Private constructor. This is an utility class.
   */
  private SysClassNet() {
  }

  /**
   * @param inter
   *            interface
   * @return true if interface is up
   */
  public static boolean isUp(final String inter) {
    StringBuilder sb = new StringBuilder();
    sb.append(SYS_CLASS_NET).append(inter).append(CARRIER);
    return new File(sb.toString()).canRead();
  }

  /**
   * @param inter
   *            interface
   * @return bytes received
   * @throws IOException
   *             IOException
   */
  public static long getRxBytes(final String inter) throws IOException {
    return readLong(inter, RX_BYTES);
  }

  /**
   * @param inter
   *            interface
   * @return bytes sent
   * @throws IOException
   *             IOException
   */
  public static long getTxBytes(final String inter) throws IOException {
    return readLong(inter, TX_BYTES);
  }

  /**
   * @param filename
   *            filename
   * @return RandomAccessFile
   * @throws IOException
   *             IOException
   */
  private static RandomAccessFile getFile(final String filename)
      throws IOException {
    File f = new File(filename);
    return new RandomAccessFile(f, "r");
  }

  /**
   * @param inter
   *            interface
   * @param file
   *            file (rx or tx)
   * @return bytes received or sent
   */
  private static long readLong(final String inter, final String file) {
    StringBuilder sb = new StringBuilder();
    sb.append(SYS_CLASS_NET).append(inter).append(file);
    RandomAccessFile raf = null;
    try {
      raf = getFile(sb.toString());
      return Long.valueOf(raf.readLine());
    } catch (Exception e) {
      return 0;
    } finally {
      if (raf != null) {
        try {
          raf.close();
        } catch (IOException e) {
          Log.e(TAG, null, e);
        }
      }
    }
  }

}




Java Source Code List

de.ub0r.de.android.callMeterNG.About.java
de.ub0r.de.android.callMeterNG.Base64Coder.java
de.ub0r.de.android.callMeterNG.CMBroadcastReceiver.java
de.ub0r.de.android.callMeterNG.CallMeter.java
de.ub0r.de.android.callMeterNG.Device.java
de.ub0r.de.android.callMeterNG.ExcludePeople.java
de.ub0r.de.android.callMeterNG.Preferences.java
de.ub0r.de.android.callMeterNG.ResetData.java
de.ub0r.de.android.callMeterNG.SysClassNet.java
de.ub0r.de.android.callMeterNG.UpdaterData.java
de.ub0r.de.android.callMeterNG.Updater.java
de.ub0r.de.android.callMeterNG.package-info.java