diff --git a/README.md b/README.md index 38634b3f..e96c64e9 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ A plugin for Android Studio and Intellij IDEA that speeds up your day to day and The following commands are provided: +* Toggle Display * Uninstall App * Kill App * Start App @@ -61,4 +62,4 @@ License distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file + limitations under the License. diff --git a/src/com/developerphil/adbidea/action/QuickListAction.java b/src/com/developerphil/adbidea/action/QuickListAction.java index 1c4e4b30..766d09c6 100644 --- a/src/com/developerphil/adbidea/action/QuickListAction.java +++ b/src/com/developerphil/adbidea/action/QuickListAction.java @@ -17,6 +17,8 @@ protected void fillActions(@Nullable final Project project, return; } + addAction("com.developerphil.adbidea.action.ToggleDisplayAction", group); + addAction("com.developerphil.adbidea.action.ClearDataAndRestartAction", group); addAction("com.developerphil.adbidea.action.UninstallAction", group); addAction("com.developerphil.adbidea.action.KillAction", group); addAction("com.developerphil.adbidea.action.StartAction", group); diff --git a/src/com/developerphil/adbidea/action/ToggleDisplayAction b/src/com/developerphil/adbidea/action/ToggleDisplayAction new file mode 100644 index 00000000..459a3d49 --- /dev/null +++ b/src/com/developerphil/adbidea/action/ToggleDisplayAction @@ -0,0 +1,12 @@ +package com.developerphil.adbidea.action; + +import com.developerphil.adbidea.adb.AdbFacade; +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.project.Project; + +public class ToggleDisplayAction extends AdbAction { + + public void actionPerformed(AnActionEvent e, Project project) { + AdbFacade.toggleDisplay(project); + } +} diff --git a/src/com/developerphil/adbidea/adb/AdbFacade.java b/src/com/developerphil/adbidea/adb/AdbFacade.java index a4fda4fb..69efd544 100644 --- a/src/com/developerphil/adbidea/adb/AdbFacade.java +++ b/src/com/developerphil/adbidea/adb/AdbFacade.java @@ -46,6 +46,10 @@ public static void clearData(Project project) { public static void clearDataAndRestart(Project project) { executeOnDevice(project, new ClearDataAndRestartCommand()); } + + public static void toggleDisplay(Project project) { + executeOnDevice(project, new ToggleDisplayCommand()); + } private static void executeOnDevice(final Project project, final Command runnable) { final DeviceResult result = getDevice(project); diff --git a/src/com/developerphil/adbidea/adb/command/ToggleDisplayCommand b/src/com/developerphil/adbidea/adb/command/ToggleDisplayCommand new file mode 100644 index 00000000..bbbb5fd8 --- /dev/null +++ b/src/com/developerphil/adbidea/adb/command/ToggleDisplayCommand @@ -0,0 +1,30 @@ +package com.developerphil.adbidea.adb.command; + +import com.android.ddmlib.IDevice; +import com.developerphil.adbidea.adb.command.receiver.GenericReceiver; +import com.intellij.openapi.project.Project; +import org.jetbrains.android.facet.AndroidFacet; + +import java.util.concurrent.TimeUnit; + +import static com.developerphil.adbidea.adb.AdbUtil.isAppInstalled; +import static com.developerphil.adbidea.ui.NotificationHelper.error; +import static com.developerphil.adbidea.ui.NotificationHelper.info; + +public class ToggleDisplayCommand implements Command { + + @Override + public boolean run(Project project, IDevice device, AndroidFacet facet, String packageName) { + try { + device.executeShellCommand("input keyevent 26", new GenericReceiver(), 5L, TimeUnit.MINUTES); + info(String.format("Toggle the display state on %s", device.getName())); + return true; + } + } catch (Exception e1) { + error("Toggle display failed" + e1.getMessage()); + } + + return false; + } + +}