Working: Hidden 'Cast Screen' on Amazon tablets [SEPT 2017] - Fire Q&A, Help & Troubleshooting
UPDATE September 18, 2017: So I just wanted to update everyone. I still own my Fire HD 8 and I recently unlocked the bootloader to my rooted XT907 phone and flashed Marshmallow Lineage 13. I also acquired a Fire 7 rooted and also with a custom ROM, Fire Nexus (From XDA). I also now have a Samsung Galaxy S7, unlocked from carriers and rooted. I am happy to report, with the right app, the entire thing works perfect across all devices, rooted or not.
Please see this final update to this thread regarding the function of screen mirroring/casting.
My current device list:
-Fire HD 8, 2016 - No root, bootloader locked, stock ROM, Lollipop 5.1
-Fire 7 2015 - Rooted, bootloader locked, custom ROM, Fire Nexus Lollipop 5.1
-Motorola Droid Razr M, XT907 - Rooted, bootloader unlocked, custom ROM, Lineage Marshmallow 6.0
-Samsung Galaxy S7 - Rooted, bootloader locked, stock ROM, carrier unlocked and not attached to one, Nougat 7.0
I can screen mirror to and from every one of these devices now. It appears the more recent devices have the functionality intact, including the Amazon HD 8, and possibly the rest (see the above link to my update). RemoDroid uses the actual built in 'cast screen' software to capture and send. If you pull down the statusbar, and look at your quick settings, you will see the 'cast' icon is turned on and in use by RemoDroid. Just make sure the devices are all on the same Wifi network and the process should work. If it doesn't, one of your devices isn't compatible and likely won't be. You can thank Google, your manufacturer and your service provider for that. They won't rewrite your OS so you're likely to be locked out of screen mirroring indefinitely.
1) Download RemoDroid and install on your HD 8 and or 7
2) Install RemoDroid on a device that has ability to screen mirror, but no software to do so (Like the HD 8 or 7)
3) Make sure both devices are on the same WiFi network. Start the app on both devices. If rooted, grant the app root access. On the HD 8 and 7, ignore the no root warnings.
4) On the HD 8 or 7, tap 'stream', ignoring the warnings.
5) On your other device, tap connect. In a few seconds your HD 8 should appear on the list. Tap it. Your HD 8 or 7 screen is now being mirrored to your device :highfive:
6) On that device, tap the back button and tap ok to stop the connection. On the HD 8 or 7, stop streaming.
7) On your other device, tap 'stream'
8) On the HD 8 or 7 tap 'connect' and select your other device from the list. You are now mirroring to your HD 8 or 7. :highfive:
Video Here
-----------------------------------------------------------------------------------
***OLD***: It's exactly what it sounds like. I was, and am still looking through the various activities and their settings that Amazon has hidden from us (Using Activity Launcher) This particular find is my favorite...so far.
It's called 'Cast Screen.' It can be found in the Settings drop down activity menu. On my Fire HD 8, android 5.1.1, it's called 'Cast Screen' and on KitKat it's 'Wireless Display' (Owned by Miracast). You are supposed to be able to cast let's say video or whatever you want, from your phone to a tablet or TV...or from a tablet to phone or TV. They are both blocked by the manufacturer and I read you needed root at least until 5.0 to get access to it.
I have tried a few apps that only activate it in the form of a shortcut, and others that are supposed to use that advantage to cast your screen. So far I've not been able to get it to work From what I can tell, it relies partially on Blue tooth and partially on WiFi. Both devices have to be on the same Wifi network, and both have to be 'discoverable' in Blue Tooth. Check and Check. This launcher does a great job at opening these hidden features, but Amazon also does a good job of making them hard to use and you can't make them into a shortcut without a 3rd party app. On both 5.1.1 and Kitkat, the interfaces are very very basic and I can't find any settings to toggle in the 'apps.'
How would I go about making this functional? I can't find any APKs related to them on the device. And I can't find away to bring the player out as a standalone app/setting, even with root on my phone. This would really make a cool addition/feature for these tablets if I can get them working.
The properties are:
Name: 'Cast Screen' on Lollipop 5.1.1
Package: com.android.settings
Class: com.android.settings.Settings$WifiDisplaySettingsActivity
Icon: com.adndroid.settings:mipmap/ic_launcher_settings
Name: 'Wireless Display' on KitKat 4.4.2
Package: com.android.settings
Class: com.android.settings.Settings$WifiDisplaySettingsActivity
Icon: com.adndroid.settings:mipmap/ic_launcher_settings
{
"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"
}
DragonFire1024 said:
It's exactly what it sounds like. I was, and am still looking through the various activities and their settings that Amazon has hidden from us (Using Activity Launcher) This particular find is my favorite...so far.
:
Click to expand...
Click to collapse
It's a feature native to Android 5.x. Amazon disabled it in favor of their own proprietary solution. Unlikely the underlying code is included with FireOS. Need a custom ROM for that. Sorry, mate.
Davey126 said:
It's a feature native to Android 5.x. Amazon disabled it in favor of their own proprietary solution. Unlikely the underlying code is included with FireOS. Need a custom ROM for that. Sorry, mate.
Click to expand...
Click to collapse
It's pretty much "available" on a vast majority of Android devices. The problem is, there's more than one line of code missing. In some cases, several and not just in the build.prop. Each service provider is different. Even the strongest mirror casting apps can't get it to work. This one for example even asks for SU permissions on my rooted Moto Razr M XT907, yet still fails.
There are several lines from the XML code that are missing or marked as 'false,'. Unfortunately I have to research more to understand how to edit the Method Flow with Zygote. Each XML is different from one person and device to the next, so this isn't something that will be easy.
As most have not been lucky, I seem to have gotten further than most. At least I managed to get the button to show up in settings:
I managed to find a debugging option which supposedly forces the cast screen/wireless display to work. I just have no clue what to do with it. I just spent hours trying to figure out how to place this where it needs to go and pretty much got no where. Any thoughts?
Well I thought I had made some progress. Well I had. I managed to get half of the screen cast to work by using RemoDroid. I installed both apps, one on my Fire tablet and the other on my XT 907. For about a minute or less, I am able to cast my screen from my XT907 to my tablet, before RemoDroid freezes and crashes. However, I had exactly the opposite effect when I cast from my tablet to my phone. Much to my surprise the tablet worked perfectly. Remo brought out the casting very well. I was actually very surprised by that. I also tried All cast and was able to get that to work, but not good at all yet. You can't cast youtube videos because the site thinks you minimized the app so the video never plays. I also can't figure out how to cast screens in Allcast.
I was really excited and had planned to do an awesome write up on all this today, but found myself still piecing together the damn code. So far I managed to come up with a tiny bit of code for the build.prop, which I can only apply to my XT907 because the tablet isn't rooted and I am unable to push files back to the system without SU. Still haven't gotten my XT907 to cast though. Still a work in progress.
#property to enable user to access Google WFD settings.
#
debug.wfd.enable=1
ext_only.debug=1
persist.sys.ext_only.debug=1
persist.sys.hwc.ext_only=1
persist.sys.hwc.disable=1
Click to expand...
Click to collapse
Warning: That build.prop addition didn't go with my phone too well. Or I mounted it wrong. Nonetheless I am pretty sure I just bricked my XT907. Thank god I didn't have anything on it.
I think I realized the issue. I very well could have remounted the wrong build.prop. so that will pretty much screw my phone. I'm pretty sure there's no recovery from that.
Perhaps I should wait until my battery isn't dead to make assumptions *facepalm* Awaiting full charge and will give results.
Nevermind. I've tried every possible option. Still won't boot.
Ok A few things before I work on recovering my phone from ever lasting bootloop or lack thereof. I can confirm, without a doubt, Screen Cast ability is ACTIVE in Amazon Fire tablets. I am pretty sure the option applies to most newer models. There are a few things you can check, which I'll get to in a moment. In the coming days, or weeks (hopefully sooner rather than later) I will be writing a detailed analysis of Miracast...or what we are being or were being made to believe what Miracast is/was. I think many will be disappointed because I think most of us had a certain vision of what Miracast is, or the perception of it, when in fact it appears to be quite the opposite.
So without spilling too much beans, let me just say this: you can blame the manufacturers and or service providers of your devices and even Google itself. Because all of them have been actively covering up this technology, though not for the reasons you might suspect. The entities involved with Miracast or Wireless Display or Cast Screen (pick your name), have done a lot of work and went through an extensive amount of trouble to do everything they can to hide the feature from you and almost completely disabled it altogether. Some actually have. Ok here is proof it exists on Fire tablets.
1) /system/build.prop In the Fire 8, some of the code you find on the web to enable Wireless Display, is already part of the hardware. So if you're root, I'm not sure there is much more you can do to the build.prop to activate it, aside from a line or two and that will vary with devices.
2) XML aka your Android Source Code. Google, at least in the past, went through extensive work to cut off Wireless Display from their devices. A user (developer?) on GitHub, RC3 kensuke has gone through his own extensive work at tracking down what was 'wrong' in the Android source that stopped Wireless Display (Miracast) from functioning. He has created tools, which I believe no longer function, to go through and make the necessary corrections, but does list some files and fixes you can try, at your own risk. You can also browse the chapters on the list to the right, that will take you through the steps to activate it, assuming it was done in your Android source.
One final thing: I've tried dozens of apps and to be honest, very very few work. They try so hard, but some information in the necessary places is just too little for the displays to function. So if you've tried Casting apps or screen sharing apps, or you've downloaded the shortcuts or makeshift Miracast sinks, and couldn't get them to work, or function very poorly, the above is why. If the hardware and code don't exist on your device, those apps and what not WILL NOT WORK. 95% of these apps require root or a custom rom and rely heavily on the available code and information your devices carry. Even then, With my rooted XT907, still couldn't get it to work.
I really do hope I can get a functioning cast system for everyone. I am doing my best and I'll share more info with you in time.
There is so much more to this and so many details and screenshots I will share with you in the coming days and or weeks.
Ok So Here is confirmation that at least the Fire HD 8 with 5.3.3.0 has Cast Screen operational. Anyone can check this to see if it exists on their device, however you need ROOT to edit it.
1. Download a file manager and install it. My preference is Total Commander. (APK: click here).
2. Open Total Commander. Navigate to the ROOT folder, system, then click once on build.prop. I found it much easier to read and scroll using a build.prop editor. Especially if I change anything in that file. One mistake like a period out of place or wrong spacing, you WILL brick your phone (I did a few days ago and remounted it wrong and unmounted /system/ instead. Luckily I was able to recover). (BuildProp Editor: click here). (APK: click here).
3. closer to the bottom, you will see some additions that enable Cast Screen, Wireless Display etc. The props are as follows (Note: I am not sure the syntax listed in the prop is correct. I think the '_' are supposed to be periods. This might be how they are able to hide it from us? If not, then I have no clue whatsoever how they hide it from us).
persist.debug.wfd.enable=1
ro.mtk_wfd_support=1
ro.mtk_wfd_sink_support=1
ro.mtk_wfd_sink_uibc_support=1
ro.mtk_wfd_hdcp_tx_support=1
wfd.dummy.enable=1
Click to expand...
Click to collapse
This is just part of the puzzle and some of the many many pieces to get this to work. The good thing is, this makes it very easy to use the service to cast to another device, if you can get it to connect to one. I have had very little success with that thus far.
******I AM NOT RESPONSIBLE IF YOU BRICK YOUR DEVICE(S)******
Ok. After hours and hours of editing XML and build.prop, I've failed yet again and it resulted in my phone getting bricked, again. I have a few more ideas, but it's not looking too good. Google sure made sure we wouldn't get access to this and are doing a good job on my end.
DragonFire1024 said:
Google sure made sure we wouldn't get access to this and are doing a good job on my end.
Click to expand...
Click to collapse
Amazon and Google have their own proprietary solutions; no surprise Miracast has been depreciated in generic Android builds. Likely legal and/or business considerations as well. Roll back a dozen+ posts; outcome was largely predictable. If it were easy someone would have already uncorked the Genie.
Davey126 said:
Amazon and Google have their own proprietary solutions; no surprise Miracast has been depreciated in generic Android builds. Likely legal and/or business considerations as well. Roll back a dozen+ posts; outcome was largely predictable. If it were easy someone would have already uncorked the Genie.
Click to expand...
Click to collapse
I know it's not easy. Didn't think it would be. I think the two biggest issues are:
1) the information and workarounds are scattered far and wide. I've pages and pages of links to fixes and edits etc. Nothing, and I mean nothing, is in one spot. My hope is to bring all of that together in one spot and in working order if at all possible.
2) Google has gone through a lot of trouble and effort to block access to this function. The amount of changes and or edits to the various source codes are extreme to say the least. Though most of the edits are very small, usually a few characters or a single line addition or subtraction, the amount of them makes this task nearly​ impossible.
With that being said, my next step is to go through a phone I just got solely for testing purposes (it's a UMX. Probably the deepest you can get in the barrel) and to copy over the build properties that allow it's screen cast/wireless display to work. It has Marshmallow 6.0. unfortunately I can't find a root for it though.
I also started a thread in the XT907 forum in hopes someone with the same device, has a prop and XML where Miracast etc is operational. That would make things easier.
I also can't figure out how Amazon is blocking the Cast Screen from working or launching. All of the props are there, but I haven't looked at the XML to see what that says.
So I just realized, after my second brick on my XT907, it was the first time after a full firmware reflash, that I went immediately to root. I did it before I turned on Wifi and before I added an account to my device. So I never got any updates to my device, OTA wise, since the actual build date of the phone. So I decided to take a good look at all my settings today, something I normally do when I get a new device or restore it. I found some interesting info.
Example: My build.prop is totally different than the one I was editing before. The WfdConfig XML files, are completely different. Well half different. Both of the two were the same as before the reflash, well half. Now I see a bunch of text following the properties to enable Wireless Display in the wfdconfig.xml
PHP:
<DynamicBitrateAdaptation>0</DynamicBitrateAdaptation>
<SendKeepAlive>1</SendKeepAlive>
<RTSPPort>5550</RTSPPort>
<EncyptNonSecureContent>1</EncyptNonSecureContent>
<PerformanceLevelTurboMode>1</PerformanceLevelTurboMode>
<BitrateTable>
<AAC>
<BIT0>
<MaxBitrate>256000</MaxBitrate>
<MinBitrate>256000</MinBitrate>
</BIT0>
<BIT1>
<MaxBitrate>384000</MaxBitrate>
<MinBitrate>384000</MinBitrate>
</BIT1>
<BIT2>
<MaxBitrate>512000</MaxBitrate>
<MinBitrate>512000</MinBitrate>
</BIT2>
</AAC>
<CEA>
<BIT0>
<MinBitrate>1000000</MinBitrate>
<MaxBitrate>4000000</MaxBitrate>
</BIT0>
<BIT1>
<MinBitrate>1000000</MinBitrate>
<MaxBitrate>4000000</MaxBitrate>
</BIT1>
<BIT2>
<MinBitrate>1000000</MinBitrate>
<MaxBitrate>4000000</MaxBitrate>
</BIT2>
<BIT3>
<MinBitrate>1000000</MinBitrate>
<MaxBitrate>4000000</MaxBitrate>
</BIT3>
<BIT4>
<MinBitrate>1000000</MinBitrate>
<MaxBitrate>4000000</MaxBitrate>
</BIT4>
<BIT5>
<MinBitrate>2500000</MinBitrate>
<MaxBitrate>10000000</MaxBitrate>
</BIT5>
<BIT6>
<MinBitrate>5000000</MinBitrate>
<MaxBitrate>20000000</MaxBitrate>
</BIT6>
<BIT7>
<MinBitrate>5000000</MinBitrate>
<MaxBitrate>20000000</MaxBitrate>
</BIT7>
<BIT8>
<MinBitrate>10000000</MinBitrate>
<MaxBitrate>40000000</MaxBitrate>
</BIT8>
<BIT9>
<MinBitrate>10000000</MinBitrate>
<MaxBitrate>40000000</MaxBitrate>
</BIT9>
<BIT10>
<MinBitrate>5000000</MinBitrate>
<MaxBitrate>10000000</MaxBitrate>
</BIT10>
<BIT11>
<MinBitrate>5000000</MinBitrate>
<MaxBitrate>20000000</MaxBitrate>
</BIT11>
<BIT12>
<MinBitrate>5000000</MinBitrate>
<MaxBitrate>20000000</MaxBitrate>
</BIT12>
<BIT13>
<MinBitrate>10000000</MinBitrate>
<MaxBitrate>40000000</MaxBitrate>
</BIT13>
<BIT14>
<MinBitrate>10000000</MinBitrate>
<MaxBitrate>40000000</MaxBitrate>
</BIT14>
<BIT15>
<MinBitrate>2500000</MinBitrate>
<MaxBitrate>10000000</MaxBitrate>
</BIT15>
<BIT16>
<MinBitrate>5000000</MinBitrate>
<MaxBitrate>20000000</MaxBitrate>
</BIT16>
</CEA>
<VESA>
<BIT0>
<MinBitrate>500000</MinBitrate>
<MaxBitrate>2000000</MaxBitrate>
</BIT0>
<BIT1>
<MinBitrate>1000000</MinBitrate>
<MaxBitrate>4000000</MaxBitrate>
</BIT1>
<BIT2>
<MinBitrate>2500000</MinBitrate>
<MaxBitrate>10000000</MaxBitrate>
</BIT2>
<BIT3>
<MinBitrate>2500000</MinBitrate>
<MaxBitrate>10000000</MaxBitrate>
</BIT3>
<BIT4>
<MinBitrate>2500000</MinBitrate>
<MaxBitrate>10000000</MaxBitrate>
</BIT4>
<BIT5>
<MinBitrate>5000000</MinBitrate>
<MaxBitrate>20000000</MaxBitrate>
</BIT5>
<BIT6>
<MinBitrate>2500000</MinBitrate>
<MaxBitrate>10000000</MaxBitrate>
</BIT6>
<BIT7>
<MinBitrate>5000000</MinBitrate>
<MaxBitrate>20000000</MaxBitrate>
</BIT7>
<BIT8>
<MinBitrate>3500000</MinBitrate>
<MaxBitrate>14000000</MaxBitrate>
</BIT8>
<BIT9>
<MinBitrate>5000000</MinBitrate>
<MaxBitrate>20000000</MaxBitrate>
</BIT9>
<BIT10>
<MinBitrate>3500000</MinBitrate>
<MaxBitrate>14000000</MaxBitrate>
</BIT10>
<BIT11>
<MinBitrate>5000000</MinBitrate>
<MaxBitrate>20000000</MaxBitrate>
</BIT11>
<BIT12>
<MinBitrate>2500000</MinBitrate>
<MaxBitrate>10000000</MaxBitrate>
</BIT12>
<BIT13>
<MinBitrate>5000000</MinBitrate>
<MaxBitrate>20000000</MaxBitrate>
</BIT13>
<BIT14>
<MinBitrate>5000000</MinBitrate>
<MaxBitrate>20000000</MaxBitrate>
</BIT14>
<BIT15>
<MinBitrate>10000000</MinBitrate>
<MaxBitrate>40000000</MaxBitrate>
</BIT15>
<BIT16>
<MinBitrate>5000000</MinBitrate>
<MaxBitrate>20000000</MaxBitrate>
</BIT16>
<BIT17>
<MinBitrate>5000000</MinBitrate>
<MaxBitrate>20000000</MaxBitrate>
</BIT17>
<BIT18>
<MinBitrate>5000000</MinBitrate>
<MaxBitrate>20000000</MaxBitrate>
</BIT18>
<BIT19>
<MinBitrate>10000000</MinBitrate>
<MaxBitrate>40000000</MaxBitrate>
</BIT19>
<BIT20>
<MinBitrate>5000000</MinBitrate>
<MaxBitrate>20000000</MaxBitrate>
</BIT20>
<BIT21>
<MinBitrate>10000000</MinBitrate>
<MaxBitrate>40000000</MaxBitrate>
</BIT21>
<BIT22>
<MinBitrate>5000000</MinBitrate>
<MaxBitrate>20000000</MaxBitrate>
</BIT22>
<BIT23>
<MinBitrate>10000000</MinBitrate>
<MaxBitrate>40000000</MaxBitrate>
</BIT23>
<BIT24>
<MinBitrate>5000000</MinBitrate>
<MaxBitrate>20000000</MaxBitrate>
</BIT24>
<BIT25>
<MinBitrate>10000000</MinBitrate>
<MaxBitrate>40000000</MaxBitrate>
</BIT25>
<BIT26>
<MinBitrate>5000000</MinBitrate>
<MaxBitrate>20000000</MaxBitrate>
</BIT26>
<BIT27>
<MinBitrate>10000000</MinBitrate>
<MaxBitrate>40000000</MaxBitrate>
</BIT27>
<BIT28>
<MinBitrate>5000000</MinBitrate>
<MaxBitrate>20000000</MaxBitrate>
</BIT28>
<BIT29>
<MinBitrate>10000000</MinBitrate>
<MaxBitrate>40000000</MaxBitrate>
</BIT29>
</VESA>
<HH>
<BIT0>
<MinBitrate>500000</MinBitrate>
<MaxBitrate>2000000</MaxBitrate>
</BIT0>
<BIT1>
<MinBitrate>1000000</MinBitrate>
<MaxBitrate>4000000</MaxBitrate>
</BIT1>
<BIT2>
<MinBitrate>500000</MinBitrate>
<MaxBitrate>2000000</MaxBitrate>
</BIT2>
<BIT3>
<MinBitrate>1000000</MinBitrate>
<MaxBitrate>4000000</MaxBitrate>
</BIT3>
<BIT4>
<MinBitrate>500000</MinBitrate>
<MaxBitrate>2000000</MaxBitrate>
</BIT4>
<BIT5>
<MinBitrate>1000000</MinBitrate>
<MaxBitrate>4000000</MaxBitrate>
</BIT5>
<BIT6>
<MinBitrate>500000</MinBitrate>
<MaxBitrate>2000000</MaxBitrate>
</BIT6>
<BIT7>
<MinBitrate>1000000</MinBitrate>
<MaxBitrate>4000000</MaxBitrate>
</BIT7>
<BIT8>
<MinBitrate>500000</MinBitrate>
<MaxBitrate>2000000</MaxBitrate>
</BIT8>
<BIT9>
<MinBitrate>1000000</MinBitrate>
<MaxBitrate>4000000</MaxBitrate>
</BIT9>
<BIT10>
<MinBitrate>500000</MinBitrate>
<MaxBitrate>2000000</MaxBitrate>
</BIT10>
<BIT11>
<MinBitrate>1000000</MinBitrate>
<MaxBitrate>4000000</MaxBitrate>
</BIT11>
</HH>
</BitrateTable>
<CyclicIntraRefresh>
0
</CyclicIntraRefresh>
<CIRNumberOfMacroBlocks>
50
</CIRNumberOfMacroBlocks>
<!-- To disable/enable audio stream playback
support during power suspend - 0 or 1
-->
<AudioStreamInSuspend>1</AudioStreamInSuspend>
<AudioAVSyncDelay>0</AudioAVSyncDelay>
<DisableFillerNalU>1</DisableFillerNalU>
</WFDConfig>
Not to mention this button had shown up in developer options and I have yet to find these alleged options:
I also found all the software. Yes...every piece of it, including the sink! However it doesn't appear to be compiled into anything and I'm not even sure what file types these are:
Any assistance with this would be much appreciated
Ok so I'm scratching the build.prop for now because while I realized the XML edits are correct, I can't make properties in the build for something that doesn't exist or isn't enabled in the source. I have to do more reading because I don't really understand what to do next.
That having been said, I still can't get the wireless display shortcut to properly open. Every time it does so, I get an error telling me "sorry settings had to close..." Still not sure why, but it may have to do with the absence of a sink/source.
However, there is a little light at the end of the tunnel. I have managed to successfully connect/pair my XT907 Razr M and my Fire 8 tablet, something I wasn't able to do before. The downside: I'm using an Google Play app as a sink and it doesn't work that great, but it's been the only one I've found/tested which successfully connects the devices for a period and for more than a few seconds.
Less of a light: unfortunately, as much as I don't want to say it, I haven't found a way around this without root. Now you can pull the required files aka build.prop and the XMLs from the tablet and edit them accordingly, but that's the extent as you can't remount them without SuperUser access. If there is a way to do so, by all means tell me so I can get this set up on the tablet.
The easy part: likely editing the build prop actually. Once the source is correct, it's a matter of adding the correct virtual hardware properties. I've learned through all of this, those differ from each device, sometimes as little as a number. But even that little number can brick your device....twice LMFAO.
I'm using the app to post this update so i apologize for not posting links. I will do so when I arrive home.
Ok so I found a way WITHOUT root...well sort of. I found it snooping with the terminal and found a few commands online. Need to go into ADB though. There is one problem. I tried this on the tablet and everything works, except it doesn't record.
Code:
adb shell screenrecord --help
Code:
Usage: screenrecord [options] <filename>
Android screenrecord v1.2. Records the device's display to a .mp4 file.
Options:
--size WIDTHxHEIGHT
Set the video size, e.g. "1280x720". Default is the device's main
display resolution (if supported), 1280x720 if not. For best results,
use a size supported by the AVC encoder.
--bit-rate RATE
Set the video bit rate, in bits per second. Value may be specified as
bits or megabits, e.g. '4000000' is equivalent to '4M'. Default 4Mbps.
--bugreport
Add additional information, such as a timestamp overlay, that is helpful
in videos captured to illustrate bugs.
--time-limit TIME
Set the maximum recording time, in seconds. Default / maximum is 180.
--verbose
Display interesting information on stdout.
--help
Show this message.
Recording continues until Ctrl-C is hit or the time limit is reached.
Record a demo of your screen. Make sure to specify your record time:
Code:
adb shell screenrecord /sdcard/demo.XX (XX=file name to be saved as mp4, etc)
Now when it saves, things stop working. It saves to the sdcard storage, but the file is empty and shows 00:00. I don't know what's up with that.
if you could indulge me and check my posts i would enjoy greatly ur expertise, you have gotten much further then i have but i sincerely doubt it has taken as long or been as much pain... xD this is quite nefarious and im at a loss.. i dont get how an android skin could take on a life of its own. first link my post is the last 1.
https://forum.xda-developers.com/android-tv/chromecast/workaround-fix-to-amazon-fire-tablet-t3240548
and this one goes back.,,, but if ur interested i have one from 2011 that makes me think i helped... at least bring mirrorcast to fruition in the first place. and another one from 2011 basically laying out the structure to make alexa a thing.. sry im just bored frustrated and blabbing. and im listening
https://forum.xda-developers.com/android-tv/chromecast/chromecast-prerooted-android-4-4-2-t3061705
just frustrating when i give constant feedback and help evolve then get thrown under the bus. hope u know what i mean.
~unemployed and hungry
ManiaC00L said:
if you could indulge me and check my posts i would enjoy greatly ur expertise, you have gotten much further then i have but i sincerely doubt it has taken as long or been as much pain... xD this is quite nefarious and im at a loss.. i dont get how an android skin could take on a life of its own. first link my post is the last 1.
https://forum.xda-developers.com/android-tv/chromecast/workaround-fix-to-amazon-fire-tablet-t3240548
and this one goes back.,,, but if ur interested i have one from 2011 that makes me think i helped... at least bring mirrorcast to fruition in the first place. and another one from 2011 basically laying out the structure to make alexa a thing.. sry im just bored frustrated and blabbing. and im listening
https://forum.xda-developers.com/android-tv/chromecast/chromecast-prerooted-android-4-4-2-t3061705
just frustrating when i give constant feedback and help evolve then get thrown under the bus. hope u know what i mean.
~unemployed and hungry
Click to expand...
Click to collapse
I actually haven't been able to get any further. However I just discovered where some of the Wireless Display lies. /system/framework/framework-res.apk. I might try to edit it later today. I only glanced at a file or two and saw the option that disabled Wireless Display. As soon as I firgure out how to edit it without failing at reinstalling, I'll post about it.
DragonFire1024 said:
I actually haven't been able to get any further. However I just discovered where some of the Wireless Display lies. /system/framework/framework-res.apk. I might try to edit it later today. I only glanced at a file or two and saw the option that disabled Wireless Display. As soon as I firgure out how to edit it without failing at reinstalling, I'll post about it.
Click to expand...
Click to collapse
Which fire are you trying to get this work on?
I have not been involved in any way in the fire dev. But found this thread researching getting screen cast to work for a ported rom on my phone. The stock rom has cast working and the port does not(slim6).
I do have a fire 7in 2015 (5th gen) loaded with slimLP. It has screen cast working.
If there is something I could pull for you to look at let me know.
Related
[Q] Keeping NC from calling home and/or updating
I'm guessing there's a utility, or utilities, running on the Nook that does things like auto updating the firmware, seeing what books are in your library, what page you're reading, other usage stats, etc.. Has there been any work to disable these spies? Although I mainly wanted the Nook as a tablet, I'd like to buy a few books, and use it to view a few (Legally owned) PDF files. But if B&N is going to mess with my rooting, or decide something isn't legal, or otherwise decide to remove things off my Nook (Remember the Kindle and 1984?), or spam me based on what I'm reading, I'd rather wipe all B&N software from the device, and just have an Android tablet. BTW, if the above sounds like a complaint, it's aimed at B&N, not the developers here, for which I am most thankful for all their awesome work!
Since there hasn't been an update yet, nobody is sure if the methods used by other devices will work or not. I believe there are a few threads in the development forum that talk about possible ways of preventing it from auto updating, but they haven't been tested yet to see if they work. Do some looking in the dev forum or do a search and I"m sure you'll find what I'm talking about. It's a standard method of preventing Android from updating, but no telling if it will work. Edit: Here is the thread I was referring to: http://forum.xda-developers.com/showthread.php?t=860480&highlight=update
Thanks for the response. I checked the link, and was surprised Android has the auto-update functionality built in. Do you know anything about possible spy applications? Has anyone checked it's internet activity? Any strange processes?
What do you mean it hasn't updated. The day you first powered it on and connected to the internet you got an update, at least mine did. I imagine you could use wireshark and then turn on your radio and see where the nook goes first. It could have a schedule so maybe completely restore the device and then see the first addresses or urls it goes too on it's own. Once you get that then it's just a matter of entering those urls in the host file with an unresolvable address.
I probably will use Wireshark, when I get my nook (Christmas present). I just didn't want to reinvent the wheel, and be all prepared when I finally get it. I'm surprised there isn't more interest in privacy with the nook.
Mine didn't update when I got it. It's version 1.0.0, and until you set up wifi there is no way for it to get an update. Also, there isn't a way to check for updates. The original Nook had an option to check for updates, not with the NC.
On-Device App Install and Maybe Bluetooth
I had some issues with the ADB commands for preparing my rooted Nook Color for on-device app install (primarily due to microcrap's 64-bit Vista) so I found a very easy method. In the Market, there's an app called "Sqlite Editor" from the folks who make "Root Explorer" - it's about $3.07 US$ but I bought it anyway. With this [AFTER A BACKUP!] I was able to directly edit the settings.db (sub category SECURE) and change the following: 'install_non_market_apps' from the default value of 0 to 1 and following a SAVE and REBOOT I can now install directly from my SD Card. While I was doing this, I find a large number of additional entries including (are you ready for this???) bluetooth_on! Dare I do this??? I also posted this in Mobileread's excellent Nook Color Forum and I was thinking that may we should also acknowledge them as a great forum for our beloved Nooks!
docfreed said: While I was doing this, I find a large number of additional entries including (are you ready for this???) bluetooth_on! Dare I do this??? Click to expand... Click to collapse LOL...If only it were this easy.
I had no issue with installing apps from the sd card after rooting/installing mkt and gapps.
Depends on How You Rooted.. I'm not certain but some rooting methods have market/gapps built-in, some don't. I used Autonooter (after upgrading to 1.01) and market & Gmail just appeared - I never had to install anything else.
If you used Autonooter then you wouldn't have to do anything to be able to install non market apps. Maybe just toggle the setting in Nook Tools if anything.
docfreed said: While I was doing this, I find a large number of additional entries including (are you ready for this???) bluetooth_on! Click to expand... Click to collapse Its NOT that simple, its been turned on in the kernel & custom ones built for it with nothing. If you see the "salting nook" posts so much as been done trying to get it to work, most expect something ground breaking to come from actually looking at the pins on the chip it self an connection through the MoBo. Amd sold faulty quad cores as triples so it could be that the chip/Mobo cant do it. Could be a easy hardware mod but TBH so much deep thought an attempts have been seen in IRC i dont see a "virtual fix" anytime soon. But that said im an idiot so could be 475% wrong
Yeah, I tried toggling Nook Color Tools per the instructions - never seemed to work for me. Anyway, it appears to be just a one-shot adjustment any way it's done (at least till we get FroYo) so I'm happy. Merry XMAS everyone docfreed
sqlite not working for me Purchased Sqlite, when trying to install, exits without loading apps. Any suggestions? Rooted with older booker and then re-rooted with pre 1.01 autonooker. Thanks. -
I have a kernel and u-boot that enables the bluetooth portion of the module and sets up an rfkill device. hciattach will detect it as a TI Bluetooth module and will load one of the TI bluetooth firmware scripts, but then complains about a missing socket or something. It sounds like a software error more than anything that might be wrong with the hardware. What this means is that the Bluetooth part of the WiFi module isn't just left disconnected and the link to the CPU is working. But we don't know if the antenna is set up to share between wifi and Bluetooth or if the hardware is otherwise missing something that would keep it from working. If you have experience with getting TI WiLink Bluetooth working in Android or Linux, or know someone who does, PM me or join us on Freenode channel #nookie. We're really close!
[Q] about the new Amazon Instant Video app
When the HD comes out, could somebody rip the Amazon Instant Video app apk and post it on xda? The reason: Old app only works on Gingerbread. The new one should work on ICS and JB because the new Kindle Fire's OS is based on ICS.
Was just about to post a thread over here, we has one going on the old KF forums. ES File Explorer is on the Amazon market and should be able to read the /system/app directory without root. Really hoping this apk works on other ICS/JB devices.
An update bin file was posted and I grabbed the apk file from that. So far no luck, it FCs on my Touchpad with CM9. I tried installing as a regular app making sure Voodoo had me unrooted. I also tried as a system apk and rebooted, still FCs. It refuses to install on GB so I imagine its using API Level 15. Hopefully it just needs another apk installed, Ill play around with it and see if I can get it working. EDIT: I installed aLogcat to see if I could narrow down what is causing the FC. Its looking for the class "amazon.unifiedsettings.UnifiedSettingsHelper" which doesn't exist. Later in the log the FC is caused by a fatal exception with the class "amazon/unifiedsettings/UnidifedSettingsHelper" not being found. Is this a lib file or a system apk it wants? EDIT2: I gave up on it for now. I tried some lib files, tried installing as many apks as I could (didn't try replacing system apks). It still FCs with the same error log and I can't find any files that reference unified settings. I also downloaded the Kindle Fire 2 update file (the updated original fire) and its using the same APK. LCD Density for the HD is 240 and 160 for the regular Fire 2. I use 160 on my Touchpad so that shouldn't be the issue.
How does one get apks out of Amazon's .bins? com.amazon.dcp.apk MyAccount-unsigned.apk AccountAndSyncSettings.apk These are the three extra apks (in addition to video apk itself) I needed to get it running on my Nook Tablet back in the day. I noticed back then that it seemed to work a little different for everyone. Some folks didn't need any of those while others of us experienced all manner of crashing without some of them. Sadly, one also forced my NT to appear as a KF in the Amazon app store, which made some of my purchased apps incompatible. Caveat emptor. Would love to see those posted though if someone gets around to it. Would also love to see Amazon get their rear in gear and release a prime streaming app for android that didn't require all the fuss.
The bin files open for me in WinRAR, I think they are just zip files. AccountAndSyncSettings.apk is gone from the new Kindle Fires, the other two files are still there. I remember using those 3 files before allowed you to add an Amazon account and then open the app and you would already be logged in. With the new 2 files, it FCs in settings when I try to add an Amazon account. I didn't try using the old GB apks, it may be worth a try as they allowed an Amazon account to be added even on ICS. I'll upload them, there is only 2 now, because you may have a different outcome than me on a different device.
No luck on a simple side load to an Acer A700 or an Acer A100 both stock and unrooted running ICS. I am reluctant to try the other apk's because I also had my a100 appear as a kindle fire and had to restore it to get use of my apps that were not kindle compatible.
I was messing around on my Touchpad with CWM so I always have the option to restore a nandroid if I were to screw something up. But I played around with it a lot this morning and didn't do any damage, everything was FCing.
No luck on Nexus 7. Tried after installing all three apk. Sent from my Nexus 7 using Tapatalk 2
I too am looking to stream amazon on my cm9_tp but did not see anyone mention the fact it works perfectly on WebOs.
rfauconn said: I too am looking to stream amazon on my cm9_tp but did not see anyone mention the fact it works perfectly on WebOs. Click to expand... Click to collapse I will work through a flash capable browser with a desktop user agent in Android as well, but its not optimized very well for mobile devices. The app is much nicer when it works. At this point we may be better off trying to get the GB version working in ICS since it will at least open and let you browse.
In addition to a better UI in the app, I've also experienced intermittent, albeit minor, audio sync issues with mobile flash that I never had in the app. I hate that.
can someone with a kindle fire hd open up the app and then post the log? Wouldn't we be able to see where the unifiedsettingshelper file was with the log of it opening successfully?
Any update on this? Sent from my Transformer Prime TF201 using Tapatalk 2
We need a Fire HD user or somebody with more knowledge of how things work to figure out where we can get "amazon.unifiedsettings.UnifiedSettingsHelper" from. This is the missing service it crashes on. I can't find any lib files or apks from the ROM that fix this issue. Also even if we get past this crash error another one may appear. At this point I'm thinking we may be better off trying to get the old GB app working since it seems to have fewer issues. It allows you to open and browse to videos on ICS, also allows you to add your Amazon account to the device, but crashes when you go to play a video. Its having a database issue according to the crash log posted over in the GB thread: http://forum.xda-developers.com/showpost.php?p=31633773&postcount=193
spunker88 said: We need a Fire HD user or somebody with more knowledge of how things work to figure out where we can get "amazon.unifiedsettings.UnifiedSettingsHelper" from. This is the missing service it crashes on. I can't find any lib files or apks from the ROM that fix this issue. Also even if we get past this crash error another one may appear. At this point I'm thinking we may be better off trying to get the old GB app working since it seems to have fewer issues. It allows you to open and browse to videos on ICS, also allows you to add your Amazon account to the device, but crashes when you go to play a video. Its having a database issue according to the crash log posted over in the GB thread: http://forum.xda-developers.com/showpost.php?p=31633773&postcount=193 Click to expand... Click to collapse could amazon.unifiedsettings.UnifiedSettingsHelper be part of one of the odex files in system/app ?
It will be fantastic once this can be resolved. I hate that they are allowing this on iOS but not on other android devices.
Yes, it is absurd that iPad has access and general android devices are SOL. We purchased our content...and can't watch it reliably (app access). I would encourage everyone to let amazon know this is unacceptable - and I'm hopeful the good people here find a fix for us in the mean time.
Gonzorito said: Yes, it is absurd that iPad has access and general android devices are SOL. We purchased our content...and can't watch it reliably (app access). I would encourage everyone to let amazon know this is unacceptable - and I'm hopeful the good people here find a fix for us in the mean time. Click to expand... Click to collapse I tried giving Amazon some feedback on supporting other Android devices - they didn't seem to care much. I guess they want to sell more Fires, but if they're selling them at a loss wouldn't they make more profit by supporting their app on other devices?
Our how about, I purchased my kindle to read, purchased a tablet before the fire was a gleam in their eye. I purchase video content and have limited access to it, so i won't purchase future content with amazon as a result. No I won't buy a fire and I am encouraged to buy my future content through Google play on top of that! Loss, loss, and more loss for Amazon. Doesn't make sense. Sorry for side tracking the thread, I will end the QQ
Gonzorito said: I would encourage everyone to let amazon know this is unacceptable - and I'm hopeful the good people here find a fix for us in the mean time. Click to expand... Click to collapse Yup. Of course they aren't going to listen to any one complaint, but Amazon is a pretty responsive company on the whole. Squeak enough and they'll grease the wheels. There's no indication they want to make this fire-only, given how many other devices its on, it's just a question of priority. You can bet the apple people whined more than the android people, so if you want them to get it in gear get on their contact page and make the request. I've done it repeatedly, but we need more people to get noticed.
About Android-What is What? Work in Progress.....
Maybe some things are a lil bit old but everytime gold,lol. Work in progress....... ------ What is a kernel? If you spend any time reading Android forums, blogs, how-to posts or online discussion you'll soon hear people talking about the kernel. A kernel isn't something unique to Android -- iOS and MacOS have one, Windows has one, BlackBerry's QNX has one, in fact all high level operating systems have one. The one we're interested in is Linux, as it's the one Android uses. Let's try to break down what it is and what it does. Android devices use the Linux kernel, but it's not the exact same kernel other Linux-based operating systems use. There's a lot of Android specific code built in, and Google's Android kernel maintainers have their work cut out for them. OEMs have to contribute as well, because they need to develop hardware drivers for the parts they're using for the kernel version they're using. This is why it takes a while for independent Android developers and hackers to port new versions to older devices and get everything working. Drivers written to work with the Gingerbread kernel on a phone won't necessarily work with the Ice Cream Sandwich kernel. And that's important, because one of the kernel's main functions is to control the hardware. It's a whole lot of source code, with more options while building it than you can imagine, but in the end it's just the intermediary between the hardware and the software. When software needs the hardware to do anything, it sends a request to the kernel. And when we say anything, we mean anything. From the brightness of the screen, to the volume level, to initiating a call through the radio, even what's drawn on the display is ultimately controlled by the kernel. For example -- when you tap the search button on your phone, you tell the software to open the search application. What happens is that you touched a certain point on the digitizer, which tells the software that you've touched the screen at those coordinates. The software knows that when that particular spot is touched, the search dialog is supposed to open. The kernel is what tells the digitizer to look (or listen, events are "listened" for) for touches, helps figure out where you touched, and tells the system you touched it. In turn, when the system receives a touch event at a specific point from the kernel (through the driver) it knows what to draw on your screen. Both the hardware and the software communicate both ways with the kernel, and that's how your phone knows when to do something. Input from one side is sent as output to the other, whether it's you playing Angry Birds, or connecting to your car's Bluetooth. It sounds complicated, and it is. But it's also pretty standard computer logic -- there's an action of some sort generated for every event. Without the kernel to accept and send information, developers would have to write code for every single event for every single piece of hardware in your device. With the kernel, all they have to do is communicate with it through the Android system API's, and hardware developers only have to make the device hardware communicate with the kernel. The good thing is that you don't need to know exactly how or why the kernel does what it does, just understanding that it's the go-between from software to hardware gives you a pretty good grasp of what's happening under the glass. Sort of gives a whole new outlook towards those fellows who stay up all night to work on kernels for your phone, doesn't it? ----- What is a Nandroid backup? If you've read about hacking or rooting your Android phone (or tablet, or media player) you've seen the word Nandroid used. When tinkering with your device, there's always a very good chance you'll be left with firmware that won't boot, leaving you in a bit of a lurch. A Nandroid backup can mean the all the difference here. What it is, is a full backup of partitions on your device's NAND flash (NAND stands for NOT AND, a type of electronic logic gate -- it's like the hard drive of your Android device) storage. Think of it as a snapshot of the current running system, and it can be used to restore that that point at any time. Both user data and system files are backed up, and it's a far cry from what we think of when talking about a traditional backup from other software. In fact, it's something that many folks wish was part of the stock Android recovery. Yes, to preform a Nandroid backup you'll need a custom recovery on your device so that the executable files and scripts are there. These have been left out of the stock recovery, likely over issues that would arise if users can backup proprietary files. Getting the custom recovery on your device is the hardest part, thankfully. Once installed backing up and restoring with Nandroid is simple, involving nothing more than choosing the option and verifying -- no wires needed. Even if you never plan to hack your phone, flashing a custom recovery and running a Nandroid backup is always a good idea. You can find more information about custom recoveries, as well as methods to install and use them, in the device-specific section for your device in the Android Central forums. Give it a look, and decide if it's something you're interested in doing. ------- What is an IMEI? The IMEI (International Mobile Equipment Identity) number is a unique set of 15 digits used on GSM phones to identify them. Because the SIM card is associated with the user and can be swapped from phone to phone, a method is needed to keep track of the hardware itself, and that's why the IMEI was developed. Math nerds will enjoy the way they are calculated -- the first 14 digits are decided by the GSM association, and the final check digit is computed using what's called the Luhn Formula -- crazy base-8 math that mere mortals like most of us don't understand, nor want to understand. You can see the IMEI of your Android phone by looking in settings > About phone if you're curious. (Or on the box if you still have it. Or under the battery or on the phone itself. What is this number used for? That's the real question, isn't it. Like the MEID number on CDMA phones (think Sprint and Verizon), the IMEI is used for network control. It's not very common, but your mobile operator can block a phone based on it's IMEI in cases where it's been reported stolen or someone didn't pay the bill. Because it's not easy to change the IMEI of your phone (and maybe even illegal -- check your local laws) it's also used to keep track of phones that were involved in criminal activity, and the UK in particular has a handy database of phones used for these purposes. The IMEI number is also used to specify a phone for wiretapping by federal governments worldwide. On a lighter note, Android apps can also use your IMEI number. The app will declare that it has access to your personal information, and the IMEI can be used to keep track of the device in a remote database. This sounds pretty scary, but it's an easy way (though not necessarily the best way) for app developers to keep a settings database online for your phone, in their app. Let's say you mark a bunch of favorites in a wallpaper app. Those favorites are kept in a small database file online, and when you reconnect to the app it reads your IMEI number to find your preferences. Not an ideal method, but it's easy. One last thing -- now that we know a little more about IMEI numbers, they will soon be changing to IMEISV numbers. The use-case scenarios are the same, but the data structure and method of calculation is different. An IMEISV gets rid of the check digit (and its complicated Luhn formulated calculation) in favor of two digits used for software version numbering. Like everything else in the mobile space, network identification changes rapidly. ------- What is a bootloader? What is a bootloader? At its most basic level, your Android smartphone is like a hard drive, made of up several partitions. One of those partitions holds the Android system files, another holds all the app data you accumulate (which is how you're usually able to update without losing all your stuff), and others to do more behind-the scenes stuff. Think of the bootloader as a security checkpoint for all those partitions. Because if you're able to swap out what's on those partitions, you're able to break things if you don't know what you're doing. Or, with a little hackery, you're able to run custom ROMs. There's a lot of squawking about bootloaders being "locked." Actually, most phones shipped with a "locked" bootloader, including the developer-friendly Nexus devices. (Nexus devices and a couple tablets are easily unlocked with a single command.) No, more accurately, most bootloaders are locked and encrypted, meaning the traditional "fastboot oem unlock" command won't do a thing. And that's a bone of contention for those who love a manufacturer's hardware and want to tinker with their devices. HTC and Samsung and Motorola -- just about everyone, really -- ships devices with locked and/or encrypted bootloaders. Tinkerers (we really don't like calling 'em "hackers") have to find a way around the encryption, usually with some sort of an engineering bootloader that wasn't supposed to be available to the general public. But in recent months, we've seen HTC provide a free tool that will unlock the bootloaders on a number of its devices, and ASUS just got on board, too. Sony Ericsson recently has provided unlocking tools. Motorola's promised to do so as well, but there's been little movement. LG and Samsung ship with unencrypted bootloaders. Why keep a bootloader out of reach? Probably the biggest reasons are that the carriers and manufacturers don't want to have to support hacked phones. The other is that a lot of time and money is spent developing these things. HTC Sense ain't cheap. Neither is TouchWiz. But Samsung and HTC both have managed to find a middle ground with the modding community, and pressure is on other companies to do so as well. ------- What is Dalvik? What is Dalvik? We hear that word getting thrown around a lot on the Internet when talking about Android and its inner workings. While there's no easy explanation we can give in just a few paragraphs, we can cover the basics and point you in the right direction if you need to feed your nerdly side. In its simplest terms, Dalvik is a virtual machine that runs applications and code written in Java. A standard Java compiler turns source code (written as text files) into Bytecode, then compiled into a .dex file that the Dalvik VM can read and use. In essence, class files are converted into .dex files (much like a jar file if one were using the standard Java VM) and then read and executed by the Dalvik Virtual Machine. Duplicate data used in class files is included only once in the .dex output, which saves space and uses less overhead. The executable files can be modified again when you install an application to make things even more optimized for mobile. Things like byte order swapping and linking data structure and function libraries inline make the files smaller and run better on our devices. The Dalvik VM was written from square one with Android in mind. Confused yet? Don't feel bad, geeky programming talk usually has that effect. Think of it this way -- when you build a Java application for your computer, a Java Virtual Machine runs the compiled output of the source code. This is why Java runs on just about any operating system. Dalvik is a mobile-optimized version of a Java Virtual Machine, built with code from the Apache Harmony project, which is open-source and runs better than a standard Java VM would on our limited hardware, designed so that you can run more than one instance of the VM at a time -- ie multitasking. Because Dalvik is open-source, it's also been ported to other operating systems, like the one on the BlackBerry PlayBook. It's pretty damn complicated, pretty damn cool, and Oracle (the company that bought Java from Sun) hates it. Android uses Dalvik because while the license for the standard Java Virtual Machine is GPL2 (free and open-source), when placed in a mobile device and using the Java Micro Edition, it is not. The big dispute between Google and Oracle is all based around Dalvik. Google claims it was written in a "clean-room" environment without using any of Oracle's code, and Oracle disagrees. We claim to have no idea, we're just glad it works as well as it does. For more on Dalvik, see the Google I/O website. --------
LG's L-series They made a big splash earlier this year at Mobile World Congress, and a few carriers in Canada jumped at the chance to sell them, but then they seem to have fallen off the map. I'll admit, even I have to look and see what we're talking about when we have potential news about the L3, L5, or L7. Let's have a refresh. Imagine LG's Prada phone, but remade for folks who don't buy Prada. The L-series phones are all stylish (and really resemble LG's iconic Prada phones -- check out our look at them in Barcelona) and have an emphasis on good looks. The entry-level L3 competes with phones like HTC's One V and Samsung's entry-level Galaxy phones. It's running Gingerbread on a 3.2-inch display, but it looks nice doing it. Compared to something like the Motorola Defy Mini, you get good looks along with your dirt-cheap pricing. The L5 takes things up a notch to Ice Cream Sandwich and a 4-inch screen, placing it in the middle of the road where most people look first when buying a new smartphone. They'll see the L5, and notice the build materials and design. Finally, the L7 looks to compete with the big dogs of the Android world, with all the bells and whistles you would expect from a high-end smartphone, in a damn fine looking external shell. All three are eye-grabbing, and getting people to notice is the first hurdle. We're really not sure why we don't hear more and see more about them, but we're guessing a saturated market has something to do with it. Maybe we'll see the L-series phones make their way into the spotlight, maybe we won't. But at least now we all know what we're talking about when we see them mentioned. ----------- Multitasking Multitasking is a word you'll hear a lot around here and at other places on the Internet that talk about smartphones or other tech. It doesn't mean what it used to, back when dinosaurs with long beards first dreamed up computers, but it still makes a very big difference for some folks and can be the deciding factor when picking a smartphone operating system. Let's have a look and see what the fuss is all about, and how it relates to Android. A long time ago, in a laboratory far, far away, some Jedi masters decided that computers should do more than one thing at a time. They really already were doing plenty of things behind the scenes, but to the user it was a case of entering a command, and waiting for it to finish. Using threads and schedulers, and probably a little magic and a lot of luck, engineers were able to work up an operating system that could run more than one user command at a time, and multitasking was born. When you switch to a new VT (virtual terminal) on a Unix box with no GUI, you're multitasking. When you have more than one window open on your Windows or Mac or other computer that does have a GUI, you're multitasking. You're doing more than one thing at a time, and the computer is running more than one user task at a time. You can now read Android Central while your completely legal torrents are downloading in the background. On a smartphone, multitasking is a bit different. We don't have the luxury of a 20-inch monitor, so showing more than one "thing" running at a time isn't a big deal. Samsung is testing the waters and trying it with the Galaxy S III with the Pop-Up Play feature, but for the most part whatever we're doing takes the whole screen to do it. We also don't have tons of RAM and video memory available and have to watch the power usage. This means smartphone multitasking has to be a bit, well, smarter. Smartphones have been multitasking for a long time. All the mobile operating systems do it a bit differently -- some suspending all other apps in the background, some saving the state and closing the app itself, and others just letting everything run. The way Android does it is to let threads and processes run depending on their priority. If you're using Google Play Music, the processes that make the sound come out of the speaker have a high enough priority to stay running when you switch away from the app. Not all of it is running in the background, but enough of it is to keep the tunes playing. Other apps can be killed if they aren't being used, and some apps get "frozen" (for lack of a better word) and restore themselves when brought back to the foreground. What's important, and prioritized, is decided when the application is written and compiled so the end user doesn't have to worry about it. It's not perfect, but it follows the very strong multitasking model from Linux and tweaks it for Android. It's all open-source, so manufacturers and ROM builders can (and have) tweaked things to allocate memory the way they want it allocated. Sometimes the tweaks are great, sometimes not so much. In the end, remember the next time you open an app and start up where you left off that you're seeing multitasking at work. ---------- Haptic feedback It's one of those little things that can make a big difference, and something we never really think about. Simply put, haptic feedback (commonly referred to as haptics) is the use of touch feedback to the end user. You know how your Android phone vibrates a tiny bit when you tap one of the navigation buttons? That's haptics at work. Since the screen on your Android phone or tablet is pretty much just a smooth sheet of glass of some sort or another, it's difficult to register any sort of tactile feedback to our fingers. When we type on a computer keyboard, we know when our fingers have pressed a key down. Our mouse (and some trackpads) do the same thing with a healthy click when we press the button. On a smartphone, we just have to trust we've done something, and wait for it to happen. Haptics helps here. The short and light vibration when typing out a message with an on-screen keyboard can make a big difference for many of us, and I can see myself being pretty frustrated if an on-screen button didn't let me know I had pressed it. Haptics go beyond navigation and the keyboard though. They can be a very important part of mobile gaming. Gunning your way through an enemy horde is much more satisfying when you feel every shot from your rifle, and nothing lets you know you've hit the wall in your favorite racing game like a harsh vibration from your phone or tablet. Probably the best thing about haptic feedback on Android devices is the way it can be customized. The OS itself is open, meaning OEM and developers can adjust things to get them just the way they like, including leaving the settings wide open to the user like we see in CyanogenMod ROMs. More importantly, application developers have access to the hardware controller to customize haptic feedback for their products. It goes one step further with the addition of things like the Immersion haptic SDK to the mix, where developers have an almost unlimited way to make their applications register with your fingers as well as your eyes and ears. Sometimes, the little things mean a lot. -------- F is for Factory Reset A factory reset is the ultimate cleansing of your Android device. It's usually either a last resort to fix a problem, done before you sell it, or because you like to flash ROMs. When you perform a factory reset you're essentially wiping out everything you've ever done to the phone and restoring it back to the basic manufacturer software. As we've mentioned before, it doesn't uninstall any software updates you've received from the folks who made your phone, but it does wipe out any core application updates you've grabbed from the Google Play store. The technical details are as follows: /system is untouched, because it's normally read-only /data is erased /cache is erased /sdcard is untouched When your phone or tablet reboots, it's like it was when you opened the box as far as apps and user data goes, except for your data on the SD card partition (either a real, physical microSD card or a partition named sdcard). Doing a factory reset is easy -- open the settings, do a little digging (different manufacturers put it in different places, but start with privacy or storage), select it and confirm. Your device will reboot into the recovery partition, erase everything, they reboot into the setup again. One thing to note though -- if you've rooted and ROM'd in any way, you should never do a factory reset from settings. Often times it works just fine, but some devices and some ROMs are so different once hacked that you'll end up with a bricked phone. We hate bricked phones around these parts. Follow the instructions from the folks who developed the software you're running instead, and use the reset method they recommend. ------- End of life End of life is a term none of us ever want to hear. We envision it means the death of our phone, and we should just throw it away and get a newer model. After all, it's at the end of its life, right? Not really. End of life means something different to carriers and manufacturers than it does to enthusiasts like us. The easy way to look at it is that when the folks in suits get together and decide that a phone isn't going to make enough money so it's worthwhile to keep producing it, it has reached the end of its life. That may mean a refreshed, newer model (like the Droid RAZR MAXX), or a shift to a newer model with new, and arguably better, features like the EVO 3D. We have to remember that the folks who make these phones do it so they can make money, and like any good business they want to maximize their profits. But what does end of life mean in the real world? First off, it means that once the current stock sitting on the shelves is sold there won't be any more new ones to replace them with. There may be refurbished units floating around, but no more new phones of that model are being made. It doesn't mean that the phone is done getting updates, but don't expect too many new features to come along -- things are in maintenance mode and bug fixes and security patches are the only things that will be addressed. It also doesn't mean your warranty is affected in any way. Even if you were to buy a brand new phone that has already reached the end of life status, you'll still get the full manufacturers warranty. Most importantly, it doesn't mean that the phone is going to stop doing anything it already does today. The HTC EVO 4G is a great example. It was a huge hit for HTC and Sprint, and actually stayed in production longer than any of us would have thought. Some places are still selling them new (although they're getting harder to find), and those EVO 4G's sold new today are every bit as good, and have the same warranty from HTC, as the ones sold in 2010. Sprint still offers customer service, and it's still one heck of a phone. Don't be put off by the words end of life. While we wouldn't recommend you search out a new phone that's already been discontinued, they still perform as they should and you'll find lots of folks who still love them. ---------- DLNA DLNA, or the Digital Living Network Alliance is an organization set up by Sony in 2003 that determines a universal set of rules and guidelines so devices can share digital media. The devices covered include computers, cameras, televisions, network storage devices, and of course cell phones. The guidelines are built from existing standards, but manufacturers have to pay to use them and have their device join the DLNA. With DLNA devices, you can share video, music and pictures from a Digital Media Server (DMS) to your Android phone or tablet. A DMS could be your computer, a NAS (Network Attached Storage) device, a television or Blu-ray player, or even another Android device. Anything that has a DLNA server, or can have one installed will act as a DMS. Fun factoid: when a DLNA server is installed on a cell phone, tablet, or portable music player it's called a M-DMS -- the M stands for Mobile. Once a DLNA server is in place, our Android phones usually have two functions -- to act as a Digital Media Player (M-DMP) or a Digital Media Controller (M-DMC). The player is easy enough to figure out, it finds content on a DLNA server and plays it back. A DMC will find content on a DLNA server, and push it to another connected player. For example, my television has a DLNA player, and my laptop has a server. With the right software, I could use my Android phone to find the content on my laptop and play it on my television. DLNA can really be fun if you have all the right equipment. But chances are Android (and eventually other mobile devices) will be moving away from DLNA. With Ice Cream Sandwich, Wifi Direct is part of the operating system and has the potential to do everything DLNA can do, and more. We already have seen it replace DLNA streaming in the HTC One series with the Media Link HD receiver, which streams content from a Sense 4 device to a monitor with HDMI input. It uses native Wifi Direct, and by all accounts works really nicely. Or Samsung, who is using NFC to kick off a Wifi Direct session for fast data transfer on the Galaxy S III. We'll have to wait and see what manufacturers do with Wifi Direct, because having it built into the OS is a big plus -- even for a company like Samsung who makes millions of DLNA devices each year. --------- Bloatware When you think of Android phones, you think of bloatware. We wish it weren't so, and not every phone comes with, but the majority of Android phones out there come from carriers and are chock full of bloatware. We've complained about it, and found ways to remove it, but what exactly is it? Most folks consider any applications that your carrier (or the folks who built your phone) pre-installed to the system as bloatware. Usually, these applications are a front end to some service or content that you'll have to pay for, and usually it's something you would never download and use on your own. All the carriers, and all the manufacturers, are guilty of including it, and we tend to hate it all equally. When you open the app drawer on your new phone, and see City ID staring back at you, just waiting for you to click it, you can't help but hate it. But why is it there? It's one down side of Android's open nature. Google gives Android away to anyone and everyone, but realistically only a very few companies can afford to make cell phones. And they don't make them with you and me in mind as their customer. HTC, or Samsung, or LG (you get the picture) makes Android phones for the carriers. They work out deals to decide hardware and software they want to include, and part of those deals are these "value-added applications" we lovingly call bloatware. Verizon and HTC love you, but they still want you to click the app and send in the money. Because Google isn't involved and doesn't make any rules about it, they can include any app they like in your new phone. Nobody likes it, but it is the side effect of being open. Thankfully, Ice Cream Sandwich brings along the ability to disable (most of) these apps without rooting or tinkering with the system files on your Android device, and that provides the best solution we can think of. Certainly there are some people who found a use for City ID or VZ Navigator, and they should have the opportunity to use those apps if they like. And we can disable and hide them, and forget they exist.
What is the AOSP? AOSP is a term you'll see used a lot -- here, as well as at other Android-centric sites on the Internet. I'll admit I'm guilty of using it and just expecting everyone to know what I'm talking about, and I shouldn't. To rectify that, at least a little bit, I'll try to explain what the AOSP is now so we're all on the same page. For some of us -- the nerdly types who build software -- the full name tells us what we need to know. AOSP stands for Android Open Source Project. The AOSP was designed and written by folks who had a vision that the world needed an open-source platform that exists for developers to easily build mobile applications. It wasn't designed to beat any other platform in market share, or to fight for user freedom from tyrannical CEOs -- it exists as a delivery mechanism for mobile apps -- like Google's mobile apps, or any of the 400,000+ in the Google Play store. Luckily, Google realized that using open-source software would ensure that this operating system/mobile application content delivery system is available for all, for free. And by choosing the licensing they did, it's also attractive to device manufacturers who can use it as a base to build their own mobile OS. The premise plays out rather nicely. Google writes and maintains a tree of all the Android source code -- the AOSP. It's made available for everyone (you, me, manufacturers you've never heard of and not just big players like Samsung or HTC) to download, modify, and take ownership of. This means the folks at CyanogenMod can add cool stuff like audio profiles. It also means folks like HTC can change multitasking in ways that many of us don't like. You can't have one without having the other. The big players then use their modified version of this source to build their own operating system. Some, like Amazon, radically changed everything without a care to use Google's official applications and keep their device in compliance with Android guidelines. Some, like HTC radically changed everything yet followed the Android Compatibility Program (ACP) so they could include Google's core application suite -- including the Google Play store. Some, like the folks at CyanogenMod, enhance the pure AOSP code with additions but don't change the overall look and feel. Again -- that's how this open-source thing works. You can't have it without allowing folks to change it as they see fit, for better or worse. Any of us can download and build the AOSP. We can even stay compliant with the ACP and contact Google about including their applications. Yes, any of us could build our own device using the AOSP code in our garage or basement with Google's full blessing. That's the beauty of the AOSP, and we wouldn't want it any other way. -------- What is a widget? What is a widget? In Android, the word widget is a generic term for a bit of self-contained code that displays a program, or a piece of a program, that is also (usually) a shortcut to a larger application. We see them every day on web pages, on our computer desktop and on our smartphones, but we never give too much thought into how great they are. Widgets first appeared in Android in version 1.5, and really gained traction thanks to HTC's Sense-flavored version of the operating system. Prior to the release of the HTC Hero and our first taste of Sense, widgets were functional, but pretty bland in appearance. Since then, OEMs and independent developers alike have done some marvelous things with widgets, and it's hard to imagine using Android without them. Android widgets come in all shapes and sizes and range from the utilitarian 1-by-1 shortcut style to full-page widgets that blow us away with the eye-candy. Both types are very useful, and it's pretty common to see a widget or two on the home screen of any Android phone. A full-page widget, like HTC's weather widget for late-model Android phones, tells you everything you need to know about the current conditions, and is also a quick gateway to the weather application where you can see things like forecasts and weather data for other cities. At the other end of the spectrum, the Google Reader 1x1 widget watches a folder in your Google Reader account and tells you how many unread items there are, and opens the full application when pressed. Both are very handy, and add a lot to the Android experience. Most Android phones come with a handful of built-in widgets. Some manufacturer versions of Android offer more than others, but the basics like a clock, calendar, or bookmarks widget are usually well represented. This is just the tip of the iceberg though. A quick trip into the Android Market will dazzle you with the huge catalog of third-party widgets available, with something that suits almost every taste. With Ice Cream Sandwich supporting things like higher resolution screens and re-sizable widgets, it's going to be an exciting year seeing what developers can come up with. -------- What is tethering? What is tethering? Besides the grounds for a giant debate about ethics (the kind that you can only find on the Internet) tethering, in this case, means to share the Internet connection from your phone with other devices. There are several ways to accomplish this -- connecting your phone to your computer via USB, setting up your phone as a wireless hotspot and router, and sharing a data stream over Bluetooth. All these connection types are built into Android, with native Bluetooth tethering new in Ice Cream Sandwich. Of course, different manufacturers can, and have, modified things so that these options are excluded -- at the behest of the carrier, of course. We'll talk more about why in a few minutes. Tethering itself is pretty easily done. USB tethering involves installing device drivers (Windows only) and plugging in your phone to a high-speed USB port on your computer, then using your computer's built-in connection manager to use the phone or tablet as a USB modem. Bluetooth tethering will need the phone paired with the computer, and the connection type set up correctly in your computer's Bluetooth settings. Wifi is the easiest way -- you just turn it on and connect as you would any other wireless hotspot. Except that many carriers, especially in the United States, have blocked tethering this way. You see, your carrier wants to charge you a premium to use your data plan from any device besides your phone. Nobody likes it, but it's in the terms you agreed to when you signed up. They have all sorts of ways to block tethering on their end, and they are pretty diligent about it. Android hackers and developers also have found ways to work around these blocks, and it's a big cat and mouse game. An inside source with one the the biggest cellular carriers in the world has specifically told me that if your usage pattern draws suspicion, there is no current method that can't be detected by you carrier, including the newer VPN methods. If you do it a lot, without paying the extra fees associated with it, you'll get caught. We're not going to judge anyone, and a few of us here at Android Central think charging extra for tethering is silly -- especially with data caps. Just know what may happen before you start so you don't get caught unaware. --------- What is sideloading? What is sideloading? It's a term you see a lot thrown around while talking about Android applications, and it's simple to explain. It means installing applications without using the official Android Market. What's less simple is how it's done and why you would do it. That's where this post comes in. Let's explain it, shall we? How to do it is easy enough, so let's start there. In the Application settings on your Android phone, you'll find a check box to "Allow installation of non-Market applications." When it's checked, you can sideload. You'll also see a pop-up warning when you check this box letting you know that your phone is now more vulnerable to attacks from applications, and that you accept all the responsibility that comes with doing this. It makes sense -- you can't hold Google responsible for applications you didn't download through their service using their security methods. Sideloading apps is easy to do as well. You download them to your phone, then use a file manager application to find them and "click" their entry. You'll invoke the app installer program, and it will install your app just as if it had came from the trusted Android Market. It won't be associated with your Android Market account, but it shows in your app drawer just like all the rest. It didn't used to be this easy for everyone. Under the guise of security, AT&T used to block users from sideloading by removing the Unknown sources field in the device settings. Whenever you tried to manually install an app, it would be blocked because it wasn't allowed. This could be circumvented by using adb from the SDK or by using a program like the Sideload Wonder Machine. Luckily, those days are past us and AT&T has re-evaluated their position, and now allows the installation of non-Market apps. Why would you want to sideload. There are several reasons, one being that Google has allowed carriers to block certain applications based on the model and network your device is running on. We've seen carriers block apps that permit tethering without paying the extra associated fees, and some carriers have exclusives for certain apps and they aren't available for the others. That's a whole other mess that we'll tackle in another post -- just know that it happens. There are other reasons to need to sideload apps, too. Want to use a different appstore like the one from Amazon? You'll need to enable sideloading. The same goes for beta testing apps for developers, or even coding your own apps and testing them on your phone. There are a lot of legitimate reasons for sideloading. Of course, there's always the piracy aspect. If you want to steal from hard working developers you'll need to enable sideloading. You also suck. Sideload, but don't steal from developers. -------- What is open source? What is open source? Open-source software is software that makes the source code freely available, for anyone to see and use. There are different open-source licenses that have different use conditions, from the GPL (GNU General Public License) -- which allows "free distribution under the condition that further developments and applications are put under the same license" -- to more liberal licenses like the Apache License, which doesn't require modifications to be open and have the source code available. Android uses both of these licenses, and we'll have a look at them in turn. The Linux kernel that is used in the OS is covered under the GPL. This means that any changes made to the source code must be made available when a binary (geek-speak for a compiled, executable piece of software) is released to the public. This means manufacturers like HTC, Samsung, Motorola and the rest must release the kernel source-code for any devices they sell at the same time they begin selling them. For the most part, hardware manufacturers are pretty good about doing so, but they often miss the time frame and release the source code a little later than we would like. These are the code releases you see us mention -- the kernel and other open-source "bits" that are covered under the GPL. The Android OS source code is released mostly under the Apache License. Anybody is allowed to download the source code and change it however they like, but they are not required to make their changes available in source code form to the public. This is why we can't change and recompile things like HTC Sense or MotoBlur -- the changes to the base Android source code aren't available to us. While many folks (myself included) don't like this situation very much, it does make sense from a business standpoint. If manufacturers had to share all of their secrets, there wouldn't be as much monetary incentive to innovate, so the source was offered with a far more liberal license. It certainly worked, as we see devices from many major players in the electronics world. ---------
too,too
aaaaaand too
Good one buddy! It's good for noobs! And pro's!!
updated 2+3 post.
Awesome guide bro very informational
Can you emphatize in any way the questions ? Like bold it. I try to read but i get lost easly x'D
Yeah i know what u mean,i do it with colors. NERDIFIED TILL DEATH!!!
I like this so far. Please keep up the good work.
Bluetooth ble 4.0 and Android, I'm lost!
I am using a hm-10 to connect to my Android test application. Unfortunately, is a big struggle compared to the hc-05 device. Anyway. The "samplegatt" does not work, either with my device or for whatever reason. So I found a different blog that explains the sample must be modified: (the dumb forum won't allow me to post a link) ayh tee tee pee android-er.blogspot.com/2015/12/connect-hm-10-ble-module-to-android.html?showComment=1454055306623#c9017603593836048433 So after the modifications, THAT won't work either. It's not the first one, just the most recent.... I have tried so many example applications from google searching, I have saturated my efforts. I KNOW the module can work with my phone, from using a ble test application from play store (that I can't seem to find company website or track down the source code for). I was hoping to know if anyone else struggled with this, and if you can advise me on how / where to get a working sample application.
It turns out, the new changes for sdk version 23 require all types of permission changes in the code, since someone decided it was a good idea to enable gps location in order to use bluetooth. I had to change my target sdk back to 22 and the samples started working.