From da2fa7cd48f737b5b8064252f2eedfba9af4b444 Mon Sep 17 00:00:00 2001 From: Sergey Kazmin <43613813+yerseg@users.noreply.github.com> Date: Sat, 6 Mar 2021 17:47:12 +0300 Subject: [PATCH] Common improvements (#17) * bf * remove trash and remove applications usage tracking * change order of settings showing --- profiling_app/src/main/AndroidManifest.xml | 6 +- .../com/yerseg/profiler/MainActivity.java | 40 ++------ .../com/yerseg/profiler/ProfilingService.java | 91 ++----------------- .../src/main/res/layout/activity_main.xml | 1 - .../src/main/res/layout/content_main.xml | 19 ---- profiling_app/src/main/res/menu/menu_main.xml | 10 -- .../src/main/res/navigation/nav_graph.xml | 28 ------ profiling_app/src/main/res/values/dimens.xml | 3 - profiling_app/src/main/res/values/strings.xml | 9 -- .../src/main/res/xml/backup_descriptor.xml | 4 - 10 files changed, 18 insertions(+), 193 deletions(-) delete mode 100644 profiling_app/src/main/res/layout/content_main.xml delete mode 100644 profiling_app/src/main/res/menu/menu_main.xml delete mode 100644 profiling_app/src/main/res/navigation/nav_graph.xml delete mode 100644 profiling_app/src/main/res/values/dimens.xml delete mode 100644 profiling_app/src/main/res/xml/backup_descriptor.xml diff --git a/profiling_app/src/main/AndroidManifest.xml b/profiling_app/src/main/AndroidManifest.xml index 98d0e5e..4e2984d 100644 --- a/profiling_app/src/main/AndroidManifest.xml +++ b/profiling_app/src/main/AndroidManifest.xml @@ -11,9 +11,6 @@ - + android:theme="@style/Theme.Profiler"> 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED; } - @Override - public boolean onCreateOptionsMenu(Menu menu) { - // Inflate the menu; this adds items to the action bar if it is present. - getMenuInflater().inflate(R.menu.menu_main, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle action bar item clicks here. The action bar will - // automatically handle clicks on the Home/Up button, so long - // as you specify a parent activity in AndroidManifest.xml. - int id = item.getItemId(); - - //noinspection SimplifiableIfStatement - if (id == R.id.action_settings) { - return true; - } - - return super.onOptionsItemSelected(item); - } - private boolean shouldShowSettingsActivity(String preferencesKeyName) { SharedPreferences prefs = getSharedPreferences(getApplicationContext().getPackageName(), Context.MODE_PRIVATE); return !prefs.getBoolean(preferencesKeyName, false); diff --git a/profiling_app/src/main/java/com/yerseg/profiler/ProfilingService.java b/profiling_app/src/main/java/com/yerseg/profiler/ProfilingService.java index cea6a38..30631ee 100644 --- a/profiling_app/src/main/java/com/yerseg/profiler/ProfilingService.java +++ b/profiling_app/src/main/java/com/yerseg/profiler/ProfilingService.java @@ -13,6 +13,7 @@ import android.bluetooth.le.BluetoothLeScanner; import android.bluetooth.le.ScanCallback; import android.content.BroadcastReceiver; +import android.content.ClipData; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -46,6 +47,7 @@ import java.time.Duration; import java.util.List; import java.util.Locale; +import java.util.Set; import java.util.UUID; public class ProfilingService extends Service { @@ -59,7 +61,6 @@ public class ProfilingService extends Service { public static final int WIFI_STATS_UPDATE_FREQ = 5000; public static final int BLUETOOTH_STATS_UPDATE_FREQ = 5000; - public static final int APP_STATS_UPDATE_FREQ = 5000; public static final int LOCATION_STATS_UPDATE_FREQ = 5000; public static final String PROFILING_STATS_DIRECTORY_NAME = "ProfilingData"; @@ -87,12 +88,10 @@ public class ProfilingService extends Service { private HandlerThread mLocationProfilingThread; private HandlerThread mWifiProfilingThread; private HandlerThread mBluetoothProfilingThread; - private HandlerThread mApplicationProfilingThread; private Handler mLocationProfilingThreadHandler; private Handler mWifiProfilingThreadHandler; private Handler mBluetoothProfilingThreadHandler; - private Handler mApplicationProfilingThreadHandler; private BroadcastReceiver mWifiScanReceiver; private BroadcastReceiver mBluetoothBroadcastReceiver; @@ -121,7 +120,6 @@ public int onStartCommand(Intent intent, int flags, int startId) { startLocationTracking(); startWifiTracking(); startBluetoothTracking(); - startApplicationsStatisticTracking(); startAnyBroadcastsTracking(); PeriodicWorkRequest notifyWorkRequest = new PeriodicWorkRequest.Builder(ReminderNotificationPeriodicWorker.class, Duration.ofHours(2)).setInitialDelay(Duration.ofMinutes(5)).build(); @@ -142,7 +140,6 @@ public void onDestroy() { stopLocationTracking(); stopWifiTracking(); stopBluetoothTracking(); - stopApplicationsStatisticTracking(); stopAnyBroadcastsTracking(); WorkManager.getInstance(getApplicationContext()).cancelUniqueWork(PUSH_REMINDER_NOTIFICATION_WORK_TAG); @@ -409,86 +406,19 @@ public void run() { }); } - private void startApplicationsStatisticTracking() { - mApplicationProfilingThread = new HandlerThread("AppStatThread", Process.THREAD_PRIORITY_FOREGROUND); - mApplicationProfilingThread.start(); - - Looper looper = mApplicationProfilingThread.getLooper(); - mApplicationProfilingThreadHandler = new Handler(looper); - - mApplicationProfilingThreadHandler.post(new Runnable() { - @Override - public void run() { - try { - Utils.FileWriter.writeFile(Utils.getProfilingFilesDir(getApplicationContext()), ProfilingService.APP_STATS_FILE_NAME, getStatisticsForWritingToFile()); - } catch (Exception ex) { - ex.printStackTrace(); - } - - mApplicationProfilingThreadHandler.postDelayed(this, APP_STATS_UPDATE_FREQ); - } - - private String getStatisticsForWritingToFile() { - try { - long beginTime = java.lang.System.currentTimeMillis() - SystemClock.elapsedRealtime(); - long endTime = java.lang.System.currentTimeMillis(); - - UsageStatsManager usageStatsManager = (UsageStatsManager) getApplicationContext().getSystemService(Context.USAGE_STATS_SERVICE); - - String statResponseId = UUID.randomUUID().toString(); - String timestamp = Utils.GetTimeStamp(endTime); - - StringBuilder statistic = new StringBuilder(); - - List usageStatsList = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, beginTime, endTime); - - for (UsageStats usageStats : usageStatsList) { - statistic.append(String.format(Locale.getDefault(), "%s;%s;UsageStats;%s;%d;%d;%d;%d\n", - timestamp, - statResponseId, - usageStats.getPackageName(), - usageStats.getFirstTimeStamp(), - usageStats.getLastTimeStamp(), - usageStats.getLastTimeUsed(), - usageStats.getTotalTimeInForeground())); - } - - List eventStatsList = usageStatsManager.queryEventStats(UsageStatsManager.INTERVAL_DAILY, beginTime, endTime); - - for (EventStats eventStat : eventStatsList) { - statistic.append(String.format(Locale.getDefault(), "%s;%s;EventStats;%d;%d;%d;%d;%d;%d\n", - timestamp, - statResponseId, - eventStat.getCount(), - eventStat.getEventType(), - eventStat.getFirstTimeStamp(), - eventStat.getLastTimeStamp(), - eventStat.getLastEventTime(), - eventStat.getTotalTime())); - } - - return statistic.toString(); - } catch (Exception ex) { - ex.printStackTrace(); - return ""; - } - } - }); - } - private void startAnyBroadcastsTracking() { mAnyBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - String intentType = intent.toString(); - String intentAction = intent.getAction(); - new Thread(() -> { try { - String broadcastStats = String.format(Locale.getDefault(), "%s;%s;%s\n", + String broadcastStats = String.format(Locale.getDefault(), "%s;%s;%s;%s;%s;%s\n", Utils.GetTimeStamp(System.currentTimeMillis()), - intentType, - intentAction); + intent.getAction(), + intent.getDataString(), + intent.getPackage(), + intent.getScheme(), + intent.getType()); Utils.FileWriter.writeFile(Utils.getProfilingFilesDir(getApplicationContext()), BROADCASTS_STATS_FILE_NAME, broadcastStats); } catch (Exception ex) { @@ -531,11 +461,6 @@ private void stopBluetoothTracking() { mBluetoothProfilingThread.quit(); } - private void stopApplicationsStatisticTracking() { - mApplicationProfilingThreadHandler.removeCallbacksAndMessages(null); - mApplicationProfilingThread.quit(); - } - private void stopAnyBroadcastsTracking() { if (mAnyBroadcastReceiver != null) unregisterReceiver(mAnyBroadcastReceiver); diff --git a/profiling_app/src/main/res/layout/activity_main.xml b/profiling_app/src/main/res/layout/activity_main.xml index 1f48156..eadc371 100644 --- a/profiling_app/src/main/res/layout/activity_main.xml +++ b/profiling_app/src/main/res/layout/activity_main.xml @@ -85,7 +85,6 @@ android:id="@+id/SendDataByEmailButton" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:contentDescription="@string/todo" app:backgroundTint="@color/safe_green" app:fabSize="auto" app:layout_constraintBottom_toBottomOf="parent" diff --git a/profiling_app/src/main/res/layout/content_main.xml b/profiling_app/src/main/res/layout/content_main.xml deleted file mode 100644 index f4c4e46..0000000 --- a/profiling_app/src/main/res/layout/content_main.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/profiling_app/src/main/res/menu/menu_main.xml b/profiling_app/src/main/res/menu/menu_main.xml deleted file mode 100644 index 27755bd..0000000 --- a/profiling_app/src/main/res/menu/menu_main.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - \ No newline at end of file diff --git a/profiling_app/src/main/res/navigation/nav_graph.xml b/profiling_app/src/main/res/navigation/nav_graph.xml deleted file mode 100644 index 3d9b36a..0000000 --- a/profiling_app/src/main/res/navigation/nav_graph.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/profiling_app/src/main/res/values/dimens.xml b/profiling_app/src/main/res/values/dimens.xml deleted file mode 100644 index 125df87..0000000 --- a/profiling_app/src/main/res/values/dimens.xml +++ /dev/null @@ -1,3 +0,0 @@ - - 16dp - \ No newline at end of file diff --git a/profiling_app/src/main/res/values/strings.xml b/profiling_app/src/main/res/values/strings.xml index 8317ecb..407a050 100644 --- a/profiling_app/src/main/res/values/strings.xml +++ b/profiling_app/src/main/res/values/strings.xml @@ -1,15 +1,6 @@ Profiler - Settings - - First Fragment - Second Fragment - START - Previous - You can start and stop profiling by this buttons. - Hello second fragment. Arg: %1$s - START STOP \ No newline at end of file diff --git a/profiling_app/src/main/res/xml/backup_descriptor.xml b/profiling_app/src/main/res/xml/backup_descriptor.xml deleted file mode 100644 index 6fd6103..0000000 --- a/profiling_app/src/main/res/xml/backup_descriptor.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - -