ifp_detector 1.0.0 copy "ifp_detector: ^1.0.0" to clipboard
ifp_detector: ^1.0.0 copied to clipboard

unlisted

Detect Interactive Flat Panels (IFPs) vs tablets on Android. Analyze screen size, brand, hardware features, and stylus support with confidence scoring for licensing and feature control.

IFP Detector Plugin #

A Flutter plugin to detect whether a device is an Interactive Flat Panel (IFP) or a regular tablet. This plugin is useful for applications that need to distinguish between these device types for licensing, feature availability, or UI adaptation purposes.

Features #

  • Accurate Detection: Uses multiple hardware and software indicators to determine device type
  • Confidence Scoring: Provides a confidence score (0.0 to 1.0) for the detection result
  • Detailed Analysis: Returns comprehensive information about device characteristics
  • Simple API: Easy-to-use methods for both detailed and simple detection

Detection Logic #

The plugin analyzes several device characteristics:

  • Screen Size: Devices with screens ≥20" are typically IFPs
  • Known IFP Brands: Promethean, Newline, ViewSonic, BenQ, CleverTouch, Smart, etc.
  • Hardware Features: HDMI CEC support, Android TV Leanback features
  • Input Capabilities: Stylus/pen support detection
  • Display Properties: Screen size buckets and reliability

Installation #

Add this to your package's pubspec.yaml file:

dependencies:
  ifp_detector:
    path: ../ifp_detector  # or your plugin path

Usage #

Simple Detection #

import 'package:ifp_detector/ifp_detector.dart';

// Simple boolean check
bool isIFP = await IfpDetector.isIfp();
if (isIFP) {
  print('This is an Interactive Flat Panel');
} else {
  print('This is a regular tablet');
}

Detailed Detection #

import 'package:ifp_detector/ifp_detector.dart';

// Get detailed detection results
IfpDetectionResult result = await IfpDetector.detectIfp();

print('Device Type: ${result.isIFP ? "IFP" : "Tablet"}');
print('Confidence: ${result.confidenceLevel} (${(result.confidenceScore * 100).toStringAsFixed(1)}%)');
print('Screen Size: ${result.screenInches.toStringAsFixed(2)}" inches');
print('Screen Bucket: ${result.screenBucket}');
print('Known IFP Brand: ${result.matchedKnownIFPBrand}');
print('HDMI CEC: ${result.hasHdmiCec}');
print('Leanback UI: ${result.hasLeanback}');
print('Stylus Support: ${result.hasStylus}');
print('Screen Size Reliable: ${result.screenSizeReliable}');

Error Handling #

try {
  final result = await IfpDetector.detectIfp();
  // Use result
} on PlatformException catch (e) {
  print('Detection failed: ${e.message}');
} catch (e) {
  print('Unexpected error: $e');
}

API Reference #

IfpDetector #

Main class for IFP detection.

Methods

  • static Future<IfpDetectionResult> detectIfp()

    • Returns detailed detection results
    • Throws PlatformException on failure
  • static Future<bool> isIfp()

    • Returns simple boolean result
    • Throws PlatformException on failure

IfpDetectionResult #

Contains detailed information about the detection.

Properties

  • bool isIFP - Whether the device is detected as an IFP
  • double screenInches - Screen size in inches (diagonal)
  • String screenBucket - Screen size bucket (small, normal, large, xlarge)
  • bool matchedKnownIFPBrand - Whether device matches known IFP brand patterns
  • bool hasHdmiCec - Whether device supports HDMI CEC
  • bool hasLeanback - Whether device has Android TV Leanback features
  • bool hasStylus - Whether device supports stylus/pen input
  • bool screenSizeReliable - Whether screen size calculation is reliable
  • double confidenceScore - Confidence score (0.0 to 1.0)

Methods

  • String get confidenceLevel - Human-readable confidence level
  • Map<String, dynamic> toMap() - Convert to map
  • factory IfpDetectionResult.fromMap(Map<String, dynamic> map) - Create from map

Platform Support #

  • ✅ Android
  • ❌ iOS (not implemented)
  • ❌ Web (not applicable)
  • ❌ Desktop (not implemented)

Example App #

The plugin includes an example app that demonstrates both simple and detailed detection. Run it with:

flutter run

Use Cases #

  • Software Licensing: Different licensing models for IFPs vs tablets
  • Feature Availability: Enable/disable features based on device type
  • UI Adaptation: Optimize interface for large displays
  • Analytics: Track usage across different device types

Known IFP Brands #

The plugin recognizes these IFP manufacturers:

  • Promethean
  • Newline
  • ViewSonic
  • BenQ
  • CleverTouch
  • Smart Technologies
  • Epson
  • Hitachi
  • Panasonic
  • LG
  • Samsung
  • Sharp
  • Ricoh
  • Mimio
  • QOMO
  • Avocor
  • TouchIT
  • Boxlight
  • Triumph Board
  • Interactive Technologies

Contributing #

Contributions are welcome! Please feel free to submit a Pull Request.

License #

This project is licensed under the MIT License - see the LICENSE file for details.


Developed by Wriety - Enhancing educational technology solutions.

0
likes
0
points
123
downloads

Publisher

unverified uploader

Weekly Downloads

Detect Interactive Flat Panels (IFPs) vs tablets on Android. Analyze screen size, brand, hardware features, and stylus support with confidence scoring for licensing and feature control.

Repository (GitHub)
View/report issues

Topics

#ifp #device-detection #tablet #android #education

Documentation

Documentation

License

unknown (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on ifp_detector

Packages that implement ifp_detector