Android獲得本應用本次開機後的流量

	/**
	 * 獲得本次開機後使用的流量
	 */
    public void getData() {
        //PackageManager 包管理類
        PackageManager packageManager = context.getPackageManager();
        int PackageUid = 0;
        BigDecimal numRx = new BigDecimal("0");
        BigDecimal numTx = new BigDecimal("0");
        
        /**
         * 循環抓緊所有應用的包名
         * 和當前應用的包名進行匹配操作
         * 把獲取到的UID保存到一個臨時變量
         */
        for(ApplicationInfo info : packageManager.getInstalledApplications(0)){
            int uid = info.uid;
            String packageName = info.packageName;
            if(packageName.equals(PACKAGENAME)){
                PackageUid = uid;
            }
        }

        //TrafficStats類根據應用的UID獲取到流量的相關數據
        long rx = TrafficStats.getUidRxBytes(PackageUid);//總接收量
        long tx = TrafficStats.getUidTxBytes(PackageUid);//總發送量
        
        LogManager.show(TAG, "本應用本次開機總接收量:"+rx, 1);
        LogManager.show(TAG, "本應用本次開機總發送量:"+tx, 1);
        if(rx>0){
        	numRx = byteToM(rx);
        }
        if(tx>0){
        	numTx = byteToM(tx);
        }
        
        LogManager.show(TAG, "轉換為(M為單位)後的總接收量:"+numRx.floatValue(), 1);
        LogManager.show(TAG, "轉換為(M為單位)後的總發送量:"+numTx.floatValue(), 1);
        
    }
    /**
     * 字節轉換為M
     */
    private BigDecimal byteToM(long value){
    	BigDecimal result = new BigDecimal(Long.toString(value));
    	result = result.pide(new BigDecimal("1024.0")).pide(new BigDecimal("1024.0"));
    	return result;
    }

 

發佈留言