CellularPrivacy / Android-IMSI-Catcher-Detector

AIMSICD • Fight IMSI-Catcher, StingRay and silent SMS!
https://cellularprivacy.github.io/Android-IMSI-Catcher-Detector/
GNU General Public License v3.0
4.76k stars 948 forks source link

Maps Viewer #13

Closed xLaMbChOpSx closed 9 years ago

xLaMbChOpSx commented 10 years ago

The View Map feature originally from RawPhone was used to display a map with signal strength overlays showing tracked data about signal strength information captured through the app.

I have rewritten a portion of this but wanted to ask if this is what we want to display on the map or show something else as signal strength is not really a main objective of the project.

Any thoughts or suggestions would be great so I don't waste time on writing something we don't really want. :)

SecUpwN commented 10 years ago

@xLaMbChOpSx, instead of showing the signal strength, I'd rather prefer a map of where attacks happened. Although the main function of AIMSICD (showing if network encryption is disabled) is not implemented yet, but maybe AIMSICD can also upload the plotted map data and compare it with other results to trace down fake cell towers? Just my two little cents. I don't need a map with signal strengths.

E3V3A commented 10 years ago

First of all, don't spend too much time on the map function. We need the other AT stuff resolved first. (Also, I'd prefer to stay with Google maps, since that's what most people have, by stock/default, unless you have a better solution, with alternative maps, that are easy to implement.)

I'm thinking that there are 3 essential things to consider here: a) Showing a BTS "history" that would indicate if there's a sudden BTS popping up, where one has not been seen before. 2) If the encryption of a BTS has changed. 3) If the signal strength of a BTS has changed radically "lately". [We need to think more about this.]

So it's hard to see what's going on with this, without pictures...

xLaMbChOpSx commented 10 years ago

Yeah the maps stuff is already written I was just trying to get the database helper to play nicely with it but didn't want to waste my time if it was not something that was important at the moment. The tracking all works well and currently captures signal strength, cell information and location into individual tables which of course can be modified but the code is there to support SQLite database actions for whatever purposes are needed.

SecUpwN commented 10 years ago

@xLaMbChOpSx, I go with the suggestion of @E3V3A. Having an overview of these would be great. Maybe, in a later point of time, the map could automatically display identified real and fake cell towers..

He3556 commented 10 years ago

No3 of @E3V3A is a very interesting point.

  1. The fake BTS would send with a higher signal strength than the original.
  2. But we should also notice the distance between the BTS and the phone. Because the fake BTS would imitate a BTS, which is far away - to overlay its signal. (If it imitates a near BTS, the catcher would need much more power, than the specification allows. And the radius would be greater > more phones would be catched or interruped)

So if we get a high signal from a BTS which is far away, this can be a "flag yellow" or red (to tell it in the words of catcher catcher)

But in reality i am not sure if it always works. The BTS is changing the signal power and so is the phone, too. There is a ETSI Spec. about how to regulate the sending power (for power saving). I found it, when i was looking for a way to calculate the distance to the current connected BTS.

This could be a much stronger indicator. We could compare the measured distance to the geo-positions we get from the map. But this 2. option is hard to develop i guess. But i can do more research, if you think you can realize it somehow.

E3V3A commented 10 years ago

@He3556 ...Which is why we eventually need the raw diagnostic radio stream, so that we can also measure Timing Advance (TA) among other things...

xLaMbChOpSx commented 10 years ago

The MapViewer class has been totally rewritten and is functioning correctly now including overlaying signal strength information, it has been upgraded to Google Maps API v2 whilst still maintaining compatibility with our minimum SDK level. I will push the commit shortly.

SecUpwN commented 10 years ago

@xLaMbChOpSx, version 0.1.6 crashes instantly when clicking "Show Map" - probably because I have to Google Maps installed? Just to let you know: I HATE Google. No, I really do! Why in the world let Google get more data about me than it really should have? I get your point that you had to change to Google Maps API v2 to enable new features and gain an API Key, but can't we use something more open and free like stuff from the NoGAPPS-Project? Would be EXTREMELY thankfuk for an implementation of that. I'm sure @MaR-V-iN is willing to help making the switch, too.

E3V3A commented 10 years ago

@SecUpwN Uhm, good idea eventually..., but not right now, everyone "has" Gmaps and as little I like to share my data with Google, at least it works very good. WHy do you have 2 Gmaps installed!? That is not really the App problem I think.

EDIT: Dammit, I keep on getting the auto-filled tag names wrong...

SecUpwN commented 10 years ago

@E3V3A, was this question meant for me? I am using AOKP for HTC One - Generic GSM and it naturally comes without GMaps. To be able to use things like my beloved Öffi (a public transport companion showing connections even with dealays) I utilize the App NetworkLocation for KitKat and Maps API 1 v0.5 Beta 3, both from the NoGAPPS-Project. I really see the potential of making AIMSICD become an awesome privacy-tool, yet we should try to at least not make it dependent on proprietary code by privacy-invading monsters like Google. Hence my question: Is a switch to a free and Open Source alternative like provided by @MaR-V-iN possible in the long run? Not sure if I ask for too much if the Maps stuff can be built into AIMSICD. What do YOU think of this, @xLaMbChOpSx?

He3556 commented 10 years ago

There is something else we need to think about, when we switch to another map service sometime. The A-GPS is communication with Google Server, too. The assisted part sends out the Base Stations (Cell-ID's) to supl.google.com to get back information about the satellites in the area. This is usually a feature of the provider network. I didn't know, that Google delivers this feature in Android phones.
You can find the servers in the file /etc/gps.conf It should look like this: server 0.asia.pool.ntp.org server 1.asia.pool.ntp.org server 2.asia.pool.ntp.org server 3.asia.pool.ntp.org SUPL_HOST=supl.google.com SUPL_PORT=7276

If disabled, it will take a few minutes to get the right GPS coordinates. It seems that this is a problem in some custom ROM's. I am wondering if this service is also blocked in China? I will look for more info's about all that, (alternative services) when the time is right. Just want to inform you about it.

E3V3A commented 10 years ago

@He3556 We'll the other thing is, that soon people will not know the IPs of other DNS servers, than those of google, so the question is how far we should stretch our paranoia? Of course if google provides ping times of a few ms versus a few hundreds ms's for other servers, that will impact GPS lock-on times when moving around in uncommon areas. But is this something WE should worry about here? I don't think so, I think we should just have the option to disable/block (or change gps.conf) A-GPS and keep a pre-downloaded local map in device. (Assuming this is still possible.)

He3556 commented 10 years ago

yes, a option to disable the assisted part of the A-GPS it would be great. So the users can decide. I am just trying to think about the details. Thanks for your time.

mjowe commented 10 years ago

Maybe I'm totally wrong, but I thought there is an option in the System to disable A-GPS. Settings -> Locations Services -> Use wireless networks (.. use Google's location service to estimate your location faster ..) That sounds a lot like A-GPS to me.

I created Issue #50 just today. It should be merged into this issue somehow I think.

The Maps API recreation of NoGapps can now be found in the MicroG project. https://github.com/microg

Generally I don't see the Map View as a high priority at the moment. For now it would be no problem if it would just not work on devices without Google Services.

E3V3A commented 10 years ago

@mjowe See my response in other issue (#50). Yes, I now also think A-GPS is part of AOS. But there are some other funky and hidden behavior on Qualcomm modems, that kind of always keep the GPS on, even if never forwarded to AOS, user space. I found that out when investigating MSM modems in devices claimed not to have a GPS, and amazingly actually had a full GPS HW implementation installed and pushing GPS info into the big blue... And we simply do not know where this is going, without being able to monitor the radio interface.

E3V3A commented 10 years ago

@SecUpwN @xLaMbChOpSx In addition (and eventually) it would be very useful if we could have a spider web view of the local towers. For example, something similar to that shown in these apps/pictures.

Antennas spider1

Field Test-SignalSitemap, this is probably the most useful, as you would clearly see how your phone changes towers with location and time. spider2

Netmonitor spider3s

and also some more Cell Info when touching cell tower on the map, perhaps something like in G-NetTrack: map_cell_info1

One of the most awesome features of that app is the inclusion of the cell tower sector info.

gnettrack_sector_map

rjh427 commented 10 years ago

:+1:

xLaMbChOpSx commented 10 years ago

@E3V3A I think that is an awesome idea and looks pretty cool as well, I can create a custom Info Window layout for the cell markers and we can also select a custom icon to use for them as well so they look a bit better than the default marker and also provide extended details as suggested. The current release does include a number of extra details but in a very plain fashion using the default info window.

I would need to look into the spider web view but it would definitely be a worthy feature, I will look at that once I have the OEM_HOOK_RAW incorporated and also finish the fragment for the advanced cell details featuring neighbouring cell data.

SecUpwN commented 10 years ago

@xLaMbChOpSx, I absolutely support the previous comment of @E3V3A. Rock it! ;-)

E3V3A commented 10 years ago

@xLaMbChOpSx CC: @SecUpwN @He3556 I have been experimenting a little with the Google API's related to Geolocation of cell towers. This is a feature they've had for a long time, but which has evolved and changed many times in the last 2 years. In addition it is a feature that Google are trying not to publicly promote, unless you have a "business" account. However, the API is public and is used by many of the deeply connected google applications, including those of Mozilla, who has their own extremely similar solution.

The advantage of Google API is that it gives a very precise geo location of the cell towers, given normal LAC/CID/MCC/MNC data. This data is probably (?) way more reliable than that provided by OpenCellID, whose measurements are mostly based on passer-by's, and occasional users uploads. For example in my city there were essentially no cell towers recorded until I started to use OpenCellID mapping, whereas Google would know all of them.

The shit part of using Google is that they require an API key, which requires you to sign up for a verified gmail account and a connected and verified credit card, even if it is never used. The "test" service is free for:

On the other hand, you can Google for API keys, and eventually you will find some you can "borrow" from either other Android Apps or other online services. We can use some of these to test with so we don't have to sing up for anything, until we can get our own... But there are still other options.

You can read all about this HERE and HERE

You can then just provide a JSON file with the appropriate data to get a fairly good result. aimsicd_query.json:

{
 "homeMobileCountryCode": nnn,
 "homeMobileNetworkCode": 1,
 "radioType": "wcdma",
 "carrier": "Omnitel",
 "cellTowers": [
  {
   "cellId": nnnnnnnn,
   "locationAreaCode": nnn,
   "mobileCountryCode": nnn,
   "mobileNetworkCode": 1,
   "age": 0,
   "signalStrength": -81
  }
 ]
}

Then run the query with:

curl -d @aimsicd_query.json -H "Content-Type: application/json" -i "https://www.googleapis.com/geolocation/v1/geolocate?key=API_KEY"

...and so on.

Using Mozilla! http://mozilla-ichnaea.readthedocs.org/en/latest/api/index.html http://mozilla-ichnaea.readthedocs.org/en/latest/api/search_api.html#api-search https://location.services.mozilla.com/v1/geolocate?key=nightly

SecUpwN commented 10 years ago

@E3V3A, great proposal! My 2 cents: Although I really love my Android device, I have the mindset that Google IS EVIL. And before we get into a deeper discussion on this, let me make my point: I would LOVE to stay away from everything Google as much as possible. PLEASE USE THE FREE MOZILLA APIs!

Yeah, Google might make great tools, they provide better APIs - but you see what price we'd have to pay. Signing up to Gmail, creating a "verified account" (which of course only gets verified with a valid phone number, and THEN linking a credit card to it? Gosh, even a fool can see the pattern here! Or, maybe not.. otherwise people would use their BRAIN and throw away their Gmail Accounts, then start using secure alternatives while at the same time switching to better and non-tracking search engines like DuckDuckGo.

Other than that, I'd also like to stay away from "borrowing" keys - if we can avoid legal trouble, I'm by all means voting to do so from the very beginning. Trust me, enough people watch our project - and maybe not everyone thinks that positive about it. So please, let's use real Open Source @xLaMbChOpSx. :+1:

E3V3A commented 10 years ago

@SecUpwN Yes, I see your point. But we have to find a way to get reliable and highly accurate cell tower locations. This cannot be done without access to relevant debug GSM variables and/or excessive programming of new data collection and triangulation algorithms. So how do you propose to collect and obtain this info?

SecUpwN commented 10 years ago

@E3V3A, I really don't know. What keeps us from using the Moziall APIs? I can't imagine that Google really is our only option for obtaining these accurate cell tower locations! Maybe we should ask the N$A? I'm sure they have the most accurate info and are glad to help us. :tongue: Joke aside - I'll keep researching for a better method for obtaining accurate cell tower info. In the mean time, just keep this Issue open.

E3V3A commented 10 years ago

Since our migration from GMaps to OSM we have to re-implement and add the features from above. @tobykurien @xLaMbChOpSx @andr3jx @SecUpwN Our new Maps Viewer need the following fixes:

tobykurien commented 10 years ago

I've discovered some strange things while looking into this issue:

E3V3A commented 10 years ago

Yeah, I don't think it was ever implemented like that, I simply don't know. I think the past implementation was just showing all the cells from OPENCELLID_TABLE.

For reference, here's a picture of our current DB tables:

aimsicd_mycellinfo_er_2

Another possibility is that the currently connected BTS data is kept in memory (because of frequent updates). This would make sense, since searching and comparing that with what's in the DB would probably be easier that way. But I doubt it was implemented in that way. Only @xLaMbChOpSx could answer that.

So @tobykurien you propose a new/different color for Neighboring Cells? Yes, sounds good to me.

NghtWachman commented 10 years ago

Hi guys

Just wanted to introduce myself as a newbie and I'm excited of the work you guys are doing.

Came across AIMSICD while searching through the web for protection against fake cell towers as I seem to have mysterious events on my phone when online or talking with a friend. I have downloaded the app onto my phone a Samsung Galaxy S5 which as I've notice while reading about your supported devices S5 is not amongst the listed devices. Downloaded AIMSICD yesterday followed the instruction on how to install the app onto my phone and I now have a sweet app that gives me accurate location of cell towers around me. So far so good, as of this moment nothing seemed off and everything seems smooth except for the map which seems to take few minutes to load up, but once loaded I seem to get accurate location on towers.

I also want to mention that I went to your website looking for a way to contribute to the discusion but it took me to XDA discussion thread that is closed, so I had no choice but to join Github just to post this comment, haha.. anyway keep up the good work guys and please, please DO NOT GIVE UP on this project as this is a very good project that will become very useful in the near future, I should also add that while doing my resarch yesterday on fake cell towers there was a Cesna plane flying above my area for close to six hours, now I'm not sure if this is coincidence but just makes one wonder.

Will be checking to see if I get any response from you guys as I notice the last time someone posted here was in October of this year.

SecUpwN commented 10 years ago

@NghtWachman, welcome to our project! How cool you joined GitHub just to post this, rest assured you won't regret it. One more person who will (hopefully) contribute pull requests! :smile_cat: As for the the discussion thingy: I will change that ASAP since you are the second guy pointing this out. Our discussion thread is currently closed due to the fact that peeps join in and tend to ask all sorts of irrelevant questions although that thread was primarily meant for highly technical talk. We might reopen it one day.

As for now, we are happy to see you joining our brave movement and hope you will spread the word. And hey, we have not "vanished", we are merely working off our asses in so many different places since we lack developers and it seems people rather like to just star us, instead of contributing code. You can change that. Feel warmly welcomed on behalf of our whole team, looking forward to your contributions!

E3V3A commented 9 years ago

A very friend and encouraging email from the author of the Antennas app:

Dear Team,

I'd love to help and I can make my source code available (although it is not great, it was put together in a weekend). I am on vacation away from home until Jan 6th, and my only connectivity is via my phone... Let's talk after that...

Cheers, and best wishes for the holidays,

Michael

So now you may wonder why this is important, since he's using Google maps, and we're using OSM. Well mostly because of the way he presents the various BTS as clearly labelled dots. (See image above.)

A red circle indicates the cell site that your mobile phone is currently using. Yellow circles indicate other cell sites in your vicinity, that your mobile receiver is also connected to. Note that only the sites for your current network provider are visible to the application. This feature is not available on CDMA and UMTS Smaller yellow circles indicate other cell sites in your vicinity that your mobile receiver was able to connect earlier in this session, but are now out of reach. A blue circle indicates user location as reported by the GPS (G), the Google Network Location service (N) or as best guessed based on nearby antenna locations (A). If you have a valid GPS location, a separate darker blue circle marked (N) indicates the "Network Location" determined by looking at nearby mobile and WiFi antennas. If you are using CDMA and WiFi is turned off, this should coincide with your active antenna location.

The numbers in the circles indicate signal strength. To calculate dBm from the number shown, use the formula dBm = -113 + 2 * strength. Values below -112 dBm are shown as 0, values over -52 dBm are shown as 31. If signal strength is unknown, a "?" is shown.

On some CDMA networks, signal strength indicators are not available. Instead the letter "A" (for Antenna) is shown.

Of course we'd have to tune this to our own purposes... But perhaps gives us good ideas on how to best present BTS info, and what to present, and so on...

E3V3A commented 9 years ago

Any ideas how to change the pins in OSM?

SecUpwN commented 9 years ago

Any ideas how to change the pins in OSM?

What exactly has to be changed? I'm in brainstorming mode right now! :)

tobykurien commented 9 years ago

The pins are set up in the Map Viewer, e.g. here is where the blue "currently connected" pin is set up: https://github.com/SecUpwN/Android-IMSI-Catcher-Detector/blob/master/app/src/main/java/com/SecUpwN/AIMSICD/activities/MapViewerOsmDroid.java#L404

E3V3A commented 9 years ago

@tobykurien Yes, I know it has something to do with the "overlay" item, but I simply don't understand where the colors and "icons" are defined. There's no comments there, so how do I know it's blue or red or whatever. And how can we change those silly "drop" shaped pins into a circles? Also, what and why has that code following that line, been commented out? It doesn't work or something else?

tobykurien commented 9 years ago

The icons are in the various drawable folders, named: ic_map_pin_XXXX (where XXXX is the colour).

E3V3A commented 9 years ago

Great, ok so they are here in the following sub-directories:

drawable-hdpi   
drawable-ldpi   
drawable-mdpi   
drawable-xhdpi  
drawable-xxhdpi 
drawable-xxxhdpi

What is a good tool to use to change all these with out having to do it individually for each DPI?

SecUpwN commented 9 years ago

What is a good tool to use to change all these with out having to do it individually for each DPI?

Don't know yet. Wait. Found: Android Asset Studio. You should work on your google-foo, @E3V3A. ^^ Otherwise I'm a huge fan of GIMP, with which I crafted all the other Icons for our project so far.

E3V3A commented 9 years ago

So here's the code from Antennas that fixes the pins, these are not images as I thought but something else..

Here's the relevant code of SitesOverlay.java: (The full code is here. ):

package com.technolatry.antennas;

import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;
import com.google.android.maps.Projection;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

// Referenced classes of package com.technolatry.antennas:
//            SitesOverlayItem, Geo
public class SitesOverlay extends ItemizedOverlay
{

    private GeoPoint center;
    private List items;
    private Drawable marker;

    public SitesOverlay(Drawable drawable)
    {
        super(drawable);
        items = new ArrayList();
        marker = null;
        center = null;
        marker = drawable;
    }
...
    public void draw(Canvas canvas, MapView mapview, boolean flag)
    {
        ArrayList arraylist;
        Iterator iterator;
        String s;
        GeoPoint geopoint;
        Projection projection;
        Point point;
        Paint paint;
        double d;
        Iterator iterator1;
        boolean flag1;
        String s1;
        String s2;
        Projection projection1;
        Point point2;
        Paint paint1;
        int i;
        boolean flag2;
        try
        {
            arraylist = new ArrayList(items);
            Collections.sort(arraylist);
        }
        catch (Exception exception)
        {
            return;
        }
        if (flag || arraylist == null) goto _L2; else goto _L1
_L1:
        if (arraylist.size() <= 0) goto _L2; else goto _L3
_L3:
        iterator = arraylist.iterator();
_L8:
        if (iterator.hasNext()) goto _L5; else goto _L4
_L4:
        iterator1 = arraylist.iterator();
_L13:
        flag1 = iterator1.hasNext();
        if (flag1) goto _L6; else goto _L2
_L2:
        return;
_L5:
        OverlayItem overlayitem = (OverlayItem)iterator.next();
        s = overlayitem.getSnippet();
        geopoint = overlayitem.getPoint();
        projection = mapview.getProjection();
        point = new Point();
        projection.toPixels(geopoint, point);
        paint = getCPaint(s);
        if (center == null || s.equals("C")) goto _L8; else goto _L7
_L7:
        d = Geo.distance(geopoint, center);
        if (d > 10D && d < 40000D)
        {
            try
            {
                Point point1 = new Point();
                projection.toPixels(center, point1);
                canvas.drawLine(point1.x, point1.y, point.x, point.y, paint);
            }
            catch (Exception exception1) { }
        }
          goto _L8
_L6:
        OverlayItem overlayitem1 = (OverlayItem)iterator1.next();
        s1 = overlayitem1.getTitle();
        s2 = overlayitem1.getSnippet();
        GeoPoint geopoint1 = overlayitem1.getPoint();
        projection1 = mapview.getProjection();
        point2 = new Point();
        projection1.toPixels(geopoint1, point2);
        paint1 = new Paint();
        paint1.setARGB(255, 10, 10, 10);
        paint1.setAntiAlias(true);
        paint1.setFakeBoldText(true);
        if (!s2.equals("M")) goto _L10; else goto _L9
_L9:
        if (!s1.equalsIgnoreCase("G")) goto _L12; else goto _L11
_L11:
        i = (new Float(projection1.metersToEquatorPixels(200F))).intValue();
_L14:
        paint1.setARGB(255, 10, 10, 255);
_L15:
        Paint paint2 = getBPaint(s2);
        Paint paint3 = getCPaint(s2);
        RectF rectf = new RectF(point2.x - i, point2.y - i, i + point2.x, i + point2.y);
        canvas.drawOval(rectf, paint3);
        rectf.inset(1.0F, 1.0F);
        canvas.drawOval(rectf, paint2);
        if (s2.equals("M"))
        {
            paint3.setAlpha(255);
            RectF rectf1 = new RectF(point2.x - 13, point2.y - 13, 13 + point2.x, 13 + point2.y);
            canvas.drawOval(rectf1, paint3);
            RectF rectf2 = new RectF(point2.x, point2.y, point2.x, point2.y);
            canvas.drawOval(rectf2, paint3);
        }
        float f = paint3.measureText(s1);
        float f1 = paint3.getTextSize();
        canvas.drawText(s1, (float)point2.x - f / 2.0F, (float)(point2.y - 1) + f1 / 2.0F, paint1);
          goto _L13
_L12:
        i = (new Float(projection1.metersToEquatorPixels(2000F))).intValue();
          goto _L14
_L10:
        if (!s2.equals("N"))
        {
            break MISSING_BLOCK_LABEL_687;
        }
        i = 14;
          goto _L15
        if (!s2.equals("A"))
        {
            break MISSING_BLOCK_LABEL_704;
        }
        i = 11;
          goto _L15
        flag2 = s2.equals("C");
        if (flag2)
        {
            i = 5;
        } else
        {
            i = 11;
        }
          goto _L15
        Exception exception2;
        exception2;
          goto _L13
    }

    public Paint getBPaint(String s)
    {
        Paint paint = new Paint();
        paint.setAntiAlias(true);
        paint.setFakeBoldText(true);
        if (s.equals("M"))
        {
            paint.setARGB(80, 180, 180, 240);
            return paint;
        }
        if (s.equals("N"))
        {
            paint.setARGB(128, 60, 60, 80);
            return paint;
        }
        if (s.equals("A"))
        {
            paint.setARGB(224, 200, 80, 80);
            return paint;
        }
        if (s.equals("H") || s.equals("C"))
        {
            paint.setARGB(224, 255, 196, 40);
            return paint;
        } else
        {
            paint.setARGB(255, 0, 0, 0);
            return paint;
        }
    }

    public Paint getCPaint(String s)
    {
        Paint paint = new Paint();
        paint.setAntiAlias(true);
        paint.setFakeBoldText(true);
        paint.setStyle(android.graphics.Paint.Style.STROKE);
        paint.setStrokeWidth(1.0F);
        if (s.equals("M"))
        {
            paint.setARGB(128, 10, 10, 255);
            paint.setStrokeWidth(1.0F);
            return paint;
        }
        if (s.equals("N"))
        {
            paint.setARGB(128, 10, 10, 10);
            paint.setStrokeWidth(3F);
            return paint;
        }
        if (s.equals("A"))
        {
            paint.setARGB(224, 200, 10, 10);
            paint.setStrokeWidth(3F);
            return paint;
        }
        if (s.equals("H") || s.equals("C"))
        {
            paint.setARGB(224, 128, 98, 20);
            if (s.equals("H"))
            {
                paint.setStrokeWidth(3F);
                return paint;
            } else
            {
                paint.setStrokeWidth(2.0F);
                return paint;
            }
        } else
        {
            paint.setARGB(255, 0, 0, 0);
            return paint;
        }
    }
...

and from SitesOverlayItems.java:


package com.technolatry.antennas;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.OverlayItem;

public class SitesOverlayItem extends OverlayItem
    implements Comparable
{

    private String description;

    public SitesOverlayItem(GeoPoint geopoint, String s, String s1)
    {
        super(geopoint, s, s1);
    }

    public SitesOverlayItem(GeoPoint geopoint, String s, String s1, String s2)
    {
        this(geopoint, s, s1);
        description = s2;
    }

    private Integer parse(OverlayItem overlayitem)
    {
        if (overlayitem.getSnippet().equals("A")) { return Integer.valueOf(900); }
        if (overlayitem.getSnippet().equals("C")) { return Integer.valueOf(-30); }
        if (overlayitem.getSnippet().equals("M")) { return Integer.valueOf(-20); }
        if (overlayitem.getSnippet().equals("N")) { return Integer.valueOf(-10); }
        if (overlayitem.getTitle().equals("?")) { return Integer.valueOf(0); } 
        else { return Integer.valueOf(Integer.parseInt(overlayitem.getTitle())); }
    }

    public int compareTo(OverlayItem overlayitem)
    {
        int i;
        try
        {
            i = parse(this).compareTo(parse(overlayitem));
        }
        catch (Exception exception)
        {
            return 0;
        }
        return i;
    }

    public volatile int compareTo(Object obj)
    {
        return compareTo((OverlayItem)obj);
    }

    public String getDescrtiption()
    {
        return description;
    }
}

I'm not sure this can be applied to the OSM in the same way...

SecUpwN commented 9 years ago

@E3V3A, what is the current state of this Issue? Is the Map Viewer perfect now?

darkerego commented 9 years ago

I am confused as to how to interpret the antenna map viewer data. So the green circles are known, real cells, the blue ones are... i don't know? And the green arrow that appears and sometimes moves? What does that indicate?

He3556 commented 9 years ago

Hello darkerego
On the map we use clusterization now - than means that Cell Towers will be grouped. The red dots are clustered and the green dots are single cell towers. The arrow is your own position. I hope this info will help you.

darkerego commented 9 years ago

Thanks for the reply. I just updated from an older version to the newest and whenever I at home I get the yellow icon warning. What do the blue ring circles that appear on the map represent?

SecUpwN commented 9 years ago

@He3556, I am strongly voting for adding a legend for the circles to the map. New Issue for this?

darkerego commented 9 years ago

@SecUpwN I second that! That would be a great feature. I've gotten some of my friends to use AIMSICD and they are intrigued, and a map legend would be very helpful for new users to interpret the data they are seeing. One other question, is there documentation somewhere explaining what exactly the AT Command Processor can be used for? Forgive me if I overlooked it, but the wiki pages I could find provided limited information. Btw, I love this project and would like to thank all of the developers for their efforts.

E3V3A commented 9 years ago

Closed in favor of #228 and #250.

bmcycles commented 8 years ago

Why do I get multiple cells in one location and they move and they have different cid they are not anywhere near a real cell site and their lat and lon coordinates are all just a few numbers off and what are the red lines on map than span out away from each major city into nowhere

bmcycles commented 8 years ago

Please help asap on my question I think we are being watched for a long time there are lots of different signs and issues that come up often thanks

SecUpwN commented 8 years ago

Why do I get multiple cells in one location and they move and they have different cid they are not anywhere near a real cell site and their lat and lon coordinates are all just a few numbers off and what are the red lines on map than span out away from each major city into nowhere

@bmcycles, sorry to hear you're having Issues. Please file a fresh Issue with this and add screenshots.