get usage of each cpu core on android
===

I develop a widget on Android which display many useful informations.

I am trying to modify this method to return the percent of use of one cpu core, in order to have the percent of use of each core !!!


On my HTC One X, i have in " /proc/stat ":


    cpu  183549 10728 236016 3754379 7530 41 1013 0 0 0
    cpu0 141962 5990 196956 720894 3333 41 970 0 0 0
    cpu1 23400 2550 23158 980901 2211 0 23 0 0 0
    cpu2 13602 1637 12561 1019126 1216 0 18 0 0 0
    cpu3 4585 551 3341 1033458 770 0 2 0 0 0


I use this method to return the percent of use of all cpu core.

    public float readUsage() {
	    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(800);
	        } catch (Exception e) {}

	        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]);

	        return (float)(cpu2 - cpu1) / ((cpu2 + idle2) - (cpu1 + idle1));

	    } catch (IOException ex) {
	        ex.printStackTrace();
	    }

	    return 0;
	} 



I am trying this to get cpu1'use, but it's don't work:



    public float readUsageCPU0() {
	    try {
	    	
	        RandomAccessFile reader = new RandomAccessFile("/proc/stat", "r");
	        reader.seek(0);
	        String load = reader.readLine();
	        load = reader.readLine();
	        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(500);
	        } catch (Exception e) {}

	        reader.seek(0);
	        load = reader.readLine();
	        load = reader.readLine();
	        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]);

	        return (float)(cpu2 - cpu1) / ((cpu2 + idle2) - (cpu1 + idle1));

	    } catch (IOException ex) {
	        ex.printStackTrace();
	    }

	    return 0;
	}

Please HELP !!!