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

A Flutter plugin for accessing device sensors like accelerometer, gyroscope, and step detector.

flutter_sensors #

A Flutter plugin for accessing device sensors such as accelerometer, gyroscope, and step detector on Android and iOS.

Installation #

Add the following to your pubspec.yaml:

dependencies:
  flutter_sensors: ^0.1.0

Run:

flutter pub get

Usage #

The plugin provides a SensorManager class to check sensor availability and stream sensor data. Below is an example of how to use it to access accelerometer data:

import 'package:flutter/material.dart';
import 'package:flutter_sensors/flutter_sensors.dart';
import 'package:permission_handler/permission_handler.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SensorScreen(),
    );
  }
}

class SensorScreen extends StatefulWidget {
  @override
  _SensorScreenState createState() => _SensorScreenState();
}

class _SensorScreenState extends State<SensorScreen> {
  final SensorManager _sensorManager = SensorManager();
  Stream<SensorEvent>? _sensorStream;

  @override
  void initState() {
    super.initState();
    _checkSensorAndStart();
  }

  Future<void> _checkSensorAndStart() async {
    await requestActivityPermission();
    bool isAvailable = await _sensorManager.isSensorAvailable(Sensors.ACCELEROMETER);
    if (isAvailable) {
      _sensorStream = await _sensorManager.sensorUpdates(
        sensorId: Sensors.ACCELEROMETER,
        interval: Sensors.SENSOR_DELAY_NORMAL,
      );
      setState(() {});
    }
  }

  Future<void> requestActivityPermission() async {
    if (await Permission.activityRecognition.request().isGranted) {
      print('Permission granted');
    } else {
      print('Activity recognition permission denied');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Sensor Data')),
      body: _sensorStream == null
          ? Center(child: Text('Sensor not available'))
          : StreamBuilder<SensorEvent>(
              stream: _sensorStream,
              builder: (context, snapshot) {
                if (!snapshot.hasData) {
                  return Center(child: CircularProgressIndicator());
                }
                final event = snapshot.data!;
                return Center(
                  child: Text(
                    'Sensor: ${event.sensorId}\n'
                    'Data: ${event.data}\n'
                    'Accuracy: ${event.accuracy}',
                  ),
                );
              },
            ),
    );
  }
}

Permissions #

Android #

Add the following to android/app/src/main/AndroidManifest.xml:

<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>

iOS #

Add the following to ios/Runner/Info.plist:

<key>NSMotionUsageDescription</key>
<string>We need access to motion data for sensor functionality.</string>

Supported Sensors #

  • Accelerometer (ID: 1)
  • Gyroscope (ID: 4)
  • Magnetic Field (ID: 2)
  • Linear Acceleration (ID: 10)
  • Step Detector (ID: 18)
  • Rotation Vector (ID: 11)

API Reference #

  • SensorManager.isSensorAvailable(sensorId): Check if a sensor is available.
  • SensorManager.sensorUpdates(sensorId, interval): Stream sensor data.
  • SensorManager.updateSensorInterval(sensorId, interval): Update the sensor update interval.
  • Sensors: Constants for sensor IDs and intervals (e.g., Sensors.ACCELEROMETER, Sensors.SENSOR_DELAY_NORMAL).

Contributing #

Contributions are welcome! Please submit issues or pull requests to GitHub.

License #

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

1
likes
145
points
27
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin for accessing device sensors like accelerometer, gyroscope, and step detector.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on sensors_new

Packages that implement sensors_new