Question: I am making an Android app that needs to have the phone reboot or turn off when a button is clicked. Is this possible? Or will the phone require root access?

Answer: 
You can do that using `android.os.PowerManager`. Function `reboot(String reason)` is available, you need permission:

```
android.permission.REBOOT

```

Official site: 

<http://developer.android.com/reference/android/os/PowerManager.html#reboot(java.lang.String)>

Of course, you are likely to get that permission only if your application is signed with the system signing key:

[How to compile Android Application with system permissions](https://stackoverflow.com/questions/3598662/how-to-compile-android-application-with-system-permissions)
I did this in my app by calling the method below. 

Notes:
1. Make sure the phone is rooted
2. Allow the app in your root manager to automatically grant root permission.

```
    void reboot() {
        if (reboot) {

          try {
              Process proc = Runtime.getRuntime().exec(new String[]{"/system/bin/su", "-c", "reboot"});
              proc.waitFor();
          } catch (Exception ex) {
              Log.e(TAG, "Error ", ex);
          }

        }
  }

```