diff --git a/.gitignore b/.gitignore index 8e80165ed91c8e529c50455726492e877213eca5..db2993cb0fb3edd0f1cae1955b381d67e569155e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,17 +1,3 @@ -# FILES TO BE IGNORED # -####################### - -# OS generated files # -###################### -.DS_Store -.DS_Store? -._* -.Spotlight-V100 -.Trashes -.directory -ehthumbs.db -Thumbs.db - # built application files *.apk *.ap_ @@ -22,16 +8,54 @@ Thumbs.db # Java class files *.class +# built native files +*.o + # generated files bin/ gen/ -out/ + +# Ignore gradle files +.gradle/ +build/ # Local configuration file (sdk path, etc) local.properties -# Eclipse project files -.classpath -.project +# Proguard folder generated by Eclipse +proguard/ + +# Eclipse Metadata +.metadata/ + +# Mac OS X clutter +*.DS_Store + +# Intellij IDEA (see https://intellij-support.jetbrains.com/entries/23393067) +.idea/workspace.xml +.idea/tasks.xml +.idea/datasources.xml +.idea/dataSources.ids + +# OS Generated files +._* +.Spotlight-V100 +.Trashes +.directory +ehthumbs.db +Thumbs.db + +# Android Studio .idea -*.iml \ No newline at end of file +#.idea/workspace.xml - uncomment this and comment/delete .idea if it better suit your needs +.gradle +/*/local.properties +/*/out +/*/*/build +/*/*/production +*.iml +*.iws +*.ipr +*~ +*.swp +/*/build \ No newline at end of file diff --git a/.idea/libraries/opencsv_2_3.xml b/.idea/libraries/opencsv_2_3.xml new file mode 100644 index 0000000000000000000000000000000000000000..f303e9500df8db4b2db499e69529043500c8d2bd --- /dev/null +++ b/.idea/libraries/opencsv_2_3.xml @@ -0,0 +1,9 @@ +<component name="libraryTable"> + <library name="opencsv-2.3"> + <CLASSES> + <root url="jar://$PROJECT_DIR$/app/libs/opencsv-2.3.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/Android.mk b/Android.mk deleted file mode 100644 index ba08f21deb696d60f7e1f6350fed976693e7603c..0000000000000000000000000000000000000000 --- a/Android.mk +++ /dev/null @@ -1,37 +0,0 @@ -LOCAL_PATH:= $(call my-dir) - -ifneq ($(TARGET_SIMULATOR),true) - -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := optional - -LOCAL_SRC_FILES := $(call all-java-files-under, src) -LOCAL_PACKAGE_NAME := Android-IMSI-Catcher-Detector -LOCAL_JAVA_LIBRARIES := telephony-common effects maps usb -LOCAL_STATIC_JAVA_LIBRARIES := android-support-v13 RootTools -LOCAL_PROGUARD_ENABLED := disabled -LOCAL_CERTIFICATE := platform - -include $(BUILD_PACKAGE) - -########################################################### -include $(CLEAR_VARS) - -# XXX: manually create symlink to addon-google_apis-google-17 -# ln -s ${ANDROID_HOME}/add-ons/addon-google_apis-google-17 addon-google_apis-google-17 -GOOGLE_APIS_ADDON = addon-google_apis-google-17/libs - -LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := RootTools:libs/RootTools.jar -LOCAL_PREBUILT_JAVA_LIBRARIES := \ - effects:${GOOGLE_APIS_ADDON}/effects.jar \ - maps:${GOOGLE_APIS_ADDON}/maps.jar \ - usb:${GOOGLE_APIS_ADDON}/usb.jar - -include $(BUILD_MULTI_PREBUILT) -############################################################ - -# Build the test package -include $(call all-makefiles-under,$(LOCAL_PATH)) - -endif # TARGET_SIMULATOR diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000000000000000000000000000000000000..285a76e136ced287a265dec3b192a16f4c766d7f --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,27 @@ +apply plugin: 'android' + +android { + compileSdkVersion 19 + buildToolsVersion '19.0.3' + defaultConfig { + minSdkVersion 9 + targetSdkVersion 19 + } + buildTypes { + release { + runProguard false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' + } + } + signingConfigs { + debug { + keyAlias 'androiddebugkey' + } + } +} + +dependencies { + compile 'com.android.support:appcompat-v7:19.1.+' + compile 'com.google.android.gms:play-services:4.3.23' + compile files('libs/opencsv-2.3.jar') +} diff --git a/libs/android-support-v13.jar b/app/libs/android-support-v13.jar old mode 100755 new mode 100644 similarity index 100% rename from libs/android-support-v13.jar rename to app/libs/android-support-v13.jar diff --git a/app/libs/opencsv-2.3.jar b/app/libs/opencsv-2.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..32b00f927594a1854b371fe5bdeacc30f8aa75f8 Binary files /dev/null and b/app/libs/opencsv-2.3.jar differ diff --git a/AndroidManifest.xml b/app/src/main/AndroidManifest.xml old mode 100755 new mode 100644 similarity index 79% rename from AndroidManifest.xml rename to app/src/main/AndroidManifest.xml index 843ea02cc204f255ba5340afa33aeac39501a428..41d392b19ce5338179f0385c9c733e5a342d0b7d --- a/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.SecUpwN.AIMSICD" - android:versionName="0.1.5" - android:versionCode="5"> + android:versionName="0.1.6" + android:versionCode="6"> - <uses-sdk - android:minSdkVersion="9" - android:targetSdkVersion="19"/> + <uses-feature + android:glEsVersion="0x00020000" + android:required="true"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> @@ -15,6 +15,8 @@ <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> + <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> + <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <application android:icon="@drawable/sense_alarm" @@ -22,6 +24,10 @@ android:theme="@style/AppTheme" android:allowBackup="false"> <uses-library android:name="com.google.android.maps"/> + <meta-data + android:name="com.google.android.gms.version" + android:value="@integer/google_play_services_version" /> + <activity android:name=".AIMSICD" @@ -51,7 +57,7 @@ <activity android:name=".MapViewer" - android:label="@string/app_name" + android:label="@string/map_view" android:parentActivityName=".AIMSICD" android:exported="true"> <meta-data @@ -70,5 +76,9 @@ </intent-filter> </activity> + <meta-data + android:name="com.google.android.maps.v2.API_KEY" + android:value="AIzaSyDI1lvgpBmNhQS33JfJA4w8GAmrtFeg078"/> + </application> </manifest> diff --git a/src/com/SecUpwN/AIMSICD/AIMSICD.java b/app/src/main/java/com/SecUpwN/AIMSICD/AIMSICD.java old mode 100755 new mode 100644 similarity index 50% rename from src/com/SecUpwN/AIMSICD/AIMSICD.java rename to app/src/main/java/com/SecUpwN/AIMSICD/AIMSICD.java index 71461671cdf4135fe072a95ddd023d9dcb55090f..762142a6b24945b99392404f904670089ac5a9b3 --- a/src/com/SecUpwN/AIMSICD/AIMSICD.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/AIMSICD.java @@ -18,33 +18,22 @@ package com.SecUpwN.AIMSICD; import android.app.Activity; -import android.app.AlertDialog; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; -import android.preference.PreferenceManager; import android.content.ServiceConnection; -import android.location.Location; -import android.location.LocationListener; -import android.location.LocationManager; import android.os.Build; import android.os.Bundle; import android.os.IBinder; -import android.telephony.CellLocation; -import android.telephony.PhoneStateListener; -import android.telephony.SignalStrength; import android.telephony.TelephonyManager; -import android.telephony.cdma.CdmaCellLocation; -import android.telephony.gsm.GsmCellLocation; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.TextView; import android.widget.Toast; -import com.SecUpwN.AIMSICD.cmdprocessor.Helpers; import com.SecUpwN.AIMSICD.service.AimsicdService; public class AIMSICD extends Activity implements OnSharedPreferenceChangeListener{ @@ -57,15 +46,8 @@ public class AIMSICD extends Activity implements OnSharedPreferenceChangeListene private Menu mMenu; private boolean mBound; private boolean mDisplayCurrent; - public TelephonyManager tm; - public LocationManager lm; - public LocationListener mLocationListener; private AIMSICDDbAdapter dbHelper; - private boolean TrackingCell; - private boolean TrackingSignal; - private boolean TrackingLocation; - private AimsicdService mAimsicdService; private SharedPreferences prefs; @@ -74,9 +56,6 @@ public class AIMSICD extends Activity implements OnSharedPreferenceChangeListene //Back press to exit timer private long mLastPress = 0; - //Notification ID - private int mID = 1; - /** * Called when the activity is first created. */ @@ -85,14 +64,14 @@ public class AIMSICD extends Activity implements OnSharedPreferenceChangeListene super.onCreate(savedInstanceState); setContentView(R.layout.main); - //Create DB Instance - dbHelper = new AIMSICDDbAdapter(mContext); - // Bind to LocalService Intent intent = new Intent(this, AimsicdService.class); //Start Service before binding to keep it resident when activity is destroyed startService(intent); bindService(intent, mConnection, Context.BIND_AUTO_CREATE); + + //Create DB Instance + dbHelper = new AIMSICDDbAdapter(mContext); } @@ -125,7 +104,6 @@ public class AIMSICD extends Activity implements OnSharedPreferenceChangeListene @Override public void onResume() { super.onResume(); - tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); //Shared Preferences prefs = getSharedPreferences( SHARED_PREFERENCES_BASENAME + "_preferences", 0); @@ -176,9 +154,9 @@ public class AIMSICD extends Activity implements OnSharedPreferenceChangeListene content = (TextView) findViewById(R.id.network_type); content.setText(mAimsicdService.getNetworkTypeName(netID, false)); content = (TextView) findViewById(R.id.network_lac); - content.setText(mAimsicdService.getLAC(false)); + content.setText(mAimsicdService.getLAC(true)); content = (TextView) findViewById(R.id.network_cellid); - content.setText(mAimsicdService.getCellId(false)); + content.setText(mAimsicdService.getCellId(true)); content = (TextView) findViewById(R.id.data_activity); content.setText(mAimsicdService.getActivityDesc(netID)); @@ -221,7 +199,7 @@ public class AIMSICD extends Activity implements OnSharedPreferenceChangeListene MenuItem mTrackSignal = menu.findItem(R.id.track_signal); MenuItem mTrackLocation = menu.findItem(R.id.track_location); - if (isTrackingCell()) { + if (mAimsicdService.TrackingCell) { mTrackCell.setTitle(R.string.track_cell); mTrackCell.setIcon(R.drawable.track_cell); } else { @@ -229,14 +207,14 @@ public class AIMSICD extends Activity implements OnSharedPreferenceChangeListene mTrackCell.setIcon(R.drawable.untrack_cell); } - if (isTrackingSignal()) { + if (mAimsicdService.TrackingSignal) { mTrackSignal.setTitle(R.string.track_signal); mTrackSignal.setIcon(R.drawable.ic_action_network_cell); } else { mTrackSignal.setTitle(R.string.untrack_signal); mTrackSignal.setIcon(R.drawable.ic_action_network_cell_not_tracked); } - if (isTrackingLocation()) { + if (mAimsicdService.TrackingLocation) { mTrackLocation.setTitle(R.string.track_location); mTrackLocation.setIcon(R.drawable.ic_action_location_found); } else { @@ -312,236 +290,31 @@ public class AIMSICD extends Activity implements OnSharedPreferenceChangeListene } public void tracksignal() { - if (TrackingSignal) { - tm.listen(mSignalListenerStrength, PhoneStateListener.LISTEN_NONE); - Helpers.msgShort(mContext, "Stopped tracking signal strength"); - TrackingSignal = false; - mAimsicdService.mSignalInfo = 0; + if (mAimsicdService.TrackingSignal) { + mAimsicdService.setSignalTracking(false); } else { - tm.listen(mSignalListenerStrength, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); - Helpers.msgShort(mContext, "Tracking signal strength"); - TrackingSignal = true; + mAimsicdService.setSignalTracking(true); } } public void trackcell() { - if (TrackingCell) { - tm.listen(mCellSignalListener, PhoneStateListener.LISTEN_NONE); - Helpers.msgShort(mContext, "Stopped tracking cell information"); - TrackingCell = false; - mAimsicdService.mCellInfo = "[0,0]|nn|nn|"; + if (mAimsicdService.TrackingCell) { + mAimsicdService.setCellTracking(false); } else { - tm.listen(mCellSignalListener, PhoneStateListener.LISTEN_CELL_LOCATION); - Helpers.msgShort(mContext, "Tracking cell information"); - TrackingCell = true; + mAimsicdService.setCellTracking(true); } } public void tracklocation() { - if (TrackingLocation) { - lm.removeUpdates(mLocationListener); - Helpers.msgShort(mContext, "Stopped tracking location"); - TrackingLocation = false; - mAimsicdService.mLongitude = 0.0; - mAimsicdService.mLatitude = 0.0; + if (mAimsicdService.TrackingLocation) { + mAimsicdService.setLocationTracking(false); } else { - if (lm != null) { - Log.i(TAG, "LocationManager already existed"); - lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocationListener); - Helpers.msgShort(mContext, "Tracking location"); - TrackingLocation = true; - } else { - Log.i(TAG, "LocationManager did not existed"); - lm = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE); - if (lm != null) { - if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) { - Log.i(TAG, "LocationManager created"); - mLocationListener = new MyLocationListener(); - lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocationListener); - Helpers.msgShort(mContext, "Tracking location"); - TrackingLocation = true; - } else { - final AlertDialog.Builder builder = new AlertDialog.Builder(mContext); - builder.setMessage(R.string.location_error_message) - .setTitle(R.string.location_error_title); - builder.create().show(); - } - } - } - } - } - - private PhoneStateListener mSignalListenerStrength = new PhoneStateListener() { - public void onSignalStrengthsChanged(SignalStrength signalStrength) { - switch (mAimsicdService.mPhoneID) { - case TelephonyManager.PHONE_TYPE_GSM: - mAimsicdService.mSignalInfo = signalStrength.getGsmSignalStrength(); - break; - case TelephonyManager.PHONE_TYPE_CDMA: - mAimsicdService.mSignalInfo = signalStrength.getCdmaDbm(); - break; - default: - mAimsicdService.mSignalInfo = 0; - } - - if (TrackingSignal) { - dbHelper.insertSignal(mAimsicdService.mLacID,mAimsicdService.mCellID, - mAimsicdService.mNetID, mAimsicdService.mLatitude, - mAimsicdService.mLongitude,mAimsicdService.mSignalInfo, - mAimsicdService.mCellInfo); - } + mAimsicdService.setLocationTracking(true); } - }; - - private PhoneStateListener mCellSignalListener = new PhoneStateListener() { - public void onCellLocationChanged(CellLocation location) { - mAimsicdService.mNetID = mAimsicdService.getNetID(true); - mAimsicdService.mNetType = mAimsicdService.getNetworkTypeName(mAimsicdService.mNetID, true); - - int dataActivityType = tm.getDataActivity(); - String dataActivity = "un"; - switch (dataActivityType) { - case TelephonyManager.DATA_ACTIVITY_NONE: - dataActivity = "No"; - break; - case TelephonyManager.DATA_ACTIVITY_IN: - dataActivity = "In"; - break; - case TelephonyManager.DATA_ACTIVITY_OUT: - dataActivity = "Ou"; - break; - case TelephonyManager.DATA_ACTIVITY_INOUT: - dataActivity = "IO"; - break; - case TelephonyManager.DATA_ACTIVITY_DORMANT: - dataActivity = "Do"; - break; - } - - int dataType = tm.getDataState(); - String dataState = "un"; - switch (dataType) { - case TelephonyManager.DATA_DISCONNECTED: - dataState = "Di"; - break; - case TelephonyManager.DATA_CONNECTING: - dataState = "Ct"; - break; - case TelephonyManager.DATA_CONNECTED: - dataState = "Cd"; - break; - case TelephonyManager.DATA_SUSPENDED: - dataState = "Su"; - break; - } - - switch (mAimsicdService.mPhoneID) { - case TelephonyManager.PHONE_TYPE_GSM: - GsmCellLocation gsmCellLocation = (GsmCellLocation) location; - if (gsmCellLocation != null) { - mAimsicdService.mCellInfo = gsmCellLocation.toString() + dataActivity + "|" - + dataState + "|" + mAimsicdService.mNetType + "|"; - mAimsicdService.mLacID = gsmCellLocation.getLac(); - mAimsicdService.mCellID = gsmCellLocation.getCid(); - dbHelper.open(); - if (isTrackingCell() && !dbHelper.cellExists(mAimsicdService.mCellID)){ - mAimsicdService.mSimCountry = mAimsicdService.getSimCountry(true); - mAimsicdService.mSimOperator = mAimsicdService.getSimOperator(true); - mAimsicdService.mSimOperatorName = mAimsicdService.getSimOperatorName(true); - dbHelper.insertCell(mAimsicdService.mLacID, mAimsicdService.mCellID, - mAimsicdService.mNetID, mAimsicdService.mLatitude, - mAimsicdService.mLongitude, mAimsicdService.mSignalInfo, - mAimsicdService.mCellInfo, mAimsicdService.mSimCountry, - mAimsicdService.mSimOperator, mAimsicdService.mSimOperatorName); - } - } - break; - case TelephonyManager.PHONE_TYPE_CDMA: - CdmaCellLocation cdmaCellLocation = (CdmaCellLocation) location; - if (cdmaCellLocation != null) { - mAimsicdService.mCellInfo = cdmaCellLocation.toString() + dataActivity - + "|" + dataState + "|" + mAimsicdService.mNetType + "|"; - mAimsicdService.mLacID = cdmaCellLocation.getNetworkId(); - mAimsicdService.mCellID = cdmaCellLocation.getBaseStationId(); - if (isTrackingCell() && !dbHelper.cellExists(mAimsicdService.mCellID)){ - mAimsicdService.mSimCountry = mAimsicdService.getSimCountry(true); - mAimsicdService.mSimOperator = mAimsicdService.getSimOperator(true); - mAimsicdService.mSimOperatorName = mAimsicdService.getNetworkName(true); - } - } - } - - if (TrackingCell && !dbHelper.cellExists(mAimsicdService.mCellID)) { - dbHelper.insertCell(mAimsicdService.mLacID, mAimsicdService.mCellID, - mAimsicdService.mNetID, mAimsicdService.mLatitude, - mAimsicdService.mLongitude, mAimsicdService.mSignalInfo, - mAimsicdService.mCellInfo, mAimsicdService.mSimCountry, - mAimsicdService.mSimOperator, mAimsicdService.mSimOperatorName); - } - } - - //Added Signal Strength to Cell Location Listener to ensure accurate signal strength - //is added to the Cell Location database record - public void onSignalStrengthsChanged(SignalStrength signalStrength) { - switch (mAimsicdService.mPhoneID) { - case TelephonyManager.PHONE_TYPE_GSM: - mAimsicdService.mSignalInfo = signalStrength.getGsmSignalStrength(); - break; - case TelephonyManager.PHONE_TYPE_CDMA: - mAimsicdService.mSignalInfo = signalStrength.getCdmaDbm(); - break; - default: - mAimsicdService.mSignalInfo = 0; - } - } - }; - - private class MyLocationListener implements LocationListener { - @Override - public void onLocationChanged(Location loc) { - if (loc != null) { - mAimsicdService.mLongitude = loc.getLongitude(); - mAimsicdService.mLatitude = loc.getLatitude(); - } - if (TrackingLocation) { - dbHelper.insertLocation(mAimsicdService.mLacID, mAimsicdService.mCellID, - mAimsicdService.mNetID, mAimsicdService.mLatitude, - mAimsicdService.mLongitude, mAimsicdService.mSignalInfo, - mAimsicdService.mCellInfo); - } - } - - @Override - public void onProviderDisabled(String provider) { - // TODO Auto-generated method stub - } - - @Override - public void onProviderEnabled(String provider) { - // TODO Auto-generated method stub - } - - @Override - public void onStatusChanged(String provider, int status, - Bundle extras) { - // TODO Auto-generated method stub - } - } - - public Boolean isTrackingSignal() { - return TrackingSignal; - } - - public Boolean isTrackingCell() { - return TrackingCell; - } - - public Boolean isTrackingLocation() { - return TrackingLocation; } - public AIMSICDDbAdapter getDbHelper() { - return dbHelper; + public AIMSICD getAimsicd() { + return this; } public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { diff --git a/src/com/SecUpwN/AIMSICD/AIMSICDDbAdapter.java b/app/src/main/java/com/SecUpwN/AIMSICD/AIMSICDDbAdapter.java similarity index 64% rename from src/com/SecUpwN/AIMSICD/AIMSICDDbAdapter.java rename to app/src/main/java/com/SecUpwN/AIMSICD/AIMSICDDbAdapter.java index c104312daddb7c8162ff5b1bcfea92691e044e6c..8e6a5728348f4c228dc4613672df08ef2e9cd884 100644 --- a/src/com/SecUpwN/AIMSICD/AIMSICDDbAdapter.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/AIMSICDDbAdapter.java @@ -10,9 +10,14 @@ import android.util.Log; import java.io.File; import java.io.FileOutputStream; +import java.io.FileWriter; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; +import java.util.ArrayList; +import java.util.Arrays; + +import au.com.bytecode.opencsv.CSVWriter; public class AIMSICDDbAdapter { @@ -26,11 +31,9 @@ public class AIMSICDDbAdapter { public String CELL_TABLE = "cellinfo"; public String SIGNAL_TABLE = "signalinfo"; public String DB_NAME = "myCellInfo"; - private final Context mContext; public AIMSICDDbAdapter(Context context) { - mContext = context; - mDbHelper = new DbHelper(mContext); + mDbHelper = new DbHelper(context); } public AIMSICDDbAdapter open() throws SQLException { @@ -38,6 +41,11 @@ public class AIMSICDDbAdapter { return this; } + public AIMSICDDbAdapter openRead() throws SQLException { + mDb = mDbHelper.getReadableDatabase(); + return this; + } + public void close() { mDbHelper.close(); } @@ -119,14 +127,19 @@ public class AIMSICDDbAdapter { * Returns Signal Strength database contents */ public Cursor getSignalData() { - return mDb.rawQuery("SELECT Net, Lat, Lng, Signal FROM " - + SIGNAL_TABLE, null); + return mDb.query(SIGNAL_TABLE, new String[] {"Net", "Lat", "Lng", "Signal"}, + "Lat <> 0.0 AND lng <> 0.0",null,null,null,null); } - public void eraseLocationData() { - mDb.delete(LOCATION_TABLE, null, null); - } + /** + * Checks to see if Location already exists in database + */ + public boolean locationExists(int cellID) { + Cursor cursor = mDb.rawQuery("SELECT * FROM " + LOCATION_TABLE + " WHERE CellID = " + + cellID, null); + return cursor.getCount()>0; + } /** * Checks to see if Cell already exists in database @@ -151,52 +164,37 @@ public class AIMSICDDbAdapter { public void export(String tableName) throws IOException { Log.i(TAG, "exporting database - " + DB_NAME); - XmlBuilder xmlBuilder = new XmlBuilder(); - xmlBuilder.start(DB_NAME); - Log.d(TAG, "table name " + tableName); - - exportTable(tableName, xmlBuilder); - String xmlString = xmlBuilder.end(); - writeToFile(xmlString, "aimsicd-" + tableName + ".xml"); - - Log.i(TAG, "exporting database complete"); - } - - private void exportTable(final String tableName, XmlBuilder xmlBuilder) throws IOException { - Log.d(TAG, "exporting table - " + tableName); - xmlBuilder.openTable(tableName); - String sql = "select * from " + tableName; - Cursor c = mDb.rawQuery(sql, new String[0]); - if (c.moveToFirst()) { - int cols = c.getColumnCount(); - do { - xmlBuilder.openRow(); - for (int i = 0; i < cols; i++) { - xmlBuilder.addColumn(c.getColumnName(i), c.getString(i)); - } - xmlBuilder.closeRow(); - } while (c.moveToNext()); - } - c.close(); - xmlBuilder.closeTable(); - } - - private void writeToFile(String xmlString, String exportFileName) throws IOException { File dir = new File(Environment.getExternalStorageDirectory() + "/AIMSICD/"); if (!dir.exists()) { dir.mkdirs(); } - File file = new File(dir, exportFileName); - file.createNewFile(); + File file = new File(dir, "aimsicd-" + tableName + ".csv"); + - ByteBuffer buff = ByteBuffer.wrap(xmlString.getBytes()); - FileChannel channel = new FileOutputStream(file).getChannel(); try { - channel.write(buff); - } finally { - if (channel != null) - channel.close(); + file.createNewFile(); + CSVWriter csvWrite = new CSVWriter(new FileWriter(file)); + Log.d(TAG, "table name " + tableName); + open(); + Cursor c = mDb.rawQuery("SELECT * FROM " + tableName, new String[0]); + + csvWrite.writeNext(c.getColumnNames()); + String[] rowData = new String[c.getColumnCount()]; + + while (c.moveToNext()) { + for (int i = 0; i < c.getColumnCount(); i++) { + rowData[i] = c.getString(i); + } + csvWrite.writeNext(rowData); + } + + csvWrite.close(); + c.close(); + } catch (Exception sqlEx) { + Log.e(TAG, "Error exporting table " + tableName + " " + sqlEx.getMessage()); } + + Log.i(TAG, "exporting database complete"); } /** @@ -229,59 +227,4 @@ public class AIMSICDDbAdapter { } - /** - * XmlBuilder is used to write XML tags (open and close, and a few attributes) - * to a StringBuilder. Here we have nothing to do with IO or SQL, just a fancy StringBuilder. - * - * @author ccollins - * - */ - private static class XmlBuilder { - private static final String OPEN_XML_STANZA = ""; - private static final String CLOSE_WITH_TICK = "'>"; - private static final String DB_OPEN = "<database name='"; - private static final String DB_CLOSE = ""; - private static final String TABLE_OPEN = "<table name='"; - private static final String TABLE_CLOSE = ""; - private static final String ROW_OPEN = ""; - private static final String ROW_CLOSE = ""; - private static final String COL_OPEN = "<col name='"; - private static final String COL_CLOSE = ""; - - private final StringBuilder sb; - - public XmlBuilder() throws IOException { - this.sb = new StringBuilder(); - } - - void start(String dbName) { - this.sb.append(OPEN_XML_STANZA); - this.sb.append(DB_OPEN).append(dbName).append(CLOSE_WITH_TICK); - } - - String end() throws IOException { - this.sb.append(DB_CLOSE); - return this.sb.toString(); - } - - void openTable(String tableName) { - this.sb.append(TABLE_OPEN).append(tableName).append(CLOSE_WITH_TICK); - } - - void closeTable() { - this.sb.append(TABLE_CLOSE); - } - - void openRow() { - this.sb.append(ROW_OPEN); - } - - void closeRow() { - this.sb.append(ROW_CLOSE); - } - - void addColumn(final String name, final String val) throws IOException { - this.sb.append(COL_OPEN).append(name).append(CLOSE_WITH_TICK).append(val).append(COL_CLOSE); - } - } } diff --git a/app/src/main/java/com/SecUpwN/AIMSICD/MapViewer.java b/app/src/main/java/com/SecUpwN/AIMSICD/MapViewer.java new file mode 100644 index 0000000000000000000000000000000000000000..4be4db2b18edb26df5a5592ffad6880f6965e62d --- /dev/null +++ b/app/src/main/java/com/SecUpwN/AIMSICD/MapViewer.java @@ -0,0 +1,181 @@ +/* Android IMSI Catcher Detector + * Copyright (C) 2014 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You may obtain a copy of the License at + * https://github.com/SecUpwN/Android-IMSI-Catcher-Detector/blob/master/LICENSE + */ + +package com.SecUpwN.AIMSICD; + +import android.app.Activity; +import android.database.Cursor; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentActivity; +import android.support.v4.app.FragmentManager; +import android.telephony.TelephonyManager; +import android.util.Log; +import android.view.Menu; +import android.view.MenuItem; +import com.SecUpwN.AIMSICD.cmdprocessor.Helpers; + +import com.google.android.gms.maps.SupportMapFragment; +import com.google.android.gms.maps.GoogleMap; +import com.google.android.gms.maps.GoogleMapOptions; +import com.google.android.gms.maps.MapFragment; +import com.google.android.gms.maps.model.CircleOptions; +import com.google.android.gms.maps.model.LatLng; + +import java.util.List; + +public class MapViewer extends FragmentActivity { + private final String TAG = "AIMSICD_MapViewer"; + + private GoogleMap mMap; + private AIMSICDDbAdapter mDbHelper; + + private GoogleMapOptions mMapOptions = new GoogleMapOptions(); + + /** + * Called when the activity is first created. + */ + @Override + public void onCreate(Bundle savedInstanceState) { + Log.i(TAG, "Starting MapViewer ============"); + super.onCreate(savedInstanceState); + setContentView(R.layout.map); + setUpMapIfNeeded(); + + mMapOptions.mapType(GoogleMap.MAP_TYPE_HYBRID) + .compassEnabled(true) + .rotateGesturesEnabled(false) + .tiltGesturesEnabled(false); + mMap.getUiSettings().setMyLocationButtonEnabled(true); + mMap.getUiSettings().setZoomControlsEnabled(false); + mMap.setMyLocationEnabled(true); + mDbHelper = new AIMSICDDbAdapter(this); + loadEntries(); + } + + @Override + public void onResume() { + super.onResume(); + setUpMapIfNeeded(); + } + + + + private void setUpMapIfNeeded() { + // Do a null check to confirm that we have not already instantiated the map. + if (mMap == null) { + FragmentManager fmanager = getSupportFragmentManager(); + Fragment fragment = fmanager.findFragmentById(R.id.map); + SupportMapFragment supportmapfragment = (SupportMapFragment)fragment; + mMap = supportmapfragment.getMap(); + // Check if we were successful in obtaining the map. + if (mMap == null) { + // The Map is verified. It is now safe to manipulate the map. + Helpers.sendMsg(this, "Unable to create map!"); + } + } + } + + @Override + public boolean onPrepareOptionsMenu(Menu menu) { + return super.onCreateOptionsMenu(menu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + return super.onOptionsItemSelected(item); + } + + private void loadEntries() { + int SIGNAL_SIZE_RATIO = 15; + double dlat; + double dlng; + int net; + int signal; + int color; + mDbHelper.open(); + Cursor c = mDbHelper.getSignalData(); + if (c.moveToFirst()) { + do { + net = c.getInt(0); + dlat = Double.parseDouble(c.getString(1)); + dlng = Double.parseDouble(c.getString(2)); + signal = c.getInt(3); + if (signal == 0) { + signal = 20; + } + + if ((dlat != 0.0) || (dlng != 0.0)) { + switch (net) { + case TelephonyManager.NETWORK_TYPE_UNKNOWN: + color = R.color.map_unknown; + break; + case TelephonyManager.NETWORK_TYPE_GPRS: + color = R.color.map_gprs; + break; + case TelephonyManager.NETWORK_TYPE_EDGE: + color = R.color.map_edge; + break; + case TelephonyManager.NETWORK_TYPE_UMTS: + color = R.color.map_umts; + break; + case TelephonyManager.NETWORK_TYPE_HSDPA: + color = R.color.map_hsdpa; + break; + case TelephonyManager.NETWORK_TYPE_HSUPA: + color = R.color.map_hsupa; + break; + case TelephonyManager.NETWORK_TYPE_HSPA: + color = R.color.map_hspa; + break; + case TelephonyManager.NETWORK_TYPE_CDMA: + color = R.color.map_cdma; + break; + case TelephonyManager.NETWORK_TYPE_EVDO_0: + color = R.color.map_evdo0; + break; + case TelephonyManager.NETWORK_TYPE_EVDO_A: + color = R.color.map_evdoA; + break; + case TelephonyManager.NETWORK_TYPE_1xRTT: + color = R.color.map_1xrtt; + break; + default: + color = R.color.map_default; + break; + } + + CircleOptions circleOptions = new CircleOptions() + .center(new LatLng((int) (dlat * 1E6), + (int) (dlng * 1E6))) + .radius(signal * SIGNAL_SIZE_RATIO) + .fillColor(color); + + mMap.addCircle(circleOptions); + } + + } while (c.moveToNext()); + c.close(); + + } else { + Helpers.msgShort(this, "No tracked locations found to overlay on map."); + } + } + +} + + diff --git a/src/com/SecUpwN/AIMSICD/OemCommands.java b/app/src/main/java/com/SecUpwN/AIMSICD/OemCommands.java similarity index 100% rename from src/com/SecUpwN/AIMSICD/OemCommands.java rename to app/src/main/java/com/SecUpwN/AIMSICD/OemCommands.java diff --git a/src/com/SecUpwN/AIMSICD/SettingsActivity.java b/app/src/main/java/com/SecUpwN/AIMSICD/SettingsActivity.java similarity index 100% rename from src/com/SecUpwN/AIMSICD/SettingsActivity.java rename to app/src/main/java/com/SecUpwN/AIMSICD/SettingsActivity.java diff --git a/src/com/SecUpwN/AIMSICD/Utils.java b/app/src/main/java/com/SecUpwN/AIMSICD/Utils.java similarity index 100% rename from src/com/SecUpwN/AIMSICD/Utils.java rename to app/src/main/java/com/SecUpwN/AIMSICD/Utils.java diff --git a/src/com/SecUpwN/AIMSICD/cmdprocessor/AbstractAsyncSuCMDProcessor.java b/app/src/main/java/com/SecUpwN/AIMSICD/cmdprocessor/AbstractAsyncSuCMDProcessor.java similarity index 100% rename from src/com/SecUpwN/AIMSICD/cmdprocessor/AbstractAsyncSuCMDProcessor.java rename to app/src/main/java/com/SecUpwN/AIMSICD/cmdprocessor/AbstractAsyncSuCMDProcessor.java diff --git a/src/com/SecUpwN/AIMSICD/cmdprocessor/CMDProcessor.java b/app/src/main/java/com/SecUpwN/AIMSICD/cmdprocessor/CMDProcessor.java similarity index 100% rename from src/com/SecUpwN/AIMSICD/cmdprocessor/CMDProcessor.java rename to app/src/main/java/com/SecUpwN/AIMSICD/cmdprocessor/CMDProcessor.java diff --git a/src/com/SecUpwN/AIMSICD/cmdprocessor/ChildProcess.java b/app/src/main/java/com/SecUpwN/AIMSICD/cmdprocessor/ChildProcess.java similarity index 100% rename from src/com/SecUpwN/AIMSICD/cmdprocessor/ChildProcess.java rename to app/src/main/java/com/SecUpwN/AIMSICD/cmdprocessor/ChildProcess.java diff --git a/src/com/SecUpwN/AIMSICD/cmdprocessor/CommandResult.java b/app/src/main/java/com/SecUpwN/AIMSICD/cmdprocessor/CommandResult.java similarity index 100% rename from src/com/SecUpwN/AIMSICD/cmdprocessor/CommandResult.java rename to app/src/main/java/com/SecUpwN/AIMSICD/cmdprocessor/CommandResult.java diff --git a/src/com/SecUpwN/AIMSICD/cmdprocessor/Helpers.java b/app/src/main/java/com/SecUpwN/AIMSICD/cmdprocessor/Helpers.java similarity index 100% rename from src/com/SecUpwN/AIMSICD/cmdprocessor/Helpers.java rename to app/src/main/java/com/SecUpwN/AIMSICD/cmdprocessor/Helpers.java diff --git a/src/com/SecUpwN/AIMSICD/cmdprocessor/Shell.java b/app/src/main/java/com/SecUpwN/AIMSICD/cmdprocessor/Shell.java similarity index 100% rename from src/com/SecUpwN/AIMSICD/cmdprocessor/Shell.java rename to app/src/main/java/com/SecUpwN/AIMSICD/cmdprocessor/Shell.java diff --git a/src/com/SecUpwN/AIMSICD/cmdprocessor/SystemPropertiesReflection.java b/app/src/main/java/com/SecUpwN/AIMSICD/cmdprocessor/SystemPropertiesReflection.java similarity index 100% rename from src/com/SecUpwN/AIMSICD/cmdprocessor/SystemPropertiesReflection.java rename to app/src/main/java/com/SecUpwN/AIMSICD/cmdprocessor/SystemPropertiesReflection.java diff --git a/src/com/SecUpwN/AIMSICD/receiver/BootCompletedReceiver.java b/app/src/main/java/com/SecUpwN/AIMSICD/receiver/BootCompletedReceiver.java similarity index 100% rename from src/com/SecUpwN/AIMSICD/receiver/BootCompletedReceiver.java rename to app/src/main/java/com/SecUpwN/AIMSICD/receiver/BootCompletedReceiver.java diff --git a/src/com/SecUpwN/AIMSICD/service/AimsicdService.java b/app/src/main/java/com/SecUpwN/AIMSICD/service/AimsicdService.java similarity index 67% rename from src/com/SecUpwN/AIMSICD/service/AimsicdService.java rename to app/src/main/java/com/SecUpwN/AIMSICD/service/AimsicdService.java index 4d9e7d8c0a7c6c8e31c6260a277e0e5d7861b450..1b21cb16ce0b328a85a3b49d01d2b13e13c0ca75 100644 --- a/src/com/SecUpwN/AIMSICD/service/AimsicdService.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/service/AimsicdService.java @@ -38,6 +38,7 @@ package com.SecUpwN.AIMSICD.service; +import android.app.AlertDialog; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; @@ -45,19 +46,29 @@ import android.app.Service; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; -import android.graphics.drawable.Drawable; +import android.location.Location; +import android.location.LocationListener; +import android.location.LocationManager; import android.os.Binder; import android.os.Build; +import android.os.Bundle; import android.os.IBinder; import android.support.v4.app.NotificationCompat; + +import android.telephony.CellLocation; import android.telephony.PhoneStateListener; import android.telephony.ServiceState; +import android.telephony.SignalStrength; import android.telephony.TelephonyManager; import android.telephony.cdma.CdmaCellLocation; import android.telephony.gsm.GsmCellLocation; import android.util.Log; + + import com.SecUpwN.AIMSICD.AIMSICD; +import com.SecUpwN.AIMSICD.AIMSICDDbAdapter; import com.SecUpwN.AIMSICD.R; +import com.SecUpwN.AIMSICD.cmdprocessor.Helpers; public class AimsicdService extends Service { @@ -66,25 +77,33 @@ public class AimsicdService extends Service { //TODO: Clean this mess up!! private final AimscidBinder mBinder = new AimscidBinder(); + public final AIMSICDDbAdapter dbHelper = new AIMSICDDbAdapter(this); private TelephonyManager tm; + private LocationManager lm; public int mPhoneID = -1; public int mSignalInfo = -1; public int mNetID = -1; public int mLacID = -1; public int mCellID = -1; public int mSystemStatus = 10; - public double mLongitude; - public double mLatitude; + public double mLongitude = 0.0; + public double mLatitude = 0.0; public String mNetType = ""; public String mPhoneNum = "", mCellType = "", mLac = "", mCellInfo = "", mDataState = ""; public String mNetName = "", mMmcmcc = "", mSimCountry = "", mPhoneType = ""; public String mIMEI = "", mIMEIV = "", mSimOperator = "", mSimOperatorName = ""; public String mSimSerial = "", mSimSubs = "", mDataActivityType = ""; + public boolean TrackingCell; + public boolean TrackingSignal; + public boolean TrackingLocation; + //Femtocell Detection private int FEMTO_NID_MIN = 0xfa; private int FEMTO_NID_MAX = 0xff; private PhoneStateListener mPhoneStateListener; + private LocationListener mLocationListener; + @Override public IBinder onBind(Intent intent) { @@ -100,6 +119,7 @@ public class AimsicdService extends Service { public void onCreate() { //TelephonyManager provides system details tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); + lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); //Phone type and associated details mIMEI = tm.getDeviceId(); @@ -304,7 +324,7 @@ public class AimsicdService extends Service { } public int getNetID(boolean force) { - if (mNetID < 0 || force) { + if (mNetID == -1 || force) { mNetID = tm.getNetworkType(); } @@ -316,6 +336,7 @@ public class AimsicdService extends Service { GsmCellLocation gsmCellLocation = (GsmCellLocation) tm.getCellLocation(); if (gsmCellLocation != null) { mLac = "" + gsmCellLocation.getLac(); + mLacID = gsmCellLocation.getLac(); } } @@ -327,6 +348,7 @@ public class AimsicdService extends Service { GsmCellLocation gsmCellLocation = (GsmCellLocation) tm.getCellLocation(); if (gsmCellLocation != null) { mCellType = "" + gsmCellLocation.getCid(); + mCellID = gsmCellLocation.getCid(); } } @@ -454,8 +476,6 @@ public class AimsicdService extends Service { break; } - - Notification mBuilder = new NotificationCompat.Builder(this) .setSmallIcon(icon) @@ -480,6 +500,217 @@ public class AimsicdService extends Service { } } + public void setCellTracking(boolean track) { + if (track) { + tm.listen(mCellSignalListener, PhoneStateListener.LISTEN_CELL_LOCATION); + tm.listen(mSignalListenerStrength, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); + Helpers.msgShort(this, "Tracking cell information"); + TrackingCell = true; + } else { + tm.listen(mCellSignalListener, PhoneStateListener.LISTEN_NONE); + tm.listen(mSignalListenerStrength, PhoneStateListener.LISTEN_NONE); + Helpers.msgShort(this, "Stopped tracking cell information"); + TrackingCell = false; + mCellInfo = "[0,0]|nn|nn|"; + } + } + + public void setSignalTracking(boolean track) { + if (track) { + tm.listen(mSignalListenerStrength, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); + Helpers.msgShort(this, "Tracking signal strength"); + TrackingSignal = true; + } else { + tm.listen(mSignalListenerStrength, PhoneStateListener.LISTEN_NONE); + Helpers.msgShort(this, "Stopped tracking signal strength"); + TrackingSignal = false; + mSignalInfo = 0; + } + } + + private PhoneStateListener mSignalListenerStrength = new PhoneStateListener() { + public void onSignalStrengthsChanged(SignalStrength signalStrength) { + switch (mPhoneID) { + case TelephonyManager.PHONE_TYPE_GSM: + mSignalInfo = signalStrength.getGsmSignalStrength(); + break; + case TelephonyManager.PHONE_TYPE_CDMA: + mSignalInfo = signalStrength.getCdmaDbm(); + break; + default: + mSignalInfo = 0; + } + + if (TrackingSignal) { + dbHelper.open(); + dbHelper.insertSignal(mLacID,mCellID, + mNetID, mLatitude, + mLongitude,mSignalInfo, + mCellInfo); + } + } + }; + + private PhoneStateListener mCellSignalListener = new PhoneStateListener() { + public void onCellLocationChanged(CellLocation location) { + mNetID = getNetID(true); + mNetType = getNetworkTypeName(mNetID, true); + + int dataActivityType = tm.getDataActivity(); + String dataActivity = "un"; + switch (dataActivityType) { + case TelephonyManager.DATA_ACTIVITY_NONE: + dataActivity = "No"; + break; + case TelephonyManager.DATA_ACTIVITY_IN: + dataActivity = "In"; + break; + case TelephonyManager.DATA_ACTIVITY_OUT: + dataActivity = "Ou"; + break; + case TelephonyManager.DATA_ACTIVITY_INOUT: + dataActivity = "IO"; + break; + case TelephonyManager.DATA_ACTIVITY_DORMANT: + dataActivity = "Do"; + break; + } + + int dataType = tm.getDataState(); + String dataState = "un"; + switch (dataType) { + case TelephonyManager.DATA_DISCONNECTED: + dataState = "Di"; + break; + case TelephonyManager.DATA_CONNECTING: + dataState = "Ct"; + break; + case TelephonyManager.DATA_CONNECTED: + dataState = "Cd"; + break; + case TelephonyManager.DATA_SUSPENDED: + dataState = "Su"; + break; + } + + switch (mPhoneID) { + case TelephonyManager.PHONE_TYPE_GSM: + GsmCellLocation gsmCellLocation = (GsmCellLocation) location; + if (gsmCellLocation != null) { + mCellInfo = gsmCellLocation.toString() + dataActivity + "|" + + dataState + "|" + mNetType + "|"; + mLacID = gsmCellLocation.getLac(); + mCellID = gsmCellLocation.getCid(); + dbHelper.open(); + if (TrackingCell && !dbHelper.cellExists(mCellID)){ + mSimCountry = getSimCountry(true); + mSimOperator = getSimOperator(true); + mSimOperatorName = getSimOperatorName(true); + dbHelper.insertCell(mLacID, mCellID, + mNetID, mLatitude, + mLongitude, mSignalInfo, + mCellInfo, mSimCountry, + mSimOperator, mSimOperatorName); + } + } + break; + case TelephonyManager.PHONE_TYPE_CDMA: + CdmaCellLocation cdmaCellLocation = (CdmaCellLocation) location; + if (cdmaCellLocation != null) { + mCellInfo = cdmaCellLocation.toString() + dataActivity + + "|" + dataState + "|" + mNetType + "|"; + mLacID = cdmaCellLocation.getNetworkId(); + mCellID = cdmaCellLocation.getBaseStationId(); + if (TrackingCell && !dbHelper.cellExists(mCellID)){ + mSimCountry = getSimCountry(true); + mSimOperator = getSimOperator(true); + mSimOperatorName = getNetworkName(true); + } + } + } + + if (TrackingCell && !dbHelper.cellExists(mCellID)) { + dbHelper.open(); + dbHelper.insertCell(mLacID, mCellID, + mNetID, mLatitude, + mLongitude, mSignalInfo, + mCellInfo, mSimCountry, + mSimOperator, mSimOperatorName); + } + } + }; + + public void setLocationTracking(boolean track) { + if (track) { + if (lm != null) { + mLocationListener = new MyLocationListener(); + Log.i(TAG, "LocationManager already existed"); + lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocationListener); + Helpers.msgShort(this, "Tracking location"); + TrackingLocation = true; + } else { + Log.i(TAG, "LocationManager did not existed"); + lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); + if (lm != null) { + if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) { + Log.i(TAG, "LocationManager created"); + lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocationListener); + Helpers.msgShort(this, "Tracking location"); + TrackingLocation = true; + } else { + final AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setMessage(R.string.location_error_message) + .setTitle(R.string.location_error_title); + builder.create().show(); + } + } + } + } else { + lm.removeUpdates(mLocationListener); + Helpers.msgShort(this, "Stopped tracking location"); + TrackingLocation = false; + mLongitude = 0.0; + mLatitude = 0.0; + } + } + + private class MyLocationListener implements LocationListener { + @Override + public void onLocationChanged(Location loc) { + if (loc != null) { + mLongitude = loc.getLongitude(); + mLatitude = loc.getLatitude(); + } + if (TrackingLocation) { + dbHelper.open(); + dbHelper.insertLocation(mLacID, mCellID, + mNetID, mLatitude, + mLongitude, mSignalInfo, + mCellInfo); + } + } + + @Override + public void onProviderDisabled(String provider) { + // TODO Auto-generated method stub + } + + @Override + public void onProviderEnabled(String provider) { + // TODO Auto-generated method stub + } + + @Override + public void onStatusChanged(String provider, int status, + Bundle extras) { + // TODO Auto-generated method stub + } + } + + public AIMSICDDbAdapter getDbHelper() { + return dbHelper; + } + /* * The below code section was copied and modified from * Femtocatcher https://github.com/iSECPartners/femtocatcher diff --git a/res/drawable-hdpi/flat_alarm.png b/app/src/main/res/drawable-hdpi/flat_alarm.png similarity index 100% rename from res/drawable-hdpi/flat_alarm.png rename to app/src/main/res/drawable-hdpi/flat_alarm.png diff --git a/res/drawable-hdpi/flat_good.png b/app/src/main/res/drawable-hdpi/flat_good.png similarity index 100% rename from res/drawable-hdpi/flat_good.png rename to app/src/main/res/drawable-hdpi/flat_good.png diff --git a/res/drawable-hdpi/flat_idle.png b/app/src/main/res/drawable-hdpi/flat_idle.png similarity index 100% rename from res/drawable-hdpi/flat_idle.png rename to app/src/main/res/drawable-hdpi/flat_idle.png diff --git a/res/drawable-hdpi/ic_action_computer.png b/app/src/main/res/drawable-hdpi/ic_action_computer.png similarity index 100% rename from res/drawable-hdpi/ic_action_computer.png rename to app/src/main/res/drawable-hdpi/ic_action_computer.png diff --git a/res/drawable-hdpi/ic_action_import_export.png b/app/src/main/res/drawable-hdpi/ic_action_import_export.png similarity index 100% rename from res/drawable-hdpi/ic_action_import_export.png rename to app/src/main/res/drawable-hdpi/ic_action_import_export.png diff --git a/res/drawable-hdpi/ic_action_location_found.png b/app/src/main/res/drawable-hdpi/ic_action_location_found.png similarity index 100% rename from res/drawable-hdpi/ic_action_location_found.png rename to app/src/main/res/drawable-hdpi/ic_action_location_found.png diff --git a/res/drawable-hdpi/ic_action_location_off.png b/app/src/main/res/drawable-hdpi/ic_action_location_off.png similarity index 100% rename from res/drawable-hdpi/ic_action_location_off.png rename to app/src/main/res/drawable-hdpi/ic_action_location_off.png diff --git a/res/drawable-hdpi/ic_action_map.png b/app/src/main/res/drawable-hdpi/ic_action_map.png similarity index 100% rename from res/drawable-hdpi/ic_action_map.png rename to app/src/main/res/drawable-hdpi/ic_action_map.png diff --git a/res/drawable-hdpi/ic_action_network_cell.png b/app/src/main/res/drawable-hdpi/ic_action_network_cell.png similarity index 100% rename from res/drawable-hdpi/ic_action_network_cell.png rename to app/src/main/res/drawable-hdpi/ic_action_network_cell.png diff --git a/res/drawable-hdpi/ic_action_network_cell_not_tracked.png b/app/src/main/res/drawable-hdpi/ic_action_network_cell_not_tracked.png similarity index 100% rename from res/drawable-hdpi/ic_action_network_cell_not_tracked.png rename to app/src/main/res/drawable-hdpi/ic_action_network_cell_not_tracked.png diff --git a/res/drawable-hdpi/ic_action_remove.png b/app/src/main/res/drawable-hdpi/ic_action_remove.png similarity index 100% rename from res/drawable-hdpi/ic_action_remove.png rename to app/src/main/res/drawable-hdpi/ic_action_remove.png diff --git a/res/drawable-hdpi/ic_action_settings.png b/app/src/main/res/drawable-hdpi/ic_action_settings.png similarity index 100% rename from res/drawable-hdpi/ic_action_settings.png rename to app/src/main/res/drawable-hdpi/ic_action_settings.png diff --git a/res/drawable-hdpi/sense_alarm.png b/app/src/main/res/drawable-hdpi/sense_alarm.png similarity index 100% rename from res/drawable-hdpi/sense_alarm.png rename to app/src/main/res/drawable-hdpi/sense_alarm.png diff --git a/res/drawable-hdpi/sense_good.png b/app/src/main/res/drawable-hdpi/sense_good.png similarity index 100% rename from res/drawable-hdpi/sense_good.png rename to app/src/main/res/drawable-hdpi/sense_good.png diff --git a/res/drawable-hdpi/sense_idle.png b/app/src/main/res/drawable-hdpi/sense_idle.png similarity index 100% rename from res/drawable-hdpi/sense_idle.png rename to app/src/main/res/drawable-hdpi/sense_idle.png diff --git a/res/drawable-hdpi/track_cell.png b/app/src/main/res/drawable-hdpi/track_cell.png similarity index 100% rename from res/drawable-hdpi/track_cell.png rename to app/src/main/res/drawable-hdpi/track_cell.png diff --git a/res/drawable-hdpi/untrack_cell.png b/app/src/main/res/drawable-hdpi/untrack_cell.png similarity index 100% rename from res/drawable-hdpi/untrack_cell.png rename to app/src/main/res/drawable-hdpi/untrack_cell.png diff --git a/res/drawable-hdpi/vp_background_texture.png b/app/src/main/res/drawable-hdpi/vp_background_texture.png similarity index 100% rename from res/drawable-hdpi/vp_background_texture.png rename to app/src/main/res/drawable-hdpi/vp_background_texture.png diff --git a/res/drawable-hdpi/white_alarm.png b/app/src/main/res/drawable-hdpi/white_alarm.png similarity index 100% rename from res/drawable-hdpi/white_alarm.png rename to app/src/main/res/drawable-hdpi/white_alarm.png diff --git a/res/drawable-hdpi/white_good.png b/app/src/main/res/drawable-hdpi/white_good.png similarity index 100% rename from res/drawable-hdpi/white_good.png rename to app/src/main/res/drawable-hdpi/white_good.png diff --git a/res/drawable-hdpi/white_idle.png b/app/src/main/res/drawable-hdpi/white_idle.png similarity index 100% rename from res/drawable-hdpi/white_idle.png rename to app/src/main/res/drawable-hdpi/white_idle.png diff --git a/res/drawable-ldpi/flat_alarm.png b/app/src/main/res/drawable-ldpi/flat_alarm.png similarity index 100% rename from res/drawable-ldpi/flat_alarm.png rename to app/src/main/res/drawable-ldpi/flat_alarm.png diff --git a/res/drawable-ldpi/flat_good.png b/app/src/main/res/drawable-ldpi/flat_good.png similarity index 100% rename from res/drawable-ldpi/flat_good.png rename to app/src/main/res/drawable-ldpi/flat_good.png diff --git a/res/drawable-ldpi/flat_idle.png b/app/src/main/res/drawable-ldpi/flat_idle.png similarity index 100% rename from res/drawable-ldpi/flat_idle.png rename to app/src/main/res/drawable-ldpi/flat_idle.png diff --git a/res/drawable-ldpi/sense_alarm.png b/app/src/main/res/drawable-ldpi/sense_alarm.png similarity index 100% rename from res/drawable-ldpi/sense_alarm.png rename to app/src/main/res/drawable-ldpi/sense_alarm.png diff --git a/res/drawable-ldpi/sense_good.png b/app/src/main/res/drawable-ldpi/sense_good.png similarity index 100% rename from res/drawable-ldpi/sense_good.png rename to app/src/main/res/drawable-ldpi/sense_good.png diff --git a/res/drawable-ldpi/sense_idle.png b/app/src/main/res/drawable-ldpi/sense_idle.png similarity index 100% rename from res/drawable-ldpi/sense_idle.png rename to app/src/main/res/drawable-ldpi/sense_idle.png diff --git a/res/drawable-ldpi/white_alarm.png b/app/src/main/res/drawable-ldpi/white_alarm.png similarity index 100% rename from res/drawable-ldpi/white_alarm.png rename to app/src/main/res/drawable-ldpi/white_alarm.png diff --git a/res/drawable-ldpi/white_good.png b/app/src/main/res/drawable-ldpi/white_good.png similarity index 100% rename from res/drawable-ldpi/white_good.png rename to app/src/main/res/drawable-ldpi/white_good.png diff --git a/res/drawable-ldpi/white_idle.png b/app/src/main/res/drawable-ldpi/white_idle.png similarity index 100% rename from res/drawable-ldpi/white_idle.png rename to app/src/main/res/drawable-ldpi/white_idle.png diff --git a/res/drawable-mdpi/flat_alarm.png b/app/src/main/res/drawable-mdpi/flat_alarm.png similarity index 100% rename from res/drawable-mdpi/flat_alarm.png rename to app/src/main/res/drawable-mdpi/flat_alarm.png diff --git a/res/drawable-mdpi/flat_good.png b/app/src/main/res/drawable-mdpi/flat_good.png similarity index 100% rename from res/drawable-mdpi/flat_good.png rename to app/src/main/res/drawable-mdpi/flat_good.png diff --git a/res/drawable-mdpi/flat_idle.png b/app/src/main/res/drawable-mdpi/flat_idle.png similarity index 100% rename from res/drawable-mdpi/flat_idle.png rename to app/src/main/res/drawable-mdpi/flat_idle.png diff --git a/res/drawable-mdpi/sense_alarm.png b/app/src/main/res/drawable-mdpi/sense_alarm.png similarity index 100% rename from res/drawable-mdpi/sense_alarm.png rename to app/src/main/res/drawable-mdpi/sense_alarm.png diff --git a/res/drawable-mdpi/sense_good.png b/app/src/main/res/drawable-mdpi/sense_good.png similarity index 100% rename from res/drawable-mdpi/sense_good.png rename to app/src/main/res/drawable-mdpi/sense_good.png diff --git a/res/drawable-mdpi/sense_idle.png b/app/src/main/res/drawable-mdpi/sense_idle.png similarity index 100% rename from res/drawable-mdpi/sense_idle.png rename to app/src/main/res/drawable-mdpi/sense_idle.png diff --git a/res/drawable-mdpi/vp_background_texture.png b/app/src/main/res/drawable-mdpi/vp_background_texture.png similarity index 100% rename from res/drawable-mdpi/vp_background_texture.png rename to app/src/main/res/drawable-mdpi/vp_background_texture.png diff --git a/res/drawable-mdpi/white_alarm.png b/app/src/main/res/drawable-mdpi/white_alarm.png similarity index 100% rename from res/drawable-mdpi/white_alarm.png rename to app/src/main/res/drawable-mdpi/white_alarm.png diff --git a/res/drawable-mdpi/white_good.png b/app/src/main/res/drawable-mdpi/white_good.png similarity index 100% rename from res/drawable-mdpi/white_good.png rename to app/src/main/res/drawable-mdpi/white_good.png diff --git a/res/drawable-mdpi/white_idle.png b/app/src/main/res/drawable-mdpi/white_idle.png similarity index 100% rename from res/drawable-mdpi/white_idle.png rename to app/src/main/res/drawable-mdpi/white_idle.png diff --git a/res/drawable/pager_background.xml b/app/src/main/res/drawable/pager_background.xml similarity index 100% rename from res/drawable/pager_background.xml rename to app/src/main/res/drawable/pager_background.xml diff --git a/res/drawable/top_shadow.xml b/app/src/main/res/drawable/top_shadow.xml similarity index 100% rename from res/drawable/top_shadow.xml rename to app/src/main/res/drawable/top_shadow.xml diff --git a/res/layout/main.xml b/app/src/main/res/layout/main.xml old mode 100755 new mode 100644 similarity index 100% rename from res/layout/main.xml rename to app/src/main/res/layout/main.xml diff --git a/app/src/main/res/layout/map.xml b/app/src/main/res/layout/map.xml new file mode 100644 index 0000000000000000000000000000000000000000..d73ba6d59fdd48745b7961d292e38d7c21527c75 --- /dev/null +++ b/app/src/main/res/layout/map.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + tools:context=".MapViewer" > + + <fragment + android:id="@+id/map" + android:layout_width="match_parent" + android:layout_height="match_parent" + class="com.google.android.gms.maps.SupportMapFragment" /> + +</RelativeLayout> diff --git a/res/layout/top.xml b/app/src/main/res/layout/top.xml similarity index 100% rename from res/layout/top.xml rename to app/src/main/res/layout/top.xml diff --git a/res/menu/main_menu.xml b/app/src/main/res/menu/main_menu.xml similarity index 100% rename from res/menu/main_menu.xml rename to app/src/main/res/menu/main_menu.xml diff --git a/res/values/arrays.xml b/app/src/main/res/values/arrays.xml similarity index 66% rename from res/values/arrays.xml rename to app/src/main/res/values/arrays.xml index 8222060e4974fffae7cadea7dd93a68aa2a88516..0611f9f448d57b672c2401bc2b80588355253e75 100644 --- a/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -12,10 +12,4 @@ <item>"3"</item> </string-array> - <array name="pref_ui_icon_display"> - <item>@drawable/flat_good</item> - <item>@drawable/sense_good</item> - <item>@drawable/white_good</item> - </array> - </resources> diff --git a/res/values/colors.xml b/app/src/main/res/values/colors.xml similarity index 60% rename from res/values/colors.xml rename to app/src/main/res/values/colors.xml index 64b75fc8f323a47f7896a9800f36c82808a32935..585fb4de7b226e4ee6142a12d8dc7315856be144 100644 --- a/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -20,7 +20,21 @@ <color name="light_blue">#ffccffff</color> <color name="cb_shader_alpha">#44ccffff</color> <color name="action_bar_color">#ff0d0d0d</color> - <color name="green_text">#00FF00</color> + <color name="green_text">#ff00FF00</color> <color name="medium_blue">#ff33B5E5</color> + + <!-- MAP COLOURS --> + <color name="map_unknown">#fff0f8ff</color> + <color name="map_gprs">#ffa9a9a9</color> + <color name="map_edge">#ff87cefa</color> + <color name="map_umts">#ff7cfc00</color> + <color name="map_hsdpa">#ffff6347</color> + <color name="map_hsupa">#ffff00ff</color> + <color name="map_hspa">#ff238e6b</color> + <color name="map_cdma">#ff8a2be2</color> + <color name="map_evdo0">#ffff69b4</color> + <color name="map_evdoA">#ffffff00</color> + <color name="map_1xrtt">#ff7cfc00</color> + <color name="map_default">#fff0f8ff</color> -</resources> +</resources> diff --git a/res/values/config.xml b/app/src/main/res/values/config.xml similarity index 100% rename from res/values/config.xml rename to app/src/main/res/values/config.xml diff --git a/res/values/strings.xml b/app/src/main/res/values/strings.xml old mode 100755 new mode 100644 similarity index 98% rename from res/values/strings.xml rename to app/src/main/res/values/strings.xml index 79d7eb6d024a358c701eb3d0223f7118f1dcda2f..75fb0856a36164d7dea318adcc3ede7523257a29 --- a/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,6 +3,7 @@ <string name="app_name_short">AIMSICD</string> <string name="app_name">Android IMSI-Catcher Detector</string> + <string name="map_view">AIMSICD Map Viewer</string> <string name="strength">Signal strength</string> <string name="quit">Quit</string> <string name="text_ok">OK</string> diff --git a/res/values/styles.xml b/app/src/main/res/values/styles.xml similarity index 90% rename from res/values/styles.xml rename to app/src/main/res/values/styles.xml index 17bab446b358821452a3e5694483a064837ed27b..2f0fe01d9da4cdcdee17e586bbb163153e98af77 100644 --- a/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -15,7 +15,13 @@ --> <resources xmlns:android="http://schemas.android.com/apk/res/android"> + <style name="mapView"> + <item name="android:gravity">center</item> + </style> + <style name="action_bar_style" parent="android:Widget.ActionBar"> <item name="android:background">@color/action_bar_color</item> </style> + + </resources> diff --git a/res/values/themes.xml b/app/src/main/res/values/themes.xml similarity index 100% rename from res/values/themes.xml rename to app/src/main/res/values/themes.xml diff --git a/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml similarity index 87% rename from res/xml/preferences.xml rename to app/src/main/res/xml/preferences.xml index cc498d1225acf9318f1f1f1844df6893e6a235c3..705a0ebf072c656edc3746ba6052b86370f6ebed 100644 --- a/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:aimsicd="http://schemas.android.com/apk/res/com.SecUpwN.AIMSICD"> +<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="@string/pref_system_title" @@ -36,8 +35,7 @@ android:title="@string/pref_ui_icons_title" android:dialogTitle="@string/pref_ui_icons_summ" android:entries="@array/pref_ui_icons_entries" - android:entryValues="@array/pref_ui_icons_values" - aimsicd:entryIcons="@array/pref_ui_icon_display"/> + android:entryValues="@array/pref_ui_icons_values"/> </PreferenceCategory> </PreferenceScreen> diff --git a/bin/AndroidManifest.xml b/bin/AndroidManifest.xml deleted file mode 100755 index 250083b33d07052276b1b4e9d944d4f1db6028f1..0000000000000000000000000000000000000000 --- a/bin/AndroidManifest.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.jofrepalau.rawphone" - android:versionName="0.2.2" android:versionCode="3"> - <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="false"> - <uses-library android:name="com.google.android.maps" /> - <activity android:name=".rawphone" - android:label="@string/app_name" - android:screenOrientation="portrait"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - <activity android:name=".MapViewer" - android:label="@string/app_name"> - </activity> - - </application> - -<uses-sdk android:minSdkVersion="5"></uses-sdk> -<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> -<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> -<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission> -<uses-permission android:name="android.permission.INTERNET" /> -<uses-sdk></uses-sdk> -</manifest> \ No newline at end of file diff --git a/bin/classes/com/jofrepalau/rawphone/BuildConfig.class b/bin/classes/com/jofrepalau/rawphone/BuildConfig.class deleted file mode 100755 index 6fdf6e08b7e9da2b18e649f8817b011efc124eb5..0000000000000000000000000000000000000000 Binary files a/bin/classes/com/jofrepalau/rawphone/BuildConfig.class and /dev/null differ diff --git a/bin/classes/com/jofrepalau/rawphone/MapViewer$MapOverlay.class b/bin/classes/com/jofrepalau/rawphone/MapViewer$MapOverlay.class deleted file mode 100755 index de8036df6c407799f6a50dd7c9937c0f8ee15d13..0000000000000000000000000000000000000000 Binary files a/bin/classes/com/jofrepalau/rawphone/MapViewer$MapOverlay.class and /dev/null differ diff --git a/bin/classes/com/jofrepalau/rawphone/MapViewer.class b/bin/classes/com/jofrepalau/rawphone/MapViewer.class deleted file mode 100755 index 6de5a93283c0aa83987fa82704f061b8813fb224..0000000000000000000000000000000000000000 Binary files a/bin/classes/com/jofrepalau/rawphone/MapViewer.class and /dev/null differ diff --git a/bin/classes/com/jofrepalau/rawphone/R$attr.class b/bin/classes/com/jofrepalau/rawphone/R$attr.class deleted file mode 100755 index 5091bb9c5a37ed086a07f844834b886ff3343ad7..0000000000000000000000000000000000000000 Binary files a/bin/classes/com/jofrepalau/rawphone/R$attr.class and /dev/null differ diff --git a/bin/classes/com/jofrepalau/rawphone/R$drawable.class b/bin/classes/com/jofrepalau/rawphone/R$drawable.class deleted file mode 100755 index 869f61c2b1ee496e7ffcb63a8d7dbb72d9cb5ce8..0000000000000000000000000000000000000000 Binary files a/bin/classes/com/jofrepalau/rawphone/R$drawable.class and /dev/null differ diff --git a/bin/classes/com/jofrepalau/rawphone/R$id.class b/bin/classes/com/jofrepalau/rawphone/R$id.class deleted file mode 100755 index 95263387900b244cff517cb4c02123ce0b1b3bdd..0000000000000000000000000000000000000000 Binary files a/bin/classes/com/jofrepalau/rawphone/R$id.class and /dev/null differ diff --git a/bin/classes/com/jofrepalau/rawphone/R$layout.class b/bin/classes/com/jofrepalau/rawphone/R$layout.class deleted file mode 100755 index bd58cfbac6e5b45e90e24f9524518ddf1d9ed79c..0000000000000000000000000000000000000000 Binary files a/bin/classes/com/jofrepalau/rawphone/R$layout.class and /dev/null differ diff --git a/bin/classes/com/jofrepalau/rawphone/R$string.class b/bin/classes/com/jofrepalau/rawphone/R$string.class deleted file mode 100755 index 2db8dfa0f5caf1fe725e852a36bfde937c117220..0000000000000000000000000000000000000000 Binary files a/bin/classes/com/jofrepalau/rawphone/R$string.class and /dev/null differ diff --git a/bin/classes/com/jofrepalau/rawphone/R.class b/bin/classes/com/jofrepalau/rawphone/R.class deleted file mode 100755 index 74e13d871c7b4929380625a0c7df8879cde8b589..0000000000000000000000000000000000000000 Binary files a/bin/classes/com/jofrepalau/rawphone/R.class and /dev/null differ diff --git a/bin/classes/com/jofrepalau/rawphone/rawphone$1.class b/bin/classes/com/jofrepalau/rawphone/rawphone$1.class deleted file mode 100755 index f30e0324e35576ef59e7aad18192f63360534ee3..0000000000000000000000000000000000000000 Binary files a/bin/classes/com/jofrepalau/rawphone/rawphone$1.class and /dev/null differ diff --git a/bin/classes/com/jofrepalau/rawphone/rawphone$2.class b/bin/classes/com/jofrepalau/rawphone/rawphone$2.class deleted file mode 100755 index d1e1497f47fe226bb99980559908088350d5b7dc..0000000000000000000000000000000000000000 Binary files a/bin/classes/com/jofrepalau/rawphone/rawphone$2.class and /dev/null differ diff --git a/bin/classes/com/jofrepalau/rawphone/rawphone$MyLocationListener.class b/bin/classes/com/jofrepalau/rawphone/rawphone$MyLocationListener.class deleted file mode 100755 index aea2dfc79ea2873379faa41f0382d2dd67b1fccd..0000000000000000000000000000000000000000 Binary files a/bin/classes/com/jofrepalau/rawphone/rawphone$MyLocationListener.class and /dev/null differ diff --git a/bin/classes/com/jofrepalau/rawphone/rawphone.class b/bin/classes/com/jofrepalau/rawphone/rawphone.class deleted file mode 100755 index 03953e361d14d9aba95243ff9e08193dbb2e37a6..0000000000000000000000000000000000000000 Binary files a/bin/classes/com/jofrepalau/rawphone/rawphone.class and /dev/null differ diff --git a/bin/jarlist.cache b/bin/jarlist.cache deleted file mode 100755 index 1b5ec3f9c5741ea2c49e7978c6fe7f6c7924d9ed..0000000000000000000000000000000000000000 --- a/bin/jarlist.cache +++ /dev/null @@ -1,3 +0,0 @@ -# cache for current jar dependecy. DO NOT EDIT. -# format is <lastModified> <length> <SHA-1> <path> -# Encoding is UTF-8 diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000000000000000000000000000000000000..0ffc7372538c33a9fc03732c627db2fc6e760de7 --- /dev/null +++ b/build.gradle @@ -0,0 +1,15 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + repositories { + mavenCentral() + } + dependencies { + classpath 'com.android.tools.build:gradle:0.9.+' + } +} + +allprojects { + repositories { + mavenCentral() + } +} diff --git a/gen/com/jofrepalau/rawphone/BuildConfig.java b/gen/com/jofrepalau/rawphone/BuildConfig.java deleted file mode 100755 index 698913aa87a7ad23c9ed5bca7d338b0566b00bc9..0000000000000000000000000000000000000000 --- a/gen/com/jofrepalau/rawphone/BuildConfig.java +++ /dev/null @@ -1,6 +0,0 @@ -/** Automatically generated file. DO NOT MODIFY */ -package com.jofrepalau.rawphone; - -public final class BuildConfig { - public final static boolean DEBUG = true; -} \ No newline at end of file diff --git a/gen/com/jofrepalau/rawphone/R.java b/gen/com/jofrepalau/rawphone/R.java deleted file mode 100755 index d5b5f03476802d4db4c1cf986b6b3482a7d6692d..0000000000000000000000000000000000000000 --- a/gen/com/jofrepalau/rawphone/R.java +++ /dev/null @@ -1,41 +0,0 @@ -/* AUTO-GENERATED FILE. DO NOT MODIFY. - * - * This class was automatically generated by the - * aapt tool from the resource data it found. It - * should not be modified by hand. - */ - -package com.jofrepalau.rawphone; - -public final class R { - public static final class attr { - } - public static final class drawable { - public static final int icon=0x7f020000; - public static final int iconbn=0x7f020001; - } - public static final class id { - public static final int mapView=0x7f050001; - public static final int tcdma=0x7f050009; - public static final int tedge=0x7f050004; - public static final int tevo0=0x7f05000a; - public static final int tevoa=0x7f05000b; - public static final int tgprs=0x7f050003; - public static final int thsdpa=0x7f050006; - public static final int thspa=0x7f050008; - public static final int thsupa=0x7f050007; - public static final int tumts=0x7f050005; - public static final int view=0x7f050000; - public static final int zoom=0x7f050002; - } - public static final class layout { - public static final int main=0x7f030000; - public static final int map=0x7f030001; - } - public static final class string { - public static final int app_name=0x7f040001; - public static final int hello=0x7f040000; - public static final int quit=0x7f040003; - public static final int strength=0x7f040002; - } -} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..8c0fb64a8698b08ecc4158d828ca593c4928e9dd Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000000000000000000000000000000000..9d17df1a61182ebde1e3538eef96c1101146c420 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Apr 11 23:52:24 EST 2014 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-all.zip diff --git a/gradlew b/gradlew new file mode 100755 index 0000000000000000000000000000000000000000..91a7e269e19dfc62e27137a0b57ef3e430cee4fd --- /dev/null +++ b/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000000000000000000000000000000000000..8a0b282aa6885fb573c106b3551f7275c5f17e8e --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/libs/android-support-v7-appcompat.jar b/libs/android-support-v7-appcompat.jar deleted file mode 100644 index 045c79330c542825344ce10ab654ba0b0fcc2a0a..0000000000000000000000000000000000000000 Binary files a/libs/android-support-v7-appcompat.jar and /dev/null differ diff --git a/project.properties b/project.properties deleted file mode 100755 index cc924e7a4c5e65fab4ac1603410d3352f1ca1178..0000000000000000000000000000000000000000 --- a/project.properties +++ /dev/null @@ -1,14 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=Google Inc.:Google APIs:7 diff --git a/res/layout/map.xml b/res/layout/map.xml deleted file mode 100755 index f97f17213c8ec00dbe8f9e1881a651b8e6bd639e..0000000000000000000000000000000000000000 --- a/res/layout/map.xml +++ /dev/null @@ -1,139 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="fill_parent" - android:layout_height="fill_parent"> - - <com.google.android.maps.MapView - android:id="@+id/mapView" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:enabled="true" - android:clickable="true" - android:apiKey="0mg6hR1rVSDUaS4bYUXL4RKyMZCkEv92b9tzNoQ" - /> - - <LinearLayout - android:orientation="horizontal" - android:id="@+id/zoom" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_centerHorizontal="true" - /> - - <TextView - android:id="@+id/tgprs" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/gprs" - android:typeface="monospace" - android:textStyle="bold" - android:textColor="#A9A9A9" - android:background="#95FFFFFF" - android:width="70dp" - /> - - <TextView - android:id="@+id/tedge" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/edge" - android:typeface="monospace" - android:textStyle="bold" - android:textColor="#87CEFA" - android:layout_below="@+id/tgprs" - android:background="#95FFFFFF" - android:width="70dp" - /> - - <TextView - android:id="@+id/tumts" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/umts" - android:typeface="monospace" - android:textStyle="bold" - android:textColor="#7CFC00" - android:layout_below="@+id/tedge" - android:background="#95FFFFFF" - android:width="70dp" - /> - - <TextView - android:id="@+id/thsdpa" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/hsdpa" - android:typeface="monospace" - android:textStyle="bold" - android:textColor="#FF6347" - android:layout_below="@+id/tumts" - android:background="#95FFFFFF" - android:width="70dp" - /> - - <TextView - android:id="@+id/thsupa" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/hsupa" - android:typeface="monospace" - android:textStyle="bold" - android:textColor="#FF00FF" - android:layout_below="@+id/thsdpa" - android:background="#95FFFFFF" - android:width="70dp" - /> - - <TextView - android:id="@+id/thspa" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/hspa" - android:typeface="monospace" - android:textStyle="bold" - android:textColor="#238E6B" - android:layout_below="@+id/thsupa" - android:background="#95FFFFFF" - android:width="70dp" - /> - - <TextView - android:id="@+id/tcdma" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/cdma" - android:typeface="monospace" - android:textStyle="bold" - android:textColor="#8A2BE2" - android:layout_below="@+id/thspa" - android:background="#95FFFFFF" - android:width="70dp" - /> - - <TextView - android:id="@+id/tevo0" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/evo0" - android:typeface="monospace" - android:textStyle="bold" - android:textColor="#FF69B4" - android:layout_below="@+id/tcdma" - android:background="#95FFFFFF" - android:width="70dp" - /> - - <TextView - android:id="@+id/tevoa" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/evoA" - android:typeface="monospace" - android:textStyle="bold" - android:textColor="#FF3300" - android:layout_below="@+id/tevo0" - android:background="#95FFFFFF" - android:width="70dp" - /> -</RelativeLayout> diff --git a/res/values/attrs.xml b/res/values/attrs.xml deleted file mode 100644 index 905c62ae72c07e807761862898bd01a6aac5f9a3..0000000000000000000000000000000000000000 --- a/res/values/attrs.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <declare-styleable name="IconListPreference"> - <attr name="entryIcons" format="reference" /> - </declare-styleable> -</resources> diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000000000000000000000000000000000000..e7b4def49cb53d9aa04228dd3edb14c9e635e003 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +include ':app' diff --git a/src/com/SecUpwN/AIMSICD/MapViewer.java b/src/com/SecUpwN/AIMSICD/MapViewer.java deleted file mode 100755 index 4f07886c43c2cf55d1f5d7609618cfc9dbc24104..0000000000000000000000000000000000000000 --- a/src/com/SecUpwN/AIMSICD/MapViewer.java +++ /dev/null @@ -1,216 +0,0 @@ -/* Android IMSI Catcher Detector - * Copyright (C) 2014 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You may obtain a copy of the License at - * https://github.com/SecUpwN/Android-IMSI-Catcher-Detector/blob/master/LICENSE - */ - -package com.SecUpwN.AIMSICD; - -import android.database.Cursor; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Point; -import android.os.Bundle; -import android.telephony.TelephonyManager; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.webkit.WebView; -import com.SecUpwN.AIMSICD.cmdprocessor.Helpers; -import com.google.android.maps.*; - -import java.util.List; - -public class MapViewer extends MapActivity { - private final String TAG = "AIMSICD_MapViewer"; - - public MapView mapView; - private AIMSICDDbAdapter mDbHelper; - - private MapController mapc; - private final int SIGNAL_SIZE_RATIO = 15; - - class MapOverlay extends com.google.android.maps.Overlay { - private GeoPoint gp1; - private int color; - private int radius; - - public MapOverlay(GeoPoint gp1, int radius, int color) { - this.gp1 = gp1; - this.color = color; - this.radius = radius; - } - - @Override - public void draw(Canvas canvas, MapView mapView, boolean shadow) { - int pradius = (int) mapView.getProjection().metersToEquatorPixels(radius); - - Log.i(TAG, " ==> Draw pos: " + gp1.toString() + " color: " + color + " radius: " + radius + " pradius: " + pradius); - Projection projection = mapView.getProjection(); - Paint paint = new Paint(); - Point point = new Point(); - projection.toPixels(gp1, point); - paint.setColor(color); - paint.setStrokeWidth(0); - paint.setAlpha(20); - canvas.drawCircle(point.x, point.y, pradius, paint); - } - } - - /** - * Called when the activity is first created. - */ - @Override - public void onCreate(Bundle savedInstanceState) { - Log.i(TAG, "Starting MapViewer ============"); - super.onCreate(savedInstanceState); - setContentView(R.layout.map); - - mDbHelper = new AIMSICDDbAdapter(this); - mapView = (MapView) findViewById(R.id.mapView); - mapView.setBuiltInZoomControls(true); - mapView.displayZoomControls(true); - loadentries(); - } - - @Override - protected boolean isRouteDisplayed() { - return false; - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - menu.clear(); - menu.add(0, 1, 1, "Erase DB"); - menu.add(0, 3, 3, "About"); - menu.add(0, 4, 4, "Go to Log"); - menu.setGroupCheckable(1, true, false); - return super.onCreateOptionsMenu(menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle item selection - switch (item.getItemId()) { - case 1: - erasedb(); - return true; - case 3: - about(); - return true; - case 4: - quit(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - - private final void about() { - WebView webview = new WebView(this); - webview.loadUrl("http://secupwn.github.io/Android-IMSI-Catcher-Detector/"); - webview.canGoBack(); - setContentView(webview); - } - - private void loadentries() { - double dlat = 0.0; - double dlng = 0.0; - int net = 0; - int signal = 0; - int radius = 0; - GeoPoint p = null; - mapc = mapView.getController(); - int color = 0x000000; - mDbHelper.open(); - Cursor c = mDbHelper.getSignalData(); - if (c.getCount()>0) { - if (c.moveToFirst()) { - List<Overlay> listOfOverlays = mapView.getOverlays(); - do { - net = c.getInt(0); - dlat = Double.parseDouble(c.getString(1)); - dlng = Double.parseDouble(c.getString(2)); - signal = c.getInt(3); - if (signal == 0) { - signal = 20; - } - - if ((dlat != 0.0) || (dlng != 0.0)) { - p = new GeoPoint((int) (dlat * 1E6), (int) (dlng * 1E6)); - radius = signal * SIGNAL_SIZE_RATIO; - switch (net) { - case TelephonyManager.NETWORK_TYPE_UNKNOWN: - color = 0xF0F8FF; - break; - case TelephonyManager.NETWORK_TYPE_GPRS: - color = 0xA9A9A9; - break; - case TelephonyManager.NETWORK_TYPE_EDGE: - color = 0x87CEFA; - break; - case TelephonyManager.NETWORK_TYPE_UMTS: - color = 0x7CFC00; - break; - case TelephonyManager.NETWORK_TYPE_HSDPA: - color = 0xFF6347; - break; - case TelephonyManager.NETWORK_TYPE_HSUPA: - color = 0xFF00FF; - break; - case TelephonyManager.NETWORK_TYPE_HSPA: - color = 0x238E6B; - break; - case TelephonyManager.NETWORK_TYPE_CDMA: - color = 0x8A2BE2; - break; - case TelephonyManager.NETWORK_TYPE_EVDO_0: - color = 0xFF69B4; - break; - case TelephonyManager.NETWORK_TYPE_EVDO_A: - color = 0xFFFF00; - break; - case TelephonyManager.NETWORK_TYPE_1xRTT: - color = 0x7CFC00; - break; - default: - color = 0xF0F8FF; - break; - } - Log.i(TAG, " ==> Point:" + p.toString() + " radius: " + radius + " color: " + color + " signal:" + signal); - listOfOverlays.add(new MapOverlay(p, radius, color)); - } - - } while (c.moveToNext()); - c.close(); - mapc.setCenter(p); - } - } else { - Helpers.msgShort(this, "No tracked locations found to overlay on map."); - } - mapc.setZoom(14); - mapView.setSatellite(false); - mapView.invalidate(); - } - - private final void quit() { - this.finish(); - } - - private final void erasedb() { - mDbHelper.eraseLocationData(); - } -} - -