안드로이드 디바이스의 CPU 코어 개수를 가져오는 코드이다.
이 코드의 출처는 : http://stackoverflow.com/questions/7962155/how-can-you-detect-a-dual-core-cpu-on-an-android-device-from-code
원리를 설명하자면 우선 /sys/devices/system/cpu/ 디렉토리를 찾고 이 내부에 cpu[0-9] 의 이름 규칙을 갖는 디렉토리를 찾는다.
만약 쿼드 코어라면
/sys/devices/system/cpu/cpu0
/sys/devices/system/cpu/cpu1
/sys/devices/system/cpu/cpu2,
/sys/devices/system/cpu/cpu3
형태로 디렉토리가 존재한다.
그럼 그 디렉토리 개수를 확인 함으로써 코어 수도 알 수 있는 것이다.
위의 사항과 다른경우 1을 반환시켜 준다.
테스트 결과 갤럭시 시리즈, 넥서스 시리즈, 옵티머스 시리즈, 등등에서는 모두 동작 하였다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
/*** Gets the number of cores available in this device, across all processors.* Requires: Ability to peruse the filesystem at "/sys/devices/system/cpu"* @return The number of cores, or 1 if failed to get result*/private int getNumCores() { //Private Class to display only CPU devices in the directory listing class CpuFilter implements FileFilter { @Override public boolean accept(File pathname) { //Check if filename is "cpu", followed by a single digit number if(Pattern.matches("cpu[0-9]", pathname.getName())) { return true; } return false; } } try { //Get directory containing CPU info File dir = new File("/sys/devices/system/cpu/"); //Filter to only list the devices we care about File[] files = dir.listFiles(new CpuFilter()); //Return the number of cores (virtual CPU devices) return files.length; } catch(Exception e) { return 1; }} |