Post is pinned.
Sometimes I find interesting things in apk teardowns that aren't quite right for a whole post on Android Police. I still think some of them are cool, interesting, or funny, so I'll be sharing them here on Tiny Teardowns.

YouTube Gaming Easter Eggs - https://plus.google.com/+CodyToombs/posts/ces9wTG4fyq

Remember, if you'd like to follow me but don't have any interest in these, you can always unfollow individual collections. Alternatively, you can follow just this collection and leave the rest of my posts out. I won't judge you too much.... well, maybe a little. ;p

A little code for activating Google Lens (while it worked)

Google Lens was active and usable for a few hours this afternoon after I posted a teardown of Google Photos v3.5, [1] provided you use a simple trick to launch the activity. To be clear, Google pulled the plug on Lens shortly after this was discovered, but it did give us a little time to play with it. Unfortunately, there some surprisingly inappropriate behavior followed. Since the situation was blown a bit out of proportion, I thought it was worth addressing what the method actually involves.

[1] http://www.androidpolice.com/2017/09/13/google-photos-v3-5-prepares-launch-google-lens-resumes-work-timestamp-editing-apk-teardown/

I wrote a quick app to launch the Lens activity. It's nothing special, just about 7 lines to do anything important, and about another 15 lines of code for formality. This only took about 10 minutes to write and test, but it demonstrates just how easily something like this can be done.

The repository is here. It was built from a default project and I didn't bother cleaning it up, so it still contains unnecessary test projects that you'll want to ignore: https://github.com/CodyToombs/QuickShareToGoogleLens

The important file can be found here:
https://github.com/CodyToombs/QuickShareToGoogleLens/blob/master/app/src/main/java/com/codytoombs/quicksharetogooglelens/MainActivity.java
with the only other necessary bit here:
https://github.com/CodyToombs/QuickShareToGoogleLens/blob/master/app/src/main/AndroidManifest.xml

This block and the next aren't related to activating Lens, they just register the sample app to receive images shared from other apps. This part is added to the AndroidManifest.xml file
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/" />
</intent-filter>

*Here is the onCreate method that receives the shared image. Again, this is mostly a formality. It checks that the incoming Intent and then sends it onto the code that actually does something.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();

if (Intent.ACTION_SEND.equals(action) && type != null) {
if (type.startsWith("image/")) {
handleSendImage(intent); // Handle single image being sent
}
}
}

And in the final step, it unpacks the image from the incoming intent, creates and launches a new outgoing Intent containing the same image and pointing to the LensActivity in the Google Photos app:
void handleSendImage(Intent incomingIntent) {
Uri imageUri = incomingIntent.getParcelableExtra(Intent.EXTRA_STREAM);
if (imageUri != null) {
Intent lensIntent = new Intent();
lensIntent.setComponent(new ComponentName("com.google.android.apps.photos", "com.google.android.apps.photos.lens.oem.LensActivity"));
lensIntent.setAction("com.android.camera.action.LENS");
lensIntent.setType("image/*");
lensIntent.setData(imageUri);
startActivity(lensIntent);
}
}

No part of this is remotely complicated, and any beginning Android dev can piece it together pretty quickly with a couple of samples from the web. Anyway, I hope this is helpful to a few devs out there and puts some of this stuff into perspective for other readers.

Post has attachment
Google Fit v1.72 Tiny Teardown: Challenge Accep...err, Declined

Many of the things that turn up in my teardowns tend to come true, albeit sometimes long after we would have expected them to. Unfortunately, some projects are also killed off and ultimately removed. That appears to have happened with a feature called Challenges that was covered in a teardown of Google Fit v1.57 [1] a little over a year ago.

The latest update to the apk comes in at about 2MB less than the previous version, and a look through the resources shows that next to nothing was added, but a ton of stuff was removed. It was plain to see that the Challenges feature was the clear target. I won't copy any of the text into this post because it has gone mostly unchanged since last year's teardown.

I can't say I'm entirely surprised, but I didn't really expect to see a premature death for the only social feature in Fit. I would be curious to know the story of what happened. I'm a little concerned that this means Google is scaling back its ambitions for Fit, which already felt pretty lackluster.

[1] http://www.androidpolice.com/2016/07/04/google-fit-v1-57-will-add-group-challenges-nutrition-data-local-rankings-target-weight-and-more-apk-teardown/#Challenges

Post has attachment
Google Camera v4.4 Tiny Teardown - Your Shots Are So Cheesy

The slightly-less-restricted version of the Google Camera is out for Nexus and Pixel devices running Nougat. It's not a major update from the previous build for Android O, but it does include strings for a new, and very unusually named feature: Gouda Mode.

<string name="mode_gouda"> Gouda </string>
<string name="mode_gouda_desc"> Switch to Gouda Mode </string>
<integer name="camera_mode_gouda"> 7 </integer>

I think it's safe to say this has nothing to do with the city of Gouda in the Netherlands, and it's unlikely to be a dedicated mode for photographing the namesake cheese, though that would be an especially fun kind of quirky.

I'm not really sure what it does, yet, but it technically takes the place of "Portrait Mode" (which had been #7), so it may be a new codename for something that already existed, or it might turn out to be something altogether new. Hopefully we'll get a little more insight with the next update.

Post has attachment
Translate v5.11 Tiny Teardown: Lotsa Pretty Pictures

I've been poking around the latest update [1] to the Translate app, but nothing particularly notable has been turning up for a post on AP. However, there are a bunch of new images that are at least interesting to look at, even if they're not really indicative of new features. In fact, it looks like they're probably just there to illustrate existing functions for new users. I do hope some of these become part of the standard interface because they actually look quite good and the app could use a little color.

[1] https://www.apkmirror.com/apk/google-inc/translate/translate-5-11-0-rc15-164051634-release/
PhotoPhotoPhotoPhotoPhoto
8/7/17
13 Photos - View album

Post has attachment
Allo v15 Tiny Teardown: Micro Machines

The latest version of Allo landed late yesterday, but this one doesn't appear to have any new features on the surface. Edit: Just stumbled onto a small addition that will get a post on AP. In fact, a teardown shows that it's mostly just preparing for the launch of the web client, which was discussed in the v14 teardown [1]. There was one unrelated thing that did raise my eyebrows, though. A new batch of strings called "micro machines" has been added:

<string name="micro_machine_data_reset"> Reset </string>
<string name="micro_machine_data_reset_complete" formatted="false"> %s reset data for: %s </string>
<string name="micro_machine_data_reset_dialog_body"> "You are resetting everyone's progress in the selected activity. Are you sure?" </string>
<string name="micro_machine_data_reset_dialog_button_text"> Reset </string>
<string name="micro_machine_data_reset_dialog_title"> Heads up! </string>
<string name="micro_machine_data_reset_incomplete" formatted="false">"Something went wrong with %s's reset data for: %s" </string>
<string name="micro_machine_device_offline_error"> Network is not connected </string>
<string name="micro_machine_general_launch_error"> There was an error, please try again </string>
<string name="micro_machine_leave_select_description"> Stop selecting </string>
<string name="micro_machine_open_picker_icon_description"> Launch </string>
<string name="micro_machine_picker_close_description"> Close list </string>
<string name="micro_machine_picker_menu_description"> Menu </string>
<string name="micro_machine_picker_menu_learn_more"> Learn more </string>
<string name="micro_machine_picker_menu_reset_data"> Reset </string>
<string name="micro_machine_picker_title"> Launch </string>
<string name="micro_machine_reset_select_title"> Select activities to reset data </string>

Most of this is basic UI stuff, so there's not much to really clarify what it does, but a single line betrays one detail: "You are resetting everyone's progress in the selected activity." The mention of "progress" and "activity" sound very unlike a typical chat app. It sounds a little like a game or some kind of group-related feature.

That's it for now, but I suspect we'll see the web client going live this week or next.

[1] http://www.androidpolice.com/2017/07/18/allo-v14-includes-improvements-to-the-image-editor-tracking-handle-for-audio-clips-and-much-more-apk-teardown-download/#Desktop_Web_client

Google+ v9.17 Tiny Teardown: Actions Customized

There hasn't been a lot of activity with Google+ in a while, and today's update had very little to suggest it was any more than a few bug fixes. However, there were two strings that had me super curious because they don't really make a lot of sense.

The first is a string name referencing custom actions. To put it simply, I've never heard of custom actions in Google+, so it's certainly odd.

<string name=" accessibility_hint_custom_actions "> Actions: </string>

My going hunch, which is nothing more than a guess, is that Google+ may be adding an API for developers to define custom actions in posts. For example, an exercise app might post a user's last run and include a custom action called "Challenge Me" that opens the app on another user's device and automatically sets up a challenge with the original poster. Alternatively, it could be a little more like Android's Intent system where people post links or metadata of some kind and various apps can subscribe to handle each type of thing. Either way, it would be a neat touch.

The second string is less interesting, but similarly makes little sense in its current context. It refers simply to navigating to a category, but G+ doesn't have anything called a category, per se. I doubt it's really that interesting, and might even just be the term for something else like hashtags, but it's at least something I'm curious enough to watch for.

<string name=" accessibility_action_category_navigate "> Navigate to Category: %1$s </string>

That's it for this one, but keep an eye out for more!

Post has attachment
Maps v9.52 Tiny Teardown: One Hairy Crisis

There's a new beta version of Maps rolling out on this Friday afternoon, and it's... Well, it doesn't seem too exciting, but you shouldn't install it on Android O because it's crashing with Navigation. At least I haven't seen any live changes yet, but there's almost always something buried in the detail pages for some type of business or attraction. Anyway, there are a few strings that gave me at least a moment of pause. They don't really need a proper teardown, so I'm putting them here for now.

First, the one thing that's actually going to be a new feature. It looks like Google is going to break up the Contributions tab into something that shows a little more detail about the helpful tips you've left in Maps. There aren't any other details at the moment, but maybe we'll see it go live in the next release, or maybe even sooner.

<string name="CONTRIBUTION_STATS_BREAKDOWN_SECTION_TITLE"> Number of Contributions </string>

The second line is suited to more serious situations. Maps may begin posting notices when there is a crisis in the area. Nothing else is shown yet, but when one is posted, it will include a link to get more details on Google Search.

<string name="CRISIS_MORE_INFO"> More on Google Search </string>

And finally, one that just looks too funny to be real. A string called "hair space" has been added, and the only thing in it is a single space.Actually, it's not just a space, but a half-width space. I'm not sure if it will show up in Google+, but I'll put both strings side-by-side below for comparison. The top line is the original, and the bottom has the hair space replaced by a regular space. This isn't really important, but I just love that it's called "hair space."

<string name="HAIR_SPACE"> </string>
<string name="HAIR_SPACE"> </string>

Anyway, that's it for this one. Have a good weekend! Oh, and I have another teardown in the works that I hope to have up tomorrow morning (or maybe Sunday), so keep an eye on Android Police.

YouTube Gaming Easter Eggs

I've documented a few of these across both Tiny Teardowns and in Android Police articles, but it seems like time to put them all in one place so they're easier to find for us completionists out there. I'll keep this list updated as new easter eggs are added/discovered.

For those that may not know, the YouTube Gaming app includes an Easter Egg counter under Settings -> General. Each Easter Egg is a reference to a classic or influential game. There is usually a new Easter Egg added with each minor version bump, though one or two didn't work with until a bug fix update came out later.

v1.0: Asteroids
Open Settings -> About -> tap the app version a few times until the title bar changes.

v1.1: Battletoads
Open the Battletoads (1991) page and tap the PRE-ORDER button.

v1.2: Contra
Open the Contra (1987) page, tap the gamepad icon, enter the code (Up, Up, Down, Down, Left, Right, Left, Right, B, A).

v1.3: Doom
Open the Doom (1993) page and press the back button to leave it.

v1.4: Elder Scrolls V: Skyrim
Open the Skyrim (2011) page, tap the gamepad, enter the code LAAS, YAH, NIR.

v1.5: Final Fantasy
Open the Final Fantasy II (1988) page and tap the chocobo egg icon.

v1.6: Gauntlet
Open the Gauntlet Legends (1998) or Gauntlet (2014) page and tap on the knife & fork icon.

v1.7: Half-Life
Open a page for any Half-Life game and tap on the logo.

v1.8: Icewind Dale
Open any Icewind Dale game and tap on the die icon.

v1.9: Journey
Just open the page for Journey. No need to do anything else, it registers by just showing up.

v1.91: King's Quest
Search for any King's Quest game, tap on the two people icon.

v1.92: Loom
Search for Loom (1990) and tap on the gamepad symbol. There's no need to tap on any notes.

v1.93: Metal Gear Solid
Search for Metal Gear Solid (any version), tap the gamepad. There's no need to mess with the numbers, but if you set the right number (i.e. 140.85, 140.96, 141.80, 141.52, 140.15, 141.12, or 140.48) and hit the call button, it will put up the message "SNAAAAAAAAAAAAAAAAKE!"

v1.94: Neko Atsume
Search for Neko Atsume (2014) and tap on the dinner plate icon. The icon switches to cat food, a donut, fish, or chicken. Some Android users may recognize this as the Neko Cat easter egg introduced with Android 7.0.
ref: http://www.androidpolice.com/2016/07/18/gotta-catch-em-android-7-0-easter-egg-basically-pokemon-go-cats/

v1.95: The Oregon Trail
Search for Oregon Trail (1971) or any of the sequels and tap on the cow symbol. If you're not logged in, a tombstone appears with the words "You have died of dysentery." If you are logged in, "you" is replaced by your name..

v1.96: Portal
Search for Portal (2007) or Portal 2 and tap on the birthday cake symbol. (Note: this is the 10th anniversary of Portal.) This will open the video titled Portal - 'Still Alive' as performed by GLaDOS during the game's end credits.

v1.97: QWOP
Search for QWOP (2008) and tap to see the detail page, then just hit the back button and you'll see a toast message that reads: "Everyone is a winner." That's it.

Play Movies & TV v3.21 Tiny Teardown: Hide and go search

The latest update to Play Movies & TV [1] isn't completely without changes, but they appear to be subtle formatting and layout changes that shouldn't impact use. A quick look inside does provide an insight into a bigger layout change to come. There's going to be a new tab-based search interface that makes it a little easier to find the type of content you're looking for. The tabs will be: Ready to watch, Buy or rent, and All. Naturally, the first two show the difference between items you've already purchased/rented versus those you haven't, and the final option works just as search always has.

There is already code referencing the strings and a debug setting for use in testing, but the interface isn't live for regular users just yet. Judging by just these clues, it's likely we'll have to wait until v3.22 or a later update for this to go live to regular users.

<string name="tab_search_all"> All </string>
<string name="tab_search_entitlement"> Ready to watch </string>
<string name="tab_search_purchase"> Buy or rent </string>

<activity android:name=" com.google.android.videos.mobile.usecase.search.NewSearchResultsActivity" android:configChanges="keyboardHidden" android:exported="false" android:theme="@style/AppTheme.Drawer.Search" />

from /res/xml/exp_preferences.xml
<CheckBoxPreference android:title="Enable New Search Page" android:key="enable_new_search_page" android:defaultValue="false" />

[1] http://www.apkmirror.com/apk/google-inc/google-play-movies/google-play-movies-3-21-7-release/
Wait while more posts are being loaded