[Wear OS General] qingtest:
******************************

A late note:

below contents were written in May2015, after some days I paid my attention to other things (now Oct2015).

If you are new to read, and really interested to achieve this, you may also read the following comments, which may contain some new thoughts/ better methods.

Currently my new watch system is not rooted and am not so hungry on battery. But I promise I will be back to tidy through when I got spare time.

Thanks again for reading.

******************************

I got a way to automate the "Theater mode" of my watch.

I would like my wear to auto switch to "Theater mode" at night and exit every morning to save battery. (Just too lazy to remember to switch it when sleeping ). The real problems are ①google doesn't provide an API for developers ②currently no good method to execute native standalone command on watch.

My basic idea is to simulate a double tap on power button using shell. This would not be that difficult like ②..

Seems current apps don't provide such function: like autowear, weartasker,tasker for wear.... none of them provide a function of executing command on watch.

Then I used thread of gusano38 to apply a debugging of wear from phone (pretend as a PC).

Besides, there is another thread of joschi70 on wearshell, I don't know much about bean shell, so no idea whether it can modify wear setting rather than just retrieving info.

Here are the detailed steps:

Your phones should be rooted.

A. One time record

1. debug your watch (turn on in watch developer opition)

2. use "getevent" to find "bcmpmu_on" related event, in my case, event2

3. run command "cat /dev/input/event2 > /sdcard/doubletap", double tap your power button, then use control-C to stop the command

4. There should be a "doubletap” located in you watch /sdcard

use "cat /sdcard/doubletap > /dev/input/event2" to run and test if it is working

B. After you finish step A, you can always use the following code to trigger current Theater mode

allow bluetooth debugging

[COLOR="gray"]su
adb kill-server
export HOME=/sdcard
setprop service.adb.tcp.port 5555
stop adbd
start adbd
adb forward tcp:4444 localabstract:/adb-hub
adb connect localhost:4444
sleep 2
adb -s localhost:4444 shell "input keyevent 26; cat /sdcard/doubletap > /dev/input/event2"
setprop service.adb.tcp.port -1
stop adbd
start adbd
adb kill-server
exit[/COLOR]

Also recorded a short demo video

Note: NOT recommended for daily use, maybe you prefer a simple hardware tap, but here debugging mode may make your wear unsafe (therefore this is permanent notification)

=========================================================

:) It has been some time since my above post, I tried beanshell and finally solved my own problem.

The disadvantage of debug is unsafe, permanent notification, and delay(e.g. my above codes need wait 2s for adb service to be ready). No one if use wearshell.

main code

import java.lang.Runtime;
import java.io.DataOutputStream;
Process su = Runtime.getRuntime().exec("su");
DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());
outputStream.writeBytes("input keyevent 26;cat /sdcard/doubletap>/dev/input/event2;");
outputStream.flush();
outputStream.writeBytes("exit\n");
outputStream.flush();
su.waitFor();

How:

Step B:

1. install wearshell

2. Prepare above main code, you can either

save to a file (e.g. doubletap.bsh) in /sdcard of watch, and call the through source("/sdcard/doubletap.bsh")

or

directly run (sometimes need to combine into one line like intent)

3. use intent to call: de.fun2code.android.wear.shell.EXEC with extra "bsh".

Now you are free to use it daily!

============================================================

:) This is a third update: I grayed the ADB part of first post for not confusing. This time I show how I used it.

Basically I make my watch into Theater mode and turn off Bluetooth of my phone at night. In the morning do the opposite things:

Just skip the run shell step which kills "bluetooh share" app (my phone has some problem with BT).

This is just one part pf my day/night switch tasks e.g. I also have auto airplane mode and interruption mode. By the way, I don't use airplane mode to turn off bluetooth. Simply because I want my watch to connect a little longer. To do that, you can set "airplane radios" so that you decide whether or not to turn off wifi/bluetooth/etc when you go to airplane mode.

This should save battery a little if not too much. Your decision if it helps you. ;)

my one day sample: