/* Android IMSI-Catcher Detector | (c) AIMSICD Privacy Project
* -----------------------------------------------------------
* LICENSE: http://git.io/vki47 | TERMS: http://git.io/vki4o
* -----------------------------------------------------------
*/
package com.secupwn.aimsicd.map;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TableRow;
import android.widget.TextView;
import com.secupwn.aimsicd.R;
import org.osmdroid.bonuspack.overlays.Marker;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapView;
/**
* BTS pin item
*/
public class CellTowerMarker extends Marker {
private Context mContext;
private MarkerData mMarkerData;
public CellTowerMarker(Context context, MapView mapView, String aTitle, String aSnippet, GeoPoint aGeoPoint, MarkerData data) {
super(mapView);
mContext = context;
mTitle = aTitle;
mSnippet = aSnippet;
mPosition = aGeoPoint;
mMarkerData = data;
mOnMarkerClickListener = new OnCellTowerMarkerClickListener();
mInfoWindow = null;
}
public MarkerData getMarkerData() {
return mMarkerData;
}
/**
* Defines the contents of the InfoWindow
*
* The info window could be more advanced, if possible, by using
* more available items as explained in the related issue here:
* https://github.com/CellularPrivacy/Android-IMSI-Catcher-Detector/issues/234
*
*/
public View getInfoContents(MarkerData data) {
TextView tv;
// Getting view from the layout file: marker_info_window.xml
View v = LayoutInflater.from(mContext).inflate(R.layout.marker_info_window, null);
if (v != null) {
if (data != null) {
// We would also like to show this in HEX: "CID: 65535 (0xFFFF)"
if (data.openCellID) {
TableRow tr = (TableRow) v.findViewById(R.id.open_cell_label);
tr.setVisibility(View.VISIBLE);
}
tv = (TextView) v.findViewById(R.id.cell_id); // CID
tv.setText(data.cellID);
tv = (TextView) v.findViewById(R.id.lac); // LAC
tv.setText(data.lac);
tv = (TextView) v.findViewById(R.id.lat); // LAT
tv.setText(String.valueOf(data.lat));
tv = (TextView) v.findViewById(R.id.lng); // LON
tv.setText(String.valueOf(data.lng));
tv = (TextView) v.findViewById(R.id.psc); // PSC
tv.setText(data.getPSC());
tv = (TextView) v.findViewById(R.id.rat); // RAT
tv.setText(data.getRAT());
tv = (TextView) v.findViewById(R.id.pc); // PC = <MNC> "-" <MCC>
tv.setText(data.getPC());
tv = (TextView) v.findViewById(R.id.samples); // Samples
tv.setText(data.getSamples());
}
}
// Returning the view containing InfoWindow contents
return v;
}
// This displays the Marker info pop-up dialog window, with OK button.
public class OnCellTowerMarkerClickListener implements OnMarkerClickListener {
@Override
public boolean onMarkerClick(Marker marker, MapView mapView) {
CellTowerMarker cellTowerMarker = (CellTowerMarker) marker;
AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
dialog.setTitle(cellTowerMarker.getTitle());
dialog.setView(getInfoContents(cellTowerMarker.getMarkerData()));
dialog.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
dialog.show();
return true;
}
}
}