Loading demoapp/src/main/java/foudation/e/privacymodules/trackers/demoapp/MainActivity.kt +45 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,13 @@ import java.lang.Exception class MainActivity : AppCompatActivity() { private var mBtnStart: Button? = null private var mBtnYearsLeaks: Button? = null private var mBtnMonthsLeaks: Button? = null private var mBtnDaysLeaks: Button? = null private var mBtnYearsTrackers: Button? = null private var mBtnMonthsTrackers: Button? = null private var mBtnDaysTrackers: Button? = null private var mBtnAllTrackers: Button? = null private var mTvLog: TextView? = null private var trackers = emptyList<Tracker>() override fun onCreate(savedInstanceState: Bundle?) { Loading @@ -27,6 +34,14 @@ class MainActivity : AppCompatActivity() { initFromAssets() mBtnStart = findViewById(R.id.button_start) mBtnYearsLeaks = findViewById(R.id.button_years_leaks) mBtnMonthsLeaks = findViewById(R.id.button_months_leaks) mBtnDaysLeaks = findViewById(R.id.button_days_leaks) mBtnYearsTrackers = findViewById(R.id.button_years_trackers) mBtnMonthsTrackers = findViewById(R.id.button_months_trackers) mBtnDaysTrackers = findViewById(R.id.button_days_trackers) mBtnAllTrackers = findViewById(R.id.button_all_trackers) mTvLog = findViewById(R.id.tv_log) val trackTrackersPrivacyModule = TrackTrackersPrivacyModule.getInstance(applicationContext) Loading @@ -44,9 +59,38 @@ class MainActivity : AppCompatActivity() { true); } mBtnYearsLeaks?.setOnClickListener { v: View? -> mTvLog?.append("Years leaks: ${trackTrackersPrivacyModule.getPastYearTrackersCalls()}") } mBtnMonthsLeaks?.setOnClickListener { v: View? -> mTvLog?.append("Months leaks: ${trackTrackersPrivacyModule.getPastMonthTrackersCalls()}") } mBtnDaysLeaks?.setOnClickListener { v: View? -> mTvLog?.append("Days leaks: ${trackTrackersPrivacyModule.getPastDayTrackersCalls()}") } mBtnYearsTrackers?.setOnClickListener { v: View? -> mTvLog?.append("Years trackers: ${trackTrackersPrivacyModule.getPastYearTrackersCount()}") } mBtnMonthsTrackers?.setOnClickListener { v: View? -> mTvLog?.append("Months trackers: ${trackTrackersPrivacyModule.getPastMonthTrackersCount()}") } mBtnDaysTrackers?.setOnClickListener { v: View? -> mTvLog?.append("Days trackers: ${trackTrackersPrivacyModule.getPastDayTrackersCount()}") } mBtnAllTrackers?.setOnClickListener { v: View? -> mTvLog?.append("All trackers: ${trackTrackersPrivacyModule.getTrackersCount()}") } trackTrackersPrivacyModule.addListener(object: ITrackTrackersPrivacyModule.Listener { override fun onNewData() { mTvLog?.text = "Trackers: ${trackTrackersPrivacyModule.getPastDayTrackersCount()}" //mTvLog?.append("New data!") //mTvLog?.text = "Trackers: ${trackTrackersPrivacyModule.getPastDayTrackersCount()}" } }) } Loading demoapp/src/main/res/layout/activity_main.xml +55 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,11 @@ android:padding="24dp" android:orientation="vertical" tools:context=".MainActivity"> <GridLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:columnCount="2" > <Button android:id="@+id/button_start" android:layout_width="wrap_content" Loading @@ -19,6 +24,56 @@ android:layout_marginEnd="24dp" android:text="Start" /> <Button android:id="@+id/button_years_leaks" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="24dp" android:text="Years leaks" /> <Button android:id="@+id/button_months_leaks" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="24dp" android:text="Months leaks" /> <Button android:id="@+id/button_days_leaks" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="24dp" android:text="Days leaks" /> <Button android:id="@+id/button_years_trackers" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="24dp" android:text="Years Trackers" /> <Button android:id="@+id/button_months_trackers" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="24dp" android:text="Months Trackers" /> <Button android:id="@+id/button_days_trackers" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="24dp" android:text="Days Trackers" /> <Button android:id="@+id/button_all_trackers" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="24dp" android:text="All Trackers" /> </GridLayout> <TextView android:id="@+id/tv_log" android:layout_width="match_parent" Loading privacymoduletrackers/build.gradle +1 −1 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ android { compileSdkVersion 30 defaultConfig { minSdkVersion 24 minSdkVersion 29 targetSdkVersion 29 versionCode 1 Loading privacymoduletrackers/src/main/java/foundation/e/privacymodules/trackers/StatsDatabase.java +200 −182 File changed.Preview size limit exceeded, changes collapsed. Show changes privacymoduletrackers/src/main/java/foundation/e/privacymodules/trackers/api/TrackTrackersPrivacyModule.java +17 −24 Original line number Diff line number Diff line Loading @@ -24,6 +24,9 @@ import android.content.Context; import android.content.Intent; import android.util.Log; import androidx.annotation.NonNull; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; Loading Loading @@ -52,6 +55,12 @@ public class TrackTrackersPrivacyModule implements ITrackTrackersPrivacyModule { }); } public static TrackTrackersPrivacyModule getInstance(Context ct){ if(sTrackTrackersPrivacyModule == null){ sTrackTrackersPrivacyModule = new TrackTrackersPrivacyModule(ct); } return sTrackTrackersPrivacyModule; } public void start(List<Tracker> trackers, boolean enableNotification) { // TODO stop and start around this. Loading @@ -63,61 +72,46 @@ public class TrackTrackersPrivacyModule implements ITrackTrackersPrivacyModule { mContext.startService(intent); } @NonNull @Override public List<Integer> getPastDayTrackersCalls() { return statsRepository.getPast24h(); return statsRepository.getTrackersLeaksOnPeriod(24, ChronoUnit.HOURS); } @Override public List<Integer> getPastMonthTrackersCalls() { return statsRepository.getPastMonth(); return statsRepository.getTrackersLeaksOnPeriod(30, ChronoUnit.DAYS); } @Override public List<Integer> getPastYearTrackersCalls() { return statsRepository.getPastYear(); return statsRepository.getTrackersLeaksOnPeriod(12, ChronoUnit.MONTHS); } @Override public int getTrackersCount() { return 0; return statsRepository.getContactedTrackersCount(); } @Override public List<Tracker> getTrackersForApp(int i) { return statsRepository.getAllTrackersOfApp(i); } public static TrackTrackersPrivacyModule getInstance(Context ct){ if(sTrackTrackersPrivacyModule == null){ sTrackTrackersPrivacyModule = new TrackTrackersPrivacyModule(ct); } return sTrackTrackersPrivacyModule; } private int sumOfList(List<Integer> list){ int total = 0; for(int call: list){ total+=call; } return total; } @Override public int getPastDayTrackersCount() { /* TODO optimise */ return sumOfList(getPastDayTrackersCalls()); return statsRepository.getActiveTrackersByPeriod(24, ChronoUnit.HOURS); } @Override public int getPastMonthTrackersCount() { /* TODO optimise */ return sumOfList(getPastMonthTrackersCalls()); return statsRepository.getActiveTrackersByPeriod(30, ChronoUnit.DAYS); } @Override public int getPastYearTrackersCount() { /* TODO optimise */ return sumOfList(getPastYearTrackersCalls()); return statsRepository.getActiveTrackersByPeriod(12, ChronoUnit.MONTHS); } @Override Loading @@ -130,7 +124,6 @@ public class TrackTrackersPrivacyModule implements ITrackTrackersPrivacyModule { mListeners.remove(listener); } @Override public void clearListeners() { mListeners.clear(); Loading Loading
demoapp/src/main/java/foudation/e/privacymodules/trackers/demoapp/MainActivity.kt +45 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,13 @@ import java.lang.Exception class MainActivity : AppCompatActivity() { private var mBtnStart: Button? = null private var mBtnYearsLeaks: Button? = null private var mBtnMonthsLeaks: Button? = null private var mBtnDaysLeaks: Button? = null private var mBtnYearsTrackers: Button? = null private var mBtnMonthsTrackers: Button? = null private var mBtnDaysTrackers: Button? = null private var mBtnAllTrackers: Button? = null private var mTvLog: TextView? = null private var trackers = emptyList<Tracker>() override fun onCreate(savedInstanceState: Bundle?) { Loading @@ -27,6 +34,14 @@ class MainActivity : AppCompatActivity() { initFromAssets() mBtnStart = findViewById(R.id.button_start) mBtnYearsLeaks = findViewById(R.id.button_years_leaks) mBtnMonthsLeaks = findViewById(R.id.button_months_leaks) mBtnDaysLeaks = findViewById(R.id.button_days_leaks) mBtnYearsTrackers = findViewById(R.id.button_years_trackers) mBtnMonthsTrackers = findViewById(R.id.button_months_trackers) mBtnDaysTrackers = findViewById(R.id.button_days_trackers) mBtnAllTrackers = findViewById(R.id.button_all_trackers) mTvLog = findViewById(R.id.tv_log) val trackTrackersPrivacyModule = TrackTrackersPrivacyModule.getInstance(applicationContext) Loading @@ -44,9 +59,38 @@ class MainActivity : AppCompatActivity() { true); } mBtnYearsLeaks?.setOnClickListener { v: View? -> mTvLog?.append("Years leaks: ${trackTrackersPrivacyModule.getPastYearTrackersCalls()}") } mBtnMonthsLeaks?.setOnClickListener { v: View? -> mTvLog?.append("Months leaks: ${trackTrackersPrivacyModule.getPastMonthTrackersCalls()}") } mBtnDaysLeaks?.setOnClickListener { v: View? -> mTvLog?.append("Days leaks: ${trackTrackersPrivacyModule.getPastDayTrackersCalls()}") } mBtnYearsTrackers?.setOnClickListener { v: View? -> mTvLog?.append("Years trackers: ${trackTrackersPrivacyModule.getPastYearTrackersCount()}") } mBtnMonthsTrackers?.setOnClickListener { v: View? -> mTvLog?.append("Months trackers: ${trackTrackersPrivacyModule.getPastMonthTrackersCount()}") } mBtnDaysTrackers?.setOnClickListener { v: View? -> mTvLog?.append("Days trackers: ${trackTrackersPrivacyModule.getPastDayTrackersCount()}") } mBtnAllTrackers?.setOnClickListener { v: View? -> mTvLog?.append("All trackers: ${trackTrackersPrivacyModule.getTrackersCount()}") } trackTrackersPrivacyModule.addListener(object: ITrackTrackersPrivacyModule.Listener { override fun onNewData() { mTvLog?.text = "Trackers: ${trackTrackersPrivacyModule.getPastDayTrackersCount()}" //mTvLog?.append("New data!") //mTvLog?.text = "Trackers: ${trackTrackersPrivacyModule.getPastDayTrackersCount()}" } }) } Loading
demoapp/src/main/res/layout/activity_main.xml +55 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,11 @@ android:padding="24dp" android:orientation="vertical" tools:context=".MainActivity"> <GridLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:columnCount="2" > <Button android:id="@+id/button_start" android:layout_width="wrap_content" Loading @@ -19,6 +24,56 @@ android:layout_marginEnd="24dp" android:text="Start" /> <Button android:id="@+id/button_years_leaks" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="24dp" android:text="Years leaks" /> <Button android:id="@+id/button_months_leaks" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="24dp" android:text="Months leaks" /> <Button android:id="@+id/button_days_leaks" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="24dp" android:text="Days leaks" /> <Button android:id="@+id/button_years_trackers" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="24dp" android:text="Years Trackers" /> <Button android:id="@+id/button_months_trackers" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="24dp" android:text="Months Trackers" /> <Button android:id="@+id/button_days_trackers" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="24dp" android:text="Days Trackers" /> <Button android:id="@+id/button_all_trackers" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="24dp" android:text="All Trackers" /> </GridLayout> <TextView android:id="@+id/tv_log" android:layout_width="match_parent" Loading
privacymoduletrackers/build.gradle +1 −1 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ android { compileSdkVersion 30 defaultConfig { minSdkVersion 24 minSdkVersion 29 targetSdkVersion 29 versionCode 1 Loading
privacymoduletrackers/src/main/java/foundation/e/privacymodules/trackers/StatsDatabase.java +200 −182 File changed.Preview size limit exceeded, changes collapsed. Show changes
privacymoduletrackers/src/main/java/foundation/e/privacymodules/trackers/api/TrackTrackersPrivacyModule.java +17 −24 Original line number Diff line number Diff line Loading @@ -24,6 +24,9 @@ import android.content.Context; import android.content.Intent; import android.util.Log; import androidx.annotation.NonNull; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; Loading Loading @@ -52,6 +55,12 @@ public class TrackTrackersPrivacyModule implements ITrackTrackersPrivacyModule { }); } public static TrackTrackersPrivacyModule getInstance(Context ct){ if(sTrackTrackersPrivacyModule == null){ sTrackTrackersPrivacyModule = new TrackTrackersPrivacyModule(ct); } return sTrackTrackersPrivacyModule; } public void start(List<Tracker> trackers, boolean enableNotification) { // TODO stop and start around this. Loading @@ -63,61 +72,46 @@ public class TrackTrackersPrivacyModule implements ITrackTrackersPrivacyModule { mContext.startService(intent); } @NonNull @Override public List<Integer> getPastDayTrackersCalls() { return statsRepository.getPast24h(); return statsRepository.getTrackersLeaksOnPeriod(24, ChronoUnit.HOURS); } @Override public List<Integer> getPastMonthTrackersCalls() { return statsRepository.getPastMonth(); return statsRepository.getTrackersLeaksOnPeriod(30, ChronoUnit.DAYS); } @Override public List<Integer> getPastYearTrackersCalls() { return statsRepository.getPastYear(); return statsRepository.getTrackersLeaksOnPeriod(12, ChronoUnit.MONTHS); } @Override public int getTrackersCount() { return 0; return statsRepository.getContactedTrackersCount(); } @Override public List<Tracker> getTrackersForApp(int i) { return statsRepository.getAllTrackersOfApp(i); } public static TrackTrackersPrivacyModule getInstance(Context ct){ if(sTrackTrackersPrivacyModule == null){ sTrackTrackersPrivacyModule = new TrackTrackersPrivacyModule(ct); } return sTrackTrackersPrivacyModule; } private int sumOfList(List<Integer> list){ int total = 0; for(int call: list){ total+=call; } return total; } @Override public int getPastDayTrackersCount() { /* TODO optimise */ return sumOfList(getPastDayTrackersCalls()); return statsRepository.getActiveTrackersByPeriod(24, ChronoUnit.HOURS); } @Override public int getPastMonthTrackersCount() { /* TODO optimise */ return sumOfList(getPastMonthTrackersCalls()); return statsRepository.getActiveTrackersByPeriod(30, ChronoUnit.DAYS); } @Override public int getPastYearTrackersCount() { /* TODO optimise */ return sumOfList(getPastYearTrackersCalls()); return statsRepository.getActiveTrackersByPeriod(12, ChronoUnit.MONTHS); } @Override Loading @@ -130,7 +124,6 @@ public class TrackTrackersPrivacyModule implements ITrackTrackersPrivacyModule { mListeners.remove(listener); } @Override public void clearListeners() { mListeners.clear(); Loading