android.net.TrafficStats#getUidTxBytes ( )源码实例Demo

下面列出了android.net.TrafficStats#getUidTxBytes ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: Android-Next   文件: TrafficUtils.java
/**
 * 统计TAG流量
 *
 * @param context Context
 * @param tag     traffic tag
 * @return received bytes
 */
public static long stop(Context context, String tag) {
    Long appRxValue = sReceivedBytes.remove(tag);
    Long appTxValue = sSendBytes.remove(tag);
    if (appRxValue == null || appTxValue == null) {
        if (DEBUG) {
            LogUtils.w(TAG, "stop() appRxValue or appTxValue is null.");
        }
        return 0;
    }
    final int uid = getUid(context);
    long appRxValue2 = TrafficStats.getUidRxBytes(uid);
    long appTxValue2 = TrafficStats.getUidTxBytes(uid);
    long rxValue = appRxValue2 - appRxValue;
    long txValue = appTxValue2 - appTxValue;
    if (DEBUG) {
        LogUtils.v(TAG, "stop() rxValue=" + rxValue / 1000 + " txValue=" + txValue / 1000 + " uid=" + uid);
    }
    return rxValue;

}
 
源代码2 项目: PracticeDemo   文件: DeviceInfoActivty.java
@Override
public boolean handleMessage(Message msg) {

    //不准?...

    long mrx = TrafficStats.getMobileRxBytes() / 1024; ////获取通过Mobile连接收到的字节总数,不包含WiFi
    long mtx = TrafficStats.getMobileTxBytes() / 1024; //Mobile发送的总字节数
    long trx = (long) ((TrafficStats.getTotalRxBytes() - mTotalRxBytes) * 1.00f / 1024);
    mTotalRxBytes = TrafficStats.getTotalRxBytes(); //获取总的接受字节数,包含Mobile和WiFi等
    long ttx = TrafficStats.getTotalTxBytes() / 1024; //总的发送字节数,包含Mobile和WiFi等
    long uidrx = TrafficStats.getUidRxBytes(getApplicationInfo().uid) / 1024;//获取某个网络UID的接受字节数,某一个进程的总接收量
    long uidtx = TrafficStats.getUidTxBytes(getApplicationInfo().uid) / 1024;//获取某个网络UID的发送字节数,某一个进程的总发送量
    StringBuilder sb = new StringBuilder();

    sb.append("mrx:" + mrx + "\n\r")
            .append("mtx:" + mtx + "\n\r")
            .append("trx:" + trx + "\n\r")
            .append("ttx:" + ttx + "\n\r")
            .append("uidrx:" + uidrx + "\n\r")
            .append("uidtx:" + uidtx + "\n\r")
    ;
    mTvDeviceInfo.setText(sb.toString());
    mHandler.sendEmptyMessageDelayed(0, 1000);

    return true;
}
 
源代码3 项目: Cangol-appcore   文件: StatsTraffic.java
public void calcAppTraffic(String date, boolean wifi) {
    final List<AppTraffic> list = trafficDbService.getAppTrafficList();
    AppTraffic appTraffic = null;
    for (int i = 0; i < list.size(); i++) {
        appTraffic = list.get(i);
        calcDateTraffic(appTraffic, date, wifi);
        final long rx = TrafficStats.getUidRxBytes(appTraffic.uid);
        final long tx = TrafficStats.getUidTxBytes(appTraffic.uid);
        final long rxDelta = rx - appTraffic.totalRx;
        final long txDelta = tx - appTraffic.totalTx;
        appTraffic.totalRx = rx;
        appTraffic.totalTx = tx;
        if (!wifi) {
            appTraffic.mobileRx = appTraffic.mobileRx + rxDelta;
            appTraffic.mobileTx = appTraffic.mobileTx + txDelta;
        } else {
            appTraffic.wifiRx = appTraffic.wifiRx + rxDelta;
            appTraffic.wifiTx = appTraffic.wifiTx + txDelta;
        }
        trafficDbService.saveAppTraffic(appTraffic);
    }
}
 
源代码4 项目: trafficstats-example   文件: ApplicationItem.java
public static ApplicationItem create(ApplicationInfo _app){
    long _tx = TrafficStats.getUidTxBytes(_app.uid);
    long _rx = TrafficStats.getUidRxBytes(_app.uid);

    if((_tx + _rx) > 0) return new ApplicationItem(_app);
    return null;
}
 
源代码5 项目: Cangol-appcore   文件: StatsTraffic.java
public void resetAppTraffic() {
    final  List<AppTraffic> list = trafficDbService.getAppTrafficList();
    AppTraffic appTraffic = null;
    for (int i = 0; i < list.size(); i++) {
        appTraffic = list.get(i);
        appTraffic.totalRx = TrafficStats.getUidRxBytes(appTraffic.uid);
        appTraffic.totalTx = TrafficStats.getUidTxBytes(appTraffic.uid);
        trafficDbService.saveAppTraffic(appTraffic);
    }
}
 
源代码6 项目: open-rmbt   文件: TrafficServiceByUidImpl.java
@Override
public int start() {
	uid = Process.myUid();
	if ((trafficRxStart = TrafficStats.getUidRxBytes(uid)) == TrafficStats.UNSUPPORTED) {
		return SERVICE_NOT_SUPPORTED;
	}		
	
	running = true;
	trafficTxStart = TrafficStats.getUidTxBytes(uid);
	return SERVICE_START_OK;
}
 
源代码7 项目: StickyDecoration   文件: NetUtil.java
/**
 * 流量差(上传)
 * 和上一次获取的时候相比
 *
 * @return
 */
public double getDiffTxBytes() {
    long currentTx = TrafficStats.getUidTxBytes(mUid);
    long diff;
    diff = currentTx - mLastTotalTxBytes;
    mLastTotalTxBytes = currentTx;
    return diff;
}
 
源代码8 项目: PUMA   文件: LaunchApp.java
private void waitForNetworkUpdate(long idleTimeoutMillis, long globalTimeoutMillis) {
	final long startTimeMillis = SystemClock.uptimeMillis();
	long prevTraffic = TrafficStats.getUidTxBytes(uid) + TrafficStats.getUidRxBytes(uid);
	boolean idleDetected = false;
	long totTraffic = 0;

	while (!idleDetected) {
		final long elapsedTimeMillis = SystemClock.uptimeMillis() - startTimeMillis;
		final long remainingTimeMillis = globalTimeoutMillis - elapsedTimeMillis;
		if (remainingTimeMillis <= 0) {
			Util.err("NO_IDLE_TIMEOUT: " + globalTimeoutMillis);
			break;
		}

		try {
			Thread.sleep(idleTimeoutMillis);
			long currTraffic = TrafficStats.getUidTxBytes(uid) + TrafficStats.getUidRxBytes(uid);
			long delta = currTraffic - prevTraffic;
			if (delta > 0) {
				totTraffic += delta;
				prevTraffic = currTraffic;
			} else { // idle detected
				idleDetected = true;
			}
		} catch (InterruptedException ie) {
			/* ignore */
		}
	}

	if (idleDetected) {
		Util.log("Traffic: " + totTraffic);
	}
}
 
源代码9 项目: Android-Next   文件: TrafficUtils.java
/**
 * 开始流量统计
 *
 * @param context Context
 * @param tag     traffic tag
 * @return received bytes
 */
public static long start(Context context, String tag) {
    final int uid = getUid(context);
    if (uid > 0) {
        long appRxValue = TrafficStats.getUidRxBytes(uid);
        long appTxValue = TrafficStats.getUidTxBytes(uid);
        sReceivedBytes.put(tag, appRxValue);
        sSendBytes.put(tag, appTxValue);
        if (DEBUG) {
            LogUtils.v(TAG, "start() rxValue=" + appRxValue / 1000 + " txValue=" + appTxValue / 1000 + " uid=" + uid);
        }
        return appRxValue;
    }
    return 0;
}
 
@Test
public void getUidTxBytes() throws Exception {
    double val = TrafficSampler.getUidTxBytes(2);
    assertEquals(val,101,0);

    PowerMockito.verifyStatic(times(2));
    TrafficStats.getUidTxBytes(2);
}
 
源代码11 项目: open-rmbt   文件: WebsiteTestServiceImpl.java
/**
 * 
 */
private void setEndTrafficCounter() {
	if (USE_PROCESS_UID_FOR_TRAFFIC_MEASUREMENT) {
		this.trafficRxEnd = TrafficStats.getUidRxBytes(processUid);
		this.trafficTxEnd = TrafficStats.getUidTxBytes(processUid);			
	}
	else {
		this.trafficRxEnd = TrafficStats.getTotalRxBytes();
		this.trafficTxEnd = TrafficStats.getTotalTxBytes();			
	}
}
 
源代码12 项目: QPM   文件: QPMGetFlowInfoExecutor.java
private long[] getFlowByAPI(int uid) {
    long flowUpload = TrafficStats.getUidTxBytes(uid);
    long flowDownload = TrafficStats.getUidRxBytes(uid);
    return new long[]{flowUpload, flowDownload};
}
 
源代码13 项目: PowerFileExplorer   文件: DataTrackerService.java
private void updateAppList() {

		final List<ApplicationInfo> applications = pk.getInstalledApplications(PackageManager.GET_META_DATA);
		AppStats appStats;

		int i = 0;

		long rx = 0;
		long tx = 0;
		totalRxSincePrev = 0;
		totalTxSincePrev = 0;
		long elapsedRealtimeNanos = 0;
		appStatsList.clear();
		for (ApplicationInfo app : applications) {
            try {
                appStats = new AppStats(app.loadLabel(pk), app.packageName, app.uid);

				rx = TrafficStats.getUidRxBytes(app.uid);
				tx = TrafficStats.getUidTxBytes(app.uid);
				elapsedRealtimeNanos = SystemClock.elapsedRealtimeNanos();

				if ((i = prevAppStatsList.indexOf(appStats)) >= 0) {
					appStats = prevAppStatsList.get(i);

					appStats.elapsedTimeSincePrev = elapsedRealtimeNanos - appStats.elapsedTimeSinceStart;
					appStats.elapsedTimeSinceStart = elapsedRealtimeNanos;

					appStats.bytesRxSincePrev = rx - appStats.bytesRxSinceStart;
					appStats.bytesTxSincePrev = tx - appStats.bytesTxSinceStart;

					appStats.idle = appStats.bytesRxSincePrev == 0 && appStats.bytesTxSincePrev == 0;
					if (!appStats.idle) {
						totalRxSincePrev += appStats.bytesRxSincePrev;
						totalTxSincePrev += appStats.bytesTxSincePrev;
//						rxRate += appStats.bytesRxSincePrev * 1000000 / (appStats.elapsedTimeSincePrev / 1000);
//						txRate += appStats.bytesTxSincePrev * 1000000 / (appStats.elapsedTimeSincePrev / 1000);
						appStatsList.add(appStats);
					} 
					appStats.bytesRxSinceStart = rx;
					appStats.bytesTxSinceStart = tx;

				} else {
					if (rx > 0 || tx > 0) {
						appStats.idle = false;
						appStats.bytesRxSinceStart = rx;
						appStats.bytesTxSinceStart = tx;

						appStats.bytesRxSincePrev = rx;
						appStats.bytesTxSincePrev = tx;

						totalRxSincePrev += rx;
						totalTxSincePrev += tx;

						appStatsList.add(appStats);
					} 
					prevAppStatsList.add(appStats);

					appStats.elapsedTimeSincePrev = elapsedRealtimeNanos;
					appStats.elapsedTimeSinceStart = elapsedRealtimeNanos;
				}
            } catch (Resources.NotFoundException e) {
            }
        }

		prevElapsedTime = elapsedRealtimeNanos - startTime;
		rateTotalRxSincePrev = totalRxSincePrev * 1000000 / (prevElapsedTime / 1000);
		rateTotalTxSincePrev = totalTxSincePrev * 1000000 / (prevElapsedTime / 1000);
		if (unitType > 3) {
			rateTotalRxSincePrev = (rateTotalRxSincePrev >> (10 * (unitType - 4)));
			rateTotalTxSincePrev = (rateTotalTxSincePrev >> (10 * (unitType - 4)));
		} else {
			rateTotalRxSincePrev = ((rateTotalRxSincePrev >> (10 * unitType)) << 3);
			rateTotalTxSincePrev = ((rateTotalTxSincePrev >> (10 * unitType)) << 3);
		}
		startTime = elapsedRealtimeNanos;
	}
 
源代码14 项目: PowerFileExplorer   文件: DataTrackerFrag.java
private void updateAppList() {

		final List<ApplicationInfo> applications = pk.getInstalledApplications(PackageManager.GET_META_DATA);
		AppStats appStats;

		int i = 0;

		long rx = 0;
		long tx = 0;
//		rxRate = 0;
//		txRate = 0;
		totalRxSincePrev = 0;
		totalTxSincePrev = 0;
		long elapsedRealtimeNanos = 0;
		final LinkedList<AppStats> tempAppStatsList = new LinkedList<>();
		for (ApplicationInfo app : applications) {
            try {
                //appName = app.loadLabel(pk);
                appStats = new AppStats(app.loadLabel(pk), app.packageName, app.uid);

//				if (networkType == 1) {
//					rx = TrafficStats.getUidRxBytes(app.uid);
//					tx = TrafficStats.getUidTxBytes(app.uid);
//				} else if (networkType == 2) {
//					rx = TrafficStats.getUidRxBytes(app.uid);
//					tx = TrafficStats.getUidTxBytes(app.uid);
//				} else if (networkType == 0) {
				rx = TrafficStats.getUidRxBytes(app.uid);
				tx = TrafficStats.getUidTxBytes(app.uid);
				elapsedRealtimeNanos = SystemClock.elapsedRealtimeNanos();
				//}
				//Log.d(TAG, SystemClock.elapsedRealtimeNanos() + ", " + rx + ", " + tx);
				if ((i = tempOriDataSourceL1.indexOf(appStats)) >= 0) {
					appStats = (AppStats) tempOriDataSourceL1.get(i);

					appStats.elapsedTimeSincePrev = elapsedRealtimeNanos - appStats.elapsedTimeSinceStart;
					appStats.elapsedTimeSinceStart = elapsedRealtimeNanos;

					appStats.bytesRxSincePrev = rx - appStats.bytesRxSinceStart;
					appStats.bytesTxSincePrev = tx - appStats.bytesTxSinceStart;

					appStats.idle = appStats.bytesRxSincePrev == 0 && appStats.bytesTxSincePrev == 0;
					if (!appStats.idle) {
						totalRxSincePrev += appStats.bytesRxSincePrev;
						totalTxSincePrev += appStats.bytesTxSincePrev;
//						rxRate += appStats.bytesRxSincePrev * 1000000 / (appStats.elapsedTimeSincePrev / 1000);
//						txRate += appStats.bytesTxSincePrev * 1000000 / (appStats.elapsedTimeSincePrev / 1000);
						if (statusType != 2) {
							tempAppStatsList.add(appStats);
						}
					} else if (statusType != 1 && (appStats.bytesRxSinceStart > 0 || appStats.bytesTxSinceStart > 0)) {
						tempAppStatsList.add(appStats);
					}
					appStats.bytesRxSinceStart = rx;
					appStats.bytesTxSinceStart = tx;

				} else {
					if (rx > 0 || tx > 0) {
						appStats.idle = false;
						appStats.bytesRxSinceStart = rx;
						appStats.bytesTxSinceStart = tx;

						appStats.bytesRxSincePrev = rx;
						appStats.bytesTxSincePrev = tx;

						totalRxSincePrev += rx;
						totalTxSincePrev += tx;

						if (statusType != 2) {
							tempAppStatsList.add(appStats);
						}
					} 
					tempOriDataSourceL1.add(appStats);

					appStats.elapsedTimeSincePrev = elapsedRealtimeNanos;
					appStats.elapsedTimeSinceStart = elapsedRealtimeNanos;
				}
            } catch (Resources.NotFoundException e) {
            }
        }

		prevElapsedTime = elapsedRealtimeNanos - startTime;
		startTime = elapsedRealtimeNanos;
        Collections.sort(tempAppStatsList, appStatsComparator);
		appStatAdapter.clear();
		appStatAdapter.addAll(tempAppStatsList);

		appStatAdapter.notifyDataSetChanged();
		update_labels();
	}
 
源代码15 项目: Dainty   文件: PreferenceWithRightIcon.java
private void getNetFlow(){
    int uid=getPackageUid();
    if(uid!=-1)
        total_flow=TrafficStats.getUidRxBytes(uid) + TrafficStats.getUidTxBytes(uid);
}
 
源代码16 项目: Mobilyzer   文件: Util.java
public static long getCurrentRxTxBytes(){
  int uid = android.os.Process.myUid();
  return TrafficStats.getUidRxBytes(uid)+TrafficStats.getUidTxBytes(uid);
}
 
/**
 * Try to connect to Clementine
 *
 * @param message The Request Object. Stores the ip to connect to.
 */
@Override
public boolean createConnection(ClementineMessage message) {
    fireOnConnectionStatusChanged(ConnectionStatus.CONNECTING);

    // Reset the connected flag
    mLastKeepAlive = 0;

    // Now try to connect and set the input and output streams
    boolean connected = super.createConnection(message);

    // Check if Clementine dropped the connection.
    // Is possible when we connect from a public ip and clementine rejects it
    if (connected && !mSocket.isClosed()) {
        // Now we are connected

        // We can now reconnect MAX_RECONNECTS times when
        // we get a keep alive timeout
        mLeftReconnects = MAX_RECONNECTS;

        // Set the current time to last keep alive
        setLastKeepAlive(System.currentTimeMillis());

        // Until we get a new connection request from ui,
        // don't request the first data a second time
        mRequestConnect = ClementineMessageFactory
                .buildConnectMessage(message.getIp(), message.getPort(),
                        message.getMessage().getRequestConnect().getAuthCode(),
                        false,
                        message.getMessage().getRequestConnect().getDownloader());

        // Save started transmitted bytes
        int uid = App.getApp().getApplicationInfo().uid;
        mStartTx = TrafficStats.getUidTxBytes(uid);
        mStartRx = TrafficStats.getUidRxBytes(uid);

        mStartTime = new Date().getTime();

        // Create a new thread for reading data from Clementine.
        // This is done blocking, so we receive the data directly instead of
        // waiting for the handler and still be able to send commands directly.
        mIncomingThread = new Thread(new Runnable() {
            @Override
            public void run() {
                while (isConnected() && !mIncomingThread.isInterrupted()) {
                    checkKeepAlive();

                    ClementineMessage m = getProtoc(3000);
                    if (!m.isErrorMessage() || m.getErrorMessage() != ErrorMessage.TIMEOUT) {
                        Message msg = Message.obtain();
                        msg.obj = m;
                        msg.arg1 = PROCESS_PROTOC;
                        mHandler.sendMessage(msg);
                    }
                }
            }
        });
        mIncomingThread.start();

        // Get hostname
        if (mSocket.getInetAddress() != null) {
            App.Clementine.setHostname(mSocket.getInetAddress().getHostName());
        }

        fireOnConnectionStatusChanged(ConnectionStatus.CONNECTED);

    } else {
        sendUiMessage(new ClementineMessage(ErrorMessage.NO_CONNECTION));
        fireOnConnectionStatusChanged(ConnectionStatus.NO_CONNECTION);
    }

    return connected;
}
 
源代码18 项目: cronet   文件: AndroidTrafficStats.java
/**
 * @return Number of bytes transmitted since device boot that were attributed to caller's UID.
 *         Counts packets across all network interfaces, and always increases monotonically
 *         since device boot. Statistics are measured at the network layer, so they include
 *         both TCP and UDP usage.
 */
@CalledByNative
private static long getCurrentUidTxBytes() {
    long bytes = TrafficStats.getUidTxBytes(Process.myUid());
    return bytes != TrafficStats.UNSUPPORTED ? bytes : TrafficStatsError.ERROR_NOT_SUPPORTED;
}
 
源代码19 项目: StickyDecoration   文件: NetUtil.java
/**
 * 本次所消耗的流量(上传)
 *
 * @return
 */
public double getTotalTxBytes() {
    long currentTx = TrafficStats.getUidTxBytes(mUid);
    return currentTx - mBeginTotalTxBytes;
}
 
源代码20 项目: 365browser   文件: AndroidTrafficStats.java
/**
 * @return Number of bytes transmitted since device boot that were attributed to caller's UID.
 *         Counts packets across all network interfaces, and always increases monotonically
 *         since device boot. Statistics are measured at the network layer, so they include
 *         both TCP and UDP usage.
 */
@CalledByNative
private static long getCurrentUidTxBytes() {
    long bytes = TrafficStats.getUidTxBytes(Process.myUid());
    return bytes != TrafficStats.UNSUPPORTED ? bytes : TrafficStatsError.ERROR_NOT_SUPPORTED;
}