2025-07-03 21:14:56 -04:00
2025-07-03 21:13:23 -04:00
2025-07-03 17:52:05 -04:00
2025-07-03 17:52:05 -04:00
2025-07-03 17:52:05 -04:00
2025-07-03 17:52:05 -04:00
2025-07-03 20:42:48 -04:00

LocalChat (lchat)

A peer-to-peer chat application for Android using Wi-Fi Aware (NAN - Neighbor Awareness Networking) technology. Chat with nearby users without internet or traditional Wi-Fi access points.

Overview

Package Name: com.mattintech.lchat
Min SDK: API 26 (Android 8.0)
Technology: Wi-Fi Aware (NAN)

Features

Core Functionality

  • Dual Mode Operation: Single APK that can function as both host and client
  • Direct P2P Communication: No internet or router required
  • Real-time Messaging: Instant message delivery to nearby devices
  • Auto-discovery: Automatically find and connect to nearby chat rooms
  • Session Management: Maintain chat sessions while devices are in range

User Features

  • Create or join chat rooms
  • Set custom nicknames
  • View active users in range
  • Message history (session-based)
  • Material Design 3 interface
  • Background service for persistent connections

Technical Requirements

Android Permissions

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

Architecture

Single APK Design

The app operates in two modes within a single application:

  1. Host Mode - Publishes a chat service for others to discover
  2. Client Mode - Subscribes to discover available chat services

Key Components

  • WifiAwareManager - Core Wi-Fi Aware functionality
  • PublishConfig - Configuration for hosting chat rooms
  • SubscribeConfig - Configuration for discovering chat rooms
  • WifiAwareSession - Manages aware connections
  • NetworkSpecifier - Establishes data paths between devices

Data Flow

  1. Discovery Phase

    • Host publishes service with room name
    • Clients subscribe to discover services
    • Service discovery triggers connection UI
  2. Connection Phase

    • Client requests connection to host
    • Host accepts/manages connections
    • Bidirectional data path established
  3. Communication Phase

    • Messages sent over established data path
    • All connected clients receive messages
    • Host manages client list and broadcasting

Project Structure

lchat/
├── app/
│   ├── src/main/java/com/mattintech/lchat/
│   │   ├── MainActivity.kt
│   │   ├── network/
│   │   │   ├── WifiAwareManager.kt
│   │   │   ├── ChatService.kt
│   │   │   └── MessageHandler.kt
│   │   ├── ui/
│   │   │   ├── ChatFragment.kt
│   │   │   ├── LobbyFragment.kt
│   │   │   └── adapters/
│   │   ├── data/
│   │   │   ├── Message.kt
│   │   │   ├── User.kt
│   │   │   └── ChatRepository.kt
│   │   └── utils/
│   └── src/main/res/
├── gradle/
└── build.gradle.kts

Development Roadmap

Phase 1: Foundation

  • Basic Android project setup
  • Wi-Fi Aware permission handling
  • Simple host/client mode switching

Phase 2: Core Messaging

  • Message sending/receiving
  • User management
  • Basic UI implementation

Phase 3: Enhanced Features

  • Message persistence
  • Reconnection handling
  • Advanced UI features

Phase 4: Polish

  • Error handling
  • Performance optimization
  • UI/UX refinements

Building

./gradlew assembleDebug

Testing

Wi-Fi Aware requires physical devices for testing (API 26+). Emulator support is limited.

License

[To be determined]

Description
No description provided
Readme 137 KiB
Languages
Kotlin 100%