[G1 Android Development] Brut.all:
Features:

worldwide navigation using Google Maps Directions

map tiles caching on SD card

force-enable MT. If you're on Eclair or some custom Donut and don't have multitouch zooming, then maybe this will enable it.

force-enable Buzz feature

fix for map shift issue in China

option to hide zoom buttons

installable on non-rooted devices

could be installed beside original app

Credits:

canadiancow for starting a brainstorm; an idea to use maps directions as backend for navigation; great Nav Launcher app; helping and support

TAPP for enabling "Navigate" button; first version for non-rooters

acamar for his research on map shift issue in China

many, many people for testing it, complaining ;-), helping others, etc.

Google for making this great app and service and for not sending C&D to me so far ;-)

Download:

maps4.6.0.4686-brut.apk

md5sum: 456b3fe71f74bb8b76a443be4075473c

maps4.6.0.4686-brut-renamed.apk - probably not usable - random ANRs

md5sum: a378ce5d9ddd07c489d129e972a5c2bd

maps4.6.0.4686-brut-renamed-tagged.apk - probably not usable - random ANRs

md5sum: 1bf581213c77fe2e3aa9fa1b7001d01b

Variants:

This mod consists of many independent changes and some of them may be good or bad for some people. Unfortunately not all changes could be configured at runtime, so we need several apk files to let people choose what they want.

There are 3 packs of changes:

-brut - it's a BrutMod itself: international navi, map caching, etc. All of these changes are configurable at runtime.

-renamed - Android package name was changed from original com.google.android.apps.maps to brut.googlemaps . See "Package name changing" below if you don't know, what this means.

-tagged - all icons in the launcher, widgets, etc. were tagged with red "BRUT" sign, all icon names were suffixed with "[brut]". It's to distinguish modded and original GM if you have installed both.

Then we could create several variants of this mod with different combinations of changes, but fortunately only 3 of them actually make sense: -brut, -brut-renamed and -brut-renamed-tagged.

Note: I know this may be confusing for some people, who get used to brut.googlemaps as normal package name for this mod and com.google.android.apps.maps as "stockified" modification of it. You should take into account that starting point is original GM with original package name, so com.google.android.apps.maps is actually "normal" and brut.googlemaps is modded/renamed one.

Installation:

For -renamed variants: just download & install. For others: see section below.

Package name changing:

Generally it means that modded app is identified by Android OS as totally different app, not connected to Google Maps at all. There are several consequences:

Android forbids to install same app twice. If you want to install modded app, you have to uninstall original one first. -renamed variant is detected as different app, so you could install it normally and then you will have installed both original and modded app.

It's much worse if you want to replace system app - and Google Maps is a system app on many devices. You can't uninstall system apps just like that, cause they're write-protected. You need root and probably some hacking, so if you had Google Maps preinstalled on your device and don't have a root or don't want to hack, then use one of -renamed variants.

Some apps call GM by name and if you have -renamed variant, then they can't find modded GM, cause it's detected as different app. People have such problems with Car Dock, Street View and few others.

Maps cache - formats:

BrutMod natively supports two formats for stored tiles: Andnav format and BrutMod old, which is kept for backward compatibility and will be eventually removed. You could also set custom path to stored tiles if you want to use different format.

If you have cached tiles from other maps/navigation app and they're stored in "one tile, one file" format, then you should be able to use them with BrutMod. You have to choose custom database format and set path to tiles. Path can contain variables - currently supported are:

(Z) - zoom level

(Y) - Y id of a tile

(X) - X id of a tile

So for example custom path for AndNav format would be: (Z)/(X)/(Y).png.andnav . If you would set something like: (Z)-(X)-(Y).png , then all tiles would be stored in one directory. Be cautions when setting a path: it's very simple and not very smart algorithm - if you would do something wrong, for example don't close bracket, then BrutMod will read/write everything from/to special "ERR" file.

Maps cache - zip support:

Having thousands of files isn't good for a filesystem. Usually they use more of space than they should - sometimes A LOT more. BrutMod supports tiles zipped into one file and format is identical as for normal files.

For example: we use AndNav format and we have /sdcard/brut.googlemaps/tiles/map-en_US-andnav directory. Inside of it we have "13" and "14" subdirectories. We could zip these subdirs into a zip file, so they will be in the root (right after opening a zip file you will see "13" and "14" dirs) and place it to: /sdcard/brut.googlemaps/tiles/map-en_US-andnav.zip . Then you could remove original "13" and "14" dirs and tiles will be read from a zip file.

If you have "Save map to cache" option enabled, then you could compact all saved tiles from time to time. Just open zip file and add all loose tiles to it. Then remove tiles. Maybe someday I will add automatic compactor to BrutMod.

Maps cache - downloading maps:

There are several downloaders available, I recommend Mobile Atlas Creator. Open it, select some area and zoom levels, click "Add selection" button, choose "AndNav atlas format", click "Create atlas" and wait. Then open directory with atlases, open your new atlas ("Unnamed atlas_<date>"), open "Google Maps" dir (or something else, if you didn't download Google's map) and you should see directories "0" - "19" - depending on which zoom levels you have chosen. Copy these directories to e.g. /sdcard/brut.googlemaps/tiles/map-en_US-andnav/ dir or zip them all and copy to /sdcard/brut.googlemaps/tiles/map-en_US-andnav.zip . If you have zip file already, then you could add new files to archive or do a unzip, copy, zip combo.

And one more advice related to maps cache. If you have any problems with creating custom tile path, zipping or pushing predownloaded tiles, then enable "Debug mode" in BrutMod menu and look into logcat. There you will see where BrutMod looks for files and why it can't find them.

FAQ:

Q: Phone reboots when I try to reinstall maps.

A: Uninstall it and then install. It's Android issue, may occur even when updating original Maps from Market.

Q: When navigating directions are in English, but I set different locale.

A: They are forced to "en_US" to guess turn symbols from them. You could disable this feature in BrutMod menu, but you will lost turn symbols.

Q: Feature X doesn't work!

A: Did you enabled it in Menu -> More -> Brut Mod?

Q: Could you add feature X?

A: Just ask in this thread, but you should take into account that I'm not an author of this app, but a modder. I work mainly on features, that Google probably won't add for some reasons: licensing concerns (int navi), non-standard ROM support (MT), "whole world is online" assumption (maps caching), etc. GM is rapidly developing, so if you have e.g. some UI suggestions, you should ask Google about them. I could work on some of these, but they have low priority.

Q: Car Dock, Google Voice Search or other app always use original Google Maps - it doesn't ask me about your mod. What can I do?

A: See "Package name changing" above.

Q: Multitouch still doesn't work even if I enabled it in BrutMod menu.

A: As description says, it may work, but may not. There are plenty of custom roms, each has different bits and sometimes GM disables MT even if it could use it normally. My mod could force it to enable, but it won't add MT support.

Q: What is "Unlock hidden features" option?

A: There are features that are hidden for some reason: they aren't finished yet, are for debugging, etc. If feature does not give you something really useful, but is for curiosity and maybe some fun, it will be controllable through this option. For now there are:

navi: menu->Switch to Walking/Driving - seems working fine, don't know, why they are hidden.

navi: menu->Report a Problem - doesn't work for me, but it is location related, so maybe works for someone else. When I was migrating to 4.2.0, I saw many new resources related to this feature. Will be quite good feature, when it will be finally enabled.

navi menu->Settings - for now it's nearly empty, has one option related to above "report a problem" feature

navi: Enable/Disable mock location - quite funny and really, really useful for me. There would be no voice fix, if I would not find it :-)

Q: How does navigation hack work? Could you hack Google Voice and other services to work outside of USA as well?

A: No, I can't. Generally it's not possible to bypass security of most server-side services, because their owners have full control over a situation. GMM navigation is an exception of this rule, cause of Google Directions. GD is some kind of navigation service, only limited. It uses exactly same data as navi and uses it in similar way. So why Google has created two navigation services: one full and one limited if both are for free? Because of licenses which G has signed with map providers - Google can't use map data for "real-time, turn-by-turn navigation", but they can for just "directions". This is why GD is available worldwide, but navi in supported places only.

I have modded GMM, so each time it wants to ask servers about navigation route from A to B, it actually asks about Google Directions between these points. GMM gets GD response which is missing a lot of data required by navigation, e.g. turn symbols, voice, etc. Then I try to somehow guess and add these missing things, so response will be as much as possible similar to real navi response.

Pretty smart, huh? Thanks @canadiancow for this wonderful idea :-)

Q: You didn't answer my question/help request.

A: Usually I totally ignore people, who ignore me. I spend time to make all necessary info, instructions and answers easily findable - in first post. If you ask about something, that was answered there, I will probably ignore you. If you are lucky, someone else will answer you.

TODO:

navi: map caching

navi: routes caching

navi: "continue on turn left on" issue

navi: turn symbols without forcing locale

navi: automatically use normal navi when available

navi: guess ramp direction

MT on custom Donuts using backported Eclair bits.

MT on stock Donuts through Luke Hutchinson's lib

Limits (issues that we know of, but are impossible or very hard to fix, so they aren't on TODO):

navi: too long directions in top bar

Changelog:

brut17 (07.11.10)

updated GM to version 4.6.0.4686

from now GM is released in 3 variants: -brut, -brut-renamed and -brut-renamed-tagged

added an option to choose map cache format - AndNav is a default, but old one is also supported

added support for zipped map cache

app directory is always /sdcard/brut.googlemaps - it does not depend on package name

readded es_MX language

removed Vector map test

fixed some ContextNotSet warnings

brut16 (09.08.10)

fixed "Data exceeds UNCOMPRESS_DATA_MAX" issue

removed es_MX language - es is used instead (caused by above issue)

brut15 (07.08.10)

does not work for many ROMs - "Data exceeds UNCOMPRESS_DATA_MAX" issue

updated GM to version 4.4.0.4414

brut14 (24.06.10)

updated GM to version 4.3.0.4305

added vector maps test

added BrutMod menu to navigation app

tagged gohome icon, Latitude widget and shortcut

fixed ContextNotSet issue

brut13 (19.05.10)

navi: fixed voice feature!

added "Unlock hidden features" option (see Q/A section)

added "I'm in USA" option

brut12 (18.05.10)

added fix for map shift issue in China - many thanks to acamar :-)

added option to force enable Buzz feature

TurnUtil: Added "* turns slightly *" support

brut11 (12.05.10)

Google Maps updated to 4.2.0.4210

unlocked DestinationActivity when int navi is enabled

fixed "disabled MT" bug

brut10 (08.05.10)

added simple map caching feature! For now it's some kind of demo (but usable), will be more featureful soon.

readded multitouch force-enable feature

reworked Brut Mod screen: added some credits, link to XDA, categorized preferences

navi: added turn symbol for merges

fixed force locale bug

fixed some exceptions right after navigation start

brut9 (05.05.10)

added option to force locale in navi requests to en_US, so turn symbols will work

added option to hide zoom buttons

international navigation is now enabled by default

brut8 (04.05.10)

navi: fixed turn symbols feature - I've screwed it up right before brut7 release

brut7 (04.05.10)

navi: added "street names" in top bar

navi: added turn symbols (for now you must set "en" locale to use it)

added possibility to use hacked or normal navigation - you can choose this from menu (and int navi is disabled by default - if you're updating and want to use it, then remember to enable it)

reverted MT mods for now

based on GM4.1.1

seems more bug free to me

rev6 (04.03)

mod version included in app versionName (4.0.0-brut6)

added "[brut]" postfix to Add -> Shortcuts -> Directions & Navigation

fixed navi shortcut bug

fixed directions to contact bug

rev5 (01.03)

Minor update, but great from technical point of view:

repackaged all resources

changed app name and icon to distinguish it from original maps

changed package name to brut.googlemaps

rev4 (10.02):

now MT depends on existence of MT framework, not on Android version, so it will be enabled for 2.0 and 1.6 with backported MT bits, but app will work on stock 1.6 too (without MT)