[Android Apps and Games] spocky12:
Introduction

Projectivy Launcher is a launcher dedicated to Android Tv, offering special features for Xiaomi family projectors/TVs.

With the new major version that extends the use to all Android TV devices, and for better understanding, the original thread has been split :

The original thread will focus on Xiaomi/Fengmi/Wemax projectors, offering a faq, links to custom recoveries, guide for rooting, links to download stock ROMS and OTAs.

This thread will focus on the launcher itself.

Description

It's a multi purpose launcher that can be used without root, but adds interesting features on rooted ones. It can be installed on most Android Tv devices (to provide automatic boot on HDMI input for example). A bunch of functionnalities are dedicated to devices with amlogic/mediatek SOCs and/or Xiaomi devices.

It can be used as a launcher replacement, or as a standalone app if you only need a side feature.

You don't need root to use this app, except for the features maked with [ROOT] below.

Here are the current features :

Global UI :

long press any card/icon to display a contextual menu allowing you to start/uninstall app as well as hide or rearrage it as you like (ie : move or add it to another section)

Input :

Shortcuts to change source to HDMI 1 to 3, AV, as well as opening an onscreen menu to choose the source. These will be useful if you disable the stock launcher, as you will probably lose the stock widget with Tv preview and change source buttons.

Tv Apps :

... : Android Tv dedicated apps will appear here

Mobile Apps :

... : any app not dedicated to Android Tv (whose icon usually doesn't display on Android Tv launchers) will appear here

Display :

Display settings : Add ability to create different display profiles (premium version required for more than 1) that can be applied automatically when changing input source and dynamic range. Most features that could be changed in previous versions (zoom, input lag...) of this app can be added to a display profile and thus automatically available upon boot with no action on your side. The profile editor can also display many calibration screens to help you setup your device as you need. Unless you're using a device based on Android Tv 6, you'll need to have a rooted device. If it's not working for you, you can probably benefit from the calibration patterns it can display (FHD, 4K, Jitter, HDR, DV...)

Zoom : Changes the Zoom in/out factor for video display (external inputs as well as any video player) [ROOT] and also enables access to stock zoom feature if available (to zoom/unzoom full display, not only video, but can't go below 80%)

Force 4k UI rendering [ROOT] : this may cause lags when rendering the UI

Settings :

Projectivy settings:

launcher

Parental control : protect apps with a parental code (totally or during a specific time frame)

Override stock launcher : try to replace the stock launcher even if it hasn't been disabled (which is still the preferred way)

Card size : size of the apps icons

Wallpaper : choose between no wallpaper, user defined one, or random wallpapers from different reddit channels

Use dynamic colors : change main color based on your wallpaper, à la Material You

Show status bar

Unselected lines opacity

Display left headers

Show sections title

Show time

Show app title

Input

Rename HDMI inputs

Disable HDMI inputs so that they're not displayed in the launcher

Prefer internal Tv View : replace the stock HDMI Input app with a custom one. It doesn't support CEC (only system apps can do it), but it might be useful for specific usage

Power control

Startup to : android, specific app or specific Hdmi input

Automatically shutdown when HDMI signal stops (experimental) : trigger a power off when the Hdmi Input app exits automatically (which usually means the input device has been shut down)

Prevent automatic shutdown when idle : some systems automatically shutdown if no user interaction has happened recently, this can prevent this behavior (useful if you start your device with CEC and never touch its remote control

Enable internal idle detection : if use did not touch the remote control for the given time, sned a poweroff or standby command

Device settings : launches the projector/tv/box settings

Additional settings : launches amlogic/mediatek settings app (if available)

Android settings : launches the Android stock settings

Engineering menu : launches the [MiTv/FengOs/Fengmi] engineering menu

Applications :

Remote Control : displays a QR code to my Web Remote Control, working on any device, dedicated to MiTv devices based on Android 6

Freeze stock apps [ROOT] : freezes/hides/disables stock apps/bloatware (for unrooted devices, please check below, in Remarks section, point 3). On MIUI, make sure you install another keyboard (ie "LeanbackIme Keyboard", from the "Install 3rd party apps" menu) as it will disable the stock one. Possibility to specify a package name to disable manually.

(Un)Freeze launchers [ROOT] : (un)freezes/hides stock Xiaomi TvHome, FengOs launcher or Google Leanback launcher. Make sure you have another compatible launcher installed before freezing it (for unrooted devices, please check below)

Install 3rd party apps : lets you choose apps to install. Most will require Aptoide Tv installed. Good news, it's able to download and install it automatically ! If your device is rooted and is on Android 6.01, Google services/apps can be installed too (see more in the Google Apps section) :victory:

Uninstall Google Apps [ROOT] : if you installed Google Apps / services with the feature described above, you can safely uninstall them (but why would you want that ?)

Freeze Google Play [ROOT] : prevents google Play self-update. This is useful on some models, where new Google Play app refuses to install apps due to some incompatibility issue (such as Zodiac)

System :

Accessibility Service : This is a multi-purpose service, that fixes Google Play on Googlized xiaomi devices, binds the stock remote control "Voice recognition" button to Google Assistant (if you installed Google Services), allows your device to automatically start an external input or app on boot, adds a shortcut to open these tools or change picture profile by double pressing the menu button... *** In one word : you want it enabled ***

Custom Props Override [ROOT/MAGISK] : changes some custom props so as to get a more stock Android Tv behavior. This will enable Google services disabled by Xiaomi, allow your "Usb debugging" option to stick across reboots, allow bypassing safetynet... If you install Google Services you need to install them.

About :

ProjecTivy Launcher : displays details about this app

This device : displays many details about this device, and temperature sensors values is available.

This wallpaper : shows details regarding the wallpaper currently displayed

Remarks :

Using any of the above features (even [ROOT] ones) should be safe and shouldn't prevent you from installing stock OTA updates afterwards (no system file is modified). If anything goes wrong, don't hesitate to tell me, but anyways, at worst, factory reset or flashing the full stock ROM will fix any issue, so there isn't any risk of bricking your device.

Except if you have stock launcher or leanback launcher installed (which will force you to use them if installed), if multiple other compatible launchers are installed, a popup will ask your choice at each boot and home button press.

Concerning the (un)freeze apps/launcher, if your device is not rooted, this app currently can't do it automatically, but you can do it manually by connecting a computer to your device with ADB and executing a few command lines :

enable "usb debugging" in your device's "Developer" options (in settings) (to enable "developer options", see here)

Download adb for your OS (check here)

Start command line (terminal)

type adb connect IP_OF_YOUR_DEVICE:5555 to connect through the network

type adb shell to open a shell console

to freeze an app type : pm uninstall -k --user 0 PACKAGE (replace PACKAGE with com.mitv.tvhome for Xiaomi stock launcher, cn.formovie.fengos.desktop for FengOs launcher and com.google.android.leanbacklauncher for Google Leanback launcher)

to unfreeze an app type : cmd package install-existing PACKAGE (replace PACKAGE with the same value as above)

to get a list of manually uninstallable apps, check the rainman.v2.json file on my github

Note: seems that freezing Google TV Launcher on CCwGTV [4K/sabrina or HD/boreal], will stop YouTube login from occurring and will prevent YouTube account switching

Evolution : If you have another device and want this app to support it (meaning using another list of installable/uninstallable apps), don't hesitate to make a PR on my github.

Note on Privacy and Permissions usage

The only data that comes out of the phone is for anonymous usage (firebase analytics) in order to prioritize and improve what's used the most, and crash reporting (firebase crashlytics). Both can be disabled starting from 4.30.

No user data is saved on a private server of shared with any other 3rd party service.

Here are the permissions explicitely requested in Projectivy Launcher along with their usage :

- ACCESS_NETWORK_STATE : get information about current network (ex: statusbar icons, current device IP address)

- INTERNET : seems obvious

- READ_EXTERNAL_STORAGE (max sdk 28) : read a Projectivy config file that could be placed on the device before it's installed (for rooted devices)

- INSTALL_SHORTCUT : manage pinned shortcuts

- RECEIVE_BOOT_COMPLETED : start an app on startup (Projectivy is probably the only Tv launcher supporting this)

- REQUEST_INSTALL_PACKAGES (only on non play store version) : install 3rd party apps (ex: aptoide)

- REQUEST_DELETE_PACKAGES : allow users to delete apps

- READ_TV_LISTINGS : ability to show channels/watch next

- BILLING : to buy premium

A few other permissions are required by libs dependencies (mostly Google libs) :

READ_EPG_DATA/WRITE_EPG_DATA : Google tv channels lib

WAKE_LOCK, ACCESS_WIFI_STATE... : Google Firebase

There is also a Notification Listener service that can access your device notifications to display these notifications and now playing data *if enabled*

Last thing you can see that might freak you out : Projectivy can spy on your device activity : this is because of the Accessibility service (that offers a lot of low level insights, *if enabled*).

It's used :

- to launch apps on boot when manufacturers disabled the BOOT_COMPLETED (hello Xiaomi)

- for parental control

- for remote control button remapping

Premium

Premium version on Google Play will give you :

- ability to choose a custom background image

- unlimited parental control protected apps (only 1 in free version)

- unlimited display profiles (only 1 in free version) ***Only on supported devices (if it doesn't work on the free release, that won't change on premium)***

- the satisfaction of supporting this project

- more to come

As of now, this unfortunately can't be bought outside of Google Play because there doesn't seem to be any easy means of doing without taking too much of my time (managing a dedicated server, database, preventing hacks, managing refunds... none of this could be done until this becomes a full time job).

Known issues

- HDMI 1 and HDMI 3 swapped (FengOS, Vava on AmLogic devices) : on recent firmwares, HDMI1 and HDMI3 inputs are swapped in PL. This is a bug in the OS low level libs that send HDMI1 input id when HDMI3 is requested (and the opposite). Can't be easily detected (thus fixed) on my side unfortunately. Just select HDMI1 when you need HDMI3 and vice-versa.

- long press on volume buttons doesn't work on FengOs : there's a bug on FengOs -> as soon as an accessibility service is enabled (Projectivy Launcher, but also Button Mapper for example), the long press volume buttons doesn't work anymore. Worse : unlike any other button, the accessibility service is not notified that a volume button has been pressed, preventing me from developping a workaround :/ Disabling the accessibility service fixes this behavior (but this disables several Projectivy Launcher features)

- unable to add or remove programs from watch next (as on the stock android tv launcher) : the stock launcher has special permissions that allows it to modify "watch next" even if the programs belong to another app. This unfortunately can't be done on a 3rd party launcher

Download / Installation

This app can be downloaded here or installed from Google Play.

Install the apk as usual :

- copy the apk to an usb thumb drive

- plug it into your device

- browse and select apk to install it (you may need to enable "unknown sources installation" from your device's settings)

Not for commercial use. If you want to redistribute it, please contact me.

Changelog

From 4.03 onwards, changelog will be available here.

Spoiler content hidden.

Spoiler content hidden.

Spoiler content hidden.

Spoiler content hidden.

Spoiler content hidden.

Spoiler content hidden.

Spoiler content hidden.

Spoiler content hidden.

Spoiler content hidden.