How to change clock frequency in Android?

2020-05-28 18:48发布

问题:

I'm a new to software development on Android.

I want to make an application like SetCPU that can manipulate CPU frequency in Android.

But I couldn't find some related APIs or materials.

I want to know following two things sincerely.

  1. Are there APIs to change the CPU frequency in Android?
  2. If not, are there some APIs in Linux?

回答1:

Some commands in ADB

Set Governor:

adb shell echo "userspace" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Set Frequency in KHz:

adb shell su -c "echo "702000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed"
//min frequency
adb shell su -c "echo "384000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq"  
//MAX frequency
adb shell su -c "echo "384000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq" 

Get current CPU Frequency:

adb shell cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq

Show availables governors:

adb shell su -c "cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors"

Disable service that overwrite cpu online file:

adb shell su -c "stop mpdecision" 

It's necessary to do this before enabling or disabling core. mp decision is restarted if the system is restarted.

Disable core:

adb shell su -c "echo "0" > /sys/devices/system/cpu/cpu3/online"

If that doesn't work:

& chmod 444 /sys/devices/system/cpu/cpu1/online 


回答2:

There is no Java API to change the frequency of an Android device. The only way to do this is to get your hands dirty with the Kernel.



回答3:

Looks like you need to root your device

http://www.pokedev.com/setcpu/