all_device_sensors 1.0.1 copy "all_device_sensors: ^1.0.1" to clipboard
all_device_sensors: ^1.0.1 copied to clipboard

A Flutter plugin to access all device sensors — accelerometer, gyroscope, magnetometer, linear acceleration, gravity, barometer, proximity, light and step counter. By Bharathwaj.

all_device_sensors #

A comprehensive Flutter plugin to access all device sensors including accelerometer, gyroscope, and magnetometer with real-time streaming support.

Author: Bharathwaj

Features #

✅ Get list of all available sensors on the device
✅ Real-time accelerometer data streaming
✅ Real-time gyroscope data streaming
✅ Real-time magnetometer data streaming
✅ Cross-platform support (Android & iOS)
✅ Detailed sensor information (name, vendor, type, power, resolution)

Supported Sensors #

  • Accelerometer - Measures device acceleration
  • Gyroscope - Measures device rotation rate
  • Magnetometer - Measures magnetic field
  • And all other sensors available on the device

Installation #

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

dependencies:
  all_device_sensors: ^1.0.0

Then run:

flutter pub get

Platform Setup #

iOS #

Add the following to your Info.plist file:

<key>NSMotionUsageDescription</key>
<string>This app needs access to motion sensors</string>

Android #

No additional setup required. The plugin automatically handles sensor access.

Usage #

Import the package #

import 'package:all_device_sensors/all_device_sensors.dart';

Get Platform Version #

final allDeviceSensors = AllDeviceSensors();
String? version = await allDeviceSensors.getPlatformVersion();
print('Platform: $version');

Get All Available Sensors #

final allDeviceSensors = AllDeviceSensors();
List<Map<String, dynamic>>? sensors = await allDeviceSensors.getSensors();

sensors?.forEach((sensor) {
  print('Name: ${sensor['name']}');
  print('Vendor: ${sensor['vendor']}');
  print('Type: ${sensor['type']}');
  print('Power: ${sensor['power']} mA');
  print('Resolution: ${sensor['resolution']}');
});

Stream Accelerometer Data #

final allDeviceSensors = AllDeviceSensors();

StreamSubscription? subscription = allDeviceSensors.accelerometerStream.listen((data) {
  print('Accelerometer - X: ${data['x']}, Y: ${data['y']}, Z: ${data['z']}');
});

// Don't forget to cancel the subscription
subscription?.cancel();

Stream Gyroscope Data #

final allDeviceSensors = AllDeviceSensors();

StreamSubscription? subscription = allDeviceSensors.gyroscopeStream.listen((data) {
  print('Gyroscope - X: ${data['x']}, Y: ${data['y']}, Z: ${data['z']}');
});

// Don't forget to cancel the subscription
subscription?.cancel();

Stream Magnetometer Data #

final allDeviceSensors = AllDeviceSensors();

StreamSubscription? subscription = allDeviceSensors.magnetometerStream.listen((data) {
  print('Magnetometer - X: ${data['x']}, Y: ${data['y']}, Z: ${data['z']}');
});

// Don't forget to cancel the subscription
subscription?.cancel();

Complete Example #

import 'package:flutter/material.dart';
import 'dart:async';
import 'package:all_device_sensors/all_device_sensors.dart';

class SensorPage extends StatefulWidget {
  @override
  State<SensorPage> createState() => _SensorPageState();
}

class _SensorPageState extends State<SensorPage> {
  final _plugin = AllDeviceSensors();
  Map<String, dynamic> _accelerometerData = {};
  StreamSubscription? _subscription;

  @override
  void initState() {
    super.initState();
    _subscription = _plugin.accelerometerStream.listen((data) {
      setState(() {
        _accelerometerData = data;
      });
    });
  }

  @override
  void dispose() {
    _subscription?.cancel();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Sensors')),
      body: Center(
        child: Text(
          'X: ${_accelerometerData['x']?.toStringAsFixed(2)}\n'
          'Y: ${_accelerometerData['y']?.toStringAsFixed(2)}\n'
          'Z: ${_accelerometerData['z']?.toStringAsFixed(2)}',
        ),
      ),
    );
  }
}

Sensor Data Format #

All sensor streams return data in the following format:

{
  'x': double,      // X-axis value
  'y': double,      // Y-axis value
  'z': double,      // Z-axis value
  'timestamp': int  // Timestamp in milliseconds
}

API Reference #

Methods #

Method Return Type Description
getPlatformVersion() Future<String?> Returns the platform version
getSensors() Future<List<Map<String, dynamic>>?> Returns list of all available sensors

Streams #

Stream Return Type Description
accelerometerStream Stream<Map<String, dynamic>> Real-time accelerometer data
gyroscopeStream Stream<Map<String, dynamic>> Real-time gyroscope data
magnetometerStream Stream<Map<String, dynamic>> Real-time magnetometer data

Sensor Information Fields #

When calling getSensors(), each sensor contains:

  • name - Sensor name
  • vendor - Sensor manufacturer
  • type - Sensor type code
  • version - Sensor version
  • power - Power consumption in mA
  • resolution - Sensor resolution
  • maxRange - Maximum sensor range

Performance Tips #

  1. Cancel subscriptions when not needed to save battery
  2. Use appropriate update intervals based on your needs
  3. Handle sensor unavailability gracefully
  4. Test on real devices as emulators may not have all sensors

Troubleshooting #

iOS: Sensors not working #

  • Ensure NSMotionUsageDescription is added to Info.plist
  • Test on a real device (simulator has limited sensor support)

Android: No sensor data #

  • Check device has the required sensors
  • Ensure app has proper permissions

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.

Author #

Bharathwaj

Changelog #

See CHANGELOG.md for version history.

Support #

For issues, feature requests, or questions, please file an issue on the GitHub repository.

0
likes
150
points
68
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin to access all device sensors — accelerometer, gyroscope, magnetometer, linear acceleration, gravity, barometer, proximity, light and step counter. By Bharathwaj.

Repository (GitHub)

Topics

#sensors #accelerometer #gyroscope #barometer #hardware

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on all_device_sensors

Packages that implement all_device_sensors