I need a way to change the keyboard input on my amazon fire but can't seem to find a solution.
I've read around for hours with no help. I installed a settings.apk but every time I open keyboard input it just crashes.
Does anyone know of a way to do this at all? (PS: I have the newest version of fire tv and fire stick which are not rooted and can't be as far as I'm aware)
You can use ADB commands. I demonstrate on the example of an alternative keyboard which I develop - Fire TV Style keyboard.
Link to the keyboard added in private message. If you have any questions - write a private message.
How to install and activate the root privileges are not required (enter commands in the queue):
Code:
adb connect 192.168.1.134:5555
adb install /home/semitop7/FireTV_style_keyboard.apk
- (Instead of / home / semitop7 / - indicate your way to the .apk file).
Code:
adb shell ime list -a
- Pop up about such a list:
com.amazon.tv.ime/.FireTVIME:
mId=com.amazon.tv.ime/.FireTVIME mSettingsActivityName=null
mIsDefaultResId=0x0
Service:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
ServiceInfo:
name=com.amazon.tv.ime.FireTVIME
packageName=com.amazon.tv.ime
enabled=true exported=true processName=com.amazon.tv.ime
permission=android.permission.BIND_INPUT_METHOD
flags=0x0
com.example.semitop7.FireTVStyle/.FireTVStyleIME:
mId=com.example.semitop7.FireTVStyle/.FireTVStyleIME mSettingsActivityName=null
mIsDefaultResId=0x0
Service:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
ServiceInfo:
name=com.example.semitop7.FireTVStyle/.FireTVStyleIME
packageName=com.example.semitop7.mydpadkeyboard
labelRes=0x7f07001d nonLocalizedLabel=null icon=0x0 banner=0x0
enabled=true exported=true processName=com.example.semitop7.mydpadkeyboard
permission=android.permission.BIND_INPUT_METHOD
flags=0x0
com.amazon.tv.ime/.FireTVIME - native keyboard Fire TV Stick
com.example.semitop7.FireTVStyle/.FireTVStyleIME - Keyboard Fire TV style keyboard
Now, we activate the keyboard and put it by default:
Code:
adb shell ime enable com.example.semitop7.FireTVStyle/.FireTVStyleIME
adb shell ime set com.example.semitop7.FireTVStyle/.FireTVStyleIME
To revert back to the native keyboard type:
Code:
adb shell ime set com.amazon.tv.ime/.FireTVIME
Thanks for the write up! Having a bit of a problem still though...
I'm installing app - Remote keyboard 1.7 by onyxbits
I install it, it says to set remote keyboard as the new input but when I open adb shell and tell it to list keyboards, it doesn't seem to be there...
Have any ideas?
I install Remote keyboard 1.7 by onyxbits in my Fire TV Stick and I have everything working well. To connect telnet i using putty.
Here is my response for:
Code:
adb shell ime list -a
- Pop up about such a list:
com.amazon.tv.ime/.FireTVIME:
mId=com.amazon.tv.ime/.FireTVIME mSettingsActivityName=null
mIsDefaultResId=0x0
Service:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
ServiceInfo:
name=com.amazon.tv.ime.FireTVIME
packageName=com.amazon.tv.ime
enabled=true exported=true processName=com.amazon.tv.ime
permission=android.permission.BIND_INPUT_METHOD
flags=0x0
com.example.semitop7.FireTVStyle/.FireTVStyleIME:
mId=com.example.semitop7.FireTVStyle/.FireTVStyleIME mSettingsActivityName=null
mIsDefaultResId=0x0
Service:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
ServiceInfo:
name=com.example.semitop7.FireTVStyle.FireTVStyleIME
packageName=com.example.semitop7.FireTVStyle
labelRes=0x7f070026 nonLocalizedLabel=null icon=0x0 banner=0x0
enabled=true exported=true processName=com.example.semitop7.FireTVStyle
permission=android.permission.BIND_INPUT_METHOD
flags=0x0
de.onyxbits.remotekeyboard/.RemoteKeyboardService:
mId=de.onyxbits.remotekeyboard/.RemoteKeyboardService mSettingsActivityName=de.onyxbits.remotekeyboard.SettingsActivity
mIsDefaultResId=0x0
Service:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
ServiceInfo:
name=de.onyxbits.remotekeyboard.RemoteKeyboardService
packageName=de.onyxbits.remotekeyboard
enabled=true exported=true processName=de.onyxbits.remotekeyboard
permission=android.permission.BIND_INPUT_METHOD
flags=0x0
You can also use LeanKey keyboard (can't place links yet, it is on the second page in General, 10th from the top)
Worked! Thanks man, I owe ya a beer!
Maybe you/someone else could help me with one last thing?
I'm looking to be able to change my tv's input from my pc. I've thought of a few things so far...
I've looked into HDMI CEC but my laptop I'm using is older and uses vga with an HDMI converter.
So doubt my PC could control CEC with the converter? Couldn't find too much info on this but this is what I'm assuming?
I've read Fire TV's have CEC control... Maybe I can send a adb shell command to switch inputs?
I've also heard some TV's are able to be controlled over your home network from api's what not.
I have a smart vizio tv... Haven't been able to figure out how to do this, don't think you can with vizios...
So my last solution would be some kind of ir blaster that connects to my pc that allows me
to switch my input from my pc. Do you guys know of any cheap ir blaster that will do this or have another solution?
Related
Try this
https://play.google.com/store/apps/details?id=com.wparam.nullkeyboard
Or
https://www.dropbox.com/s/spsemqwbq95mat9/Null Keyboard-com.wparam.nullkeyboard-5-vone.apk
https://www.dropbox.com/s/u2e9dm39nr8rw70/Settings.apk
http://apps.evozi.com/apk-downloader - did not work.
1 - Download and install Null Keyboard and settings.apk if you don't have it already.
2 - Open settings (settings.apk)
3 - Scroll down and click on 'Language & Input'
4 - With a mouse click the box for Null Keyboard then click OK
5 - Then click Default - With a mouse or remote click Null keyboard.
It should now say 'Null Keyboard' under 'KEYBOARD & INPUT METHODS' - Default
Screenshot
https://www.dropbox.com/s/to41058fbk5c2cn/2014_06_26_05.46.34.png
Update:
I could not get this to work again after factory reset.
It was not until I re-installed Xposed installer and the HDXPosed module, then it worked again.
Is this working for everyone? - my AFTV is rooted
..
Can anyone confirm if that settings.apk works? I've tried to install in the past and received a user incompatibility error.
JJ-KwiK said:
The first 2 links in your post are broken.
Click to expand...
Click to collapse
Fixed them - Thanks
It works,but most options cause it to immediately close.
The damn Languages and Input option closes on my Fire TV.
It makes it impossible to select null keyboard an option.
Can someone try to find a settings.apk from a 4.2.2 device?
Un-installed and re-installed settings.apk a few time and it worked.
Now it no longer installs and the Titanium back-up I had of it wont restore either.
It did work for my BT headphones and the Input settings.
I found a stupidly easy solution!
Just open ES File Explorer and enable the root explorer option to gain root access with ES.
Then go to "system/app/" and rename both BuellerIME apk and odex files to what I named them "BuellerIMEx.apk/BuellerIMEx.odex"
Now I no longer get the annoying keyboard popping up and forcing me to another page or completely killing access to the app until force stopped.
retroben said:
I found a stupidly easy solution!
Just open ES File Explorer and enable the root explorer option to gain root access with ES.
Then go to "system/app/" and rename both BuellerIME apk and odex files to what I named them "BuellerIMEx.apk/BuellerIMEx.odex"
Now I no longer get the annoying keyboard popping up and forcing me to another page or completely killing access to the app until force stopped.
Click to expand...
Click to collapse
Nice, basically just de-activating the apk from even running by renaming.
I just thought of another much safer idea if somebody can find the com.name of BuellerIME.
First,you would revert the name changes,and then do the pm disable command after somebody can figure out the com-name for it.
Try reverting the rename and using this in a Terminal Emulator app.
pm list packages -f
If somebody finds the proper com-name before I can reply with it,please post it in a reply.
If use use titanium backup to try and uninstall it, it should give you the package name on the confirmation screen. And then you can cancel the uninstall before you actually remove it. That may work for getting the name.
Found it using 7zipper 2.0 by viewing the details which required root access and was granted.
com.amazon.tv.ime
Just do the same steps as you would for dcp.
adb shell
su
pm disable com.amazon.tv.ime
And then it should no longer appear so you will never need to worry about the problems that could be caused by renaming it.
Ok so after testing using the method mentioned above it does in fact hide the on screen keyboard but it also completely disables the possibility of entering text in certain instances. For example, I enabled the above and disabled the similar method used for blocking. My FTV wasnt finding the update so I went to network settings and forgot my wifi network. When I tried to reconnect by selecting the network name there is no option at all to enter text of any sorts. I actually had to remove the password from my network connect unsecured and reconnect in to adb to disable the keyboard hiding to be able to reconnect to a secured network.
retroben said:
Found it using 7zipper 2.0 by viewing the details which required root access and was granted.
com.amazon.tv.ime
Just do the same steps as you would for dcp.
adb shell
su
pm disable com.amazon.tv.ime
And then it should no longer appear so you will never need to worry about the problems that could be caused by renaming it.
Click to expand...
Click to collapse
Great. Works like a charm!
Sent from my SCH-I545 using XDA Premium 4 mobile app
retroben said:
Found it using 7zipper 2.0 by viewing the details which required root access and was granted.
com.amazon.tv.ime
Just do the same steps as you would for dcp.
adb shell
su
pm disable com.amazon.tv.ime
And then it should no longer appear so you will never need to worry about the problems that could be caused by renaming it.
Click to expand...
Click to collapse
nice! worked for me. thanks. I have a friend with an unrooted AFTV. is there a way to run the command without root, or is it needed?
shutterslaps said:
nice! worked for me. thanks. I have a friend with an unrooted AFTV. is there a way to run the command without root, or is it needed?
Click to expand...
Click to collapse
Anytme you use the "su" command you have to be rooted, so no it will not work on unrooted devices.
shutterslaps said:
nice! worked for me. thanks. I have a friend with an unrooted AFTV. is there a way to run the command without root, or is it needed?
Click to expand...
Click to collapse
You can use ADB commands. I demonstrate on the example of an alternative keyboard which I develop - Fire TV Style keyboard.
How to install and activate the root privileges are not required (enter commands in the queue):
Code:
adb connect 192.168.1.134:5555
adb install /home/semitop7/FireTV_style_keyboard.apk
- (Instead of / home / semitop7 / - indicate your way to the .apk file).
Code:
adb shell ime list -a
- Pop up about such a list:
com.amazon.tv.ime/.FireTVIME:
mId=com.amazon.tv.ime/.FireTVIME mSettingsActivityName=null
mIsDefaultResId=0x0
Service:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
ServiceInfo:
name=com.amazon.tv.ime.FireTVIME
packageName=com.amazon.tv.ime
enabled=true exported=true processName=com.amazon.tv.ime
permission=android.permission.BIND_INPUT_METHOD
flags=0x0
com.example.semitop7.FireTVStyle/.FireTVStyleIME:
mId=com.example.semitop7.FireTVStyle/.FireTVStyleIME mSettingsActivityName=null
mIsDefaultResId=0x0
Service:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
ServiceInfo:
name=com.example.semitop7.FireTVStyle/.FireTVStyleIME
packageName=com.example.semitop7.mydpadkeyboard
labelRes=0x7f07001d nonLocalizedLabel=null icon=0x0 banner=0x0
enabled=true exported=true processName=com.example.semitop7.mydpadkeyboard
permission=android.permission.BIND_INPUT_METHOD
flags=0x0
com.amazon.tv.ime/.FireTVIME - native keyboard Fire TV Stick
com.example.semitop7.FireTVStyle/.FireTVStyleIME - Keyboard Fire TV style keyboard
Now, we activate the keyboard and put it by default:
Code:
adb shell ime enable com.example.semitop7.FireTVStyle/.FireTVStyleIME
adb shell ime set com.example.semitop7.FireTVStyle/.FireTVStyleIME
To revert back to the native keyboard type:
Code:
adb shell ime set com.amazon.tv.ime/.FireTVIME
I am following your instructions to replace the keyboard (with Swiftkey). When I try and run the Enable command I get "Error Unknown ID: com.amazon.tv.ime/.FireTVIME"
Looks like the actual ID is com.amazon.tv.ime/ .FireTVIME
Not sure what to do now. Any ideas?
I'm not rooted Fire 2 5.2.1.1
sem_top7 said:
You can use ADB commands. I demonstrate on the example of an alternative keyboard which I develop - Fire TV Style keyboard.
How to install and activate the root privileges are not required (enter commands in the queue):
Code:
adb connect 192.168.1.134:5555
adb install /home/semitop7/FireTV_style_keyboard.apk
- (Instead of / home / semitop7 / - indicate your way to the .apk file).
Code:
adb shell ime list -a
- Pop up about such a list:
com.amazon.tv.ime/.FireTVIME:
mId=com.amazon.tv.ime/.FireTVIME mSettingsActivityName=null
mIsDefaultResId=0x0
Service:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
ServiceInfo:
name=com.amazon.tv.ime.FireTVIME
packageName=com.amazon.tv.ime
enabled=true exported=true processName=com.amazon.tv.ime
permission=android.permission.BIND_INPUT_METHOD
flags=0x0
com.example.semitop7.FireTVStyle/.FireTVStyleIME:
mId=com.example.semitop7.FireTVStyle/.FireTVStyleIME mSettingsActivityName=null
mIsDefaultResId=0x0
Service:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
ServiceInfo:
name=com.example.semitop7.FireTVStyle/.FireTVStyleIME
packageName=com.example.semitop7.mydpadkeyboard
labelRes=0x7f07001d nonLocalizedLabel=null icon=0x0 banner=0x0
enabled=true exported=true processName=com.example.semitop7.mydpadkeyboard
permission=android.permission.BIND_INPUT_METHOD
flags=0x0
com.amazon.tv.ime/.FireTVIME - native keyboard Fire TV Stick
com.example.semitop7.FireTVStyle/.FireTVStyleIME - Keyboard Fire TV style keyboard
Now, we activate the keyboard and put it by default:
Code:
adb shell ime enable com.example.semitop7.FireTVStyle/.FireTVStyleIME
adb shell ime set com.example.semitop7.FireTVStyle/.FireTVStyleIME
To revert back to the native keyboard type:
Code:
adb shell ime set com.amazon.tv.ime/.FireTVIME
Click to expand...
Click to collapse
pd555 said:
I am following your instructions to replace the keyboard (with Swiftkey). When I try and run the Enable command I get "Error Unknown ID: com.amazon.tv.ime/.FireTVIME"
Looks like the actual ID is com.amazon.tv.ime/ .FireTVIME
Not sure what to do now. Any ideas?
I'm not rooted Fire 2 5.2.1.1
Click to expand...
Click to collapse
This ID is specified for example. He's on my Fire TV Stick. Most likely you he has a different ID. To see your ID:
Code:
adb shell ime list -a
- Pop up about such a list:
com.amazon.tv.ime/.FireTVIME:
mId=com.amazon.tv.ime/.FireTVIME mSettingsActivityName=null
mIsDefaultResId=0x0
Service:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
ServiceInfo:
name=com.amazon.tv.ime.FireTVIME
packageName=com.amazon.tv.ime
enabled=true exported=true processName=com.amazon.tv.ime
permission=android.permission.BIND_INPUT_METHOD
flags=0x0
com.example.semitop7.FireTVStyle/.FireTVStyleIME:
mId=com.example.semitop7.FireTVStyle/.FireTVStyleIME mSettingsActivityName=null
mIsDefaultResId=0x0
Service:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
ServiceInfo:
name=com.example.semitop7.FireTVStyle/.FireTVStyleIME
packageName=com.example.semitop7.mydpadkeyboard
labelRes=0x7f07001d nonLocalizedLabel=null icon=0x0 banner=0x0
enabled=true exported=true processName=com.example.semitop7.mydpadkeyboard
permission=android.permission.BIND_INPUT_METHOD
flags=0x0
See after the line mId=
For example on my Fire TV Stick:
com.amazon.tv.ime/.FireTVIME - native keyboard Fire TV Stick
com.example.semitop7.FireTVStyle/.FireTVStyleIME - Keyboard Fire TV style keyboard
You can also use this command:
Code:
adb shell ime list -s
But if the keyboard is install but not activated ID udet not shown by this team. So I recommend to use the first command
Code:
adb shell ime list -a
.
Thanks but I am typing
adb shell ime enable com.touchtype.swiftkey/com.touchtype.keyboardservice
and that gives me the error
"Error Unknown ID: com.amazon.tv.ime/.FireTVIME"
Sorry I didn't make that clearer
sem_top7 said:
This ID is specified for example. He's on my Fire TV Stick. Most likely you he has a different ID. To see your ID:
Code:
adb shell ime list -a
- Pop up about such a list:
com.amazon.tv.ime/.FireTVIME:
mId=com.amazon.tv.ime/.FireTVIME mSettingsActivityName=null
mIsDefaultResId=0x0
Service:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
ServiceInfo:
name=com.amazon.tv.ime.FireTVIME
packageName=com.amazon.tv.ime
enabled=true exported=true processName=com.amazon.tv.ime
permission=android.permission.BIND_INPUT_METHOD
flags=0x0
com.example.semitop7.FireTVStyle/.FireTVStyleIME:
mId=com.example.semitop7.FireTVStyle/.FireTVStyleIME mSettingsActivityName=null
mIsDefaultResId=0x0
Service:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
ServiceInfo:
name=com.example.semitop7.FireTVStyle/.FireTVStyleIME
packageName=com.example.semitop7.mydpadkeyboard
labelRes=0x7f07001d nonLocalizedLabel=null icon=0x0 banner=0x0
enabled=true exported=true processName=com.example.semitop7.mydpadkeyboard
permission=android.permission.BIND_INPUT_METHOD
flags=0x0
See after the line mId=
For example on my Fire TV Stick:
com.amazon.tv.ime/.FireTVIME - native keyboard Fire TV Stick
com.example.semitop7.FireTVStyle/.FireTVStyleIME - Keyboard Fire TV style keyboard
You can also use this command:
Code:
adb shell ime list -s
But if the keyboard is install but not activated ID udet not shown by this team. So I recommend to use the first command
Code:
adb shell ime list -a
.
Click to expand...
Click to collapse
Hi,
i have set up a fireTV for a friend and they often need my support. Would be great if i could control their FireTV from my PC
But can this be done without root?
Ive tried Teamviewer Quicksupport which is great to view their screen but restrictions are in place to stop me controlling.
Any ideas?
Thanks
you can use ADB, "adb shell input keyevent *"
replace * by:
Code:
1 --> "KEYCODE_MENU"
2 --> "KEYCODE_SOFT_RIGHT"
3 --> "KEYCODE_HOME"
4 --> "KEYCODE_BACK"
5 --> "KEYCODE_CALL"
6 --> "KEYCODE_ENDCALL"
7 --> "KEYCODE_0"
8 --> "KEYCODE_1"
9 --> "KEYCODE_2"
10 --> "KEYCODE_3"
11 --> "KEYCODE_4"
12 --> "KEYCODE_5"
13 --> "KEYCODE_6"
14 --> "KEYCODE_7"
15 --> "KEYCODE_8"
16 --> "KEYCODE_9"
17 --> "KEYCODE_STAR"
18 --> "KEYCODE_POUND"
19 --> "KEYCODE_DPAD_UP"
20 --> "KEYCODE_DPAD_DOWN"
21 --> "KEYCODE_DPAD_LEFT"
22 --> "KEYCODE_DPAD_RIGHT"
23 --> "KEYCODE_DPAD_CENTER"
24 --> "KEYCODE_VOLUME_UP"
25 --> "KEYCODE_VOLUME_DOWN"
26 --> "KEYCODE_POWER"
27 --> "KEYCODE_CAMERA"
28 --> "KEYCODE_CLEAR"
29 --> "KEYCODE_A"
30 --> "KEYCODE_B"
31 --> "KEYCODE_C"
32 --> "KEYCODE_D"
33 --> "KEYCODE_E"
34 --> "KEYCODE_F"
35 --> "KEYCODE_G"
36 --> "KEYCODE_H"
37 --> "KEYCODE_I"
38 --> "KEYCODE_J"
39 --> "KEYCODE_K"
40 --> "KEYCODE_L"
41 --> "KEYCODE_M"
42 --> "KEYCODE_N"
43 --> "KEYCODE_O"
44 --> "KEYCODE_P"
45 --> "KEYCODE_Q"
46 --> "KEYCODE_R"
47 --> "KEYCODE_S"
48 --> "KEYCODE_T"
49 --> "KEYCODE_U"
50 --> "KEYCODE_V"
51 --> "KEYCODE_W"
52 --> "KEYCODE_X"
53 --> "KEYCODE_Y"
54 --> "KEYCODE_Z"
55 --> "KEYCODE_COMMA"
56 --> "KEYCODE_PERIOD"
57 --> "KEYCODE_ALT_LEFT"
58 --> "KEYCODE_ALT_RIGHT"
59 --> "KEYCODE_SHIFT_LEFT"
60 --> "KEYCODE_SHIFT_RIGHT"
61 --> "KEYCODE_TAB"
62 --> "KEYCODE_SPACE"
63 --> "KEYCODE_SYM"
64 --> "KEYCODE_EXPLORER"
65 --> "KEYCODE_ENVELOPE"
66 --> "KEYCODE_ENTER"
67 --> "KEYCODE_DEL"
68 --> "KEYCODE_GRAVE"
69 --> "KEYCODE_MINUS"
70 --> "KEYCODE_EQUALS"
71 --> "KEYCODE_LEFT_BRACKET"
72 --> "KEYCODE_RIGHT_BRACKET"
73 --> "KEYCODE_BACKSLASH"
74 --> "KEYCODE_SEMICOLON"
75 --> "KEYCODE_APOSTROPHE"
76 --> "KEYCODE_SLASH"
77 --> "KEYCODE_AT"
78 --> "KEYCODE_NUM"
79 --> "KEYCODE_HEADSETHOOK"
80 --> "KEYCODE_FOCUS"
81 --> "KEYCODE_PLUS"
82 --> "KEYCODE_MENU"
83 --> "KEYCODE_NOTIFICATION"
84 --> "KEYCODE_SEARCH"
85 --> "TAG_LAST_KEYCODE"
DEREKTROTTER said:
Hi,
i have set up a fireTV for a friend and they often need my support. Would be great if i could control their FireTV from my PC
But can this be done without root?
Ive tried Teamviewer Quicksupport which is great to view their screen but restrictions are in place to stop me controlling.
Any ideas?
Thanks
Click to expand...
Click to collapse
I also would like to know how to help a friend out who lives 200 miles away & say custom there Kodi for them remotely via a pc that would be great! Not sure if you can do this without root access or not? But I was looking at ES File Explorer but don't think it has the options to do this remotely?
desmopro said:
you can use ADB, "adb shell input keyevent *"
replace * by:
Code:
1 --> "KEYCODE_MENU"
Click to expand...
Click to collapse
not very ideal is it, will take forever this way
DEREKTROTTER said:
not very ideal is it, will take forever this way
Click to expand...
Click to collapse
Just been looking on the Playstore if you just wanna use it for the basics like using in the same room there are a few apps but they all have a few flaws, & could probably side load them to your fire tv
Sent from my SM-G900F using Tapatalk
Heck - on Android 5.1 you even have problems navigating with a remote, a mouse emulator on a cellphone near by AND a fully fledged PC that is remapped (as suggested above) to send adb keyinputs - when you are just a few feet away from the system.
Why?
Well
- Wukong (mouse emulator) uses a adb command to perform the actual click action - and with Android 5.1 in one out of three cases that doesnt work without toggling off/on "enable adb" on the device via remote first. Of course this option is meant to be hidden in a submenu of the system settings. Because we dont want anyone to actually use it.
- Even with a real mouse attached - you frequently get missing courser syndrome - or are remindend that Android often depends on multi touch - and no one thought to support that with the mouse interface. So - you often stumble from "works fine" to "entirely unusable" scenarios - because f.e. swipe left would be needed.
- Key input commands via adb have a huge lag - that is caused by how adb handles them. Google itself has acknowledged in the past, that its bad.
- TV Remote based interfaces on Android are a somewhat new thing for everyone involved - after playing a bit with the Fire TV and the google leanback interfaces - its obvious that neither has found a design laguage that would actually work for complex workflows. Its almost shocking how "vanilla" and simple googles own leanback interfaces are - or have to be for their prototypical consumer.
- Most Apps expect touch. Cursor navigation is about as fluent as a medicore accessibility implementation (hit and miss, multiple times within one app).
- On screen keyboards from time to time can even prevent you from editing an screen text - because Amazons keyboard f.e. only knows lines - and refuses to touch anything with paragraphs.
- Controller navigation - something consoles nailed for about a century by now - and more recently even gets to be kind of a working standard even on more PC "like" plattforms - on Android is still horribly broken. Developers often fall back to the "emulate touch behavior with your controller" scheme of thinking - which leads to gems like "dont just press accept (A), select in row, then press down to select accept button (BIIIG because its a touch target), then press accept (A) on it.
- The Input lag on all Fire TV devices is just horrible. Most Action Games are bordering on being unplayable. But no one cares - because what people really want to talk about is which one of the 100 Bluetooth controllers to buy.
And on top of that you want to introduce Teamviewer Style remote support? From what? Another Fire TV, a PC with a mouse and keyboard interface?
When that industry just went through educating their customers, that you use iPads to control your Windows PC? How should they advertise that some people would want it the other way around? From my point of view its entirely impossible to differentiate and reeducate the consumer for this usecase - it will never happen.
-
Touch from the beginning was a horrible concept. But we made it work - using a very strict form language and an entire backpack of conventions. Now we find out, that the "second screen experience" to control another screen is something that is dead in the water. Although it shouldnt have played out this way as far as google is concerned (Chromecast).
We find more and more that Android might be unable to overcome everything being so tightly focused on touch conventions - because there is no convention on how to replace each aspect of navigation with non touch based inputs.
Consoles had the form language - but turned out to be too expensive for what the mass market needs.
So in the end we go all in on voice once more - in a way where complex prompts must be understood and "insta surface" the right result - because everything else is o broken.
And to top it off - google restricts adb to "one connection active at any time" in Android 5, because when you make sure that command line suddenly is the fastest way to get things done again - it surely had to be enhanced by getting into a submenu via your TV remote first - as the only way to tell the Android device that something using this "connection" should have timed out 20 minutes ago, opening the "port" again - but didnt.
User experience on everything BUT Kodi - is horrible in this eco system. (Kodi can be controlled by Mouse, Keyboard, Controller or TV Remote just fine - ).
With no obvious way out of it. Good Interface design costs real money - an no one is interested. Least of all the vendors in the west that want to push their three apps and their subscription model on top of the cheapest smartphone based hardware ecosystem they could get their hands on in the east.
edit: A few more examples needed? The google play store lean back experience makes sure you cant have any settings layer that isnt created for nested intent (if user wants to buy - make him click on buy, then lead him down those steps). The entire store interface cant have more than two settings options. One of them is parental control.
The leanback interface of google Music lacks every single one of the settings the phone app has. When you are listening to a song you cant even decide to have the progress and songtitle displayed - thats a "surface on single click, then unsurface after three seconds - part of the the only interface there is - main navigation".
You cant chose between a stock photo of the artist, or an Album cover. You cant disable that folders on the device are being integrated into your Albums category (not even .nomedia works)...
So while it is appealing on first glance - it really, really isnt after you get to know it. Dumbed down to were its just barely working for what its made up to be. And at the same time - straight up, a functional mess.
---------- Post added at 09:25 PM ---------- Previous post was at 08:46 PM ----------
But in the problem solving horizon of the "smartphone generation user" -- the question asked in here of course again turns out to be -
"What app should I install to fix this?"
I think Apple should finally have someone else creating a "world peace" app, then cut into their revenue stream with 30%. I would buy that. And google for sure would copy it!
Footnote: "Some say it's the silicon valley way of problem solving."
Just to show you guys a bit more - this a .xml for Karabiner ( https://pqrs.org/osx/karabiner/ ) that I created a few months ago.
Code:
<?xml version="1.0"?>
<root>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_enter</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 66 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_back</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 4 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_pause</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 85 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_left</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 21 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_right</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 22 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_up</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 19 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_down</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 20 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_home</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 3 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_menu</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 82 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_kodi</name>
<url type="shell">
<![CDATA[ adb shell monkey -p org.xbmc.kodi -c android.intent.category.LAUNCHER 1 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_firestarter</name>
<url type="shell">
<![CDATA[ adb shell monkey -p de.belu.firestarter -c android.intent.category.LAUNCHER 1 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_a</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 29 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_b</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 30 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_c</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 31 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_d</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 32 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_e</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 33 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_f</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 34 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_g</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 35 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_h</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 36 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_i</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 37 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_j</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 38 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_k</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 39 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_l</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 40 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_m</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 41 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_n</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 42 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_o</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 43 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_p</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 44 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_q</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 45 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_r</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 46 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_s</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 47 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_t</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 48 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_u</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 49 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_v</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 50 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_w</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 51 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_x</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 52 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_y</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 54 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_z</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 53 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_space</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 62 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_0</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 7 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_1</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 8 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_2</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 9 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_3</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 10 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_4</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 11 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_5</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 12 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_6</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 13 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_7</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 14 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_8</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 15 ]]>
</url>
</vkopenurldef>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_SHELL_9</name>
<url type="shell">
<![CDATA[ adb shell input keyevent 16 ]]>
</url>
</vkopenurldef>
<item>
<name>Change Control+Alt+Backspace to Ctrl+Alt+Delete</name>
<identifier>remap.ControlAltBackspace2CtrlAltDelete</identifier>
<autogen>
__KeyToKey__
KeyCode::DELETE, ModifierFlag::COMMAND_L, ModifierFlag::CONTROL_L,
KeyCode::FORWARD_DELETE, ModifierFlag::COMMAND_L, ModifierFlag::CONTROL_L
</autogen>
</item>
<item>
<name>MapFireRemote</name>
<identifier>MapFireRemote</identifier>
<autogen>
__KeyToKey__
KeyCode::RETURN,
KeyCode::VK_OPEN_URL_SHELL_enter
</autogen>
<autogen>
__KeyToKey__
KeyCode::DELETE,
KeyCode::VK_OPEN_URL_SHELL_back
</autogen>
<autogen>
__KeyToKey__
KeyCode::CURSOR_LEFT,
KeyCode::VK_OPEN_URL_SHELL_left
</autogen>
<autogen>
__KeyToKey__
KeyCode::CURSOR_RIGHT,
KeyCode::VK_OPEN_URL_SHELL_right
</autogen>
<autogen>
__KeyToKey__
KeyCode::CURSOR_UP,
KeyCode::VK_OPEN_URL_SHELL_up
</autogen>
<autogen>
__KeyToKey__
KeyCode::CURSOR_DOWN,
KeyCode::VK_OPEN_URL_SHELL_down
</autogen>
<autogen>
__KeyToKey__
KeyCode::DOT,
KeyCode::VK_OPEN_URL_SHELL_kodi
</autogen>
<autogen>
__KeyToKey__
KeyCode::COMMA,
KeyCode::VK_OPEN_URL_SHELL_firestarter
</autogen>
<autogen>
__KeyToKey__
KeyCode::GERMAN_LESS_THAN,
KeyCode::VK_OPEN_URL_SHELL_home
</autogen>
<autogen>
__KeyToKey__
KeyCode::SPACE,
KeyCode::VK_OPEN_URL_SHELL_space
</autogen>
<autogen>
__KeyToKey__
KeyCode::A,
KeyCode::VK_OPEN_URL_SHELL_a
</autogen>
<autogen>
__KeyToKey__
KeyCode::B,
KeyCode::VK_OPEN_URL_SHELL_b
</autogen>
<autogen>
__KeyToKey__
KeyCode::C,
KeyCode::VK_OPEN_URL_SHELL_c
</autogen>
<autogen>
__KeyToKey__
KeyCode::D,
KeyCode::VK_OPEN_URL_SHELL_d
</autogen>
<autogen>
__KeyToKey__
KeyCode::E,
KeyCode::VK_OPEN_URL_SHELL_e
</autogen>
<autogen>
__KeyToKey__
KeyCode::F,
KeyCode::VK_OPEN_URL_SHELL_f
</autogen>
<autogen>
__KeyToKey__
KeyCode::G,
KeyCode::VK_OPEN_URL_SHELL_g
</autogen>
<autogen>
__KeyToKey__
KeyCode::H,
KeyCode::VK_OPEN_URL_SHELL_h
</autogen>
<autogen>
__KeyToKey__
KeyCode::I,
KeyCode::VK_OPEN_URL_SHELL_i
</autogen>
<autogen>
__KeyToKey__
KeyCode::J,
KeyCode::VK_OPEN_URL_SHELL_j
</autogen>
<autogen>
__KeyToKey__
KeyCode::K,
KeyCode::VK_OPEN_URL_SHELL_k
</autogen>
<autogen>
__KeyToKey__
KeyCode::L,
KeyCode::VK_OPEN_URL_SHELL_l
</autogen>
<autogen>
__KeyToKey__
KeyCode::M,
KeyCode::VK_OPEN_URL_SHELL_m
</autogen>
<autogen>
__KeyToKey__
KeyCode::N,
KeyCode::VK_OPEN_URL_SHELL_n
</autogen>
<autogen>
__KeyToKey__
KeyCode::eek:,
KeyCode::VK_OPEN_URL_SHELL_o
</autogen>
<autogen>
__KeyToKey__
KeyCode::P,
KeyCode::VK_OPEN_URL_SHELL_p
</autogen>
<autogen>
__KeyToKey__
KeyCode::Q,
KeyCode::VK_OPEN_URL_SHELL_q
</autogen>
<autogen>
__KeyToKey__
KeyCode::R,
KeyCode::VK_OPEN_URL_SHELL_r
</autogen>
<autogen>
__KeyToKey__
KeyCode::S,
KeyCode::VK_OPEN_URL_SHELL_s
</autogen>
<autogen>
__KeyToKey__
KeyCode::T,
KeyCode::VK_OPEN_URL_SHELL_t
</autogen>
<autogen>
__KeyToKey__
KeyCode::U,
KeyCode::VK_OPEN_URL_SHELL_u
</autogen>
<autogen>
__KeyToKey__
KeyCode::V,
KeyCode::VK_OPEN_URL_SHELL_v
</autogen>
<autogen>
__KeyToKey__
KeyCode::W,
KeyCode::VK_OPEN_URL_SHELL_w
</autogen>
<autogen>
__KeyToKey__
KeyCode::X,
KeyCode::VK_OPEN_URL_SHELL_x
</autogen>
<autogen>
__KeyToKey__
KeyCode::Y,
KeyCode::VK_OPEN_URL_SHELL_y
</autogen>
<autogen>
__KeyToKey__
KeyCode::Z,
KeyCode::VK_OPEN_URL_SHELL_z
</autogen>
<autogen>
__KeyToKey__
KeyCode::KEY_0,
KeyCode::VK_OPEN_URL_SHELL_0
</autogen>
<autogen>
__KeyToKey__
KeyCode::KEY_1,
KeyCode::VK_OPEN_URL_SHELL_1
</autogen>
<autogen>
__KeyToKey__
KeyCode::KEY_2,
KeyCode::VK_OPEN_URL_SHELL_2
</autogen>
<autogen>
__KeyToKey__
KeyCode::KEY_3,
KeyCode::VK_OPEN_URL_SHELL_3
</autogen>
<autogen>
__KeyToKey__
KeyCode::KEY_4,
KeyCode::VK_OPEN_URL_SHELL_4
</autogen>
<autogen>
__KeyToKey__
KeyCode::KEY_5,
KeyCode::VK_OPEN_URL_SHELL_5
</autogen>
<autogen>
__KeyToKey__
KeyCode::KEY_6,
KeyCode::VK_OPEN_URL_SHELL_6
</autogen>
<autogen>
__KeyToKey__
KeyCode::KEY_7,
KeyCode::VK_OPEN_URL_SHELL_7
</autogen>
<autogen>
__KeyToKey__
KeyCode::KEY_8,
KeyCode::VK_OPEN_URL_SHELL_8
</autogen>
<autogen>
__KeyToKey__
KeyCode::KEY_9,
KeyCode::VK_OPEN_URL_SHELL_9
</autogen>
</item>
</root>
And this is the corresponding little Applescript program that is used to trigger it.
Code:
tell application "Terminal"
do script "~/Documents/FireRemote/connecth.sh"
end tell
tell application "System Events"
tell application process "Terminal"
set frontmost to true
keystroke "h" using command down
end tell
end tell
do shell script "/bin/sleep 0.5"
tell application "Terminal" to quit
do shell script "/Applications/KeyRemap4MacBook.app/Contents/Applications/KeyRemap4MacBook_cli.app/Contents/MacOS/KeyRemap4MacBook_cli enable MapFireRemote"
tell application "Finder"
with timeout of 7200 seconds
display dialog "Key Remap aktiv" with title "Map Fire Remote" buttons {"Beenden"} default button "Beenden"
if the button returned of the result is "Beenden" then
do shell script "adb disconnect"
do shell script "/Applications/KeyRemap4MacBook.app/Contents/Applications/KeyRemap4MacBook_cli.app/Contents/MacOS/KeyRemap4MacBook_cli disable MapFireRemote"
tell application "System Events"
set p to first process whose frontmost is true
if name of p is "Finder" then
set visible of p to false
end if
end tell
end if
end timeout
end tell
Just to give you an idea of how valuable every little piece of interfacing possibility on those Android devices is. And it had all been realized through adb because it is the only open interface (slightly different use of the word.. ) we have left for two devices still being allowed to talk to each other. And adb actually sucks for sending emulated keyboard inputs.
When you have Teamviewer on your iPad, thats a videofeed, a virtual keyboard and a emulated touchpad, pressed into one app. Talking to a PC. Thats easy. Now - the other way around, not so much. Remember - part of the "streaming paradigm" is - we only want you to be able to touch buttons that show up somewhere on that screen (buy, or skip ad) - and we understand that you want to do this in the highest security environment possible - which is why we dont allow you to be root on your devices anymore. And which is why we cram all the rest in the bluetooth standard interface protocol. ("Nothing more intelligent than a signal any keyboard could send should be able to reach my devices from the unprotected outside, I always say! Just touch on the hermetically sealed screen, that is included - if you want something more to happen.")
Also if you ever replace the home button, we will brick your device with the next firmware update.
Lingering question: At which point does the "smartphone generation" ask for anything more than an app?
(Or a buying recommendation. )
still need help with this, adb isn't going to cut it when the fireTV i want to control is miles away
surely an app like teamviewer quicksupport which doesnt need root?
it works great to view their screen / apps / system info etc... just amazon restrictions block me controlling
A bit off topic - but if you want Apple to explain to you designing for a TV leanback interface that you primarily control with a TV remote - whilst being talked to like a five year old, so you'd get the concepts - they JUST released a video course on designing TV apps.
https://developer.apple.com/videos/techtalks-apple-tv/
(To watch it on Kodi - use Jdownloader to easily get the direct videolinks, then push them to an .m3u on your Kodi device)
Its astonishing to what level Apple themselves have to retract in teaching people this concept - at one point in the first video they literally will explain to you - that with a remote, you dont directly interact with the interface by touching - but "indirect" via an abstraction layer - called "a button" or "a cursor".
They seem to have some problems as well getting App developers to understand the principal ("well our job description says - we do phone...") - so dont feel too bad, that you didnt pick up on it by now - seemingly most of the devs havent either.
But now that Apple is about to talk to them in a way they surly understand - this is all about to change...
(Too bad - really that second screen didnt work out... The WiiU was such a success...)
@DEREKTROTTER, You can not do this currently unless you have root and the xposed framework and busy box has been added to your device. You have to wait until all of this is complete patience is the key.
I have been running Teamviewer Flawless from my mac and pc laptop for sometime connecting to android devices as well as the fire tv gen 1. That is the only current solution that I see. Using adb is tedious and to the average user is not quite the best method to remote into a device.
DEREKTROTTER said:
Hi,
i have set up a fireTV for a friend and they often need my support. Would be great if i could control their FireTV from my PC
But can this be done without root?
Ive tried Teamviewer Quicksupport which is great to view their screen but restrictions are in place to stop me controlling.
Any ideas?
Thanks
Click to expand...
Click to collapse
this vnc app
http://www.amazon.com/VMLite-Corporation-VNC-Server/dp/B01446M9IG
was $9.99, its now $5.99
it supposedly was the only vnc server to work on ftv1 and ftvsticks and did not even require root. so you can use your pc for display and keyboard arrows to move around. I have not tried it myself and I'm now sure if it works with ftv2. shoot the develop a question and take it from there. good luck
desmopro said:
you can use ADB, "adb shell input keyevent *"
replace * by:
Code:
1 --> "KEYCODE_MENU"
2 --> "KEYCODE_SOFT_RIGHT"
3 --> "KEYCODE_HOME"
4 --> "KEYCODE_BACK"
5 --> "KEYCODE_CALL"
6 --> "KEYCODE_ENDCALL"
7 --> "KEYCODE_0"
8 --> "KEYCODE_1"
9 --> "KEYCODE_2"
10 --> "KEYCODE_3"
11 --> "KEYCODE_4"
12 --> "KEYCODE_5"
13 --> "KEYCODE_6"
14 --> "KEYCODE_7"
15 --> "KEYCODE_8"
16 --> "KEYCODE_9"
17 --> "KEYCODE_STAR"
18 --> "KEYCODE_POUND"
19 --> "KEYCODE_DPAD_UP"
20 --> "KEYCODE_DPAD_DOWN"
21 --> "KEYCODE_DPAD_LEFT"
22 --> "KEYCODE_DPAD_RIGHT"
23 --> "KEYCODE_DPAD_CENTER"
24 --> "KEYCODE_VOLUME_UP"
25 --> "KEYCODE_VOLUME_DOWN"
26 --> "KEYCODE_POWER"
27 --> "KEYCODE_CAMERA"
28 --> "KEYCODE_CLEAR"
29 --> "KEYCODE_A"
30 --> "KEYCODE_B"
31 --> "KEYCODE_C"
32 --> "KEYCODE_D"
33 --> "KEYCODE_E"
34 --> "KEYCODE_F"
35 --> "KEYCODE_G"
36 --> "KEYCODE_H"
37 --> "KEYCODE_I"
38 --> "KEYCODE_J"
39 --> "KEYCODE_K"
40 --> "KEYCODE_L"
41 --> "KEYCODE_M"
42 --> "KEYCODE_N"
43 --> "KEYCODE_O"
44 --> "KEYCODE_P"
45 --> "KEYCODE_Q"
46 --> "KEYCODE_R"
47 --> "KEYCODE_S"
48 --> "KEYCODE_T"
49 --> "KEYCODE_U"
50 --> "KEYCODE_V"
51 --> "KEYCODE_W"
52 --> "KEYCODE_X"
53 --> "KEYCODE_Y"
54 --> "KEYCODE_Z"
55 --> "KEYCODE_COMMA"
56 --> "KEYCODE_PERIOD"
57 --> "KEYCODE_ALT_LEFT"
58 --> "KEYCODE_ALT_RIGHT"
59 --> "KEYCODE_SHIFT_LEFT"
60 --> "KEYCODE_SHIFT_RIGHT"
61 --> "KEYCODE_TAB"
62 --> "KEYCODE_SPACE"
63 --> "KEYCODE_SYM"
64 --> "KEYCODE_EXPLORER"
65 --> "KEYCODE_ENVELOPE"
66 --> "KEYCODE_ENTER"
67 --> "KEYCODE_DEL"
68 --> "KEYCODE_GRAVE"
69 --> "KEYCODE_MINUS"
70 --> "KEYCODE_EQUALS"
71 --> "KEYCODE_LEFT_BRACKET"
72 --> "KEYCODE_RIGHT_BRACKET"
73 --> "KEYCODE_BACKSLASH"
74 --> "KEYCODE_SEMICOLON"
75 --> "KEYCODE_APOSTROPHE"
76 --> "KEYCODE_SLASH"
77 --> "KEYCODE_AT"
78 --> "KEYCODE_NUM"
79 --> "KEYCODE_HEADSETHOOK"
80 --> "KEYCODE_FOCUS"
81 --> "KEYCODE_PLUS"
82 --> "KEYCODE_MENU"
83 --> "KEYCODE_NOTIFICATION"
84 --> "KEYCODE_SEARCH"
85 --> "TAG_LAST_KEYCODE"
Click to expand...
Click to collapse
im trying to use quicksupport to control, i can only view right now
any simplier way to implement this you posted?
Unfortunately, no idea.
I guess for an easier way you might be able to run the remote app on your phone?
I can but I'm trying to control a firetv in another location
If you upgraded ROM in jagnm probably You have broken WiFi that cant connect to almost any hotspot. Check wifi advanced setting for mac - it's 00:00:00:00:00:00
I tried several ROMs - all except factory ROM had this issue. Going back to stock ROM on that device is bad idea, it's old and packed with bulky apps.
Finally I decided to go with unofficial lineage os 15.1 from here: https://vasy.ru/LineageOS-15/jagnm/
Rooted that with supersu, and started console (you can enable it in developer settings or use "adb shell" command from pc - that is more comfortable to write anything).
in console enter su, then bash, and check interfaces:
Code:
C:\adb>adb shell
* daemon not running; starting now at tcp:5037
* daemon started successfully
jagnm:/ $ su
jagnm:/ # bash
jagnm / # ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
(...)
wlan0 Link encap:Ethernet HWaddr 00:00:00:00:00:00 Driver bcmsdh_sdmmc
(...)
jagnm / #
in file /data/misc/wifi/config You will find that cur_etheraddr is set to all zeros,
Code:
jagnm / # cat /data/misc/wifi/config
btc_mode=1
mpc=1
roam_off=0
roam_scan_period=10
roam_delta=20
roam_trigger=-80
PM=2
cur_etheraddr=00:00:00:00:00:00
changing that line to anything restores wifi mac address on next interface restart, let's try:
Code:
jagnm / # sed -i "s/00:/11:/g" /data/misc/wifi/config
jagnm / # ifconfig wlan0 down
jagnm / # ifconfig wlan0 up
jagnm / # fconfig wlan0
wlan0 Link encap:Ethernet HWaddr 00:90:4c:c5:12:38 Driver bcmsdh_sdmmc
inet addr:192.168.1.251 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::290:4cff:fec5:1238/64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:108 errors:0 dropped:0 overruns:0 frame:0
TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:20601 TX bytes:3720
Any change to that line helps to restore original mac address, You can also delete this file chmod it or directory to something unreadable, but it will be recreated to zeros on each restart and problem will come back. I needed to find a way to fix that permanently, I looked for any startup scripts but it seems that init_d is not working on lineage, I followed that guide to fix that: https://forum.xda-developers.com/lineage/general/how-to-enable-init-d-to-function-t3810355
With init_d there is script here: /etc/init.d/90userinit that looks for userscript here: /data/local/userinit.sh so let's put there same thing as above
Code:
jagnm / # echo 'ifconfig wlan0 down && sed -i "s/00:/11:/g" /data/misc/wifi/config && ifconfig wlan0 up' > /data/local/userinit.sh
jagnm / # chmod +x /data/local/userinit.sh
this will fix wifi mac on each restart. Of course You need to make all those each time You flash new rom, but it's not that frequent on so old phone with almost no updates. Probably I'll never use any sim card here, but wifi is best way to have internet on this device.
I hope that will help, it's old device and probably noone use that as main phone - with working wifi You can still find something to to for this device in home.
please report if this fixed problem on your lg g3s, what is Your ROM or if You have anyt other idea how to fix that config generating all zeros for mac address
Hi there. I know this has been a while since this post, but I have just found my old d722 today and decided to make a small multimedia centrem from it. Wanted to flash latest ROM and ended up with MAC 00... error
your solution here saved me. Thanks a lot
one question, I guess phone must be rooted to be able to run content of userinit.sh properly, right? For some reason I am unable to root my d722 and I think that is why I am not able to repair this MAC error permanently. Changing /data/misc/wifi/config via adb works perfectly but is gone after reboot as expected
I hate Bloatware. And with newer models of Android OS its getting harder to do it. It's a tedious method, but should help you out removing a few things.As always, you are responsible for your own phone, I ascertain no responsibility if you mess up. Do this AT YOUR OWN RISK.
The Metro PCS variant has almost 20GB out of 32GB in use out the box, mostly with stock phone apps I never use. Deleting them has been a challenge, so here's a noob friendly guide to trying to get stuff out. ***NOTE*** I have not figured out a definitive it's safe to delete list on this phone, mostly because of how this phone hides the crap we want to get rid of in the OEM. I will be including a com list in this post for those interested trying to figure out what is the name of pesky files they want to get rid of.
NOTE: You can't simply use Titanium Backup to remove native apps anymore (and on my device this INCLUDES FACEBOOK, which I can't stand). It does not work on Android Pie AT ALL. This seems for now the only concrete method to remove the apps that don't want to leave from your phone. You can still use Titanium Backup to remove apps that are not native to your phone.
Things you need:
1. Newest version of Root Explorer arm compatible version (later versions DO NOT WORK)
2. Root (This is a must)
3. Minimal ADB and Fastboot (Or whatever you're using for ADB, I'm on Windows)
4. Moto G7 Power cable
Step One - Read.
Step Two - Use @ATTACK's suggestion from another post the Amazon Fire trick.
ATTACK said:
If you don't have root or an unlocked bootloader, you can use the Amazon Fire trick (To restore apps you simply factory reset).
-- Connect Device
Enable USB debugging in developers options
Code:
adb shell
-- List Apps
Code:
pm list packages
Alternatively, you can search for packages by name
-- Example
Code:
pm list packages amazon
-- Disable Apps
Code:
pm uninstall -k --user 0 [COLOR="Red"]"package name"[/COLOR]
Click to expand...
Click to collapse
Below is a list of packages that came with the phone.
Comprehensive list of ALL PACKAGES.
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
Code:
package:com.android.internal.display.cutout.emulation.noCutout
package:com.android.cts.priv.ctsshim
package:com.google.android.youtube
package:com.vzw.apnlib
package:com.motorola.comcastext
package: com.motorola.android.fmradio
package: com.motorola.fmplayer
package:com.android.internal.display.cutout.emulation.corner
package:com.google.android.ext.services
package:com.motorola.motocare
package:com.android.internal.display.cutout.emulation.double
package:com.android.providers.telephony
package:cci.usage
package:com.android.providers.calendar
package:com.motorola.vzw.pco.extensions.pcoreceiver
package:com.android.providers.media
package:com.qti.service.colorservice
package: com.google.android.gm (Gmail)
package: com.google.androud.apps.photos (Google Photos)
package: com.google.android.apps.docs (Google Drive)
package: com.google.android.videos (Google Play Movies and TV)
package: com.google.android.music (Google Play Music)
package: com.google.android.googlequicksearchbox (Google Search Bar On Home Pg)
package:com.google.android.onetimeinitializer
package:com.google.android.ext.shared
package:com.motorola.brapps
package:com.motorola.bug2go
package:com.android.wallpapercropper
package:com.quicinc.cne.CNEService
package:com.motorola.ccc.devicemanagement
package:com.motorola.faceunlocktrustagent
package:com.android.documentsui
package:com.motorola.android.settings.modemdebug
package:com.android.externalstorage
package:com.motorola.omadm.service
package:com.android.htmlviewer
package:com.qualcomm.qti.uceShimService
package:com.android.companiondevicemanager
package:com.android.mms.service
package:com.android.providers.downloads
package:com.motorola.coresettingsext
package:com.google.android.apps.messaging
package:com.motorola.android.settings.diag_mdlog
package:com.roaming.android.gsimcontentprovider
package:com.motorola.entitlement
package:com.smithmicro.netwise.director.comcast.oem
package:com.motorola.att.phone.extensions
package:com.motorola.programmenu
package:com.qualcomm.qti.telephonyservice
package:com.motorola.timezonedata
package:com.motorola.visualvoicemail
package:com.motorola.ccc.mainplm
package:com.motorola.omadm.vzw
package:com.google.android.configupdater
package:com.motorola.camera2
package:com.motorola.ccc.ota
package:com.motorola.ccc.notification
package:com.android.defcontainer
package:com.android.timezone.updater
package:com.google.ar.core
package:com.google.ar.lens
package:com.android.providers.downloads.ui
package:com.android.vending
package:com.android.pacprocessor
package:com.android.simappdialog
package:com.motorola.pgmsystem2
package:com.motorola.faceunlock
package:com.motorola.demo.env
package:com.motorola.ptt.prip
package:com.android.internal.display.cutout.emulation.tall
package:com.android.certinstaller
package:com.android.carrierconfig
package:com.google.android.marvin.talkback
package:com.google.android.apps.work.oobconfig
package:com.qti.qualcomm.datastatusnotification
package:android
package:com.motorola.android.provisioning
package:com.vzw.apnservice
package:com.motorola.imagertuning_ocean
package:com.android.egg
package:com.android.mtp
package:com.android.nfc
package:com.android.stk
package:com.android.backupconfirm
package:com.motorola.timeweatherwidget
package:com.verizon.loginengine.unbranded
package:com.google.android.deskclock
package:org.codeaurora.ims
package:com.android.statementservice
package:com.republicwireless.tel
package:com.google.android.apps.tachyon
package:com.motorola.motocit
package:com.android.settings.intelligence
package:com.android.systemui.theme.dark
package:com.qualcomm.qti.dynamicddsservice
package:com.google.android.setupwizard
package:com.qualcomm.qcrilmsgtunnel
package:com.android.providers.settings
package:com.android.sharedstoragebackup
package:com.android.printspooler
package:com.android.dreams.basic
package:com.lenovo.lsf.user
package:com.android.se
package:com.android.inputdevices
package:com.google.android.apps.wellbeing
package:de.telekom.tsc
package:com.motorola.android.nativedropboxagent
package:com.google.android.dialer
package:com.motorola.nfc
package:com.android.bips
package:com.google.android.apps.nbu.files
package:com.motorola.android.jvtcmd
package:com.motorola.frameworks.singlehand
package:com.motorola.motosignature.app
package:com.google.android.apps.maps
package:com.orange.update
package:com.motorola.comcast.settings.extensions
package:com.android.cellbroadcastreceiver
package:com.motorola.invisiblenet
package:com.google.android.webview
package:com.amazon.appmanager
package:com.google.android.contacts
package:com.motorola.contacts.preloadcontacts
package:com.android.server.telecom
package:com.google.android.syncadapters.contacts
package:com.motorola.android.providers.settings
package:com.android.keychain
package:com.google.android.calculator
package:com.android.chrome
package:com.google.android.packageinstaller
package:com.google.android.gms
package:com.google.android.gsf
package:com.google.android.ims
package:com.google.android.tts
package:com.android.calllogbackup
package:com.google.android.partnersetup
package:com.motorola.email
package:com.motorola.genie
package:com.motorola.setup
package:com.android.carrierdefaultapp
package:com.qualcomm.qti.remoteSimlockAuth
package:com.motorola.lifetimedata
package:com.motorola.appdirectedsmsproxy
package:com.android.proxyhandler
package:com.google.android.feedback
package:com.topjohnwu.magisk
package:com.google.android.printservice.recommendation
package:com.google.android.calendar
package:com.android.managedprovisioning
package:com.motorola.launcherconfig
package:com.motorola.demo
package:com.motorola.moto
package:com.motorola.paks
package:com.motorola.omadm.sprint
package:com.android.providers.partnerbookmarks
package:com.android.wallpaper.livepicker
package:com.motorola.carriersettingsext
package:com.android.apps.tag
package:com.motorola.motocare.internal
package:com.google.android.gms.policy_sidecar_aps
package:com.google.android.backuptransport
package:com.android.storagemanager
package:com.motorola.msimsettings
package:com.android.bookmarkprovider
package:com.android.settings
package: com.facebook.services
package: com.facebook.katana
package: com.facebook.system
package: com.facebook.appmanager
package:com.qualcomm.qti.lpa
package:com.qualcomm.qti.uim
package:com.android.sprint.hiddenmenuapp
package:android.autoinstalls.config.motorola.layout
package:com.qualcomm.location
package:com.google.android.apps.turbo
package:com.android.cts.ctsshim
package:com.motorola.launcher3
package:com.lmi.motorola.rescuesecurity
package:com.motorola.slpc_sys
package:com.motorola.actions
package:com.android.vpndialogs
package:com.google.android.apps.wallpaper
package:com.motorola.bach.modemstats
package:com.android.phone
package:com.android.shell
package:com.android.wallpaperbackup
package:com.android.providers.blockednumber
package:com.android.providers.userdictionary
package:com.android.emergency
package:com.android.location.fused
package:com.android.systemui
package:com.motorola.motodisplay
package:com.motorola.easyprefix
package:com.android.bluetoothmidiservice
package:com.android.traceur
package:com.orange.aura.oobe
package:com.motorola.audiofx
package:com.android.bluetooth
package:com.qualcomm.timeservice
package:com.qualcomm.atfwd
package:com.qualcomm.embms
package:com.motorola.config.wifi
package:com.android.providers.contacts
package:com.android.captiveportallogin
package:com.roaming.android.gsimbase
package:com.google.android.inputmethod.latin
package:com.motorola.android.providers.chromehomepage
package:com.motorola.attvowifi
package:com.motorola.systemserver
package:com.motorola.VirtualUiccPayment
package:com.google.android.apps.restore
OCTOBER 2020 UPDATE: Due to Google putting automatic contact tracing COVID19 software on the phone via Playstore, I've updated the list as I use NO google products now and download everything I need from APKPure.
These are the ones I've safely removed without any system problems:
Facebook:
com.facebook.services
com.facebook.katana
com.facebook.system
com.facebook.appmanager
Google:
com.google.android.gm (Gmail)
com.google.android.apps.photos (Google Photos)
com.google.android.apps.docs (Google Drive)
com.google.android.apps.maps (Google Maps)
com.google.android.videos (Google Play Movies and TV)
com.google.android.music (Google Play Music)
com.google.android.googlequicksearchbox (Google Search Bar On Home Pg)
com.google.android.youtube (Youtube)
com.android.vending (Google Playstore)
com.android.chrome (Chrome Browser)
com.google.android.apps.tachyon (Google Duo)
com.google.android.calculator (Calculator)
com.google.android.calendar (Calendar)
Motorola
com.motorola.android.fmradio (FM Radio)
com.motorola.fmplayer (FM Radio)
com.motorola.genie (Moto Help)
com.motorola.moto (Moto)
back in 2019, you had to root the phone and do all this stuff. now, you can just run adb from your pc, connect to your g7 with a cable, and run adb shell, then enter the command:
pm uninstall -k --user 0 com.android.vending
no root required anymore. check out this other forum for more details.
https://forum.xda-developers.com/t/...-root-access-using-adb-usb-debugging.4014937/
I (guess) I need to disable multiple users feature and or remove OnePlus Account, as something is preventing me from setting device owner apps via ADB.
How can I do it or is there another way to solve this problem?
Small progress.... OnePlus account removed
pm uninstall --user 0 com.oplus.multiapp
pm uninstall --user 0 com.oneplus.account
But getting stuck here:
Code:
OnePlus9Pro:/ $ dpm set-device-owner com.wakasoftware.appfreezer/.receiver.DPMReceiver
Exception occurred while executing 'set-device-owner':
java.lang.IllegalStateException: Unexpected @ProvisioningPreCondition: 99
at com.android.server.devicepolicy.DevicePolicyManagerService.enforceCanSetDeviceOwnerLocked(DevicePolicyManagerService.java:9453)
at com.android.server.devicepolicy.DevicePolicyManagerService.setDeviceOwner(DevicePolicyManagerService.java:8388)
at com.android.server.devicepolicy.DevicePolicyManagerServiceShellCommand.runSetDeviceOwner(DevicePolicyManagerServiceShellCommand.java:256)
at com.android.server.devicepolicy.DevicePolicyManagerServiceShellCommand.onCommand(DevicePolicyManagerServiceShellCommand.java:89)
at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97)
at android.os.ShellCommand.exec(ShellCommand.java:38)
at com.android.server.devicepolicy.DevicePolicyManagerService.onShellCommand(DevicePolicyManagerService.java:9772)
at android.os.Binder.shellCommand(Binder.java:970)
at android.os.Binder.onTransact(Binder.java:854)
at android.app.admin.IDevicePolicyManager$Stub.onTransact(IDevicePolicyManager.java:6952)
at android.os.Binder.execTransactInternal(Binder.java:1226)
at android.os.Binder.execTransact(Binder.java:1163)
Code:
255|OnePlus9Pro:/ $ dpm set-device-owner com.balda.securetask/.receivers.AdminReceiver
Exception occurred while executing 'set-device-owner':
java.lang.IllegalStateException: Unexpected @ProvisioningPreCondition: 99
at com.android.server.devicepolicy.DevicePolicyManagerService.enforceCanSetDeviceOwnerLocked(DevicePolicyManagerService.java:9453)
at com.android.server.devicepolicy.DevicePolicyManagerService.setDeviceOwner(DevicePolicyManagerService.java:8388)
at com.android.server.devicepolicy.DevicePolicyManagerServiceShellCommand.runSetDeviceOwner(DevicePolicyManagerServiceShellCommand.java:256)
at com.android.server.devicepolicy.DevicePolicyManagerServiceShellCommand.onCommand(DevicePolicyManagerServiceShellCommand.java:89)
at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97)
at android.os.ShellCommand.exec(ShellCommand.java:38)
at com.android.server.devicepolicy.DevicePolicyManagerService.onShellCommand(DevicePolicyManagerService.java:9772)
at android.os.Binder.shellCommand(Binder.java:970)
at android.os.Binder.onTransact(Binder.java:854)
at android.app.admin.IDevicePolicyManager$Stub.onTransact(IDevicePolicyManager.java:6952)
at android.os.Binder.execTransactInternal(Binder.java:1226)
at android.os.Binder.execTransact(Binder.java:1163)
Code:
1|OnePlus9Pro:/ $ dumpsys device_policy | grep owner
1|OnePlus9Pro:/ $ dumpsys device_policy | grep admin
1|OnePlus9Pro:/ $ dumpsys device_policy | grep package
critical packages: 1 app
launcher packages: 2 apps
input method packages: 3 apps
SMS package: com.google.android.apps.messaging
Settings package: com.android.settings
config_packagesExemptFromSuspension: 1 app