From c165e3c949b75cdf19166d075f8f44f5ee82ce5e Mon Sep 17 00:00:00 2001 From: AndrewQuijano Date: Mon, 28 Jul 2025 11:08:34 -0400 Subject: [PATCH] Refactor the packaging and use try/with --- .gitattributes | 9 + .github/workflows/deploy_jar.yml | 4 +- .github/workflows/parallel_tests.yml | 5 + REU2017/app/src/main/AndroidManifest.xml | 8 +- .../localization}/ClientThread.java | 60 +++---- .../localization}/KeyMaster.java | 5 +- .../localization}/background.java | 26 ++- .../sensors/WifiReceiver.java | 7 +- .../ui/AddMapActivity.java | 42 ++--- .../ui/LocalizeActivity.java | 21 +-- .../ui/MainActivity.java | 161 ++++++------------ .../ui/TrainActivity.java | 16 +- .../ui/test_connection.java | 27 +++ .../app/src/main/java/ui/test_connection.java | 26 --- .../app/src/main/res/layout/activity_main.xml | 2 +- .../src/main/res/layout/localize_activity.xml | 4 +- .../src/main/res/layout/train_activity.xml | 4 +- REU2017/build.gradle | 2 +- REUServer/build.gradle | 21 +-- REUServer/create_bundle.sh | 3 +- REUServer/settings.gradle | 2 +- 21 files changed, 181 insertions(+), 274 deletions(-) create mode 100644 .gitattributes rename REU2017/app/src/main/java/{Localization => edu/fiu/adwise/fingerprint_localization/localization}/ClientThread.java (90%) rename REU2017/app/src/main/java/{Localization => edu/fiu/adwise/fingerprint_localization/localization}/KeyMaster.java (96%) rename REU2017/app/src/main/java/{Localization => edu/fiu/adwise/fingerprint_localization/localization}/background.java (95%) rename REU2017/app/src/main/java/{ => edu/fiu/adwise/fingerprint_localization}/sensors/WifiReceiver.java (95%) rename REU2017/app/src/main/java/{ => edu/fiu/adwise/fingerprint_localization}/ui/AddMapActivity.java (89%) rename REU2017/app/src/main/java/{ => edu/fiu/adwise/fingerprint_localization}/ui/LocalizeActivity.java (90%) rename REU2017/app/src/main/java/{ => edu/fiu/adwise/fingerprint_localization}/ui/MainActivity.java (70%) rename REU2017/app/src/main/java/{ => edu/fiu/adwise/fingerprint_localization}/ui/TrainActivity.java (94%) create mode 100644 REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/ui/test_connection.java delete mode 100644 REU2017/app/src/main/java/ui/test_connection.java diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..af34251 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,9 @@ +# Set the default line endings for all text files to LF +* text=auto + +# Always checkout with LF +*.sh text eol=lf +gradlew text eol=lf + +# Always checkout with CRLF +*.bat text eol=crlf \ No newline at end of file diff --git a/.github/workflows/deploy_jar.yml b/.github/workflows/deploy_jar.yml index 0b6d891..e875158 100644 --- a/.github/workflows/deploy_jar.yml +++ b/.github/workflows/deploy_jar.yml @@ -29,6 +29,7 @@ jobs: increment: ${{ env.increment }} upload_release: + if: github.repository == 'adwise-fiu/Secure_Indoor_Localization' needs: [ create_release ] runs-on: ubuntu-latest steps: @@ -71,10 +72,9 @@ jobs: SIGNING_KEY: ${{ secrets.SIGNING_KEY }} VERSION: ${{ env.RELEASE_VERSION }} - # You want to use the 'ciphercraft-.jar' for your uses - name: Release the JAR file uses: softprops/action-gh-release@v2 with: tag_name: ${{ needs.create_release.outputs.v-version }} - files: REUServer/build/libs/fingerprint_localization*.jar + files: REUServer/build/libs/*.jar token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/parallel_tests.yml b/.github/workflows/parallel_tests.yml index 7562382..2ae29fb 100644 --- a/.github/workflows/parallel_tests.yml +++ b/.github/workflows/parallel_tests.yml @@ -53,6 +53,11 @@ jobs: chmod +x gradlew ./gradlew test + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v5 + with: + token: ${{ secrets.CODECOV_TOKEN }} + test-android: runs-on: ubuntu-latest steps: diff --git a/REU2017/app/src/main/AndroidManifest.xml b/REU2017/app/src/main/AndroidManifest.xml index ae66981..739df0b 100644 --- a/REU2017/app/src/main/AndroidManifest.xml +++ b/REU2017/app/src/main/AndroidManifest.xml @@ -37,7 +37,7 @@ @@ -45,14 +45,14 @@ - - @@ -60,7 +60,7 @@ diff --git a/REU2017/app/src/main/java/Localization/ClientThread.java b/REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/localization/ClientThread.java similarity index 90% rename from REU2017/app/src/main/java/Localization/ClientThread.java rename to REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/localization/ClientThread.java index 02db5b0..21562f8 100644 --- a/REU2017/app/src/main/java/Localization/ClientThread.java +++ b/REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/localization/ClientThread.java @@ -1,4 +1,4 @@ -package Localization; +package edu.fiu.adwise.fingerprint_localization.localization; import android.util.Log; @@ -14,12 +14,12 @@ import edu.fiu.adwise.fingerprint_localization.structs.LocalizationResult; import edu.fiu.adwise.fingerprint_localization.structs.SendTrainingData; import edu.fiu.adwise.homomorphic_encryption.misc.HomomorphicException; -import ui.MainActivity; -import ui.TrainActivity; +import edu.fiu.adwise.fingerprint_localization.ui.MainActivity; +import edu.fiu.adwise.fingerprint_localization.ui.TrainActivity; -import static ui.MainActivity.SQLDatabase; -import static ui.MainActivity.portNumber; +import static edu.fiu.adwise.fingerprint_localization.ui.MainActivity.SQLDatabase; +import static edu.fiu.adwise.fingerprint_localization.ui.MainActivity.portNumber; import edu.fiu.adwise.fingerprint_localization.distance_computation.LOCALIZATION_SCHEME; import edu.fiu.adwise.homomorphic_encryption.dgk.DGKOperations; @@ -30,22 +30,14 @@ import edu.fiu.adwise.homomorphic_encryption.paillier.PaillierPublicKey; import edu.fiu.adwise.homomorphic_encryption.socialistmillionaire.bob; -public class ClientThread implements Runnable -{ +public class ClientThread implements Runnable { private final static String TAG = "CLIENT_THREAD"; - - private ObjectOutputStream toServer = null; - private ObjectInputStream fromServer = null; - //Pass Data back to class by reference... private background findMe; private TrainActivity trainMe; private background getColumns; - - //Data Objects - private SendTrainingData sendTraining; //Training Data - private SendLocalizationData transmission; //For Encrypted Paillier/DGK Transmission - + private SendTrainingData sendTraining; + private SendLocalizationData transmission; // Have all Keys in case comparison is needed!! private final DGKPublicKey pubKey = KeyMaster.DGKpk; private final DGKPrivateKey privKey = KeyMaster.DGKsk; @@ -53,8 +45,6 @@ public class ClientThread implements Runnable private final PaillierPrivateKey sk = KeyMaster.sk; private final LOCALIZATION_SCHEME LOCALIZATIONSCHEME; - private Socket clientSocket; - // Get all currently trained points public ClientThread(TrainActivity trainActivity) { this.LOCALIZATIONSCHEME = LOCALIZATION_SCHEME.from_int(-3); @@ -66,8 +56,7 @@ public ClientThread(TrainActivity trainActivity) { Purpose: Force mySQL Database to process data from training data. */ - public ClientThread() - { + public ClientThread() { this.LOCALIZATIONSCHEME = LOCALIZATION_SCHEME.from_int(-2); } @@ -93,12 +82,11 @@ public ClientThread (SendTrainingData in) { public void run () { Object in; - try - { - clientSocket = new Socket(SQLDatabase, portNumber); - // Prepare I/O Stream - this.toServer = new ObjectOutputStream(clientSocket.getOutputStream()); - this.fromServer = new ObjectInputStream(clientSocket.getInputStream()); + try ( + Socket clientSocket = new Socket(SQLDatabase, portNumber); + ObjectOutputStream toServer = new ObjectOutputStream(clientSocket.getOutputStream()); + ObjectInputStream fromServer = new ObjectInputStream(clientSocket.getInputStream()) + ) { Log.d(TAG, "I/O Streams set!"); switch(LOCALIZATIONSCHEME) { @@ -110,16 +98,6 @@ public void run () { toServer.writeObject(KeyMaster.map_name); toServer.flush(); - // Following this patch the server needs to know the Phone as well - if(MainActivity.multi_phone) { - String [] phone_data = MainActivity.getPhoneData(); - for (String s: phone_data) { - Log.d(TAG, s); - } - toServer.writeObject(phone_data); - toServer.flush(); - } - in = fromServer.readObject(); if(in instanceof Double []) { trainMe.existingX = (Double []) in; @@ -155,7 +133,6 @@ public void run () { break; case GET_COLUMN: toServer.writeObject("Get Lookup Columns"); - // Send the Map with all (x, y) toServer.writeObject(KeyMaster.map_name); toServer.flush(); @@ -179,7 +156,6 @@ public void run () { MainActivity.bad_train.show(); } break; - case PLAIN_MIN: case PLAIN_DMA: case PLAIN_MCA: @@ -189,7 +165,7 @@ public void run () { case DGK_MIN: case DGK_MCA: case DGK_DMA: - localize(); + localize(clientSocket, toServer, fromServer); break; default: Log.d(TAG, "Error at Thread run: No Valid Object was sent here"); @@ -209,7 +185,11 @@ public void run () { } } - private void localize() throws IOException, ClassNotFoundException, HomomorphicException { + private void localize( + Socket clientSocket, + ObjectOutputStream toServer, + ObjectInputStream fromServer + ) throws IOException, ClassNotFoundException, HomomorphicException { bob andrew; BigInteger [] location; BigInteger divisor; diff --git a/REU2017/app/src/main/java/Localization/KeyMaster.java b/REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/localization/KeyMaster.java similarity index 96% rename from REU2017/app/src/main/java/Localization/KeyMaster.java rename to REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/localization/KeyMaster.java index 4f80efa..be7d6d3 100644 --- a/REU2017/app/src/main/java/Localization/KeyMaster.java +++ b/REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/localization/KeyMaster.java @@ -1,4 +1,4 @@ -package Localization; +package edu.fiu.adwise.fingerprint_localization.localization; import android.graphics.Bitmap; @@ -50,8 +50,7 @@ public static void init() throws HomomorphicException { finished = true; } - public void run() - { + public void run() { try { init(); } catch (HomomorphicException e) { diff --git a/REU2017/app/src/main/java/Localization/background.java b/REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/localization/background.java similarity index 95% rename from REU2017/app/src/main/java/Localization/background.java rename to REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/localization/background.java index 682f958..1080bdf 100644 --- a/REU2017/app/src/main/java/Localization/background.java +++ b/REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/localization/background.java @@ -1,4 +1,4 @@ -package Localization; +package edu.fiu.adwise.fingerprint_localization.localization; import android.graphics.Bitmap; import android.graphics.Canvas; @@ -25,7 +25,7 @@ import edu.fiu.adwise.fingerprint_localization.structs.SendLocalizationData; import edu.fiu.adwise.fingerprint_localization.structs.LocalizationResult; import edu.fiu.adwise.homomorphic_encryption.misc.HomomorphicException; -import ui.MainActivity; +import edu.fiu.adwise.fingerprint_localization.ui.MainActivity; import edu.fiu.adwise.homomorphic_encryption.dgk.DGKOperations; import edu.fiu.adwise.homomorphic_encryption.dgk.DGKPrivateKey; @@ -36,7 +36,7 @@ import static android.graphics.Color.RED; import static edu.fiu.adwise.fingerprint_localization.distance_computation.LOCALIZATION_SCHEME.*; -import static ui.LocalizeActivity.off_map; +import static edu.fiu.adwise.fingerprint_localization.ui.LocalizeActivity.off_map; public final class background { private final static String TAG = "LOCALIZE"; @@ -45,7 +45,6 @@ public final class background { List fromServer = new ArrayList<>(); Double [] coordinates = new Double[2]; private final LOCALIZATION_SCHEME LOCALIZATION_SCHEME; - //Keys and read Keys private static final PaillierPublicKey pk = KeyMaster.pk; private static final DGKPublicKey DGKpk = KeyMaster.DGKpk; @@ -197,8 +196,7 @@ private Float[] doInBackground() { location[1] = fromServer.get(0).getY().floatValue(); } else { - Phase3(); - return location; + return Phase3(); } publishProgress(10); } @@ -211,8 +209,8 @@ private Float[] doInBackground() { try { if(LOCALIZATION_SCHEME == DGK_DMA) { for (int i = 0; i < MainActivity.VECTOR_SIZE; i++) { - S2[i] = DGKOperations.encrypt(-2 * RSS_send[i], DGKpk); - S3_comp[i] = DGKOperations.encrypt(RSS_send[i] * RSS_send[i], DGKpk); + S2[i] = DGKOperations.encrypt(-2L * RSS_send[i], DGKpk); + S3_comp[i] = DGKOperations.encrypt((long) RSS_send[i] * RSS_send[i], DGKpk); } t = new Thread( new ClientThread( new SendLocalizationData(MAC_send, S2, null, S3_comp, @@ -222,8 +220,8 @@ private Float[] doInBackground() { } else { for (int i = 0; i < MainActivity.VECTOR_SIZE; i++) { - S2[i] = DGKOperations.encrypt(-2 * RSS_send[i], DGKpk); - S3_plaintext += RSS_send[i] * RSS_send[i]; + S2[i] = DGKOperations.encrypt(-2L * RSS_send[i], DGKpk); + S3_plaintext += (long) RSS_send[i] * RSS_send[i]; } try { @@ -292,8 +290,8 @@ private Float[] doInBackground() { try { if(LOCALIZATION_SCHEME == PAILLIER_DMA) { for (int i = 0; i < MainActivity.VECTOR_SIZE; i++) { - S2[i] = PaillierCipher.encrypt(-2 * RSS_send[i], pk); - S3_comp[i] = PaillierCipher.encrypt(RSS_send[i] * RSS_send[i], pk); + S2[i] = PaillierCipher.encrypt(-2L * RSS_send[i], pk); + S3_comp[i] = PaillierCipher.encrypt((long) RSS_send[i] * RSS_send[i], pk); } (t = new Thread(new ClientThread( new SendLocalizationData(MAC_send, S2, null, S3_comp, @@ -304,8 +302,8 @@ private Float[] doInBackground() { } else { for (int i = 0; i < MainActivity.VECTOR_SIZE; i++) { - S2[i] = PaillierCipher.encrypt(-2 * RSS_send[i], pk); - S3_plaintext += RSS_send[i] * RSS_send[i]; + S2[i] = PaillierCipher.encrypt(-2L * RSS_send[i], pk); + S3_plaintext += (long) RSS_send[i] * RSS_send[i]; } S3 = PaillierCipher.encrypt(S3_plaintext, pk); diff --git a/REU2017/app/src/main/java/sensors/WifiReceiver.java b/REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/sensors/WifiReceiver.java similarity index 95% rename from REU2017/app/src/main/java/sensors/WifiReceiver.java rename to REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/sensors/WifiReceiver.java index 48d1629..70cd79b 100644 --- a/REU2017/app/src/main/java/sensors/WifiReceiver.java +++ b/REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/sensors/WifiReceiver.java @@ -1,4 +1,4 @@ -package sensors; +package edu.fiu.adwise.fingerprint_localization.sensors; import android.Manifest; @@ -16,7 +16,7 @@ import java.util.List; -import ui.MainActivity; +import edu.fiu.adwise.fingerprint_localization.ui.MainActivity; import static android.widget.Toast.*; @@ -66,8 +66,7 @@ public void unregisterReceiver(Context context) { // Try this... // https://stackoverflow.com/questions/13238600/use-registerreceiver-for-non-activity-and-non-service-class - public void onReceive(Context context, Intent intent) - { + public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(action)) { get_data(); diff --git a/REU2017/app/src/main/java/ui/AddMapActivity.java b/REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/ui/AddMapActivity.java similarity index 89% rename from REU2017/app/src/main/java/ui/AddMapActivity.java rename to REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/ui/AddMapActivity.java index 9302b1d..4831dc0 100644 --- a/REU2017/app/src/main/java/ui/AddMapActivity.java +++ b/REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/ui/AddMapActivity.java @@ -1,4 +1,4 @@ -package ui; +package edu.fiu.adwise.fingerprint_localization.ui; import java.io.ByteArrayOutputStream; import java.io.FileNotFoundException; @@ -16,30 +16,26 @@ import android.os.Bundle; import android.util.Log; import android.view.View; -import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.Switch; import android.widget.Toast; -import Localization.KeyMaster; +import edu.fiu.adwise.fingerprint_localization.localization.KeyMaster; import edu.fiu.reu2017.R; -import static ui.MainActivity.SQLDatabase; -import static ui.MainActivity.TIMEOUT; -import static ui.MainActivity.portNumber; +import static edu.fiu.adwise.fingerprint_localization.ui.MainActivity.SQLDatabase; +import static edu.fiu.adwise.fingerprint_localization.ui.MainActivity.TIMEOUT; +import static edu.fiu.adwise.fingerprint_localization.ui.MainActivity.portNumber; -public class AddMapActivity extends Activity -{ +public class AddMapActivity extends Activity { EditText textTargetUri; ImageView targetImage; Bitmap bitmap = null; - private Switch mode; /** Called when the activity is first created. */ - public void onCreate(Bundle savedInstanceState) - { + public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_map); Button buttonLoadImage = findViewById(R.id.loadimage); @@ -50,26 +46,19 @@ public void onCreate(Bundle savedInstanceState) mode = findViewById(R.id.pick); Button send = findViewById(R.id.send); send.setOnClickListener(new communicate()); - buttonLoadImage.setOnClickListener(new OnClickListener() - { - public void onClick(View arg0) - { - Intent intent = new Intent(Intent.ACTION_PICK, - android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); - startActivityForResult(intent, 0); - } + buttonLoadImage.setOnClickListener(arg0 -> { + Intent intent = new Intent(Intent.ACTION_PICK, + android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); + startActivityForResult(intent, 0); }); } - private class communicate implements View.OnClickListener, Runnable - { - public void onClick(View v) - { + private class communicate implements View.OnClickListener, Runnable { + public void onClick(View v) { new Thread(this).start(); } - public void run() - { + public void run() { byte [] encoded_image; try { try (Socket ClientSocket = new Socket()) { @@ -160,8 +149,7 @@ public void run() } - protected void onActivityResult(int requestCode, int resultCode, Intent data) - { + protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { diff --git a/REU2017/app/src/main/java/ui/LocalizeActivity.java b/REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/ui/LocalizeActivity.java similarity index 90% rename from REU2017/app/src/main/java/ui/LocalizeActivity.java rename to REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/ui/LocalizeActivity.java index ac7f7b6..1ef9468 100644 --- a/REU2017/app/src/main/java/ui/LocalizeActivity.java +++ b/REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/ui/LocalizeActivity.java @@ -1,4 +1,4 @@ -package ui; +package edu.fiu.adwise.fingerprint_localization.ui; import android.content.Intent; import android.content.pm.ActivityInfo; @@ -19,11 +19,11 @@ import com.github.chrisbanes.photoview.OnPhotoTapListener; import com.github.chrisbanes.photoview.PhotoViewAttacher; -import Localization.KeyMaster; +import edu.fiu.adwise.fingerprint_localization.localization.KeyMaster; import edu.fiu.adwise.fingerprint_localization.distance_computation.LOCALIZATION_SCHEME; import edu.fiu.reu2017.R; -import Localization.background; -import sensors.WifiReceiver; +import edu.fiu.adwise.fingerprint_localization.localization.background; +import edu.fiu.adwise.fingerprint_localization.sensors.WifiReceiver; public class LocalizeActivity extends AppCompatActivity { protected WifiReceiver wifi_wrapper; @@ -37,7 +37,6 @@ public class LocalizeActivity extends AppCompatActivity { private ImageView imageView; private Switch REU2017Mode; private boolean scan_complete; - public static Toast off_map; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -53,7 +52,7 @@ protected void onCreate(Bundle savedInstanceState) { REU2017Mode = findViewById(R.id.REU2017); Intent i = getIntent(); - SCHEME = i.getIntExtra("Localization", SCHEME); + SCHEME = i.getIntExtra("localization", SCHEME); location = BitmapFactory.decodeResource(getResources(), R.drawable.o); wifi_wrapper = new WifiReceiver(this, loading); @@ -84,16 +83,12 @@ public void onClick(View v) { } } - private class attach implements OnPhotoTapListener - { + private class attach implements OnPhotoTapListener { public void onPhotoTap (ImageView view, float x, float y) { // CLEAR RED DOT, RE-LOAD - imageView.post(new Runnable() { - public void run() { + imageView.post(() -> imageView.setImageBitmap(Bitmap.createScaledBitmap(KeyMaster.map, imageView.getWidth(), - imageView.getHeight(), false)); - } - }); + imageView.getHeight(), false))); my_Attach.update(); if(scan_complete) { diff --git a/REU2017/app/src/main/java/ui/MainActivity.java b/REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/ui/MainActivity.java similarity index 70% rename from REU2017/app/src/main/java/ui/MainActivity.java rename to REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/ui/MainActivity.java index 9ac2d65..7d9f221 100644 --- a/REU2017/app/src/main/java/ui/MainActivity.java +++ b/REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/ui/MainActivity.java @@ -1,4 +1,4 @@ -package ui; +package edu.fiu.adwise.fingerprint_localization.ui; import android.Manifest; import android.content.Intent; @@ -22,10 +22,10 @@ import java.net.Socket; import java.util.HashMap; -import Localization.ClientThread; -import Localization.KeyMaster; +import edu.fiu.adwise.fingerprint_localization.localization.ClientThread; +import edu.fiu.adwise.fingerprint_localization.localization.KeyMaster; import edu.fiu.adwise.homomorphic_encryption.misc.HomomorphicException; -import sensors.WifiReceiver; +import edu.fiu.adwise.fingerprint_localization.sensors.WifiReceiver; import static edu.fiu.reu2017.R.*; @@ -34,7 +34,6 @@ public class MainActivity extends AppCompatActivity { public final static String SQLDatabase = "160.39.57.71"; public final static int portNumber = 9254; public final static int TIMEOUT = 2 * 1000; - public final static boolean multi_phone = false; private static final int PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION = 1001; public static int VECTOR_SIZE = -1; //public final static int KEY_SIZE = 1024; @@ -180,17 +179,18 @@ public void onClick(View v) { } } - private class train_data implements View.OnClickListener, Runnable { - boolean connected = false; + private class train_data implements View.OnClickListener { public void onClick(View v) { - Thread conn = new Thread(this); - conn.start(); + test_connection t = new test_connection(); + Thread th = new Thread(t); + th.start(); try { - conn.join(); - } catch (InterruptedException e) { + th.join(); + } + catch (InterruptedException e) { Log.e(this.getClass().getName(), "Thread Interrupted", e); } - if(connected) { + if(t.connected) { if(KeyMaster.map_name.isEmpty() || KeyMaster.map == null) { Toast.makeText(getApplicationContext(), "PICK A MAP!", Toast.LENGTH_LONG).show(); } else { @@ -200,58 +200,31 @@ public void onClick(View v) { } } } - - public void run() { - try (Socket ClientSocket = new Socket()) { - ClientSocket.connect(new InetSocketAddress(SQLDatabase, portNumber), TIMEOUT); - ObjectOutputStream toServer = new ObjectOutputStream(ClientSocket.getOutputStream()); - toServer.writeObject("Hello"); - toServer.flush(); - connected = true; - } catch (IOException e) { - Wifi_needed.show(); - connected = false; - } - } } - private class localize implements View.OnClickListener, Runnable { - boolean connected = false; + private class localize implements View.OnClickListener { public void onClick(View v) { - Thread conn = new Thread(this); - conn.start(); + test_connection t = new test_connection(); + Thread th = new Thread(t); + th.start(); try { - conn.join(); + th.join(); } catch (InterruptedException e) { Log.e(this.getClass().getName(), "Thread Interrupted", e); } - if(connected) { + if(t.connected) { LOCALIZATION_SCHEME = LocalizationSelect.getValue(); if(KeyMaster.map == null || KeyMaster.map_name.isEmpty()) { Toast.makeText(getApplicationContext(), "PICK A MAP!", Toast.LENGTH_LONG).show(); } else { Toast.makeText(getApplicationContext(), "Loading Map: " + KeyMaster.map_name, Toast.LENGTH_LONG).show(); Intent Localize = new Intent(MainActivity.this, LocalizeActivity.class); - Localize.putExtra("Localization", LOCALIZATION_SCHEME); + Localize.putExtra("localization", LOCALIZATION_SCHEME); startActivity(Localize); } } } - - public void run() { - try (Socket ClientSocket = new Socket()) { - ClientSocket.connect(new InetSocketAddress(SQLDatabase, portNumber), TIMEOUT); - ObjectOutputStream toServer = new ObjectOutputStream(ClientSocket.getOutputStream()); - toServer.writeObject("Hello"); - toServer.flush(); - connected = true; - } - catch (IOException e) { - Wifi_needed.show(); - connected = false; - } - } } private class reset implements View.OnClickListener, Runnable { @@ -260,18 +233,21 @@ public void onClick(View v) { } public void run() { - try (Socket ClientSocket = new Socket()){ + try (Socket ClientSocket = new Socket()) { ClientSocket.connect(new InetSocketAddress(SQLDatabase, portNumber), TIMEOUT); - - //Prepare I/O Stream - ObjectOutputStream toServer = new ObjectOutputStream(ClientSocket.getOutputStream()); - ObjectInputStream fromServer = new ObjectInputStream(ClientSocket.getInputStream()); - toServer.writeObject("RESET"); - toServer.flush(); - if (fromServer.readBoolean()) { - runOnUiThread(() -> Toast.makeText(getApplicationContext(), "RESET COMPLETE!", Toast.LENGTH_LONG).show()); - } else { - runOnUiThread(() -> Toast.makeText(getApplicationContext(), "RESET FAILED!", Toast.LENGTH_LONG).show()); + try ( + ObjectOutputStream toServer = new ObjectOutputStream(ClientSocket.getOutputStream()); + ObjectInputStream fromServer = new ObjectInputStream(ClientSocket.getInputStream()); + ) { + toServer.writeObject("RESET"); + toServer.flush(); + if (fromServer.readBoolean()) { + runOnUiThread(() -> Toast.makeText(getApplicationContext(), "RESET COMPLETE!", Toast.LENGTH_LONG).show()); + } else { + runOnUiThread(() -> Toast.makeText(getApplicationContext(), "RESET FAILED!", Toast.LENGTH_LONG).show()); + } + } catch (IOException e) { + Wifi_needed.show(); } } catch (IOException e) { Wifi_needed.show(); @@ -280,8 +256,7 @@ public void run() { } private class undo implements View.OnClickListener, Runnable { - public void onClick(View v) - { + public void onClick(View v) { new Thread(this).start(); } @@ -289,21 +264,25 @@ public void run() { try (Socket ClientSocket = new Socket()) { ClientSocket.connect(new InetSocketAddress(SQLDatabase, portNumber), TIMEOUT); - // Prepare I/O Stream - ObjectOutputStream toServer = new ObjectOutputStream(ClientSocket.getOutputStream()); - ObjectInputStream fromServer = new ObjectInputStream(ClientSocket.getInputStream()); - toServer.writeObject("UNDO"); - // Need to send Coordinates, Phone and DeviceName - toServer.writeObject(KeyMaster.last_coordinates); - toServer.writeObject(KeyMaster.map_name); - toServer.writeObject(KeyMaster.last_device); - toServer.flush(); - - if (fromServer.readBoolean()) { - runOnUiThread(() -> Toast.makeText(getApplicationContext(),"UNDO COMPLETE!", Toast.LENGTH_LONG).show()); - } - else { - runOnUiThread(() -> Toast.makeText(getApplicationContext(),"UNDO FAILED!", Toast.LENGTH_LONG).show()); + try ( + ObjectOutputStream toServer = new ObjectOutputStream(ClientSocket.getOutputStream()); + ObjectInputStream fromServer = new ObjectInputStream(ClientSocket.getInputStream()); + ) { + toServer.writeObject("UNDO"); + // Need to send Coordinates, Phone and DeviceName + toServer.writeObject(KeyMaster.last_coordinates); + toServer.writeObject(KeyMaster.map_name); + toServer.writeObject(KeyMaster.last_device); + toServer.flush(); + + if (fromServer.readBoolean()) { + runOnUiThread(() -> Toast.makeText(getApplicationContext(),"UNDO COMPLETE!", Toast.LENGTH_LONG).show()); + } + else { + runOnUiThread(() -> Toast.makeText(getApplicationContext(),"UNDO FAILED!", Toast.LENGTH_LONG).show()); + } + } catch (IOException e) { + Wifi_needed.show(); } } catch (IOException e) { Wifi_needed.show(); @@ -313,16 +292,6 @@ public void run() { private class start_scan implements View.OnClickListener { public void onClick(View v) { - /* - if(mWifiManager.startScan()) - { - Toast.makeText(getApplicationContext(), "Got reading from Wifi Manager", Toast.LENGTH_LONG).show(); - } - else - { - Toast.makeText(getApplicationContext(), "Scanning Wi-Fi failed!", Toast.LENGTH_LONG).show(); - } - */ Intent map = new Intent(MainActivity.this, AddMapActivity.class); startActivity(map); } @@ -372,28 +341,4 @@ private static String capitalize(String s) { return Character.toUpperCase(first) + s.substring(1); } } - - /* - protected void MAC_to_AP_Name() - { - String line; - String [] tuple; - try - { - Resources res = getResources(); - InputStream in_s = res.openRawResource(R.raw.broadwayfloormap); - BufferedReader reader = new BufferedReader(new InputStreamReader(in_s)); - while((line = reader.readLine()) != null) - { - tuple = line.split(","); - AP_map.put(tuple[0], tuple[1]); - //answer.put(tuple[0], tuple[1]); - } - } - catch (IOException e) - { - e.printStackTrace(); - } - } - */ } \ No newline at end of file diff --git a/REU2017/app/src/main/java/ui/TrainActivity.java b/REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/ui/TrainActivity.java similarity index 94% rename from REU2017/app/src/main/java/ui/TrainActivity.java rename to REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/ui/TrainActivity.java index 6b1ee65..fe88b02 100644 --- a/REU2017/app/src/main/java/ui/TrainActivity.java +++ b/REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/ui/TrainActivity.java @@ -1,4 +1,4 @@ -package ui; +package edu.fiu.adwise.fingerprint_localization.ui; import android.content.pm.ActivityInfo; import android.graphics.Bitmap; @@ -19,14 +19,14 @@ import com.github.chrisbanes.photoview.OnPhotoTapListener; import com.github.chrisbanes.photoview.PhotoViewAttacher; -import Localization.ClientThread; -import Localization.KeyMaster; +import edu.fiu.adwise.fingerprint_localization.localization.ClientThread; +import edu.fiu.adwise.fingerprint_localization.localization.KeyMaster; import edu.fiu.reu2017.R; -import sensors.WifiReceiver; +import edu.fiu.adwise.fingerprint_localization.sensors.WifiReceiver; import edu.fiu.adwise.fingerprint_localization.structs.SendTrainingData; import static android.graphics.Color.BLUE; -import static ui.MainActivity.getDeviceName; +import static edu.fiu.adwise.fingerprint_localization.ui.MainActivity.getDeviceName; public class TrainActivity extends AppCompatActivity implements Runnable { private Bitmap mutableBitmap; @@ -44,14 +44,11 @@ public class TrainActivity extends AppCompatActivity implements Runnable { public Double [] existingX = new Double[1]; public Double [] existingY = new Double[1]; private Bitmap trained_flag; - - // *********************************************************************** public String OS, MODEL, DEVICE, PRODUCT; protected Thread get_flags; protected TrainActivity train_activity; protected ProgressBar loading; protected Button scan; - private boolean scan_complete = false; protected void onCreate(Bundle savedInstanceState) { @@ -149,8 +146,7 @@ public void onPhotoTap(ImageView view, float x, float y) { } // Finish pre-populating the floor map with currently trained points! - public void run() - { + public void run() { BitMap_Width = mutableBitmap.getWidth(); BitMap_Height = mutableBitmap.getHeight(); diff --git a/REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/ui/test_connection.java b/REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/ui/test_connection.java new file mode 100644 index 0000000..7f32665 --- /dev/null +++ b/REU2017/app/src/main/java/edu/fiu/adwise/fingerprint_localization/ui/test_connection.java @@ -0,0 +1,27 @@ +package edu.fiu.adwise.fingerprint_localization.ui; + +import java.io.IOException; +import java.io.ObjectOutputStream; +import java.net.InetSocketAddress; +import java.net.Socket; + +import static edu.fiu.adwise.fingerprint_localization.ui.MainActivity.SQLDatabase; +import static edu.fiu.adwise.fingerprint_localization.ui.MainActivity.TIMEOUT; +import static edu.fiu.adwise.fingerprint_localization.ui.MainActivity.portNumber; + +public class test_connection implements Runnable { + boolean connected = false; + public void run() { + try (Socket ClientSocket = new Socket()) { + ClientSocket.connect(new InetSocketAddress(SQLDatabase, portNumber), TIMEOUT); + try(ObjectOutputStream toServer = new ObjectOutputStream(ClientSocket.getOutputStream())) { + toServer.writeObject("Hello"); + toServer.flush(); + } + connected = true; + } + catch (IOException e) { + connected = false; + } + } +} diff --git a/REU2017/app/src/main/java/ui/test_connection.java b/REU2017/app/src/main/java/ui/test_connection.java deleted file mode 100644 index 4dfd56e..0000000 --- a/REU2017/app/src/main/java/ui/test_connection.java +++ /dev/null @@ -1,26 +0,0 @@ -package ui; - -import java.io.IOException; -import java.io.ObjectOutputStream; -import java.net.InetSocketAddress; -import java.net.Socket; - -import static ui.MainActivity.SQLDatabase; -import static ui.MainActivity.TIMEOUT; -import static ui.MainActivity.portNumber; - -public class test_connection implements Runnable { - boolean connected = false; - public void run() { - try (Socket ClientSocket = new Socket()) { - ClientSocket.connect(new InetSocketAddress(SQLDatabase, portNumber), TIMEOUT); - ObjectOutputStream toServer = new ObjectOutputStream(ClientSocket.getOutputStream()); - toServer.writeObject("Hello"); - toServer.flush(); - connected = true; - } - catch (IOException e) { - connected = false; - } - } -} diff --git a/REU2017/app/src/main/res/layout/activity_main.xml b/REU2017/app/src/main/res/layout/activity_main.xml index d9a24df..d5687f3 100644 --- a/REU2017/app/src/main/res/layout/activity_main.xml +++ b/REU2017/app/src/main/res/layout/activity_main.xml @@ -6,7 +6,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:screenOrientation="portrait" - tools:context="ui.MainActivity" + tools:context="edu.fiu.adwise.fingerprint_localization.ui.MainActivity" tools:layout_editor_absoluteX="0dp" tools:layout_editor_absoluteY="81dp"> diff --git a/REU2017/app/src/main/res/layout/localize_activity.xml b/REU2017/app/src/main/res/layout/localize_activity.xml index 2f9ecbc..1adcdf3 100644 --- a/REU2017/app/src/main/res/layout/localize_activity.xml +++ b/REU2017/app/src/main/res/layout/localize_activity.xml @@ -4,7 +4,7 @@ android:layout_height="match_parent" xmlns:tools="http://schemas.android.com/tools" android:weightSum="1" - tools:context="ui.LocalizeActivity" + tools:context="edu.fiu.adwise.fingerprint_localization.ui.LocalizeActivity" tools:layout_editor_absoluteY="81dp" tools:layout_editor_absoluteX="0dp" android:noHistory="true" @@ -62,4 +62,4 @@ android:layout_marginStart="114dp" android:text="@string/reu2017" /> - \ No newline at end of file + diff --git a/REU2017/app/src/main/res/layout/train_activity.xml b/REU2017/app/src/main/res/layout/train_activity.xml index b6ef9c9..b502897 100644 --- a/REU2017/app/src/main/res/layout/train_activity.xml +++ b/REU2017/app/src/main/res/layout/train_activity.xml @@ -4,7 +4,7 @@ android:layout_height="match_parent" xmlns:tools="http://schemas.android.com/tools" android:weightSum="1" - tools:context="ui.TrainActivity" + tools:context="edu.fiu.adwise.fingerprint_localization.ui.TrainActivity" tools:layout_editor_absoluteY="81dp" tools:layout_editor_absoluteX="0dp" android:noHistory="true" @@ -54,4 +54,4 @@ android:layout_toStartOf="@+id/time" android:visibility="invisible" /> - \ No newline at end of file + diff --git a/REU2017/build.gradle b/REU2017/build.gradle index 1d5334a..f03a2e8 100644 --- a/REU2017/build.gradle +++ b/REU2017/build.gradle @@ -7,7 +7,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:8.11.1' + classpath 'com.android.tools.build:gradle:8.12.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong diff --git a/REUServer/build.gradle b/REUServer/build.gradle index 328ba54..6b70e1e 100644 --- a/REUServer/build.gradle +++ b/REUServer/build.gradle @@ -106,6 +106,11 @@ publishing { id.set('AndrewQuijano') name.set('Andrew Quijano') email.set('andrew.quijano@nyu.edu') + roles.add('Lead Developer') + organization { + name.set('New York University') + url.set('https://www.nyu.edu') + } } } @@ -117,24 +122,10 @@ publishing { } } } - - repositories { - maven { - name = "Sonatype" - url = version.endsWith("SNAPSHOT") ? - uri("https://s01.oss.sonatype.org/content/repositories/snapshots/") : - uri("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/") - - credentials { - username = findProperty("ossrhUsername") ?: System.getenv("OSSRH_USERNAME") - password = findProperty("ossrhPassword") ?: System.getenv("OSSRH_PASSWORD") - } - } - } } // Update this file, ~/.gnupg/dirmngr.conf -// and add this line 'keyserver hkps://keyserver.ubuntu.com' to the file +// and add this line to the file 'keyserver hkps://keyserver.ubuntu.com' // then run 'gpg --send-keys YOUR_KEY_ID' signing { // Point to the key file on your machine, used for local testing diff --git a/REUServer/create_bundle.sh b/REUServer/create_bundle.sh index bc865bb..f03ce1b 100644 --- a/REUServer/create_bundle.sh +++ b/REUServer/create_bundle.sh @@ -11,7 +11,8 @@ fi VERSION=$1 DOMAIN=io/github/andrewquijano -PROJECT=fingerprint_localization +# match with settings.gradle +PROJECT=fingerprint-indoor-localization # Use this script as a stop gap for manual uploading mkdir -p $DOMAIN/$PROJECT/$VERSION diff --git a/REUServer/settings.gradle b/REUServer/settings.gradle index 81e141b..09a7138 100644 --- a/REUServer/settings.gradle +++ b/REUServer/settings.gradle @@ -7,4 +7,4 @@ * in the user manual at https://docs.gradle.org/5.6.1/userguide/multi_project_builds.html */ -rootProject.name = 'fingerprint_localization' +rootProject.name = 'fingerprint-indoor-localization'