{DEV} Lets get Dock with out Buying a Dock - Atrix 4G Android Development

One of my many goals of this device is to use the full webtop dock if i choose , how ever i will not purchase a $500 notebook or a $189 dock, currently the system runs checks once HDMI is plugged in and a connection is requested... it than looks for and returns a true or false for if a dock is connected. I am attaching a short clip of the log to get us started. I have pulled apart a few of the programs i believed to be involved but they were missing src directories, they were DockProvider and DockServices, so im assuming its in the framework. anyhow i figured id start the thread on this one and get the ball rolling , more people with exp. the better
Code:
02-21 22:24:37.607: DEBUG/DockService(8269): onCreate()
02-21 22:24:37.617: VERBOSE/ApnEntitlementService(2461): onStart() action android.mot.apn.intent.action.STOP
02-21 22:24:37.617: DEBUG/AutoSignInService(2461): AutoSignIn onReceive: action=android.intent.action.SIM_STATE_CHANGED
02-21 22:24:37.617: VERBOSE/AutoSignInService(2461): onReceive while Webtop INACTIVE
02-21 22:24:37.617: VERBOSE/AutoSignInService(2461): onStart() action android.mot.resmgr.StateChange
02-21 22:24:37.617: VERBOSE/AutoSignInService(2461): onStart() action android.mot.resmgr.StateChange
02-21 22:24:37.617: INFO/AutoSignInService(2461): MemStatusRM:0
02-21 22:24:37.617: VERBOSE/AutoSignInService(2461): onStart() action android.mot.resmgr.StateChange
02-21 22:24:37.617: INFO/AutoSignInService(2461): LockSettingRM:0
02-21 22:24:37.617: VERBOSE/AutoSignInService(2461): onStart() action android.mot.resmgr.StateChange
02-21 22:24:37.617: INFO/AutoSignInService(2461): AutoSignInRM:8
02-21 22:24:37.617: VERBOSE/AutoSignInService(2461): onStart() action android.mot.resmgr.StateChange
02-21 22:24:37.617: INFO/AutoSignInService(2461): LockSettingRM:1
02-21 22:24:37.617: VERBOSE/AutoSignInService(2461): onStart() action android.mot.resmgr.StateChange
02-21 22:24:37.617: INFO/AutoSignInService(2461): AutoSignInRM:8
02-21 22:24:37.617: DEBUG/OverlayHelper(8269): Applying overlays from /system/etc/motorola/com.motorola.dock.service/defaults.xml
02-21 22:24:37.627: DEBUG/DockService(8269): onStartCommand()
02-21 22:24:37.627: DEBUG/DockService(8269): intent action = com.motorola.dock.webtopevent
02-21 22:24:37.627: DEBUG/DockService(8269): flags = 0
02-21 22:24:37.627: DEBUG/DockService(8269): startId = 1
02-21 22:24:37.627: DEBUG/DockService(8269): DockHMDIEventHandler()
02-21 22:24:37.627: DEBUG/DockService(8269): Received Intent with action com.motorola.dock.webtopevent
02-21 22:24:37.627: DEBUG/DockService(8269): Dock Status = Disconnected
02-21 22:24:37.627: DEBUG/DockService(8269): HDMI Status = Connected
02-21 22:24:37.627: DEBUG/DockService(8269): Dock ID = null
02-21 22:24:37.627: DEBUG/DockService(8269): Dock Type = null
02-21 22:24:37.627: DEBUG/DockService(8269): mLastDocked=false
02-21 22:24:37.627: DEBUG/DockService(8269): mLastDockType=
02-21 22:24:37.627: DEBUG/DockService(8269): mIsChargingByAC=false
02-21 22:24:37.627: DEBUG/DockService(8269): mACPresentTime=0
02-21 22:24:37.627: DEBUG/DockService(8269): interval =1298345077631
02-21 22:24:37.928: DEBUG/DockService(8269): Dock false, HDMI true Event received
02-21 22:24:37.928: DEBUG/DockNotification(8269): UpdateDockNotification()
02-21 22:24:37.928: DEBUG/DockNotification(8269): Dock Status = Disconnected
02-21 22:24:37.928: DEBUG/DockNotification(8269): HDMI Status = Connected
02-21 22:24:37.928: DEBUG/DockNotification(8269): Dock ID =
02-21 22:24:37.928: DEBUG/DockNotification(8269): Dock Type =
02-21 22:24:37.928: INFO/PortalService(2461): onBind
02-21 22:24:37.928: ERROR/DockNotification(8269): mNM is NULL
02-21 22:24:37.937: DEBUG/DockAppUtility(8269): StartCustomPickerUIActivity()
02-21 22:24:37.937: DEBUG/DockAppUtility(8269): isDockConnected : false
02-21 22:24:37.937: DEBUG/DockAppUtility(8269): isHDMIConnected : true
02-21 22:24:37.937: DEBUG/DockAppUtility(8269): Dock ID =
02-21 22:24:37.937: DEBUG/DockAppUtility(8269): Dock Type =
02-21 22:24:37.937: INFO/ActivityManager(1482): Starting activity: Intent { act=com.motorola.dock.action.LaunchCustomPickerUI flg=0x10000000 cmp=com.motorola.dock.service/.ui.DockExperiencePickerActivity (has extras) }
02-21 22:24:37.947: WARN/WidgetAidService(3634): BroadcastReceiver onReceive called
02-21 22:24:37.947: DEBUG/WidgetAidService(3634): ACTION_HOME_SCREEN_CHANGED - -1
02-21 22:24:37.947: DEBUG/WidgetAidService(3634): HomeScreen has lost focus, store the previous state and move to pause
02-21 22:24:37.947: DEBUG/WidgetAidService(3634): Ignoring the HOME_SCREEN_CHANGED notification as the player is either in paused/playing state
02-21 22:24:37.967: DEBUG/BatteryChangeReceiver(8269): battery change detected
02-21 22:24:37.977: DEBUG/DockService(8269): setChargingByAC false, at Mon Feb 21 22:24:37 EST 2011
02-21 22:24:37.977: DEBUG/BatteryChangeReceiver(8269): detect NOT charged by AC
02-21 22:24:37.977: ERROR/DockNotification(8269): PortalService onServiceConnected
02-21 22:24:37.977: DEBUG/DockNotification(8269): PortalService send when connected
02-21 22:24:37.977: DEBUG/DockNotification(8269): PortalService send notification
02-21 22:24:37.977: DEBUG/PortalService(2461): Starting Foreground Status and Intent
02-21 22:24:37.997: DEBUG/DockExperiencePickerActivity(8269): onCreate()
02-21 22:24:37.997: DEBUG/DockExperiencePickerActivity(8269): Dock Status = Disconnected
02-21 22:24:37.997: DEBUG/DockExperiencePickerActivity(8269): HDMI Status = Connected
02-21 22:24:37.997: DEBUG/DockExperiencePickerActivity(8269): dockId = null, dockType = null
02-21 22:24:37.997: DEBUG/DockExperiencePickerActivity(8269): Intent { act=com.motorola.dock.action.LaunchCustomPickerUI flg=0x10800000 cmp=com.motorola.dock.service/.ui.DockExperiencePickerActivity (has extras) }
02-21 22:24:37.997: DEBUG/DockExperiencePickerActivity(8269): mobileDocked is false
02-21 22:24:38.037: DEBUG/StatusBarPolicy(1482): updateDataIcon() -- mDataActivity = 3; mDataState = 2; mDataData = IconData(slot='data_connection' package=null iconUri=null iconId=10802e9 iconLevel=0)
02-21 22:24:38.147: ERROR/NetlinkEvent(1347): NetlinkEvent::FindParam(): Parameter 'UDEV_LOG' not found
02-21 22:24:38.167: DEBUG/DockExperiencePickerActivity(8269): IDLE

Would it be possible to create a program that enables mirroring after the HDMI is connected (and after this check is finished)? You would just need to know what system call and libraries are required to enable mirroring.

t0dbld said:
Code:
02-21 22:24:37.627: DEBUG/DockService(8269): Dock Status = Disconnected
02-21 22:24:37.627: DEBUG/DockService(8269): HDMI Status = Connected
02-21 22:24:37.627: DEBUG/DockService(8269): Dock ID = null
02-21 22:24:37.627: DEBUG/DockService(8269): Dock Type = null
02-21 22:24:37.627: DEBUG/DockService(8269): mLastDocked=false
02-21 22:24:37.627: DEBUG/DockService(8269): mLastDockType=
02-21 22:24:37.627: DEBUG/DockService(8269): mIsChargingByAC=false
02-21 22:24:37.627: DEBUG/DockService(8269): mACPresentTime=0
02-21 22:24:37.627: DEBUG/DockService(8269): interval =1298345077631
02-21 22:24:37.928: DEBUG/DockService(8269): Dock false, HDMI true Event received
02-21 22:24:37.928: DEBUG/DockNotification(8269): UpdateDockNotification()
02-21 22:24:37.928: DEBUG/DockNotification(8269): Dock Status = Disconnected
02-21 22:24:37.928: DEBUG/DockNotification(8269): HDMI Status = Connected
02-21 22:24:37.928: DEBUG/DockNotification(8269): Dock ID =
02-21 22:24:37.928: DEBUG/DockNotification(8269): Dock Type =
02-21 22:24:37.928: INFO/PortalService(2461): onBind
02-21 22:24:37.928: ERROR/DockNotification(8269): mNM is NULL
02-21 22:24:37.937: DEBUG/DockAppUtility(8269): StartCustomPickerUIActivity()
02-21 22:24:37.937: DEBUG/DockAppUtility(8269): isDockConnected : false
02-21 22:24:37.937: DEBUG/DockAppUtility(8269): isHDMIConnected : true
02-21 22:24:37.937: DEBUG/DockAppUtility(8269): Dock ID =
02-21 22:24:37.937: DEBUG/DockAppUtility(8269): Dock Type =
Click to expand...
Click to collapse
We need someone with both the dock and the webtop to post their results.. That'll help fill in the blanks.

Awesome post, I am all for it. Give me a day or two I am willing to pick up the regular dock.

seferio said:
Would it be possible to create a program that enables mirroring after the HDMI is connected (and after this check is finished)? You would just need to know what system call and libraries are required to enable mirroring.
Click to expand...
Click to collapse
This is what I'm hoping will be accomplished soon.

would REALLY like this....

I think this is more than just software. Mini and Micro USB has a 5th "ID" pin which can be used for just this purpose. I started some research last night, and i'm going to be doing some testing tonight to see if i can work this out. ID is set with resistance values between the ID pin and Ground. If no one beats me to it i'll post my findings.

This is absolutely just software - just check out this video:
http://www.youtube.com/watch?v=7WzeIGZKW_Y
Notice how he uses the webtop/citrix client with just the HDMI cable plugged in to the phone!

dew.man said:
This is absolutely just software - just check out this video:
http://www.youtube.com/watch?v=7WzeIGZKW_Y
Notice how he uses the webtop/citrix client with just the HDMI cable plugged in to the phone!
Click to expand...
Click to collapse
did you watch the video? He put it in the dock each time. The dock has both a USB and an HDMI cable. Not once did he use webtop with just an HDMI cable.

cegna09 said:
did you watch the video? He put it in the dock each time. The dock has both a USB and an HDMI cable. Not once did he use webtop with just an HDMI cable.
Click to expand...
Click to collapse
Sorry guys - posted the wrong link.
This one:
http://www.youtube.com/watch?v=KjOND67hYCE
shows the same guy plugging in just the hdmi and the Atrix turns in to a nifty little trackpad!

I have the Multimedia Dock with the HDMI and USB ports...

what a great idea. Clever

dew.man said:
This is absolutely just software - just check out this video:
http://www.youtube.com/watch?v=7WzeIGZKW_Y
Notice how he uses the webtop/citrix client with just the HDMI cable plugged in to the phone!
Click to expand...
Click to collapse
What are you talking about lol in the video he plugs it into the Dock...
I think some people are getting confused on what an HDMI cable is and what is a Dock. I've heard 2-3 people saying they plugged their HDMI cable into the phone and into the TV and had the WebTop application pop up...that's not true or possible at this point.

hotleadsingerguy said:
What are you talking about lol in the video he plugs it into the Dock...
I think some people are getting confused on what an HDMI cable is and what is a Dock. I've heard 2-3 people saying they plugged their HDMI cable into the phone and into the TV and had the WebTop application pop up...that's not true or possible at this point.
Click to expand...
Click to collapse
Guess you missed my next post
dew.man said:
Sorry guys - posted the wrong link.
This one:
http://www.youtube.com/watch?v=KjOND67hYCE
shows the same guy plugging in just the hdmi and the Atrix turns in to a nifty little trackpad!
Click to expand...
Click to collapse

hotleadsingerguy said:
What are you talking about lol in the video he plugs it into the Dock...
I think some people are getting confused on what an HDMI cable is and what is a Dock. I've heard 2-3 people saying they plugged their HDMI cable into the phone and into the TV and had the WebTop application pop up...that's not true or possible at this point.
Click to expand...
Click to collapse
Read his last post on the previous page:
dew.man said:
Sorry guys - posted the wrong link.
shows the same guy plugging in just the hdmi and the Atrix turns in to a nifty little trackpad!
Click to expand...
Click to collapse

slhawkins said:
We need someone with both the dock and the webtop to post their results.. That'll help fill in the blanks.
Click to expand...
Click to collapse
Yes i 100% agree, esp because until given the opportunity to remount the system and make changes to things esp the build.prop alot of this will just be preparation work

AEDan1977 said:
I have the Multimedia Dock with the HDMI and USB ports...
Click to expand...
Click to collapse
Great , could you get us a log file for when dock is used than please, send me a message if you dont know how

dew.man said:
Guess you missed my next post
Click to expand...
Click to collapse
Great pick up, i had watched all these videos before release of atrix but had forgot about that... i will do some testing later today... also i have requested info from the owner of the youtube video and if i can not reproduce his results i will try and get a system dump from him... keep up the good work guys lets get this done !!

I spoke to a Motorola Rep in person and he said that during development they initially were allowing you to use just the HDMI cable, but they disabled that (I am guessing through software) because the battery drain was to great and the average consumer wouldn't understand that.

legider said:
I spoke to a Motorola Rep in person and he said that during development they initially were allowing you to use just the HDMI cable, but they disabled that (I am guessing through software) because the battery drain was to great and the average consumer wouldn't understand that.
Click to expand...
Click to collapse
ok so we will have to figure out what they changed and reversed it... maybe that guy will give me a system dump

Related

[Q] How to save "game progress" in a clicker app

I am currently working on a clicker game and need to save and restore the Strings and ints between when i shut down the app and when i restore it again, instead of losing all progress. Any suggestions on how to accomplish this? @mmdeveloper10
Hello,
To store some strings and ints while closing your app:
inside onDestroy() method
(if you haven't implemented it yet, it is like onCreate() you just write: )
Code:
@Override
protected void onDestroy() {
super.onDestroy();
//Put the below code here
}
Code:
SharedPreferences prefss = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor ed = prefss.edit();
ed.putString("mystring", mystring);
ed.putInt("myint", myint);
ed.commit(); //or ed.apply(); if you want to write them and wait for the write to be completed
Now to read them:
inside onCreate() (after super):
Code:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
mystring = prefs.getString("mystring", defaultStringValueHere); //defaultStringValueHere is a String (whatever you like), for the default value if the preference "mystring" is not found
myint = prefs.getInt("myint", defaultIntValueHere);
where mystring is the String that you want to store
and myint is the int that you want to store.
You can store as many as you like strings and ints (But the more you store, the more time to write and read them all your app will take)
If you still need help feel free to ask
Not sure how to explain the problem so I have attached my whole main method in pictures. I don't think it is finding any saved preferences on onCreate() because if i change the default int value it only changes to that instead of what the value was before exiting the app. Any idea what could be the cause of this?
mmdeveloper10 said:
Hello,
To store some strings and ints while closing your app:
inside onDestroy() method
(if you haven't implemented it yet, it is like onCreate() you just write: )
Code:
@Override
protected void onDestroy() {
super.onDestroy();
//Put the below code here
}
Code:
SharedPreferences prefss = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor ed = prefss.edit();
ed.putString("mystring", mystring);
ed.putInt("myint", myint);
ed.commit(); //or ed.apply(); if you want to write them and wait for the write to be completed
Now to read them:
inside onCreate() (after super):
Code:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
mystring = prefs.getString("mystring", defaultStringValueHere); //defaultStringValueHere is a String (whatever you like), for the default value if the preference "mystring" is not found
myint = prefs.getInt("myint", defaultIntValueHere);
where mystring is the String that you want to store
and myint is the int that you want to store.
You can store as many as you like strings and ints (But the more you store, the more time to write and read them all your app will take)
If you still need help feel free to ask
Click to expand...
Click to collapse
Hello,
Your strings a, b, c, e, f, g, h, i, j, k are empty ( Am I right? ).
So it tried to find a preference with an empty keyname, and write a preference with an empty keyname, it failed.
You need to have a, b, c, e, f, g, h, i, j, k hold a String value (different for each variable)
e.g.
Code:
String a = "a";
String b = "b";
...
Hope it helps
Ok, I tried changing them all to real Strings like you said and still no progress. Anything else that could be the problem?
mmdeveloper10 said:
Hello,
Your strings a, b, c, e, f, g, h, i, j, k are empty ( Am I right? ).
So it tried to find a preference with an empty keyname, and write a preference with an empty keyname, it failed.
You need to have a, b, c, e, f, g, h, i, j, k hold a String value (different for each variable)
e.g.
Code:
String a = "a";
String b = "b";
...
Hope it helps
Click to expand...
Click to collapse
Sorry but the code seems good to me. For me it is working.
Are you setting anywhere else in your code these variables?
Try moving the int w,z,... above the onCreate method.
In what phone are you testing?
Which Android Version?
Is it a custom ROM?
Can you share the logcat to see if it reports anything?
I am testing on an htc one m8 running Android 5.0.1 with no roms and I don't think the variables are used anywhere else I'll send the logcat when I get home
Sent from my HTC6525LVW using XDA Free mobile app
OK I fixed the issue, it turns out that I was closing the app by going into multitasking vs pressing the back key and now it is working fine thanks a lot
Sent from my HTC6525LVW using XDA Free mobile app
Ok
dillenge said:
OK I fixed the issue, it turns out that I was closing the app by going into multitasking vs pressing the back key and now it is working fine thanks a lot
Sent from my HTC6525LVW using XDA Free mobile app
Click to expand...
Click to collapse
Hello again,
If you want to save your app's state also by going into multitasking (pausing the app), then place the code in the onPause and onResume, instead of onDestroy and onCreate, respectively, as shown below
Code:
@Override
protected void onPause() {
super.onPause();
SharedPreferences prefss = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor ed = prefss.edit();
ed.putString("mystring", mystring);
ed.putInt("myint", myint);
ed.commit(); //or ed.apply(); if you want to write them and wait for the write to be completed
}
Code:
@Override
protected void onResume() {
super.onResume();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
mystring = prefs.getString("mystring", defaultStringValueHere); //defaultStringValueHere is a String (whatever you like), for the default value if the preference "mystring" is not found
myint = prefs.getInt("myint", defaultIntValueHere);
//Restore game state here instead of onCreate (onResume is called after onCreate, so you need to call the related methods for your game to restore the state here)
}

How do you get the number of items in a spinner control

I am trying to use m_BTArrayAdapter.getCount()
However this function returns 0 regardless of what is in the spinner popup.
I found some doco on this function: http://developer.android.com/reference/android/widget/ArrayAdapter.html#getCount%28%29
"public int getCount ()"
That is - no description. So what does that mean? In android Studio this function is redundant?
There are no other functions that I can see that tell you how many items there are in an ArrayAdapter or in the spinner control itself.
Surely I don't have to resort to a counter in my BT listener function to keep count of how many items are added to the adapter????
Code:
void setupBTListener()
{
m_BTArrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item);
final Spinner spinnerBluetooth = (Spinner)findViewById(id.spinner_bluetooth);
spinnerBluetooth.setAdapter(m_BTArrayAdapter);
Can anyone explain to me why m_BTArrayAdapter.getCount() returns non zero inside my listener function but zero in the code below?
Code:
m_BTArrayAdapter.clear();
if (m_BTAdapter.isDiscovering())
m_BTAdapter.cancelDiscovery();
m_BTAdapter.startDiscovery();
long longStart = System.currentTimeMillis(),
longTimer;
boolean bDone = false;
while (m_BTAdapter.isDiscovering() && !bDone)
{
longTimer = System.currentTimeMillis();
//bDone = (longTimer - longStart) < 5000;
}
bEnable = m_BTArrayAdapter.getCount() > 0;
spinnerBluetooth.setEnabled(bEnable);
buttonConnect.setEnabled(bEnable);
buttonSearch.setEnabled(true);

if anyone could help would be great (if or else statement)

i have been designing my own android app and have fell into a problem
im trying to call all avi, mp4, m3u8 and mkv files from my server this is my code i have but im unable to set it up to call all 4 i can only call the the other 2 file formats
PHP:
protected void onStart() {
super.onStart();
boolean isMxPlayerInstalled=isAppInstalled(PlayerActivty.this,MX_PLAYER_PACKAGE_NAME);
try {
if(isMxPlayerInstalled) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setPackage("nppl3.hd.video.player");
String username = getIntent().getStringExtra("USERNAME");
String password = getIntent().getStringExtra("PASSWORD");
String mode = getIntent().getStringExtra("stream_type");
String stream_id = getIntent().getStringExtra("stream_id");
String action = getIntent().getStringExtra("action");
if (action.equalsIgnoreCase("get_vod_streams")) {
extension = ".mp4";
} else {
extension = ".avi";
}

need help with python 2 - - s l o w when using 2 arduino's connected via usb...

ok, here's my situation -- my bedroom door is a powered pocket door, that the motor speed controller, relay board, & open/close button pushes are all handled by an arduino uno. the problem with the uno was/is, after going thru a cycle or two, it would randomly & mysteriously reset, usually with the door open (thus not closing the door, & the uno thinking the door was closed). anyway, long story just a little bit longer, my solution was/is to use a raspberry pi 3 b, connected via usb. now, when the uno receives a button push, it sends an "O" thru the usb to the pi. upon receiving the "O" from the uno, the pi responds with an "o" to the uno, waits for a period, then sends a "c" to the uno, waits a couple of seconds, then resets the uno by closing & reopening the serial port on the usb. in this configuration, everything has ran perfectly & smoothly for months now..... then i just had to add remote control. first i tried directly adding an ir remote to the pi using lirc, & though i could program in my remote just fine, i could never get the code to work properly. then i just thought, "add another arduino!" i have half a dozen laying around, so i added one. the new arduino has only one function (with 3 buttons - left, right, & button push -- which is essentially the same as the wired button push in its operation). i added the 2nd arduino by connecting it to another usb port, & modified my python code to accommodate the extra button pushes. thing is, the extra python code has added serious lag to operation -- now, whether you push a button on the remote, or the wired button, it can take anywhere from 2 to 5 seconds for the system to respond, whereas without the remote, it was virtually instantaneous. any help as to why, or how i could simplify the code would be greatly appreciated.
Code:
import os
import serial
import time
port1 = serial.Serial("/dev/ttyUSB1", baudrate=115200, timeout=2.0) #door controller arduino
port2 = serial.Serial("/dev/ttyUSB0", baudrate=115200, timeout=2.0) #IR remote arduino
if (port1.isOpen() == False):
port1.open()
if (port2.isOpen() == False):
port2.open()
while True:
a=0
def countdwn(y):
while y >= 1:
y -=1
if (port1.isOpen() == False):
port1.open()
rcv=port1.read(1) #this sequence is started by pushing a button on the wall to open the door. the arduino
if rcv != "" : # sends an "O" thru the usb to the raspberry pi & then waits for reply
if rcv != "\n":
if rcv != "\r":
if rcv != "s":
print rcv
if rcv == "O": # recieve open command from arduino that controls door
port1.write("o") # send open command to same arduino
port1.write("\n")
os.system('aplay -q /home/pi/holodoor2.wav') #play star trek holodeck door sound
time.sleep(2)
port1.close()#this line & the following line are added to reset the door controller arduino
port1.open()
time.sleep(2) #delay to walk thru door - actually takes about 3.5 seconds - if shortened,
# the arduino will be in the middle of the reset when the close command comes
port1.write("c") # send door close command to door controlling arduino
port1.write("\n")
os.system('aplay -q /home/pi/holodoor2.wav')
time.sleep(2)
port1.close() #same as before -- to reset arduino
port1.open()
time.sleep(1)
#beginning of IR section follows
if (port1.isOpen() == False):
port1.open()
if (port2.isOpen() == False):
port2.open()
rcv2=port2.read(1)
if rcv2 != "" :
if rcv2 != "\n":
if rcv2 != "\r":
print rcv2
if rcv2 == "P": #essentially the same routine as the above button push sequence
port1.write("o")
port1.write("\n")
os.system('aplay -q /home/pi/holodoor2.wav')
time.sleep(2)
port1.close()
port1.open()
time.sleep(2)
port1.write("c")
port1.write("\n")
os.system('aplay -q /home/pi/holodoor2.wav')
time.sleep(2)
port1.close()
port1.open()
time.sleep(1)
y = 30
if rcv2 == "R": #simple open & leave door open by pushing the right arrow key on IR remote
port1.write("o")
port1.write("\n")
os.system('aplay -q /home/pi/holodoor2.wav')
time.sleep(2)
port1.close()
port1.open()
#time.sleep(2)
if rcv2 == "L": #same as above but close door
port1.write("c")
port1.write("\n")
os.system('aplay -q /home/pi/holodoor2.wav')
time.sleep(2)
port1.close()
port1.open()
countdwn(30)
port1.close()
port2.close()
time.sleep(1)
y = 30

WIP: "De-bloating" the Chromecast with Google TV. Let's get rid of those ads!

WIP: "De-bloating" the Chromecast with Google TV. Let's get rid of those ads!
Those who like the Chromecast with Google TV UI or wouldn't move a finger to change it can stop reading this thread and move onto something else. No need to leave any comment, xda-developers wasn't created for people who don't like a challenge
If you don't like the UI because the massive ads it brings, then you are welcome to keep reading and help if you can!
METHOD A (EASY) - GET RID OF THE ADS ON THE MAIN SCREEN WITH AN ALTERNATIVE LAUNCHER
Install ATV Launcher or Wolf Launcher and disable the default launcher via adb. If you find a nice wallpaper that's a good option.
METHOD B (HARD) - USE THE APPS ONLY MODE WITH GOOGLE ASSISTANT AND NO ADS
Go to Settings > Accounts & Sign-in > Select your ac**** > Enable "Apps only mode".
Now you removed 90% of the ads but it seems like Google doesn't want us to use the Apps only mode, so they decided to put some hurdles in place disabling google assistant and play store access . We can fix it partially, so keep reading
Get a shortcut to the Google Play Store
Sideload and install this app (created with this site) and now you'll be able to access Google Play Store opening the app even on Apps Only Mode (see here how it looks)
How to use Google Assistant even on Apps Only mode - WIP
Go to Settings > All Apps > "See All apps" > "Show System apps" > Google > click on "Uninstall Updates" & "Disable". Now sideload and install this version
Now you can use Google Assistant to open a YouTube video or ask questions such as "what's the weather today?", but you can't give a voice command to open an app... It will go through a loop trying to setup google assistant.
Get rid of the 3 shows/movies ads that you still get in screen even when Apps Only mode is enabled - WIP
I tried disabling some apps that came pre-installed but I didn't manage to get rid of those last ads. I guess it's integrated within the launcher so we might need to mod it (if possible), live with it or just go back to Option 1 and use a different launcher.
Any help would be appreciated
METHOD C (HARD) - SWITCH TO THE ORIGINAL ANDROID TV LAUNCHER
I disabled the Google TV Launcher com.google.android.apps.tv.launcherx via adb. Then I sideloaded the Android TV Home and Lenback Launcher apks and tried to launch the main activity of those apps but it didn't work. Some activities could be launched but not the main one.
Any help would be highly appreciated as that's what I really wanted to do.
titooo7 said:
METHOD C (HARD) - SWITCH TO THE ORIGINAL ANDROID TV LAUNCHER
I disabled the Google TV Launcher com.google.android.apps.tv.launcherx via adb. Then I sideloaded the Android TV Home and Lenback Launcher apks and tried to launch the main activity of those apps but it didn't work. Some activities could be launched but not the main one.
Any help would be highly appreciated as that's what I really wanted to do.
Click to expand...
Click to collapse
This would be the ideal solution.
The funny thing I notice about this one, however, is that it actually appears to already be installed.
On play store, there are two versions of launcher. The "original":
https://play.google.com/store/apps/details?id=com.google.android.tvlauncher
And "too much advertising":
https://play.google.com/store/apps/details?id=com.google.android.apps.tv.launcherx
But what is interesting about them, is that the original one is apparently already installed on ALL of my Sabrina dongles, as well as on all of my other Android TV devices. The "too much advertising" reports as being installed on the Sabrina dongles, but as incompatible with all of the others.
It seems odd that the original launcher would fail to load while 3rd party launchers would work. I wonder if the packages are somehow being blacklisted?
96carboard said:
But what is interesting about them, is that the original one is apparently already installed on ALL of my Sabrina dongles, as well as on all of my other Android TV devices. The "too much advertising" reports as being installed on the Sabrina dongles, but as incompatible with all of the others.
It seems odd that the original launcher would fail to load while 3rd party launchers would work. I wonder if the packages are somehow being blacklisted?
Click to expand...
Click to collapse
I might be wrong, but I'd swear the original launcher wasn't preinstalled.
In any case if you sideload a shortcut maker then you can launch several activities from the original launcher, but not the main one.
I'm wondering if that could be because I'm missing some other apks that the original launcher need... but it's been a long time since I tried to do "dev" stuff in Android to remember how to diagnose the problem correctly.
titooo7 said:
I might be wrong, but I'd swear the original launcher wasn't preinstalled.
In any case if you sideload a shortcut maker then you can launch several activities from the original launcher, but not the main one.
Click to expand...
Click to collapse
To be a little more precise, I haven't actually checked on the devices themselves, but rather play store *claims* that they're installed.
I'm wondering if that could be because I'm missing some other apks that the original launcher need... but it's been a long time since I tried to do "dev" stuff in Android to remember how to diagnose the problem correctly.
Click to expand...
Click to collapse
If you're missing something it depends on, I'd expect some kind of related crash to be pretty obvious in the logcat.
What's the output of this?
pm query-activities -a android.intent.action.MAIN -c android.intent.category.HOME
96carboard said:
If you're missing something it depends on, I'd expect some kind of related crash to be pretty obvious in the logcat.
What's the output of this?
pm query-activities -a android.intent.action.MAIN -c android.intent.category.HOME
Click to expand...
Click to collapse
Just for your information I sideloadet the following 3 apks as those are installed on my Shield TV (which I don't have access to at the moment, btw) and I thought it mgiht be needed:
com.google.android.tvlauncher 2.2.2-328601804
com.google.android.leanbacklauncher 90.11.5-100-444-948
com.google.android.tvrecommendations 2.2.1-32444148
Unfortunately I couldn't find the apk for the following two, (I wonder if that's why I can't get the original launcher to work):
com.google.android.leanbacklauncher.recommendations 90.1.2.-100-4013131
Anyway, after that I ran the adb command you mentioned in two different ways:
With launcherx (CC GTV launcher) disabled: (pm disable com.google.android.apps.tv.launcherx)
Code:
pm query-activities -a android.intent.action.MAIN -c android.intent.category.HOME
4 activities found:
Activity #0:
priority=1 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=true
ActivityInfo:
name=com.google.android.tungsten.setupwraith.RecoveryActivity
packageName=com.google.android.tungsten.setupwraith
labelRes=0x7f110043 nonLocalizedLabel=null icon=0x0 banner=0x0
enabled=false exported=true directBootAware=false
taskAffinity=com.google.android.tungsten.setupwraith targetActivity=null persistableMode=PERSIST_ROOT_ONLY
launchMode=1 flags=0x220 privateFlags=0x0 theme=0x7f1201e6
screenOrientation=-1 configChanges=0x3 softInputMode=0x0
lockTaskLaunchMode=LOCK_TASK_LAUNCH_MODE_DEFAULT
resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
ApplicationInfo:
packageName=com.google.android.tungsten.setupwraith
labelRes=0x7f110043 nonLocalizedLabel=null icon=0x0 banner=0x0
processName=com.google.android.tungsten.setupwraith
taskAffinity=com.google.android.tungsten.setupwraith
uid=10035 flags=0x38c83e45 privateFlags=0x24081108 theme=0x7f1201fb
requiresSmallestWidthDp=0 compatibleWidthLimitDp=0 largestWidthLimitDp=0
sourceDir=/product/priv-app/SetupWraithPrebuiltSabrina/SetupWraithPrebuiltSabrina.apk
seinfo=default:privapp:targetSdkVersion=28
seinfoUser=:complete
dataDir=/data/user/0/com.google.android.tungsten.setupwraith
deviceProtectedDataDir=/data/user_de/0/com.google.android.tungsten.setupwraith
credentialProtectedDataDir=/data/user/0/com.google.android.tungsten.setupwraith
enabled=true minSdkVersion=28 targetSdkVersion=28 versionCode=2018111433 targetSandboxVersion=1
supportsRtl=true
fullBackupContent=true
HiddenApiEnforcementPolicy=0
usesNonSdkApi=false
allowsPlaybackCapture=false
Activity #1:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=true
ActivityInfo:
name=com.google.android.leanbacklauncher.MainActivity
packageName=com.google.android.leanbacklauncher
labelRes=0x7f0a0013 nonLocalizedLabel=null icon=0x0 banner=0x0
enabled=true exported=true directBootAware=false
taskAffinity=com.google.android.leanbacklauncher targetActivity=null persistableMode=PERSIST_ROOT_ONLY
launchMode=2 flags=0x234 privateFlags=0x0 theme=0x0
screenOrientation=0 configChanges=0xf3 softInputMode=0x0
lockTaskLaunchMode=LOCK_TASK_LAUNCH_MODE_DEFAULT
resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
ApplicationInfo:
name=com.google.android.leanbacklauncher.LauncherApplication
packageName=com.google.android.leanbacklauncher
labelRes=0x7f0a0014 nonLocalizedLabel=null icon=0x7f020095 banner=0x0
className=com.google.android.leanbacklauncher.LauncherApplication
processName=com.google.android.leanbacklauncher
taskAffinity=com.google.android.leanbacklauncher
uid=10096 flags=0x38c8be44 privateFlags=0x24001000 theme=0x7f0c00d7
requiresSmallestWidthDp=0 compatibleWidthLimitDp=0 largestWidthLimitDp=0
sourceDir=/data/app/com.google.android.leanbacklauncher-hX6rlapmfhRj8H_uIDOWAg==/base.apk
seinfo=default:targetSdkVersion=24
seinfoUser=:complete
dataDir=/data/user/0/com.google.android.leanbacklauncher
deviceProtectedDataDir=/data/user_de/0/com.google.android.leanbacklauncher
credentialProtectedDataDir=/data/user/0/com.google.android.leanbacklauncher
enabled=true minSdkVersion=21 targetSdkVersion=24 versionCode=1011102100 targetSandboxVersion=1
supportsRtl=true
fullBackupContent=true
HiddenApiEnforcementPolicy=2
usesNonSdkApi=false
allowsPlaybackCapture=false
Activity #2:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=true
ActivityInfo:
name=com.google.android.tvlauncher.MainActivity
packageName=com.google.android.tvlauncher
enabled=true exported=true directBootAware=false
taskAffinity=.TvLauncher targetActivity=null persistableMode=PERSIST_ROOT_ONLY
launchMode=2 flags=0x230 privateFlags=0x0 theme=0x0
screenOrientation=0 configChanges=0x3 softInputMode=0x0
lockTaskLaunchMode=LOCK_TASK_LAUNCH_MODE_DEFAULT
resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
ApplicationInfo:
name=com.google.android.tvlauncher.application.TvLauncherApplication
packageName=com.google.android.tvlauncher
labelRes=0x7f120029 nonLocalizedLabel=null icon=0x7f0f0000 banner=0x7f08012d
className=com.google.android.tvlauncher.application.TvLauncherApplication
processName=com.google.android.tvlauncher
taskAffinity=com.google.android.tvlauncher
uid=10097 flags=0x38c83e44 privateFlags=0xc001000 theme=0x7f130007
requiresSmallestWidthDp=0 compatibleWidthLimitDp=0 largestWidthLimitDp=0
sourceDir=/data/app/com.google.android.tvlauncher-f03AUa5fOy1TItsfaki7Iw==/base.apk
seinfo=default:targetSdkVersion=29
seinfoUser=:complete
dataDir=/data/user/0/com.google.android.tvlauncher
deviceProtectedDataDir=/data/user_de/0/com.google.android.tvlauncher
credentialProtectedDataDir=/data/user/0/com.google.android.tvlauncher
enabled=true minSdkVersion=26 targetSdkVersion=29 versionCode=1010900817 targetSandboxVersion=1
supportsRtl=true
fullBackupContent=true
HiddenApiEnforcementPolicy=2
usesNonSdkApi=false
allowsPlaybackCapture=true
Activity #3:
priority=-1000 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=true
ActivityInfo:
name=com.android.tv.settings.system.FallbackHome
packageName=com.android.tv.settings
enabled=true exported=true directBootAware=true
taskAffinity=com.android.tv.settings targetActivity=null persistableMode=PERSIST_ROOT_ONLY
launchMode=0 flags=0x220 privateFlags=0x0 theme=0x7f1100c0
screenOrientation=-1 configChanges=0x40002ff7 softInputMode=0x0
lockTaskLaunchMode=LOCK_TASK_LAUNCH_MODE_DEFAULT
resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
ApplicationInfo:
packageName=com.android.tv.settings
labelRes=0x7f100366 nonLocalizedLabel=null icon=0x7f080201 banner=0x7f0800e0
processName=com.android.tv.settings
taskAffinity=com.android.tv.settings
uid=1000 flags=0x28c8be45 privateFlags=0xc501068 theme=0x7f1101d2
requiresSmallestWidthDp=0 compatibleWidthLimitDp=0 largestWidthLimitDp=0
sourceDir=/system/priv-app/TvSettingsGoogle/TvSettingsGoogle.apk
resourceDirs=[/vendor/overlay/ChromecastTvSettingsGoogleOverlay.apk]
seinfo=platform:privapp:targetSdkVersion=28
seinfoUser=:complete
dataDir=/data/user_de/0/com.android.tv.settings
deviceProtectedDataDir=/data/user_de/0/com.android.tv.settings
credentialProtectedDataDir=/data/user/0/com.android.tv.settings
enabled=true minSdkVersion=29 targetSdkVersion=29 versionCode=1 targetSandboxVersion=1
supportsRtl=true
fullBackupContent=true
HiddenApiEnforcementPolicy=0
usesNonSdkApi=true
allowsPlaybackCapture=true
With launcherx enabled:
Code:
sabrina:/ $ pm query-activities -a android.intent.action.MAIN -c android.intent.category.HOME
5 activities found:
Activity #0:
priority=2 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=true
ActivityInfo:
name=com.google.android.apps.tv.launcherx.home.HomeActivity
packageName=com.google.android.apps.tv.launcherx
labelRes=0x7f13025a nonLocalizedLabel=null icon=0x0 banner=0x0
enabled=true exported=true directBootAware=false
taskAffinity=com.google.android.apps.tv.launcherx targetActivity=null persistableMode=PERSIST_ROOT_ONLY
launchMode=2 flags=0x230 privateFlags=0x0 theme=0x7f1401cc
screenOrientation=-1 configChanges=0x3 softInputMode=0x0
lockTaskLaunchMode=LOCK_TASK_LAUNCH_MODE_DEFAULT
resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
ApplicationInfo:
name=com.google.android.apps.tv.launcherx.LauncherX_Application
packageName=com.google.android.apps.tv.launcherx
labelRes=0x7f1302c0 nonLocalizedLabel=null icon=0x7f0f0001 banner=0x7f0801b0
className=com.google.android.apps.tv.launcherx.LauncherX_Application
processName=com.google.android.apps.tv.launcherx
taskAffinity=com.google.android.apps.tv.launcherx
uid=10037 flags=0x38c83ec5 privateFlags=0xc081018 theme=0x7f14000e
requiresSmallestWidthDp=0 compatibleWidthLimitDp=0 largestWidthLimitDp=0
sourceDir=/data/app/com.google.android.apps.tv.launcherx-eKBpKZxlpw3mSx4rrG8L3w==/base.apk
seinfo=default:privapp:targetSdkVersion=29
seinfoUser=:complete
dataDir=/data/user/0/com.google.android.apps.tv.launcherx
deviceProtectedDataDir=/data/user_de/0/com.google.android.apps.tv.launcherx
credentialProtectedDataDir=/data/user/0/com.google.android.apps.tv.launcherx
enabled=true minSdkVersion=28 targetSdkVersion=29 versionCode=5244 targetSandboxVersion=1
supportsRtl=true
fullBackupContent=true
networkSecurityConfigRes=0x7f170003
category=7
HiddenApiEnforcementPolicy=2
usesNonSdkApi=false
allowsPlaybackCapture=true
Activity #1:
priority=1 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=true
ActivityInfo:
name=com.google.android.tungsten.setupwraith.RecoveryActivity
packageName=com.google.android.tungsten.setupwraith
labelRes=0x7f110043 nonLocalizedLabel=null icon=0x0 banner=0x0
enabled=false exported=true directBootAware=false
taskAffinity=com.google.android.tungsten.setupwraith targetActivity=null persistableMode=PERSIST_ROOT_ONLY
launchMode=1 flags=0x220 privateFlags=0x0 theme=0x7f1201e6
screenOrientation=-1 configChanges=0x3 softInputMode=0x0
lockTaskLaunchMode=LOCK_TASK_LAUNCH_MODE_DEFAULT
resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
ApplicationInfo:
packageName=com.google.android.tungsten.setupwraith
labelRes=0x7f110043 nonLocalizedLabel=null icon=0x0 banner=0x0
processName=com.google.android.tungsten.setupwraith
taskAffinity=com.google.android.tungsten.setupwraith
uid=10035 flags=0x38c83e45 privateFlags=0x24081108 theme=0x7f1201fb
requiresSmallestWidthDp=0 compatibleWidthLimitDp=0 largestWidthLimitDp=0
sourceDir=/product/priv-app/SetupWraithPrebuiltSabrina/SetupWraithPrebuiltSabrina.apk
seinfo=default:privapp:targetSdkVersion=28
seinfoUser=:complete
dataDir=/data/user/0/com.google.android.tungsten.setupwraith
deviceProtectedDataDir=/data/user_de/0/com.google.android.tungsten.setupwraith
credentialProtectedDataDir=/data/user/0/com.google.android.tungsten.setupwraith
enabled=true minSdkVersion=28 targetSdkVersion=28 versionCode=2018111433 targetSandboxVersion=1
supportsRtl=true
fullBackupContent=true
HiddenApiEnforcementPolicy=0
usesNonSdkApi=false
allowsPlaybackCapture=false
Activity #2:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=true
ActivityInfo:
name=com.google.android.leanbacklauncher.MainActivity
packageName=com.google.android.leanbacklauncher
labelRes=0x7f0a0013 nonLocalizedLabel=null icon=0x0 banner=0x0
enabled=true exported=true directBootAware=false
taskAffinity=com.google.android.leanbacklauncher targetActivity=null persistableMode=PERSIST_ROOT_ONLY
launchMode=2 flags=0x234 privateFlags=0x0 theme=0x0
screenOrientation=0 configChanges=0xf3 softInputMode=0x0
lockTaskLaunchMode=LOCK_TASK_LAUNCH_MODE_DEFAULT
resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
ApplicationInfo:
name=com.google.android.leanbacklauncher.LauncherApplication
packageName=com.google.android.leanbacklauncher
labelRes=0x7f0a0014 nonLocalizedLabel=null icon=0x7f020095 banner=0x0
className=com.google.android.leanbacklauncher.LauncherApplication
processName=com.google.android.leanbacklauncher
taskAffinity=com.google.android.leanbacklauncher
uid=10096 flags=0x38c8be44 privateFlags=0x24001000 theme=0x7f0c00d7
requiresSmallestWidthDp=0 compatibleWidthLimitDp=0 largestWidthLimitDp=0
sourceDir=/data/app/com.google.android.leanbacklauncher-hX6rlapmfhRj8H_uIDOWAg==/base.apk
seinfo=default:targetSdkVersion=24
seinfoUser=:complete
dataDir=/data/user/0/com.google.android.leanbacklauncher
deviceProtectedDataDir=/data/user_de/0/com.google.android.leanbacklauncher
credentialProtectedDataDir=/data/user/0/com.google.android.leanbacklauncher
enabled=true minSdkVersion=21 targetSdkVersion=24 versionCode=1011102100 targetSandboxVersion=1
supportsRtl=true
fullBackupContent=true
HiddenApiEnforcementPolicy=2
usesNonSdkApi=false
allowsPlaybackCapture=false
Activity #3:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=true
ActivityInfo:
name=com.google.android.tvlauncher.MainActivity
packageName=com.google.android.tvlauncher
enabled=true exported=true directBootAware=false
taskAffinity=.TvLauncher targetActivity=null persistableMode=PERSIST_ROOT_ONLY
launchMode=2 flags=0x230 privateFlags=0x0 theme=0x0
screenOrientation=0 configChanges=0x3 softInputMode=0x0
lockTaskLaunchMode=LOCK_TASK_LAUNCH_MODE_DEFAULT
resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
ApplicationInfo:
name=com.google.android.tvlauncher.application.TvLauncherApplication
packageName=com.google.android.tvlauncher
labelRes=0x7f120029 nonLocalizedLabel=null icon=0x7f0f0000 banner=0x7f08012d
className=com.google.android.tvlauncher.application.TvLauncherApplication
processName=com.google.android.tvlauncher
taskAffinity=com.google.android.tvlauncher
uid=10097 flags=0x38c83e44 privateFlags=0xc001000 theme=0x7f130007
requiresSmallestWidthDp=0 compatibleWidthLimitDp=0 largestWidthLimitDp=0
sourceDir=/data/app/com.google.android.tvlauncher-f03AUa5fOy1TItsfaki7Iw==/base.apk
seinfo=default:targetSdkVersion=29
seinfoUser=:complete
dataDir=/data/user/0/com.google.android.tvlauncher
deviceProtectedDataDir=/data/user_de/0/com.google.android.tvlauncher
credentialProtectedDataDir=/data/user/0/com.google.android.tvlauncher
enabled=true minSdkVersion=26 targetSdkVersion=29 versionCode=1010900817 targetSandboxVersion=1
supportsRtl=true
fullBackupContent=true
HiddenApiEnforcementPolicy=2
usesNonSdkApi=false
allowsPlaybackCapture=true
Activity #4:
priority=-1000 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=true
ActivityInfo:
name=com.android.tv.settings.system.FallbackHome
packageName=com.android.tv.settings
enabled=true exported=true directBootAware=true
taskAffinity=com.android.tv.settings targetActivity=null persistableMode=PERSIST_ROOT_ONLY
launchMode=0 flags=0x220 privateFlags=0x0 theme=0x7f1100c0
screenOrientation=-1 configChanges=0x40002ff7 softInputMode=0x0
lockTaskLaunchMode=LOCK_TASK_LAUNCH_MODE_DEFAULT
resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
ApplicationInfo:
packageName=com.android.tv.settings
labelRes=0x7f100366 nonLocalizedLabel=null icon=0x7f080201 banner=0x7f0800e0
processName=com.android.tv.settings
taskAffinity=com.android.tv.settings
uid=1000 flags=0x28c8be45 privateFlags=0xc501068 theme=0x7f1101d2
requiresSmallestWidthDp=0 compatibleWidthLimitDp=0 largestWidthLimitDp=0
sourceDir=/system/priv-app/TvSettingsGoogle/TvSettingsGoogle.apk
resourceDirs=[/vendor/overlay/ChromecastTvSettingsGoogleOverlay.apk]
seinfo=platform:privapp:targetSdkVersion=28
seinfoUser=:complete
dataDir=/data/user_de/0/com.android.tv.settings
deviceProtectedDataDir=/data/user_de/0/com.android.tv.settings
credentialProtectedDataDir=/data/user/0/com.android.tv.settings
enabled=true minSdkVersion=29 targetSdkVersion=29 versionCode=1 targetSandboxVersion=1
supportsRtl=true
fullBackupContent=true
HiddenApiEnforcementPolicy=0
usesNonSdkApi=true
allowsPlaybackCapture=true
@titooo7 I'm only getting to messing with this now. (unplugged my Shield as it was the only way to actually start using the CC GTV)
Did you manage to get the vanilla AOSP ATV launcher working?
Has anyone got to the bottom of this ? Ability to lunch the original android tv luncher would be really nice.
I tried myself by installing android tv launcher, android tv services as well as leanback launcher using play store (no need for side loading)...
then tried lunching it by
Code:
am start -n "com.google.android.tvlauncher/com.google.android.tvlauncher.MainActivity" -a android.intent.action.MAIN -c android.intent.category.HOME
It seems to be lunching but it seems to gets killed instantly.
Logcat.
Code:
11-01 02:07:56.898 3840 4772 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.google.android.tvlauncher/.MainActivity} from uid 2000
11-01 02:07:56.951 3840 3869 I ActivityManager: Start proc 22253:com.google.android.tvlauncher/u0a87 for activity {com.google.android.tvlauncher/com.google.android.tvlauncher.MainActivity}
11-01 02:07:57.171 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}})/@0xcaf715a - animation-leash#0
11-01 02:07:57.171 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}})/@0xcaf715a - animation-bounds#0
11-01 02:07:57.171 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}})/@0xcaf715a - animation-leash#0
11-01 02:07:57.172 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}})/@0xcaf715a - animation-bounds#0
11-01 02:07:57.185 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: Surface(name=AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}})/@0xcaf715a - animation-bounds#0
11-01 02:07:57.185 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: Surface(name=AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}})/@0xcaf715a - animation-leash#0
11-01 02:07:57.185 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: Surface(name=AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}})/@0xcaf715a - animation-leash#0
11-01 02:07:57.185 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: Surface(name=AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}})/@0xcaf715a - animation-bounds#0
11-01 02:07:57.233 22253 22300 E AndroidRuntime: Process: com.google.android.tvlauncher, PID: 22253
11-01 02:07:57.248 3840 3856 W ActivityTaskManager: Force finishing activity com.google.android.tvlauncher/.MainActivity
11-01 02:07:57.314 3840 4772 I ActivityManager: Process com.google.android.tvlauncher (pid 22253) has died: vis TOP
11-01 02:07:57.315 3552 4208 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Splash Screen com.google.android.tvlauncher#0
11-01 02:07:57.317 3552 4208 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: ae75549 Splash Screen com.google.android.tvlauncher#0
11-01 02:07:57.318 3552 4208 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: ae75549 Splash Screen com.google.android.tvlauncher#0
11-01 02:07:57.318 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: ae75549 Splash Screen com.google.android.tvlauncher#0
11-01 02:07:57.318 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: Splash Screen com.google.android.tvlauncher#0
11-01 02:07:57.318 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: Splash Screen com.google.android.tvlauncher#0
11-01 02:07:57.318 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: ae75549 Splash Screen com.google.android.tvlauncher#0
11-01 02:07:57.320 3552 4208 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}}#0
11-01 02:07:57.321 3552 4208 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}}#0
11-01 02:07:57.327 3552 4339 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Splash Screen com.google.android.tvlauncher#0
11-01 02:07:57.335 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}}#0
11-01 02:07:57.335 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: Splash Screen com.google.android.tvlauncher#0
11-01 02:07:57.335 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}}#0
11-01 02:07:57.749 3840 3861 W ActivityTaskManager: Activity top resumed state loss timeout for ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t-1 f}
11-01 02:09:39.384 3840 3856 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.google.android.tvlauncher/.MainActivity} from uid 2000
11-01 02:09:39.429 3840 3869 I ActivityManager: Start proc 22323:com.google.android.tvlauncher/u0a87 for activity {com.google.android.tvlauncher/com.google.android.tvlauncher.MainActivity}
11-01 02:09:39.673 3552 4339 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}})/@0x9d7a9e9 - animation-leash#0
11-01 02:09:39.673 3552 4339 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}})/@0x9d7a9e9 - animation-bounds#0
11-01 02:09:39.673 3552 4339 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}})/@0x9d7a9e9 - animation-leash#0
11-01 02:09:39.675 3552 3831 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}})/@0x9d7a9e9 - animation-leash#0
11-01 02:09:39.675 3552 4339 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}})/@0x9d7a9e9 - animation-bounds#0
11-01 02:09:39.687 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: Surface(name=AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}})/@0x9d7a9e9 - animation-bounds#0
11-01 02:09:39.687 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: Surface(name=AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}})/@0x9d7a9e9 - animation-leash#0
11-01 02:09:39.687 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: Surface(name=AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}})/@0x9d7a9e9 - animation-leash#0
11-01 02:09:39.687 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: Surface(name=AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}})/@0x9d7a9e9 - animation-bounds#0
11-01 02:09:39.706 22323 22370 E AndroidRuntime: Process: com.google.android.tvlauncher, PID: 22323
11-01 02:09:39.723 3840 4772 W ActivityTaskManager: Force finishing activity com.google.android.tvlauncher/.MainActivity
11-01 02:09:39.769 3840 7719 I ActivityManager: Process com.google.android.tvlauncher (pid 22323) has died: vis TOP
11-01 02:09:39.772 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Splash Screen com.google.android.tvlauncher#0
11-01 02:09:39.774 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: 1c63bed Splash Screen com.google.android.tvlauncher#0
11-01 02:09:39.774 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: 1c63bed Splash Screen com.google.android.tvlauncher#0
11-01 02:09:39.776 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}}#0
11-01 02:09:39.776 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}}#0
11-01 02:09:39.777 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}}#0
11-01 02:09:39.782 3552 4339 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Splash Screen com.google.android.tvlauncher#0
11-01 02:09:39.787 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}}#0
11-01 02:09:39.787 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: 1c63bed Splash Screen com.google.android.tvlauncher#0
11-01 02:09:39.787 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: Splash Screen com.google.android.tvlauncher#0
11-01 02:09:39.787 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: Splash Screen com.google.android.tvlauncher#0
11-01 02:09:39.787 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}}#0
11-01 02:09:39.787 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: 1c63bed Splash Screen com.google.android.tvlauncher#0
11-01 02:09:40.224 3840 3861 W ActivityTaskManager: Activity top resumed state loss timeout for ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t-1 f}
11-01 02:17:43.561 3840 28544 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.google.android.tvlauncher/.MainActivity} from uid 2000
11-01 02:19:00.929 3840 28544 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.google.android.tvlauncher/.MainActivity} from uid 2000
11-01 02:19:20.315 3840 3869 I ActivityManager: Start proc 22503:com.google.android.tvlauncher/u0a87 for activity {com.google.android.tvlauncher/com.google.android.tvlauncher.MainActivity}
11-01 02:19:20.613 22503 22550 E AndroidRuntime: Process: com.google.android.tvlauncher, PID: 22503
11-01 02:19:20.637 3840 28544 W ActivityTaskManager: Force finishing activity com.google.android.tvlauncher/.MainActivity
11-01 02:19:20.714 3840 4099 I ActivityManager: Process com.google.android.tvlauncher (pid 22503) has died: vis+99 TOP
11-01 02:19:20.719 3552 4339 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: AppWindowToken{1813e0b token=Token{85c39da ActivityRecord{c7f9785 u0 com.google.android.tvlauncher/.MainActivity t178}}}#0
11-01 02:19:20.721 3552 4339 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: AppWindowToken{1813e0b token=Token{85c39da ActivityRecord{c7f9785 u0 com.google.android.tvlauncher/.MainActivity t178}}}#0
11-01 02:19:20.735 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: AppWindowToken{1813e0b token=Token{85c39da ActivityRecord{c7f9785 u0 com.google.android.tvlauncher/.MainActivity t178}}}#0
11-01 02:19:20.735 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: AppWindowToken{1813e0b token=Token{85c39da ActivityRecord{c7f9785 u0 com.google.android.tvlauncher/.MainActivity t178}}}#0
11-01 02:19:21.140 3840 3861 W ActivityTaskManager: Activity top resumed state loss timeout for ActivityRecord{c7f9785 u0 com.google.android.tvlauncher/.MainActivity t-1 f}
11-01 02:20:15.881 3840 4099 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.google.android.tvlauncher/.MainActivity} from uid 2000
11-01 02:20:16.007 3840 3869 I ActivityManager: Start proc 22873:com.google.android.tvlauncher/u0a87 for activity {com.google.android.tvlauncher/com.google.android.tvlauncher.MainActivity}
11-01 02:20:16.263 3552 3831 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}})/@0x51f7386 - animation-leash#0
11-01 02:20:16.263 3552 3831 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}})/@0x51f7386 - animation-bounds#0
11-01 02:20:16.266 3552 3831 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}})/@0x51f7386 - animation-leash#0
11-01 02:20:16.266 3552 3831 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}})/@0x51f7386 - animation-bounds#0
11-01 02:20:16.274 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: Surface(name=AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}})/@0x51f7386 - animation-bounds#0
11-01 02:20:16.274 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: Surface(name=AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}})/@0x51f7386 - animation-leash#0
11-01 02:20:16.274 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: Surface(name=AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}})/@0x51f7386 - animation-leash#0
11-01 02:20:16.274 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: Surface(name=AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}})/@0x51f7386 - animation-bounds#0
11-01 02:20:16.318 22873 22927 E AndroidRuntime: Process: com.google.android.tvlauncher, PID: 22873
11-01 02:20:16.337 3840 9090 W ActivityTaskManager: Force finishing activity com.google.android.tvlauncher/.MainActivity
11-01 02:20:16.393 3840 3856 I ActivityManager: Process com.google.android.tvlauncher (pid 22873) has died: vis+99 TOP
11-01 02:20:16.395 3552 3831 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Splash Screen com.google.android.tvlauncher#0
11-01 02:20:16.397 3552 3831 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: cb48eb0 Splash Screen com.google.android.tvlauncher#0
11-01 02:20:16.397 3552 3831 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: cb48eb0 Splash Screen com.google.android.tvlauncher#0
11-01 02:20:16.399 3552 3831 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}}#0
11-01 02:20:16.400 3552 3831 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}}#0
11-01 02:20:16.406 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Splash Screen com.google.android.tvlauncher#0
11-01 02:20:16.407 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}}#0
11-01 02:20:16.407 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: cb48eb0 Splash Screen com.google.android.tvlauncher#0
11-01 02:20:16.407 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: Splash Screen com.google.android.tvlauncher#0
11-01 02:20:16.407 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: Splash Screen com.google.android.tvlauncher#0
11-01 02:20:16.407 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}}#0
11-01 02:20:16.407 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: cb48eb0 Splash Screen com.google.android.tvlauncher#0
11-01 02:20:16.838 3840 3861 W ActivityTaskManager: Activity top resumed state loss timeout for ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t-1 f}
PS. To open play store go to apps, click on random app category > then go to settings > apps > recent > google play store > open.
It will open google play store UI where you can see all apps released by google, then you can install android tv launcher, leanback and android tv services.
@yaro014 I'd get rid of my two shields if I could get this sorted
METHOD A (EASY) - GET RID OF THE ADS ON THE MAIN SCREEN WITH AN ALTERNATIVE LAUNCHER
Install ATV Launcher or Wolf Launcher and disable the default launcher via adb. If you find a nice wallpaper that's a good option.
This is what I did:
1. Install Wolf launcher
2. Open Wolf launcher (opens fine)
3. Use ADB to disable stock - pm disable-user --user 0 com.google.android.apps.tv.launcherx
However, as soon as I do 3), the next time I press home, I am not able to navigate around Wolf anymore.
Did I miss a step?
Thank you.
OK, so far in order to use an alternative launcher without problems this is what I had to do:
(1) Install alternative launcher -
Wolf launcher etc
(2) disable stock launcher -
Code:
adb shell
pm disable-user --user 0 com.google.android.apps.tv.launcherx
pm disable-user --user 0 com.google.android.tungsten.setupwraith
(3) Press home button and select the alternative launcher as home app
However, I have tried various versions of the original Leanback Launcher to no avail.
Does anyone have the definitive list of framework/dependancies that Leanback launcher needs?
Thanks
H
Leanback launcher complains a lot about permissions.
Android TV home launcher complains about core services not being installed, however when installed it's being removed on reboot.
There might be some trickery enabled within the system to prevent loading Android TV launcher etc.
seapoint said:
OK, so far in order to use an alternative launcher without problems this is what I had to do:
(1) Install alternative launcher -
Wolf launcher etc
(2) disable stock launcher -
Code:
adb shell
pm disable-user --user 0 com.google.android.apps.tv.launcherx
pm disable-user --user 0 com.google.android.tungsten.setupwraith
(3) Press home button and select the alternative launcher as home app
However, I have tried various versions of the original Leanback Launcher to no avail.
Does anyone have the definitive list of framework/dependancies that Leanback launcher needs?
Thanks
H
Click to expand...
Click to collapse
i follow your step to set atv launcher as my home app, but the physical youtube button on remote didn't work anymore since that, i just wonder disabling com.google.android.tungsten.setupwraith maybe affect that? do u have the same issue?
Here's a challenge. Create a editor for the cloud based google Watchlist to add additional "ways to watch"for individual tv shows. Like mx player. That would be so sweet.
titooo7 said:
Get rid of the 3 shows/movies ads that you still get in screen even when Apps Only mode is enabled - WIP
I tried disabling some apps that came pre-installed but I didn't manage to get rid of those last ads. I guess it's integrated within the launcher so we might need to mod it (if possible), live with it or just go back to Option 1 and use a different launcher.
Any help would be appreciated
Click to expand...
Click to collapse
Here's an idea...
I've seen some screenshots from users in countries where the Chromecast with Google TV is not sold yet. It appears that they don't have the "For you" tab, and instead are having an "Home" tab which looks a bit sleeker. See: My new chromecast 2020 does not have the FOR YOU tab as normally seen in many review videos - Chromecast Community (google.com) . (Though it might not be the same for everyone, as Chromecast with Google TV: "For you", "Movies", "Shows" not showing up - Chromecast Community does have a giant suggestion bar despite having an "Home" tab.)
I've also completely disabled Internet access to my CCwGTV at my router-level. Of course, it's not that useful. But I can observe that once the launcher is loaded, I do have an "Home" tab instead of a "For you" tab. Until I re-enable Internet access...
Could it be possible to block Internet access to the launcher only? And/or trick it to think it's running on a device located in an unsupported country? While leaving all other applications correctly establish the current location -- i.e. still want Netflix to know that I'm at home and offers me what's available here, and not somewhere around Antarctica.
Alexandre-P said:
Could it be possible to block Internet access to the launcher only?
Click to expand...
Click to collapse
A domain specific block may work. Not sure what software you have running on your router, but if openwrt, it wouldn't be too much of a challenge to filter domains based on the device making the request, and even if its making the DNS request direct to 8.8.8.8, you can redirect that at the router back to 192.168.1.1
I had a little bit of progress on my Chromecast, I used TechDoctor UK's launcher manager to be able to choose a new launcher. I side loaded the old Leanback Launcher but for Amazon Fire. I can get it to load right the first time but then when I go back it gets stuck..
Could we take the official Leanback or Android TV home and just change the name so it appears as a different app?
titooo7 said:
WIP: "De-bloating" the Chromecast with Google TV. Let's get rid of those ads!
Those who like the Chromecast with Google TV UI or wouldn't move a finger to change it can stop reading this thread and move onto something else. No need to leave any comment, xda-developers wasn't created for people who don't like a challenge
If you don't like the UI because the massive ads it brings, then you are welcome to keep reading and help if you can!
METHOD A (EASY) - GET RID OF THE ADS ON THE MAIN SCREEN WITH AN ALTERNATIVE LAUNCHER
Install ATV Launcher or Wolf Launcher and disable the default launcher via adb. If you find a nice wallpaper that's a good option.
METHOD B (HARD) - USE THE APPS ONLY MODE WITH GOOGLE ASSISTANT AND NO ADS
Go to Settings > Accounts & Sign-in > Select your ac**** > Enable "Apps only mode".
Now you removed 90% of the ads but it seems like Google doesn't want us to use the Apps only mode, so they decided to put some hurdles in place disabling google assistant and play store access . We can fix it partially, so keep reading
Get a shortcut to the Google Play Store
Sideload and install this app (created with this site) and now you'll be able to access Google Play Store opening the app even on Apps Only Mode (see here how it looks)
How to use Google Assistant even on Apps Only mode - WIP
Go to Settings > All Apps > "See All apps" > "Show System apps" > Google > click on "Uninstall Updates" & "Disable". Now sideload and install this version
Now you can use Google Assistant to open a YouTube video or ask questions such as "what's the weather today?", but you can't give a voice command to open an app... It will go through a loop trying to setup google assistant.
Get rid of the 3 shows/movies ads that you still get in screen even when Apps Only mode is enabled - WIP
I tried disabling some apps that came pre-installed but I didn't manage to get rid of those last ads. I guess it's integrated within the launcher so we might need to mod it (if possible), live with it or just go back to Option 1 and use a different launcher.
Any help would be appreciated
METHOD C (HARD) - SWITCH TO THE ORIGINAL ANDROID TV LAUNCHER
I disabled the Google TV Launcher com.google.android.apps.tv.launcherx via adb. Then I sideloaded the Android TV Home and Lenback Launcher apks and tried to launch the main activity of those apps but it didn't work. Some activities could be launched but not the main one.
Any help would be highly appreciated as that's what I really wanted to do.
Click to expand...
Click to collapse
Do you have a list of apps that can be uninstalled via adb? It would be very useful. Thank you.
So it turns out that the easiest solution to this problem is to buy an ADT-3, which is what CCGTV really should have been. Unlocked and actually up to date (Android 12).
96carboard said:
So it turns out that the easiest solution to this problem is to buy an ADP-3, which is what CCGTV really should have been. Unlocked and actually up to date (Android 12).
Click to expand...
Click to collapse
what's an ADP-3?
pddc said:
what's an ADP-3?
Click to expand...
Click to collapse
ADT-3, apologies.
Just picked one of these up, thanks to your head start, I've got the homescreen looking like this:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
I have it running in "Apps Only mode" regular mode looks almost the same, but with a non-functioning Google Assistance icon at the top.
Here is what I did:
Set-up the device as normal, and ran all updates.
Uninstalled all apps I didn't want, and sideloaded the apps I wanted.
Created ATV icon apps for Play Store and Movies as suggested above.
Blocked " androidtvlauncherxfe-pa.googleapis.com " using a pi-hole.
Cleared data for the Google TV app.
Restarted the device, and set to apps-only mode.
Ads are blocked the same way as on the NVIDIA SHIELD. Took me a few times of resetting to pin down the ip address to block. The big error message isn't ideal, I would be fine with the "generic" ads like the SHIELD, but it's better than the alternative.
As far as I am able to tell, everything works as without issue, including casting, except Google Assistant which is fine by me.
Only other downsides: there is sometimes a noticeable delay returning to the homescreen (on boot, returning from settings, rarely when switching apps), and you cannot open the "quick-menu" on the home screen to move apps. The only way to rearrange apps would be to uninstall.
Might not be the most elegant solution, but nothing deal breaking IMHO. Certainly good enough for my uses.

Categories

Resources