From a2c74dc52f737aacdf9fd1029ca52ccfa2801b4b Mon Sep 17 00:00:00 2001 From: n0tst3v3 Date: Wed, 19 Aug 2026 00:56:38 -0600 Subject: [PATCH] chore(map): add missing package declaration to MapActivity --- PROJECT_CONTEXT.md | 450 ++++++++++++++++++ .../com/wytehat/btlogger/MapActivity.java | 2 + 2 files changed, 452 insertions(+) create mode 100644 PROJECT_CONTEXT.md diff --git a/PROJECT_CONTEXT.md b/PROJECT_CONTEXT.md new file mode 100644 index 0000000..7f0d9f3 --- /dev/null +++ b/PROJECT_CONTEXT.md @@ -0,0 +1,450 @@ +# BlueToothLogger Android Application - Technical Project Context + +## Project Overview + +**Project Name:** BlueToothLogger +**Package:** `com.wytehat.btlogger` +**Location:** `/Users/n0tst3v3/bletracker/BlueToothLogger` +**Type:** Bluetooth tracking and logging application with spatial analysis capabilities + +--- + +## Core Classes and Inheritance + +| Class | Extends | Implements | Purpose | +|-------|---------|------------|---------| +| `MainActivity` | Activity | ItemActionListener | Main entry point, UI controller | +| `BluetoothTrackingService` | Service | LocationListener | Background Bluetooth tracking | +| `TrackerDatabase` | SQLiteOpenHelper | - | SQLite database wrapper | +| `MapActivity` | Activity | - | Map visualization | +| `DeviceManagerActivity` | Activity | - | Device management UI | +| `LiveRangeFinderActivity` | Activity | LocationListener, SensorEventListener | Real-time signal finder | +| `BluetoothRadarView` | View | - | Custom radar visualization | +| `DeviceListAdapter` | BaseAdapter | - | List adapter for devices | + +--- + +## BluetoothTrackingService - Technical Details + +### Constants +```java +public static final String ACTION_DATA_CHANGED = "com.wytehat.btlogger.DATA_CHANGED" +public static final String ACTION_CONFIG_CHANGED = "com.wytehat.btlogger.CONFIG_CHANGED" +public static final String ACTION_RANGE_MODE = "com.wytehat.btlogger.RANGE_MODE" +private static final int NOTIFICATION_ID = 42 +private static final String CHANNEL_ID = "bluetooth_tracking" +private static final String ALERT_CHANNEL_ID = "tracked_item_disconnects" +``` + +### Fields +```java +private TrackerDatabase db +private LocationManager locationManager +private BluetoothAdapter bluetooth +private Location lastLocation +private boolean receiverRegistered +private boolean rangeModeActive +private int phoneBattery = 100 +private final Handler handler = new Handler() +private final HashMap lastPeriodicLog +``` + +### Key Methods +```java +public void onCreate() +public int onStartCommand(Intent intent, int flags, int startId) +public void onDestroy() +public IBinder onBind(Intent intent) + +// Location callbacks +public void onLocationChanged(Location location) +public void onProviderDisabled(String provider) +public void onProviderEnabled(String provider) +public void onStatusChanged(String provider, int status, Bundle extras) + +// Bluetooth callbacks +public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) + +// Private methods +private void loadLastLocation() +private void configureLocation() +private int shortestActiveInterval() +private void stopLocation() +private void captureFresh(String address, long eventTime) +private TrackerDatabase.Fix currentFix() +private TrackerDatabase.Fix fix(Location location) +private void resolveVendor(String address, int companyId) +private String bytesToHex(byte[] data) +private int parseCompanyId(byte[] scanRecord) +private String infer(DeviceRecord record) +private void disconnectAll(String reason) +private void syncPairedDevices() +private void restartBackgroundScan() +private boolean shouldBackgroundScan() +private boolean isLocationEligible(DeviceRecord record, long now) +private void notifyChanged() +private boolean hasLocationPermission() +private boolean hasBluetoothPermission() +private String address(BluetoothDevice device) +private String name(BluetoothDevice device) +private Location newer(Location first, Location second) +private void showDisconnectAlert(DeviceRecord record, String reason) +private Notification buildNotification() +``` + +--- + +## TrackerDatabase - Technical Details + +### Constants +```java +private static final String DB_NAME = "bluetooth_tracker.db" +private static final int DB_VERSION = 15 +``` + +### Inner Class: Fix +```java +public static class Fix { + public double latitude + public double longitude + public float accuracy + public Fix(double lat, double lon, float acc) +} +``` + +### Key Methods +```java +public TrackerDatabase(Context context) +public void onCreate(SQLiteDatabase db) +public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) + +// Device tracking +public synchronized void connected(String address, String broadcast, long time, Fix fix) +public synchronized void disconnected(String address, String broadcast, long time, String reason) +public synchronized void telemetry(String address, String broadcast, Integer battery, String vendor, String category, long time) +public synchronized void recordObservation(String address, long time, int rssi, int txPower) +public synchronized void updateLocation(String address, Fix fix, long time) + +// Profile and calibration +public synchronized void updateProfile(String address, String title, String photo, String color, long time) +public synchronized void updateCalibration(String address, int txPower, double exponent) + +// Range finding +public synchronized void logRangeSample(String address, String sessionId, long time, int rssi, double distance) + +// Tracking settings +public synchronized void updateTracking(String address, int minutes, String color) +public synchronized void markTracked(String address, String broadcast) +public synchronized void removeFromTracking(String address) +public synchronized void setMapEnabled(String address, boolean enabled) +public synchronized void setLiveEnabled(String address, boolean enabled) +public synchronized void setTrackBroadcast(String address, boolean enabled) +public synchronized void setShowTrail(String address, boolean shown) +public synchronized void setLocationLocked(String address, boolean locked) +public synchronized void setCustomName(String address, String name) +public synchronized void setDetectedCategory(String address, String category) +public synchronized void setCategory(String address, String category) +public synchronized void setVendor(String address, String vendor) +public synchronized void setManualVendor(String address, String vendor) + +// Lookups +public synchronized String lookupOui(String address) +public synchronized String lookupCompany(int companyId) + +// Queries +public synchronized DeviceRecord get(String address) +public synchronized List all() +public synchronized List tracked() +public synchronized List history(String address, long since) +``` + +--- + +## MainActivity - Technical Details + +### Constants +```java +private static final int PERMISSIONS = 100 +private static final int CAMERA = 200 +``` + +### Fields +```java +private TrackerDatabase db +private DeviceListAdapter adapter +private boolean registered +private DeviceRecord editing +private final Handler refreshHandler = new Handler() +private final Runnable refreshLiveAvailability +private final BroadcastReceiver updates +``` + +### Key Methods +```java +protected void onCreate(Bundle state) +protected void onResume() +protected void onPause() +protected void onDestroy() + +// UI actions +public void edit(DeviceRecord record) +public void map(DeviceRecord record) +public void live(DeviceRecord record) +public void manage(DeviceRecord record) + +// Device operations +private void removeTrackedItem(DeviceRecord record) +private void toggleBroadcastTracking(DeviceRecord record) +private void toggleTrail(DeviceRecord record) +private void refind(DeviceRecord record) + +// Renaming and settings +private void rename(DeviceRecord record) +private void chooseTracking(DeviceRecord record) +private void chooseColor(DeviceRecord record, int minutes) +private void takePhoto() +protected void onActivityResult(int request, int result, Intent data) +private void showSettings() +private void openNotificationSettings() +private void openAppSettings(String instruction) +private boolean isBatteryOptimizationDisabled() +private void requestBackgroundProtection() +private void showTrackingInformation() + +// Permissions +public void onRequestPermissionsResult(int request, String[] permissions, int[] results) +private void requestNeededPermissions() +private void addPermission(List list, String permission) +private void reload() +``` + +--- + +## LiveRangeFinderActivity - Technical Details + +### Implements +```java +implements LocationListener, SensorEventListener, ItemActionListener +``` + +### Key Methods +```java +protected void onCreate(Bundle savedState) +protected void onPause() +protected void onDestroy() + +// Location callbacks +public void onLocationChanged(Location location) +public void onProviderDisabled(String provider) +public void onProviderEnabled(String provider) +public void onStatusChanged(String provider, int status, Bundle extras) + +// Sensor callbacks +public void onSensorChanged(SensorEvent event) +public void onAccuracyChanged(Sensor sensor, int accuracy) + +// Bluetooth callbacks +public void onScanResult(int callbackType, ScanResult result) +public void onBatchScanResults(List results) +public void onScanFailed(int errorCode) + +// UI actions +private void startSearch() +private void stopSearch(String message) +private void tagItemHere() +private void startCalibration() +private void updateRadar() +private void updateRangeDisplay() +private void updateDistanceDisplay() +private void updateCalibrationDisplay() +private void updateSearchDisplay() +private void updateSearchStatus() +private void updateSearchProgress() +private void updateSearchResults() +private void updateSearchSettings() +private void updateSearchControls() +private void updateSearchUI() +``` + +--- + +## MapActivity - Technical Details + +### Implements +```java +implements LocationListener, SensorEventListener, ItemActionListener +``` + +### Key Methods +```java +protected void onCreate(Bundle state) +protected void onResume() +protected void onPause() +protected void onDestroy() + +// Location callbacks +public void onLocationChanged(Location location) +public void onProviderDisabled(String provider) +public void onProviderEnabled(String provider) +public void onStatusChanged(String provider, int status, Bundle extras) + +// Sensor callbacks +public void onSensorChanged(SensorEvent event) +public void onAccuracyChanged(Sensor sensor, int accuracy) + +// Map operations +private void updateMap() +private void updateMarkers() +private void updateTrails() +private void updateCamera() +private void updateLocation() +private void updateRange() +private void updateCalibration() +private void updateSearch() +private void updateSettings() +private void updateUI() +``` + +--- + +## DeviceManagerActivity - Technical Details + +### Key Methods +```java +protected void onCreate(Bundle state) +protected void onPause() +protected void onDestroy() + +// Bluetooth scanning +private void startScan() +private void stopScan() +private void refreshCategoryOptions() +private void updateRadar() + +// Device management +private void toggleMap(DeviceRecord record, Button button) +private void toggleTrack(DeviceRecord record, Button button) +private void editSignal(DeviceRecord record) +private void confirmRemoveSignal(SignalEntry entry) +private void copyText(String label, String text) + +// Adapters +private class SignalGridAdapter extends BaseAdapter +private class PairedAdapter extends BaseAdapter +``` + +--- + +## BluetoothRadarView - Technical Details + +### Extends +```java +extends View +``` + +### Key Features +- Custom radar-like visualization +- Radial gradient rendering +- Touch event handling +- Signal strength visualization + +--- + +## Data Models + +### DeviceRecord +```java +public class DeviceRecord { + public String address + public String title + public String broadcast + public String category + public String vendor + public String color + public int trackingMinutes + public boolean mapEnabled + public boolean liveEnabled + public boolean trackBroadcast + public boolean showTrail + public boolean locationLocked + public int txPower + public double exponent + public long lastSeen + public long lastLocation + public int battery + public String photo +} +``` + +### LocationPoint +```java +public class LocationPoint { + public String address + public double latitude + public double longitude + public float accuracy + public long time +} +``` + +--- + +## Key Android Components + +### Permissions Required +- `BLUETOOTH` - Bluetooth scanning and discovery +- `BLUETOOTH_ADMIN` - Bluetooth administration +- `ACCESS_FINE_LOCATION` - Precise location access +- `ACCESS_COARSE_LOCATION` - Approximate location access +- `FOREGROUND_SERVICE` - Background service execution +- `CAMERA` - Device photo capture +- `RECEIVE_BOOT_COMPLETED` - Auto-start on boot + +### Services +- `BluetoothTrackingService` - Foreground service for continuous tracking +- `LocationManager` - GPS and network location services +- `BluetoothAdapter` - Bluetooth scanning and discovery + +### Broadcast Receivers +- `DATA_CHANGED` - Device data updates +- `CONFIG_CHANGED` - Configuration changes +- `RANGE_MODE` - Range finder mode changes +- `BOOT_COMPLETED` - System boot completion + +--- + +## Signal Processing Flow + +``` +Bluetooth Scan → LeScanCallback → RSSI Reading + ↓ + BluetoothTrackingService + ↓ + captureFresh() → Fix() + ↓ + TrackerDatabase.recordObservation() + ↓ + SpatialGradientEngine Analysis + ↓ + RangeStateMachine State Update + ↓ + MapActivity / BluetoothRadarView Update +``` + +--- + +## Database Schema (Version 15) + +### Tables +- `devices` - Device records and metadata +- `locations` - GPS location history +- `observations` - RSSI observations +- `telemetry` - Battery and vendor info +- `calibrations` - TX power and exponent +- `range_samples` - Range finding data +- `vendors` - Vendor lookup table +- `categories` - Device categories + +--- + +*Document generated from technical analysis of Java source files* diff --git a/app/src/main/java/com/wytehat/btlogger/MapActivity.java b/app/src/main/java/com/wytehat/btlogger/MapActivity.java index c35f08f..f0fcc46 100644 --- a/app/src/main/java/com/wytehat/btlogger/MapActivity.java +++ b/app/src/main/java/com/wytehat/btlogger/MapActivity.java @@ -1,3 +1,5 @@ +package com.wytehat.btlogger; + import android.app.Activity; import android.app.DatePickerDialog; import android.app.TimePickerDialog;