Git Product home page Git Product logo

lockit's Introduction

LockIt

Digital Well-being in Android TV for your kids, (wirelessly) managed!

Left: WiLock Remote Control App
Right: LockIt (this app)

Note: The app cannot be run in emulators, since local service discovery/registration is not supported

Phone Remote Locker app (WiLock) is available here

Android-TV + Phone: Application which locks down selected apps for a child, which can only be unlocked from a Parent's device.

Phone (Redevelopment TODO): Application which sets a timer, within which the child is allowed to use a restricted set of Apps

... Why?

With the day-to-day work by parents, it becomes a difficulty to manage their child's device usage. When given a device with the child assuring "I'll play for 5 mins plsplspls", it usually doesn't happen that way, and the child ends up using for hours :laugh:.

Now, coming to Android TVs, popular App Lock solutions require to enter a PIN in the big picture. Let's not underestimate a child's image processing abilities to pick up the PIN.

Features

  • Android TV + Phone: Remotely Lock/Unlock Android TV device. No requirement to enter PIN in the TV.

  • Phone: Decide the time within which child can use restricted apps. Phone Locks once time's over.

Issues / TODO

  • Let's face the truth: Kids are intelligent enough to remove the app (Android TV doesn't have Device Administrator Service, so we're vulnerable to uninstallation)

    • PackageInstaller is blocked now, gotta make it operable (to allow user to uninstall if insisted)
  • Issue when the remote locker device is lost OR the the remote locker app is uninstalled

    • How to get back in the system? Something to think on
  • Authentication

  • [FEATURE] TV App listing in the remote control phone itself. It would remove need of a frontend for TV, we can just package the server, and a minimal UI to provide info and get things started.

  • Manage Disconnection Failures

  • See if LockService advertising forever can be tackled Current implementation works only when device is awake. Still, can look out for some more reduction.
    Well, a TV is always awake ๐Ÿคท...

  • Big TODO: Use Bluetooth/WiFi P2P based communication. Can eliminate the "overkill" requirement of a hosted function. - Suggestions are welcome for this. The issue is that neither of this communication methods can be kicked off in the background, easily.

Issue details:

  • Moved to Google Nearby Connections API

Pairing takes considerable time (5 seconds), is juice consuming, and is unreliable (connectivity time changes randomly)

  • Moved to Android NsdManager (for discovery of service) + TCP Sockets (for Server)

NsdManager's interaction with mdns android daemon works very well (Device Logs and Wireshark Capture Logs say so). But the app isn't informed about any such events at all.

  • Moved to Rx2DNSSD + TCP Sockets (Server)

Interaction with mdnsd works, App's informed about it, Discovery and Connection takes a few ms! Safe to say we've reached the peak.

  • Manage Permissions Not required in current implementation

  • Prevent Multiple instances of LockActivity to open up (this was an issue with FCM, when a burst of messages were sent to the device)

Working

Android TV (Locked Device) + Phone (Key):

Fresh Start:

  1. (Fresh Start) TV and Phone must connect with each other for the first time. Connections to the TV are open until the remote client connects to it.
  2. Connections hereon will be made directly with the UUID known to the device pair

After Fresh Start:

  1. Lock can either be started manually in the TV App OR can be done directly from the phone
  2. Restricted set of apps will be accessible to the child
  3. Parent can unlock the TV device from their phone, with Biometric ID before every Lock/Unlock transaction

Phone (Redevelopment TODO, not present rn):

  1. Upon Locking, selected apps won't open up.
  2. Above two restrictions are applied for a given time limit by the parent
  3. On crossing the time limit, the Phone is Locked (Sent to Lockscreen)

LICENSE

Project uses the MIT License, you can obtain it at LICENSE

lockit's People

Contributors

a7r3 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.