From the last video, you know that I spend a bit of my time on a train. An excellent time to write an article or two, providing I have the internet to look up facts and ideas. Tethering can be tricky on the train, as reception-less areas are scattered across the route. I find it easy to tell that I’m about to go offline when I’m in a tunnel but the situation is less apparent when the train cruises through the open meadows of North Yorkshire. Android tethering doesn’t have anything to let you know, that you are not going to load that website for the next 5 min.
Time to get this solved with a tethering profile with Tasker. The aim of the project is to let you know when your phone no longer is in range. This will be done in 3 ways:
- Using notification LED (best for when you tether for friends)
- Using a smartphone icon (need smartwatch )
- Using a Join push (best for personal devices -can be replaced with AutoRemote)
You can get more creative with notifications, however, I will use only discrete options as tethering is most likely to be used in the public places. No one likes obnoxious notifications right?
Enable tethering Tasker profile
Instead of checking if tethering is enabled, it’s easier to replace a tile in the status bar with AutoNotification and set up a toggle behavior. If you are not on the Android 7.0 you can use a shortcut or a widget instead.
If you never enabled a tile with AutoNotification – you will see that this is a bit awkward. You will need to create a setup task which will convert a template tile into a tile of our choice. Place an empty tile ie AutoNotification 02 onto the tiles area (click edit to edit the visible tiles).
Create a Tethering tile
Tile Setup A1: AutoNotification Tiles [ Configuration:Tile: 2 Command: hotspottoggle Label: Hotspot Icon: android.resource://net.dinglisch.android.taskerm/hd_aaa_ext_signal State: 1 Require Unlock: false Hide Notifications: true Timeout (Seconds):60 ] A2: Variable Set [ Name:%HotspotVariable To:0 Recurse Variables:Off Do Maths:Off Append:Off ] A3: Variable Set [ Name:%HotspotDialog To:0 Recurse Variables:Off Do Maths:Off Append:Off ][/toggle]
You will only need to run this once to set up the tiles and variables. The tile will use a command hotspottoggle to change the state of tethering and will set it as inactive. It will also collapse the status bar once pressed. You can dress up the tile with a label of your choice and the icon.
Two more variables will be created and set to 0. %HotspotVariable will display the status of the tether (0 = no, 1 = yes) and %HotspotDialog will display a dialog asking us, what device we want to notify(0 = do not show, 1 = show dialog).
Hotspot Tile (86) A1: Variable Add [ Name:%HotspotDialog Value:1 Wrap Around:2 ] A2: AutoNotification Tiles [ Configuration:Tile: 2 Command: hotspottoggle Label: Hotspot Icon: android.resource://net.dinglisch.android.taskerm/hd_aaa_ext_signal State: 999 Require Unlock: false Hide Notifications: true Timeout (Seconds):60 ] A3: WiFi Tether [ Set:Toggle ] A4: Perform Task [ Name:Hotspot Dialog Priority:%priority Parameter 1 (%par1): Parameter 2 (%par2): Return Value Variable: Stop:Off ] If [ %HotspotDialog ~ 1 ] A5: Wait [ MS:0 Seconds:5 Minutes:0 Hours:0 Days:0 ] A6: Variable Add [ Name:%HotspotVariable Value:1 Wrap Around:2 ] A7: Variable Clear [ Name:%HotspotDevice Pattern Matching:Off ] If [ %HotspotVariable ~ 0 ][/toggle]
I want to display a dialog only when the tethering is enabled. The dialog will show some devices I own and will allow me to set the target for the notifications. In each case, I will set my tethering phone to blink the notification LED rapidly each time the reception is poor.
When the tile is pressed, it changes the status to active, %HotspotDialog changes to 1 and it triggers the HotspotDialog task. While we select our device, the Hotspot profiles are armed by setting the variable %HotspotVariable to 1.
When I press on a tile again to end tethering, the HotspotDialog returns to 0 and no longer prompts the dialog to be displayed, and the %HotspotVariable is set to the neutral value 0.
The action Variable add +1 will change the value of our starting variables from 0 to 1 and will wrap it around 2. This means these variables will always take values of 1 or 0. The action placement is relevant as well, as the %HotspotDialog will control when the dialog is displayed. We are running the same task to disable and enable the tethering, but we don’t want the dialog to appear each time we toggle it.
While we at it if the task is performed to disable the tether (%HotspotVariable = 0) we want to clear the variable that stores the name of the device which gets notified by the Hotspot Dialog task.
The wait action is added to prevent the information about poor range from being displayed straight away which may happen when the hotspot setting is toggled.
Simply, toggle the WIFI tether action. Nothing complicated about this step.
A separate task is displayed to show the AutoTools Dialog and action the choice made. This will run, when our dialog controlling variable %HotspotDialog = 1.
When the toggle is pressed, we want to make sure, that the tile toggles the state active/inactive and retains the same command: hotspottoggle. Lastly, make sure it will collapse the status bar.
Hotspot Dialog (93) A1: AutoTools Dialog [ Configuration:Dialog Type: List Title: Enable poor network notification? Icon: /storage/emulated/0/Tasker/Material Icons/ic_wifi.png List Type: 1 Texts: Tablet,Mobile,Computer,Watch,Laptop Text Size: 20 Images: /storage/emulated/0/Tasker/Material Icons/ic_tablet-1.png,/storage/emulated/0/Tasker/Material Icons/ic_cellphone_android-1.png,/storage/emulated/0/Tasker/Material Icons/ic_desktop_mac-1.png,/storage/emulated/0/Tasker/Material Icons/ic_watch-1.png,/storage/emulated/0/Tasker/Material Icons/ic_laptop-1.png Image Width: 50 Dim Background: true Number Of Columns: 3 Top Margin: 16 Bottom Margin: 16 Bottom Buttons Top Margin: 16 Bottom Buttons Bottom Margin: 16 Close On Select: true Separator: , Command Variable: atcommand Cancelable: true Turn Screen On: true Timeout (Seconds):60 ] A2: Variable Set [ Name:%HotspotDevice To:%attext Recurse Variables:Off Do Maths:Off Append:Off ][/toggle]
The AutoTools dialog is used to display available devices. When the device is selected, dialog will close and set the value of the %HotspotDevice to the name of that device. This variable gets cleared each time the tethering is stopped.
Poor reception/No data
Profile: Poor Reception State: Variable Value [ %HotspotVariable ~ 1 ] State: Signal Strength [ From:0 To:1 ] Enter: PoorSignal Exit: Cancel Profile: No Data State: Variable Value [ %HotspotVariable ~ 1 ] State: Mobile Network [ 2G:On 3G:Off 3G - HSPA:Off 4G:Off ] Enter: PoorSignal Exit: Cancel[/toggle]
I have created 2 profiles which will check the signal strength and the internet connection. Each one is controlled by the %HotspotVariable, and only active when the tethering is enabled.
Both profiles will trigger the same task when activated and deactivated. One contains the state context – signal strength and the other the mobile network.
PoorSignal A1: AutoNotification [ Configuration:Use HTML: false Title: Poor reception Icon: android.resource://net.dinglisch.android.taskerm/hl_device_access_network_cell Status Bar Icon: device_access_network_cell Status Bar Text Size: 16 Id: 55 Priority: -1 Persistent: true Is Group Summary: false LED Color: red LED On: 300 LED Off: 30p Skip Picture Cache: false Update Notification: false Only on Phone: true Timeout (Seconds):20 ] A2: Join Send Push [ Configuration:Device: Chrome@Laptop Text: Poor range Title: Poor reception Icon: /storage/emulated/0/Tasker/Material Icons/ic_wifi.png Timeout (Seconds):60 ] If [ %HotspotDevice ~ Laptop ] A3: Join Send Push [ Configuration:Device: Chrome@Home Text: Poor range Icon: /storage/emulated/0/Tasker/Material Icons/ic_wifi.png Timeout (Seconds):60 ] If [ %HotspotDevice ~ Computer ] A4: Join Send Push [ Configuration:Device: Tablet Text: Poor range Icon: /storage/emulated/0/Tasker/Material Icons/ic_wifi.png Timeout (Seconds):60 ] If [ %HotspotDevice ~ Tablet ] A5: AutoWear App [ Configuration:Execute Now: true Trigger Event: true Haptic Feedback: true Name: App AutoWear Elements: Show AutoWear Element Id: poorrange Turn Screen On: true Timeout (Seconds):60 ] If [ %HotspotDevice ~ Watch ][/toggle]
The AutoNotification Notification is created on the phone, but only to enable the LED blink. Choose the other values of the notification to your personal liking, and set fast LED blink (mine is 300ms on/off) in the preferred color. The idea is, to display a discrete information rather than a full invasive alert with a screen wake. The notification is saved as permanent with ID 55.
What follows next, is a Join push for each device type you own. Select a Join push for each device, and use IF condition to match the value of %HotspotDevice variable.
Configure the Join push action to send a notification of your choice. Since they will be dismissed from the target device, no other actions are needed.
Profile: Remove Watch Icon (54) Event: AutoWear Command [ Configuration:Command Filter: closepoorrange Case Insensitive: false Exact: true Regex: false Variable Array: false ] Enter: Close WearIcon (55) A1: AutoWear App [ Configuration:Execute Now: true Trigger Event: true Haptic Feedback: true Name: App AutoWear Elements: Hide AutoWear Element Id: poorrange Turn Screen On: true Timeout (Seconds):60 ][/toggle]
You will notice that I have changed the way the notification works for the smartwatch. None of the above will show up on my watch. The only thing I want to show on my watch is a small icon which can be dismissed on request.
Create an icon using AutoWear Manage Floating Icons *(you have to go to the AW app) test the size and placement on your watch. The icon will draw over any screen, so make sure it contain a command on tap to close it. I used closepoorrange and named the icon poorrange. The size of my icon is in pix 30 and its placed 65% to the right and 20% from the top. Please remember these are in percentages not in pixels.
Once you are happy with the size and location – use AutoWear App action to show the icon and IF condition to link it to the %HotspotDevice variable.
Cancel A1: AutoNotification Cancel [ Configuration:Id: 55 Cancel All: false Timeout (Seconds):0 ] A2: AutoWear App [ Configuration:Execute Now: true Trigger Event: true Haptic Feedback: true Name: App AutoWear Elements: Hide AutoWear Element Id: poorrange Turn Screen On: true Timeout (Seconds):60 ] If [ %HotspotDevice ~ Watch ][/toggle]
To end the LED blink and remove the floating icon from the watch I’m going to use simple AutoNotification cancel action with the id of my notification (55) and perform the AutoWear App action which hides the floating icon.
The smartwatch has an additional profile that will remove the floating icon if the icon is pressed. To do this I use AutoWear Command event ‘closepoorrange’ (exact) then I run a separate task, that contains pretty much the same action as the Cancel task.[box type=”info”] You will need:
Android version: 4.0+ with widget (Used 7.0 for AutoNotification Tiles),
Apps: Material Design Icons (optional)
Plugin: AutoNotification, Join, AutoWear (optional), AutoRemote (optional)
The complete project file is available here:Tethering.prj
Mobile users, long press on the file and ‘save as’, all users please rename the file to .prj.xml
Consider supporting the website – links in the menu above and a side menu.[/box]
Got questions or comments about this write-up? Use one of the social links to comment: