From 67c696503cb7a7b74004491366561d88a74ea351 Mon Sep 17 00:00:00 2001 From: xLaMbChOpSx Date: Thu, 10 Apr 2014 23:24:01 +1000 Subject: [PATCH] Gradle Update, Google Maps API v2 & Database Export Project changed to gradle build system as I have switched to Android Studio for my main IDE, this change is quite significant in terms of layout of the application source code and the abilities provided by gradle. Google Maps API v2 support added to enable use of new features and gain an API Key for the application as API v1 keys are no longer available, signal strength data is now correctly overlayed on the map as well. Minor tweaks are required but currently everything is functioning correctly, the next items to add could include markers to identify tracked CellID's and user options to modify map preferences. Database export corrected and changed to use the OpenCV library to produce CSV copies of the database tables. --- .gitignore | 62 ++-- .idea/libraries/opencsv_2_3.xml | 9 + Android.mk | 37 --- app/build.gradle | 27 ++ .../android-support-v13.jar.REMOVED.git-id | 0 app/libs/opencsv-2.3.jar | Bin 0 -> 14146 bytes .../src/main/AndroidManifest.xml | 22 +- .../java}/com/SecUpwN/AIMSICD/AIMSICD.java | 265 ++---------------- .../com/SecUpwN/AIMSICD/AIMSICDDbAdapter.java | 147 +++------- .../java/com/SecUpwN/AIMSICD/MapViewer.java | 181 ++++++++++++ .../com/SecUpwN/AIMSICD/OemCommands.java | 0 .../com/SecUpwN/AIMSICD/SettingsActivity.java | 0 .../main/java}/com/SecUpwN/AIMSICD/Utils.java | 0 .../AbstractAsyncSuCMDProcessor.java | 0 .../AIMSICD/cmdprocessor/CMDProcessor.java | 0 .../AIMSICD/cmdprocessor/ChildProcess.java | 0 .../AIMSICD/cmdprocessor/CommandResult.java | 0 .../SecUpwN/AIMSICD/cmdprocessor/Helpers.java | 0 .../SecUpwN/AIMSICD/cmdprocessor/Shell.java | 0 .../SystemPropertiesReflection.java | 0 .../receiver/BootCompletedReceiver.java | 0 .../AIMSICD/service/AimsicdService.java | 243 +++++++++++++++- .../main/res}/drawable-hdpi/flat_alarm.png | Bin .../src/main/res}/drawable-hdpi/flat_good.png | Bin .../src/main/res}/drawable-hdpi/flat_idle.png | Bin .../res}/drawable-hdpi/ic_action_computer.png | Bin .../drawable-hdpi/ic_action_import_export.png | Bin .../ic_action_location_found.png | Bin .../drawable-hdpi/ic_action_location_off.png | Bin .../main/res}/drawable-hdpi/ic_action_map.png | Bin .../drawable-hdpi/ic_action_network_cell.png | Bin .../ic_action_network_cell_not_tracked.png | Bin .../res}/drawable-hdpi/ic_action_remove.png | Bin .../res}/drawable-hdpi/ic_action_settings.png | Bin .../main/res}/drawable-hdpi/sense_alarm.png | Bin .../main/res}/drawable-hdpi/sense_good.png | Bin .../main/res}/drawable-hdpi/sense_idle.png | Bin .../main/res}/drawable-hdpi/track_cell.png | Bin .../main/res}/drawable-hdpi/untrack_cell.png | Bin .../drawable-hdpi/vp_background_texture.png | Bin .../main/res}/drawable-hdpi/white_alarm.png | Bin .../main/res}/drawable-hdpi/white_good.png | Bin .../main/res}/drawable-hdpi/white_idle.png | Bin .../main/res}/drawable-ldpi/flat_alarm.png | Bin .../src/main/res}/drawable-ldpi/flat_good.png | Bin .../src/main/res}/drawable-ldpi/flat_idle.png | Bin .../main/res}/drawable-ldpi/sense_alarm.png | Bin .../main/res}/drawable-ldpi/sense_good.png | Bin .../main/res}/drawable-ldpi/sense_idle.png | Bin .../main/res}/drawable-ldpi/white_alarm.png | Bin .../main/res}/drawable-ldpi/white_good.png | Bin .../main/res}/drawable-ldpi/white_idle.png | Bin .../main/res}/drawable-mdpi/flat_alarm.png | Bin .../src/main/res}/drawable-mdpi/flat_good.png | Bin .../src/main/res}/drawable-mdpi/flat_idle.png | Bin .../main/res}/drawable-mdpi/sense_alarm.png | Bin .../main/res}/drawable-mdpi/sense_good.png | Bin .../main/res}/drawable-mdpi/sense_idle.png | Bin .../drawable-mdpi/vp_background_texture.png | Bin .../main/res}/drawable-mdpi/white_alarm.png | Bin .../main/res}/drawable-mdpi/white_good.png | Bin .../main/res}/drawable-mdpi/white_idle.png | Bin .../main/res}/drawable/pager_background.xml | 0 .../src/main/res}/drawable/top_shadow.xml | 0 {res => app/src/main/res}/layout/main.xml | 0 app/src/main/res/layout/map.xml | 14 + {res => app/src/main/res}/layout/top.xml | 0 {res => app/src/main/res}/menu/main_menu.xml | 0 {res => app/src/main/res}/values/arrays.xml | 6 - {res => app/src/main/res}/values/colors.xml | 18 +- {res => app/src/main/res}/values/config.xml | 0 {res => app/src/main/res}/values/strings.xml | 1 + {res => app/src/main/res}/values/styles.xml | 6 + {res => app/src/main/res}/values/themes.xml | 0 {res => app/src/main/res}/xml/preferences.xml | 6 +- bin/AndroidManifest.xml | 27 -- .../com/jofrepalau/rawphone/BuildConfig.class | Bin 355 -> 0 bytes .../rawphone/MapViewer$MapOverlay.class | Bin 2369 -> 0 bytes .../com/jofrepalau/rawphone/MapViewer.class | Bin 6314 -> 0 bytes .../com/jofrepalau/rawphone/R$attr.class | Bin 355 -> 0 bytes .../com/jofrepalau/rawphone/R$drawable.class | Bin 445 -> 0 bytes .../com/jofrepalau/rawphone/R$id.class | Bin 719 -> 0 bytes .../com/jofrepalau/rawphone/R$layout.class | Bin 436 -> 0 bytes .../com/jofrepalau/rawphone/R$string.class | Bin 502 -> 0 bytes bin/classes/com/jofrepalau/rawphone/R.class | Bin 566 -> 0 bytes .../com/jofrepalau/rawphone/rawphone$1.class | Bin 4474 -> 0 bytes .../com/jofrepalau/rawphone/rawphone$2.class | Bin 2789 -> 0 bytes .../rawphone$MyLocationListener.class | Bin 1542 -> 0 bytes .../com/jofrepalau/rawphone/rawphone.class | Bin 22724 -> 0 bytes bin/jarlist.cache | 3 - build.gradle | 15 + gen/com/jofrepalau/rawphone/BuildConfig.java | 6 - gen/com/jofrepalau/rawphone/R.java | 41 --- gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 49896 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 164 +++++++++++ gradlew.bat | 90 ++++++ ...id-support-v7-appcompat.jar.REMOVED.git-id | 1 - project.properties | 14 - res/layout/map.xml | 139 --------- res/values/attrs.xml | 6 - settings.gradle | 1 + src/com/SecUpwN/AIMSICD/MapViewer.java | 216 -------------- 103 files changed, 892 insertions(+), 881 deletions(-) create mode 100644 .idea/libraries/opencsv_2_3.xml delete mode 100644 Android.mk create mode 100644 app/build.gradle rename {libs => app/libs}/android-support-v13.jar.REMOVED.git-id (100%) create mode 100644 app/libs/opencsv-2.3.jar rename AndroidManifest.xml => app/src/main/AndroidManifest.xml (79%) mode change 100755 => 100644 rename {src => app/src/main/java}/com/SecUpwN/AIMSICD/AIMSICD.java (50%) mode change 100755 => 100644 rename {src => app/src/main/java}/com/SecUpwN/AIMSICD/AIMSICDDbAdapter.java (64%) create mode 100644 app/src/main/java/com/SecUpwN/AIMSICD/MapViewer.java rename {src => app/src/main/java}/com/SecUpwN/AIMSICD/OemCommands.java (100%) rename {src => app/src/main/java}/com/SecUpwN/AIMSICD/SettingsActivity.java (100%) rename {src => app/src/main/java}/com/SecUpwN/AIMSICD/Utils.java (100%) rename {src => app/src/main/java}/com/SecUpwN/AIMSICD/cmdprocessor/AbstractAsyncSuCMDProcessor.java (100%) rename {src => app/src/main/java}/com/SecUpwN/AIMSICD/cmdprocessor/CMDProcessor.java (100%) rename {src => app/src/main/java}/com/SecUpwN/AIMSICD/cmdprocessor/ChildProcess.java (100%) rename {src => app/src/main/java}/com/SecUpwN/AIMSICD/cmdprocessor/CommandResult.java (100%) rename {src => app/src/main/java}/com/SecUpwN/AIMSICD/cmdprocessor/Helpers.java (100%) rename {src => app/src/main/java}/com/SecUpwN/AIMSICD/cmdprocessor/Shell.java (100%) rename {src => app/src/main/java}/com/SecUpwN/AIMSICD/cmdprocessor/SystemPropertiesReflection.java (100%) rename {src => app/src/main/java}/com/SecUpwN/AIMSICD/receiver/BootCompletedReceiver.java (100%) rename {src => app/src/main/java}/com/SecUpwN/AIMSICD/service/AimsicdService.java (67%) rename {res => app/src/main/res}/drawable-hdpi/flat_alarm.png (100%) rename {res => app/src/main/res}/drawable-hdpi/flat_good.png (100%) rename {res => app/src/main/res}/drawable-hdpi/flat_idle.png (100%) rename {res => app/src/main/res}/drawable-hdpi/ic_action_computer.png (100%) rename {res => app/src/main/res}/drawable-hdpi/ic_action_import_export.png (100%) rename {res => app/src/main/res}/drawable-hdpi/ic_action_location_found.png (100%) rename {res => app/src/main/res}/drawable-hdpi/ic_action_location_off.png (100%) rename {res => app/src/main/res}/drawable-hdpi/ic_action_map.png (100%) rename {res => app/src/main/res}/drawable-hdpi/ic_action_network_cell.png (100%) rename {res => app/src/main/res}/drawable-hdpi/ic_action_network_cell_not_tracked.png (100%) rename {res => app/src/main/res}/drawable-hdpi/ic_action_remove.png (100%) rename {res => app/src/main/res}/drawable-hdpi/ic_action_settings.png (100%) rename {res => app/src/main/res}/drawable-hdpi/sense_alarm.png (100%) rename {res => app/src/main/res}/drawable-hdpi/sense_good.png (100%) rename {res => app/src/main/res}/drawable-hdpi/sense_idle.png (100%) rename {res => app/src/main/res}/drawable-hdpi/track_cell.png (100%) rename {res => app/src/main/res}/drawable-hdpi/untrack_cell.png (100%) rename {res => app/src/main/res}/drawable-hdpi/vp_background_texture.png (100%) rename {res => app/src/main/res}/drawable-hdpi/white_alarm.png (100%) rename {res => app/src/main/res}/drawable-hdpi/white_good.png (100%) rename {res => app/src/main/res}/drawable-hdpi/white_idle.png (100%) rename {res => app/src/main/res}/drawable-ldpi/flat_alarm.png (100%) rename {res => app/src/main/res}/drawable-ldpi/flat_good.png (100%) rename {res => app/src/main/res}/drawable-ldpi/flat_idle.png (100%) rename {res => app/src/main/res}/drawable-ldpi/sense_alarm.png (100%) rename {res => app/src/main/res}/drawable-ldpi/sense_good.png (100%) rename {res => app/src/main/res}/drawable-ldpi/sense_idle.png (100%) rename {res => app/src/main/res}/drawable-ldpi/white_alarm.png (100%) rename {res => app/src/main/res}/drawable-ldpi/white_good.png (100%) rename {res => app/src/main/res}/drawable-ldpi/white_idle.png (100%) rename {res => app/src/main/res}/drawable-mdpi/flat_alarm.png (100%) rename {res => app/src/main/res}/drawable-mdpi/flat_good.png (100%) rename {res => app/src/main/res}/drawable-mdpi/flat_idle.png (100%) rename {res => app/src/main/res}/drawable-mdpi/sense_alarm.png (100%) rename {res => app/src/main/res}/drawable-mdpi/sense_good.png (100%) rename {res => app/src/main/res}/drawable-mdpi/sense_idle.png (100%) rename {res => app/src/main/res}/drawable-mdpi/vp_background_texture.png (100%) rename {res => app/src/main/res}/drawable-mdpi/white_alarm.png (100%) rename {res => app/src/main/res}/drawable-mdpi/white_good.png (100%) rename {res => app/src/main/res}/drawable-mdpi/white_idle.png (100%) rename {res => app/src/main/res}/drawable/pager_background.xml (100%) rename {res => app/src/main/res}/drawable/top_shadow.xml (100%) rename {res => app/src/main/res}/layout/main.xml (100%) mode change 100755 => 100644 create mode 100644 app/src/main/res/layout/map.xml rename {res => app/src/main/res}/layout/top.xml (100%) rename {res => app/src/main/res}/menu/main_menu.xml (100%) rename {res => app/src/main/res}/values/arrays.xml (66%) rename {res => app/src/main/res}/values/colors.xml (60%) rename {res => app/src/main/res}/values/config.xml (100%) rename {res => app/src/main/res}/values/strings.xml (98%) mode change 100755 => 100644 rename {res => app/src/main/res}/values/styles.xml (90%) rename {res => app/src/main/res}/values/themes.xml (100%) rename {res => app/src/main/res}/xml/preferences.xml (87%) delete mode 100755 bin/AndroidManifest.xml delete mode 100755 bin/classes/com/jofrepalau/rawphone/BuildConfig.class delete mode 100755 bin/classes/com/jofrepalau/rawphone/MapViewer$MapOverlay.class delete mode 100755 bin/classes/com/jofrepalau/rawphone/MapViewer.class delete mode 100755 bin/classes/com/jofrepalau/rawphone/R$attr.class delete mode 100755 bin/classes/com/jofrepalau/rawphone/R$drawable.class delete mode 100755 bin/classes/com/jofrepalau/rawphone/R$id.class delete mode 100755 bin/classes/com/jofrepalau/rawphone/R$layout.class delete mode 100755 bin/classes/com/jofrepalau/rawphone/R$string.class delete mode 100755 bin/classes/com/jofrepalau/rawphone/R.class delete mode 100755 bin/classes/com/jofrepalau/rawphone/rawphone$1.class delete mode 100755 bin/classes/com/jofrepalau/rawphone/rawphone$2.class delete mode 100755 bin/classes/com/jofrepalau/rawphone/rawphone$MyLocationListener.class delete mode 100755 bin/classes/com/jofrepalau/rawphone/rawphone.class delete mode 100755 bin/jarlist.cache create mode 100644 build.gradle delete mode 100755 gen/com/jofrepalau/rawphone/BuildConfig.java delete mode 100755 gen/com/jofrepalau/rawphone/R.java create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat delete mode 100644 libs/android-support-v7-appcompat.jar.REMOVED.git-id delete mode 100755 project.properties delete mode 100755 res/layout/map.xml delete mode 100644 res/values/attrs.xml create mode 100644 settings.gradle delete mode 100755 src/com/SecUpwN/AIMSICD/MapViewer.java diff --git a/.gitignore b/.gitignore index 8e80165ed..db2993cb0 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 000000000..f303e9500 --- /dev/null +++ b/.idea/libraries/opencsv_2_3.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/Android.mk b/Android.mk deleted file mode 100644 index ba08f21de..000000000 --- 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 000000000..285a76e13 --- /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.REMOVED.git-id b/app/libs/android-support-v13.jar.REMOVED.git-id similarity index 100% rename from libs/android-support-v13.jar.REMOVED.git-id rename to app/libs/android-support-v13.jar.REMOVED.git-id diff --git a/app/libs/opencsv-2.3.jar b/app/libs/opencsv-2.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..32b00f927594a1854b371fe5bdeacc30f8aa75f8 GIT binary patch literal 14146 zcmb7r1yo&GvNjM1?(Xhx!Cf!z?(Xgqg1fs0cXubay95dD5C|71*iXNno}S6;nSTGi z>)KjXU+uF`ovPYZyA-6~fy01+K!JcDmB#Rc{L6p_0SA#4QxT#E$cZz)jDdhC{DTw< z1o4fuauJR%{ay=+Hdww;! zc~>l|C(O#862ld5d{>cUPKR3u%m<8AWZ3fB+ARv_gg-b+PO~KH~ z+0==_*v8P=xk>F&8TTvtOSM}Ox{)WA_OhrFeHd=wCn{I%xwHW>U-R)>*!j$FKmsXxlCjVE z4s(9^+-+R7R`dw`ywV5J`9jEdG>C#Y&WlCB8*S}Mrfbe#U@!RLQU??vl z1OXj^8n$<05o4{3bZvXH^U6lWCnyZ zYZWzpL%B5C6#>|g#11M@(&!^E26mSGkh!r-2q*3jB){POlf5HR8-8vXmD%uR&P*Qg zDV2#j6E+sNftUJEEnZ>aK##_W1QSy5RobEZ{rFknvQNNmY^+YsXMz}13p$i&W(6p= z7#Ru_$Zu%vhw$^Y4A7F)s(5nLFJK4PNlhK8G|ow; zGafZU{skH9`2A^@9n%gX{*kqCI`?vBOLiZWjiT zlsD=UNgYVXpJ#*zh?w#}EY#GP+^_ePmXAGfu_A;KWhVhkrDE*0GQI&n%Q=CzGUL{; zDl;h07~C4O>V;uA>TRrREj@Idw>r%B6VCIA+W)fuMMS?atpu8Ih?Rzas2_rWf6Dv? z4G}d>1qiqe>u4u}4@? z>l|;92oMQP!YD1iZ;0%*aH2`egRSt0bbp~gN7bJk`6oU;VK`-M zwou&3)WvyJt67^xj>eqJDB0tf>vld8NW5|Fr5(=Vzc!}k6EudJh((dsCpd8o!2lTWZh`(8|!l#%dxP_uFV?z^Rz9PVu2 zjf@g(Y9pUM)wIeo8&7Ng*@LFG{kB#~8~ik~+*ZErDdn?gr@|s*{L8V(E$AF+=rtxF z7DZl+kc`hwl91&2lK6=zL$a77U}$<~%yNVb^d|2h=OE@FH4^DZ?lnI4khG}+tv?={ zw{W*{nke=zIh>#Ri7@{w@<=kx03a8Ij0k<3^HY>c>@EosVJMNFCWA0HNOX$O*YH8H zt9=DzC&^X+#96V{rP&LRF`3AYu=YD&T+_*Zt&tXy!WaC~ye|ki!g`*N(Zn^*kg`9P zuZ`WL@E)PQ6m6An3FP{p%T8N(?j9b6`1rf6)`T6vdx&&@qAw-p7rf#|^MtLxc1xav z7^Q@V%FmOilDR^D%RcT}MkYr|pl>}s3?$AG$=w8Z9N_PT7%qd_V9#7_)Q^X|Gv zu!yz-uBdD5&k<0SyDsnoi4M`YX;=x@6|NLlGd0 zrDgI^rlw1DLf53#t*RA5OFOfD!X_!@H13_u+Ou(`k`(p zS06!QBLo5FMw1~1d#hiwqAC$4a^0h{Qqy5>M;?d@ejQl-~OSdFJorj?X$0mRDaxUq4k7 z%=r<+Zu^bEy}tV+ocP^~+ho?S=zxQOxW9#6f8)iKObt!`@Z!NL+UmHfXfJXsqkAlt zBI8I(rS!ISfcIg8-a>SRxpmt{{bE#7p(eTSh)1O;boU1-UxRq>w_s})$wki+By`91 zcOnG@F{QtGCm>lU`L39M_U&$%cJJ<*et7=;ITi%YcsP^^#pb*r{dyawxO2~!Y}c6Z zo8;vlDmJ3e1<7EddKs@Xzk6a*ng-9X|rR@X$j+A?oK9nG#Y zwmuZ+k~G+Q8U1q^0S7EFd~7I0k)<9Hp3gc-9DI+`%X7%X3_1)Q)LoG=8GhA~wMcy@ zy-&`^_bUraa3wM$TC`8`6I+fXUVnk%)z8|jaFRz&&9d%=&de(PF6m| z>^&(TnB&<1OIT>Lzq}O;hOS z*yEb7CvF?{vc7(G4vAt1-P~)4Qf!n_k{>co;J39qaIH`xF|=#h!}3*u-MfA=f&Q3TZifR za^A+A=8Q~UD=m_>vr)b5$VYg+243^MhNNY?h-9yRX2$DTOxNHIFGODjglg_CA4rZc zJ|*3=cq!}HmhT=|&uo|;>oM!aH3|;%anXu}xC{|sQZldz;P&9^6-b+Tw*{iPi;Bd; zK#tv5%P#s{|9KUbLap+RieA-{1{eucb`6PO=>2?V1&OjbuH~6@lWK7mRWEAIPG6S3 z?7%L^_Xl=gQ~<8oq3dP+UR%UO4t1c)>!MRD;0Ry+Nx`pYuwqq-2Mgb|8ZmC^EtSV1 zZV_*G*ibrDIH7mHOOSQN7qlevLbZ?2$g;?4G}nF9C#uyM3|9FL+1f2m|E{O6 z2L351_nq`3rJu$0*`$5qO|K_hY?Qk&LZ`HI_|A`Q-;OWtqa~0s1cVplqy1p?VQ7wL zX$Mc<4wloSKt#Nqxrwb=4y?J4f#yt2u^-PYE{=eVtv>2=S%#x!_|IWeLYJI!b{a+@ zFCwMhl$)Q4(E?oHLZc94kmH!$q8Kh;^WALfoiF5-%uVM;WI2RJ+ixA#xmHDTF6p@~ zF7QYiualA9=2qXRd!rD+HI!A^R25%&CW0ahL-TF;BBCb`C7CGxVx81Ei!9v>#J?M;z-h9QiT5BNlkk6Qpwyi#UH&jo(Q3!;sH$kMvI%CZCQ|cr zAi-*C7Wi{{_-PcxtcK1aVmc1P!R`J~OAzQu#b9GV+{63c z9+6iFgoryi3P9?YZIN^DyNylVjco7D@z1ZiZSM`BtJ{!7BLEqIVw^{h$@W^PcBp;` zWG{Gtlgw=-=T-nNWIETt9#f)u8t?cX7e~%8tQ}r&q>LU4kfnp?WQdk?s6&0-1HOj! zF(ho4VWKZnX2WQGO=iRJR+r)jv*+jjY=`Z4J|lai6od`m$pYms?M8y-(^`RLVbh{M z3_Gx($^}3R^+x)o%%hX2A&y&${54XrpwdsP4%|h!PGd(YO<6`IEO^KYiOGmIAt`0Mj*tt%@y5};aaW3EFunp~TMJ4mv#c6mW> z#C%EW)7fJR#Pso3(0?=SZZw2 z{zNKs0ERhfRoQRRLs&$g?!YG-qj{CX2Hx+T9yD^cR#!5K(HQ*CVvgopr z#1+(hLb{b>T4~&xa!RAumzX$*79Ak&6q#}~?F0pGn6;%SRtXlma*IDFipy53_OC%f z-3UK7(3BOqUhYUCP>puQ+oY64sh|xN(25`4AHe-QZ|BkOAh+q;l`)c8we-;KJT?#p zVr~{u(zXV{FH;#(6BNpoIVjeCEe#5-mFaWhr89&`OqNkIYzk{YncB8KA%yNu7ens>)#5bAnSW@8p$xSCHYp}nSC zBZJ9LodCPNXbcsFyrWO{gucnyNV;<2yRjAS85Ze{3@@uLtr(Fnk(JJk1MzYaa90ww zI>kuts%ePgP?(PzVZ_VO3y<2_@;cgfyKft+<$}RGWbQ~k%CTTW%X5L2O|Z^jHxBGX zieNG{T8G<5k$|`)E06AI(egI<2b+iVFapiAr|?Q@!F4iEjCE5ygX%X9?2&i2di*VI z3{(P&vNzO_JZ_jM#h9yQ)MXzF93Ys+Ys@nh6+$ERYhB!p8JRwY^b^`A z=n2CU^7$www=2}dg%HU%s#Sa$@J{9NUCtI&P$U)aoQr@a6ywU}xb80E8(?&wTF3z1 z2%8Erlml{MF!L=-@p|9Hr$mKM16VZ$z048iEHrx1`{`fV2o??V`p_l;r%ta_SuYhx z-r|aUeb_My2pm=~fW-{PNz)+Zn&0O@(cjJjf%UP*?^a2s$y{6gkALDWDYS5$XoQhaQ3za+3P zbF{m}mQIkpR|3f+DaX;ITGcZ``t@34iyIHK#z;+`FD5F#ZN0mg+~Ew)tr<=TCgG0S zv(W~&kxuj2!bvC88LI-IVNQLjfqi|2*%m6=IBI;$RPK@8U`ujQs*Ba_nzHhf_n^N0 zL)vgB??GyVUPwl{A91*cltt^PwY_dhSc!dnyHpTe-#86Qzqk={hn>L*Ja>5XXQWe` z@vvQ#O;jpTJp-O-?hS7bKbU-DEQH4gB^k=^tlzCIa~>e-eX?p#SUL09JimFr=krhD zJ=Z=kNEOK)+UG2p#iAP^0wr|E@~;DthxkORv7DaFh1sbfRfen*ti^vK8x+LFv9%`x z^K`B$J1d!GFh!Nj92>lg8z#`K)i>2#tNiSF4|A`krQ>-|nK^5%)&71c7%HnpT(mzo z*rJx^Z12sC-1oiyyF6t7<;B#^ zAA}&N*UF8`E>QAZkLio9mK!FcF-!zix0htWJQl#I>Lq?-0epLV73svt2}0OJdFbp1 zO~-v$Yn=#&ZLSnwNnPhpe0>T_!YfMOyLo9JNBh)ll6cnFFe_>KQS{DHPuFvjDLaSs z>nCZdk>9^|)*7|Nun{BSw3g43@#bPX(H2%v`WMENZ8P+eUO@i)irhluzRP{fL>eQ4 zfUy1FS47#=$<5N(^!K!6vbv{-jw<@=ItQb32_vIy<_CCaY6X}xlk^x2crsYY^Y zO&b)g1dvGNlmQ4aPzX#N4IKrY{Co|a1i0Xc{HmQ0l8BuUzhl3jn4dMm z4?FM7Cbvo+y4w!3ynj5bH>^AB=XgEL&V#t^GU9kS=oo1Q2JGIX33U=sI`AQedy&QO z5Ysb{U%wBBt1)5k#7IHpf3_WVNMO^-&KF6R--nb7pyc)~ZU z&717JYS_0`zn{S;piSQD9*uu;=N<2aw2$~s0}3KcWh@+AXumo>uZMw2qu`Y9ftA(O-Bb!3Do8KHxrlIxx{BS~KW^XmQP@6o zesY)RMQ^!<@p!_Q0AG;gHk&)1FGdGYI*l&G#j`bl;lKE!4rL)vY{Wsuq^;=m;jmY2 z!~o1c7#0=>7N}9=WSo=JO3;&fJ?Ap>n8}dKgiix}^aOdB2-(f6I6aAg5dK3u$jz*5 z4`M9tLz06i2Nw&_tX9z9FH*O861(uNV+%=;mbXencIO`_EqE=-z`1pA3JoX0rD2XsSO zzzQ>`53f1$fYL9bnE|r%R_>m10#x&Mk$pslIe<*$H8`5XEf=pKUv8SBTKO}j3SvMDfe00*hqkRDU&0$3FRU6Uqtd@WR;9g~7S>Q38 zYPg^;9R?O29vs~a;iHTAu;!D(js#fdcnZVGDJ*$no{ieD@_k(l$8K%R=dBVH0prMz z)w`BY!lC}u`0CqXG5R~$_yt(=j!AF#1LQP-md% z#DwIN+VGDHUff%6e7`S*)b~DPpIx4?8KJ(jIQ3d^V`pjAPEhIY8F($ph&4DDW!
hi4iPC@6 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 + android:versionName="0.1.6" + android:versionCode="6"> - + @@ -15,6 +15,8 @@ + + + + + + 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 71461671c..762142a6b --- 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 void onCreate(Bundle savedInstanceState) { 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 void onServiceDisconnected(ComponentName arg0) { @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 @@ private void updateUI() { 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 boolean onPrepareOptionsMenu(Menu menu) { 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 boolean onPrepareOptionsMenu(Menu menu) { 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 @@ private void showmap() { } 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 c104312da..8e6a57283 100644 --- a/src/com/SecUpwN/AIMSICD/AIMSICDDbAdapter.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/AIMSICDDbAdapter.java @@ -10,9 +10,14 @@ 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 AIMSICDDbAdapter open() throws SQLException { return this; } + public AIMSICDDbAdapter openRead() throws SQLException { + mDb = mDbHelper.getReadableDatabase(); + return this; + } + public void close() { mDbHelper.close(); } @@ -119,14 +127,19 @@ public void insertSignal(int lac, int cellID, * 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 void exportDB () { 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 void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } - /** - * 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 = " + + + + + 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 8222060e4..0611f9f44 100644 --- a/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -12,10 +12,4 @@ "3" - - @drawable/flat_good - @drawable/sense_good - @drawable/white_good - - 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 64b75fc8f..585fb4de7 100644 --- a/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -20,7 +20,21 @@ #ffccffff #44ccffff #ff0d0d0d - #00FF00 + #ff00FF00 #ff33B5E5 + + + #fff0f8ff + #ffa9a9a9 + #ff87cefa + #ff7cfc00 + #ffff6347 + #ffff00ff + #ff238e6b + #ff8a2be2 + #ffff69b4 + #ffffff00 + #ff7cfc00 + #fff0f8ff - + 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 79d7eb6d0..75fb0856a --- a/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,6 +3,7 @@ AIMSICD Android IMSI-Catcher Detector + AIMSICD Map Viewer Signal strength Quit OK 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 17bab446b..2f0fe01d9 100644 --- a/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -15,7 +15,13 @@ --> + + + + 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 cc498d122..705a0ebf0 100644 --- a/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -1,7 +1,6 @@ - + + android:entryValues="@array/pref_ui_icons_values"/> diff --git a/bin/AndroidManifest.xml b/bin/AndroidManifest.xml deleted file mode 100755 index 250083b33..000000000 --- a/bin/AndroidManifest.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ 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 GIT binary patch literal 0 HcmV?d00001 literal 355 zcma)%yH3ME5Jm6Ab_~WL=Fw0iB%r{87DSQoXe=lI7j$c9ldQGbjT{@kiwcQ?58$H^ zvlay<&7HZUd7SzB{`drNhTRZ7!hUHNX=SIiTna7Pv=*<+xivB!wMtLM)=bqbgilB+ z@ghjWA6vbSpi+K!pBGc!x(h!5`a+jNoAq zV;vD;m?smHh-2mWY$QpNffCO9Yn4YzVogZB> BO)3BY 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 GIT binary patch literal 0 HcmV?d00001 literal 2369 zcma)7S$ES`5dN;?SdJn{>SlAwVjzI+gqS4+ut_KwOic}>WFtv8#lF}IvLs|VOEnUmC!E?QyhwAUxwCvT^UXj1{`EJ2%h;6QVHnAp#n_7Z z%;uJ=tL2!ju2}`s;IW6QHK*}4ZV!?4c$M3_x*@^Ka8lgJn`U0;G1bV~rk0BpRjU-M zDKWI=txF82Gp!Wwb92hn3@5?Ro;7vTW?*RspRMM!a)|_|pp}L$GMsTuyfHem;k&6B znls7pAp92khewr8N9Gv3Ni)Ygz|gHgMyHH61QaNEm+}io=ER>~1?}(&sb7HvzmS3o zI^bvM%4i0ER4y)adq!Q>IYS_0W>tMowKZ|Bee{Y{8AcBe{IxPr&fXjqieWOGsh1#c zt5!kFmSRcOSXE1jmU-3+n^+V{oWdCirx{Ki+6D@SaF!fXsaHw=Q1dd*BO)REhK8v{ zq9BT4h9i0IOxflN&pMiEFq{iVS~@wUiic#3;f83HIC%29Mks?175DjECi4TN98q8zibfe3IYabF^q3Z0$ zLw-DDkV97eECQR9F@+}*KB8f&w`sCSSpd6kn&;`%1 zb#XEjnC@vq#tW1r5T*7vAXH@r1rEwoBf%g^&CUvLIuTB#QcW@tkW#-=Pi0+JA%1Jr zsu2!@MBE^D2C0_{YR)8qEz;*&GmuZ~wfP=;o9U(vVTm9Z1{xi^6&Fjy5|wSPQrk1~ zv{|;ZJf(?jkM0lms2C&$C2bhoPU>o@#EAxE`d?dS2oa~Z(Z2M;Bgmd4kDz+@O+*iL zcZ>Dlp2-l7kp59R*{(h?7#-e0S9BNeL`Qbe6Ycfxpf7rS2Lpe&cLwR%N0xyIEsiMN z9YzmE5Tq7;kG@99Gg-kg9H+OCL=+xZ68=SOgKk7#@_Yg(tNz(7(i2f`MYqwljZg*W zNE+CDg%J;a8TSS*?_q2qFusfH^u4EoLR)8FBoE1b!zT6(BvSrn(Q( z7FMxFKv4Qv$5|JyEo|Tmf~z0Dk{v(6x`YhA!q)^;j(F}Hyd+?YWcgcsM}T_pJ>B=< Q2l5CiG4(QS%b$S%08d9~F#rGn 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 GIT binary patch literal 0 HcmV?d00001 literal 6314 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 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 GIT binary patch literal 0 HcmV?d00001 literal 719 zcmaLU%Wl&^6b9h`#IfDFDZM}ofzkpk(3Z9?Y(Z=yAytY%Dk%GjJtPy^9?O?hV#71B zLSn%K^r5PrnRGE5*c{L2-*Yr)e0}rhFMxMA3(+C$Bs!00`g00#8o-fg^Vu` zR2rg7Sf7cxh%-@4;xFTwOd3L%i*lso6@e}Ys{>usjVPLt$XeCtr$$osy2y72%2e~mNp7ZG_4m{T14$ap^4hOvAcXich1K$9l+}! zTIXiXV+J2op_-2b@9=2E(Lkp%f`|Pc_VA3bHdKZD+~#9heG}tM5;liA5!pyo%J}YO zx0$M%usi(Ut-U8iUv*n0@{=;1g3B{=g@oQkQOIhLiMp0`h!aBppM3}&mEtXr;ql+< zp${JcD`a)B#9nqBu~!_M?^hk)W3M@0XKy&(WZ!rEfW75-oBh!7BX-~MW7ZSLJM5>9 zclqRGZkp?Jo*=dc{Nvwv@ym{Mz|{;0KG;jHJ-hbt3a@Q`XzLM<`5D>mZ*YqKEp&2s An*aa+ 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 GIT binary patch literal 0 HcmV?d00001 literal 436 zcmah_Jxc>Y5Pg$NavBp8<7aFXu}}*SZ55k<5C{rU($Af%xv;kz?nANiH(3c5{s4cJ zID4_M5t}#rX6L>6`22eR0C0+J9~HuGWRqZO?^88n%|(#%(`;gm3P$^ypKX!*s1iC; ze&j&2c?hn`IlGInnD z(XpGK&>R?}(!S;_Q<;w~Lhny6kvKQ9-ai1GV%x3yYUILZ zXpQ+34->9N;q`DVBEwMUX?mylL@=-}L!+ZrZn!c7o)p4*vB4OeSR{!q0SxwIAx*ir zNKD>BjZ9oJ{i1d*l{6O&*1_R`o_6%T@L*xlM-wfEW=|?{RZNB=yXC`#dbWEy;>mz# zvgF@G+r%Wsm=(M1-COIfA7V)4x81$-mDF{MQsM7m3S=$Y1QZ|X=&+;UA@CW## z#7U~h$ih7DeC#kg`}O_t3E%=ffdavD!ny5*Pev`IFB99ym&Gg$lsytC5t^QSmbNd0 zseM23loJywS31z~HKBNNIwq6`p{r^rVx^8UDul*R2kI`FPn3C-6JHTp!_blbSQ?%B zzrj*G(-EOP%pKs8PVc zDcv$#!JeJ@K)L^p>Kg|NsIg7cV71D&p6N1kEz7TGwt*(I&#g8%zX=Ol%pK+~)8ezw L>@W|Qhp>JCWP6CB 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 GIT binary patch literal 0 HcmV?d00001 literal 4474 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 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 GIT binary patch literal 0 HcmV?d00001 literal 22724 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

SO|R=h0C3lo(W8}jq=5-k5f?o@{3KngfS0&;N< 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 TY#i~ZKe63<%2gz^UXuR>N|*ux diff --git a/bin/jarlist.cache b/bin/jarlist.cache deleted file mode 100755 index 1b5ec3f9c..000000000 --- a/bin/jarlist.cache +++ /dev/null @@ -1,3 +0,0 @@ -# cache for current jar dependecy. DO NOT EDIT. -# format is -# Encoding is UTF-8 diff --git a/build.gradle b/build.gradle new file mode 100644 index 000000000..0ffc73725 --- /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 698913aa8..000000000 --- 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 d5b5f0347..000000000 --- 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 GIT binary patch literal 49896 zcmagFb986H(k`5d^NVfUwr$(C?M#x1ZQHiZiEVpg+jrjgoQrerx!>1o_ul)D>ebz~ zs=Mmxr&>W81QY-S1PKWQ%N-;H^tS;2*XwVA`dej1RRn1z<;3VgfE4~kaG`A%QSPsR z#ovnZe+tS9%1MfeDyz`RirvdjPRK~p(#^q2(^5@O&NM19EHdvN-A&StN>0g6QA^VN z0Gx%Gq#PD$QMRFzmK+utjS^Y1F0e8&u&^=w5K<;4Rz|i3A=o|IKLY+g`iK6vfr9?+ z-`>gmU&i?FGSL5&F?TXFu`&Js6h;15QFkXp2M1H9|Eq~bpov-GU(uz%mH0n55wUl- zv#~ccAz`F5wlQ>e_KlJS3@{)B?^v*EQM=IxLa&76^y51a((wq|2-`qON>+4dLc{Oo z51}}o^Zen(oAjxDK7b++9_Yg`67p$bPo3~BCpGM7uAWmvIhWc5Gi+gQZ|Pwa-Gll@<1xmcPy z|NZmu6m)g5Ftu~BG&Xdxclw7Cij{xbBMBn-LMII#Slp`AElb&2^Hw+w>(3crLH!;I zN+Vk$D+wP1#^!MDCiad@vM>H#6+`Ct#~6VHL4lzmy;lSdk>`z6)=>Wh15Q2)dQtGqvn0vJU@+(B5{MUc*qs4!T+V=q=wy)<6$~ z!G>e_4dN@lGeF_$q9`Ju6Ncb*x?O7=l{anm7Eahuj_6lA{*#Gv*TaJclevPVbbVYu z(NY?5q+xxbO6%g1xF0r@Ix8fJ~u)VRUp`S%&rN$&e!Od`~s+64J z5*)*WSi*i{k%JjMSIN#X;jC{HG$-^iX+5f5BGOIHWAl*%15Z#!xntpk($-EGKCzKa zT7{siZ9;4TICsWQ$pu&wKZQTCvpI$Xvzwxoi+XkkpeE&&kFb!B?h2hi%^YlXt|-@5 zHJ~%AN!g_^tmn1?HSm^|gCE#!GRtK2(L{9pL#hp0xh zME}|DB>(5)`iE7CM)&_+S}-Bslc#@B5W4_+k4Cp$l>iVyg$KP>CN?SVGZ(&02>iZK zB<^HP$g$Lq*L$BWd?2(F?-MUbNWTJVQdW7$#8a|k_30#vHAD1Z{c#p;bETk0VnU5A zBgLe2HFJ3032$G<`m*OB!KM$*sdM20jm)It5OSru@tXpK5LT>#8)N!*skNu1$TpIw zufjjdp#lyH5bZ%|Iuo|iu9vG1HrIVWLH>278xo>aVBkPN3V$~!=KnlXQ4eDqS7%E% zQ!z^$Q$b^6Q)g#cLpwur(|<0gWHo6A6jc;n`t(V9T;LzTAU{IAu*uEQ%Ort1k+Kn+f_N`9|bxYC+~Z1 zCC1UCWv*Orx$_@ydv9mIe(liLfOr7mhbV@tKw{6)q^1DH1nmvZ0cj215R<~&I<4S| zgnr;9Cdjqpz#o8i0CQjtl`}{c*P)aSdH|abxGdrR)-3z+02-eX(k*B)Uqv6~^nh** z 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 \(.*\)$'` + 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 000000000..8a0b282aa --- /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.REMOVED.git-id b/libs/android-support-v7-appcompat.jar.REMOVED.git-id deleted file mode 100644 index 398da5100..000000000 --- a/libs/android-support-v7-appcompat.jar.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -045c79330c542825344ce10ab654ba0b0fcc2a0a \ No newline at end of file diff --git a/project.properties b/project.properties deleted file mode 100755 index cc924e7a4..000000000 --- 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 f97f17213..000000000 --- a/res/layout/map.xml +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/res/values/attrs.xml b/res/values/attrs.xml deleted file mode 100644 index 905c62ae7..000000000 --- a/res/values/attrs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 000000000..e7b4def49 --- /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 4f07886c4..000000000 --- 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 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(); - } -} - -