2014-10-07 3 views

답변

4
  • 앱 내부에이 정보를 원하거나 사용자 자신의 용도로만 사용할지 여부는 분명하지 않습니다.

    당신은 ADB와에이 정보를 얻을 수 있습니다 : 앱이 정보를 사용하려면

    adb shell cat /proc/cpuinfo 
    

    adb shell cpuinfo

  • 는, 예를 들어, Map<String,String>을 반환하는 간단한 함수를 작성,

    public static Map<String, String> getCpuInfoMap() { 
        Map<String, String> map = new HashMap<String, String>(); 
        try { 
         Scanner s = new Scanner(new File("/proc/cpuinfo")); 
         while (s.hasNextLine()) { 
          String[] vals = s.nextLine().split(": "); 
          if (vals.length > 1) map.put(vals[0].trim(), vals[1].trim()); 
         } 
        } catch (Exception e) {Log.e("getCpuInfoMap",Log.getStackTraceString(e));} 
        return map; 
    } 
    

    참고로 여러 개의 cpus 정보를 덮어 쓰지는 않습니다. 대부분의 값은 어쨌든 비슷합니다. 또는 수정을 클릭하여 CpuInfoMap 목록을 만듭니다.

    는 시도

    Log.d("getCpuInfoMap test", getCpuInfoMap().toString()); 
    
  • 나는 희망
+0

(3) 나는 내 자신의 응용 프로그램에서이 두 정보를 원하는 제목으로 아래로 스크롤합니다. 그러나 그들 모두는 아닙니다, 미안 해요! 내가 왜 그 두 가지 가치에 대해서만 썼는가. –

+2

그냥 두 값을지도에서 가져와 ... 예 :'getCpuInfoMap(). get ("cpu MHz")' – ashoke

+0

고맙지 만 거기에 "프로세서의 코어 및 ClockSpeed"라는 값을 찾을 수 없습니다. –

0

는 너무 늦게 답변을하지만,이는 내가 특정 CPU 코어에 대한 현재의 주파수 얼마나 : 여기에서

public class MainActivity extends Activity{ 

private static final int INSERTION_POINT = 27; 

private static String getCurFrequencyFilePath(int whichCpuCore){ 
    StringBuilder filePath = new StringBuilder("/sys/devices/system/cpu/cpu/cpufreq/scaling_cur_freq"); 
    filePath.insert(INSERTION_POINT, whichCpuCore); 
    return filePath.toString(); 
} 

public static int getCurrentFrequency(int whichCpuCore){ 

    int curFrequency = -1; 
    String cpuCoreCurFreqFilePath = getCurFrequencyFilePath(whichCpuCore); 

    if(new File(cpuCoreCurFreqFilePath).exists()){ 

     try { 
       BufferedReader br = new BufferedReader(new FileReader(new File(cpuCoreCurFreqFilePath))); 
       String aLine; 
       while ((aLine = br.readLine()) != null) { 

        try{ 
         curFrequency = Integer.parseInt(aLine); 
        } 
        catch(NumberFormatException e){ 

         Log.e(getPackageName(), e.toString()); 
        } 

       } 
       if (br != null) { 
        br.close(); 
       } 
     } 
     catch (IOException e) { 
      Log.e(getPackageName(), e.toString()); 
     } 

    } 

    return curFrequency; 
} 

} 

을 그것의 케이크 조각, 당신은 단순히 방법을 부른다 : - D

int core1CurrentFreq = getCurrentFrequency(1, this); 

는 때때로 코어는이 경우 파일 경로가 존재하지 않으며 -1

참고을 반환됩니다, 오프라인. 반환 값은
MHz의 값이
GHz의 값이 core1CurrentFreq/1E6입니다 core1CurrentFreq/1e3입니다 KHz의에

getCurFrequencyFilePath() 메소드의 일부 explainations가 모든 것을 명확하지 때문이다.

현재 주파수는 일반적으로 파일에 저장되어 scaling_cur_freq

파일 경로는 다음

"/sys/devices/system/cpu/cpu(XX)/cpufreq/scaling_cur_freq" 
(XX) CPU 코어 번호 등 대입

:

"/sys/devices/system/cpu/cpu2/cpufreq/scaling_cur_freq" 

INSERTION_POINT 변수는 (XX)의 인덱스 일 뿐이며, 우리는 CPU 코어에 해당하는 숫자를 놓기를 원합니다.

cpufreq 폴더에있는 다른 파일을 살펴 보시고, 최대 및 최소 주파수, availables 주파수 목록 등과 같은 기타 정보를 얻을 수 있습니다.

클릭이 Link

관련 문제