Flutter控制设备音量和振动的Flutter插件resonance的使用

Flutter控制设备音量和振动的Flutter插件resonance的使用

描述

Flutter Resonance 是一个用于控制设备音量和振动的Flutter插件。它基于Android的音量和振动控制器,允许开发者在不与用户交互的情况下控制音量,并支持自定义振动模式。

Resonance

下载

您可以从 Pub 获取最新版本的插件。

功能特性

音量控制

  • 获取当前音量等级
  • 获取最大音量等级
  • 设置音量等级
  • 设置最大音量等级
  • 设置静音音量等级
  • 显示音量UI(仅限Android)
  • 音量流类型(音乐、通知、闹钟等)
  • 监听音量等级变化

振动控制

  • 创建一次性振动
  • 创建模式化振动
  • 取消模式化振动

使用示例

获取当前音量等级

var crntVol = await Resonance.volumeGetCurrentLevel(streamType: StreamType.alarm);
print(crntVol);

设置音量等级

var crntVol = await Resonance.volumeSetLevel(0.5, showVolumeUI: true);
print(crntVol);

添加音量监听器

double _volumeLevel = 0;

@override
void initState() {
    // Add listener
    Resonance().addVolumeListener((volume) {
        setState(() {
            _volumeLevel = volume;
        });
    });
    super.initState();
}

@override
void dispose() {
    // Remove listener
    Resonance().removeVolumeListener();
    super.dispose();
}

创建一次性振动

await Resonance.vibrate(duration: const Duration(milliseconds: 1000));

创建模式化振动

await Resonance.vibratePattern(
    [0, 400, 1000, 600, 1000, 800],
    amplitude: 255, // Default: null
    repeat: false, // Default: false
);

取消活动模式化振动

await Resonance.vibrationCancel();

完整示例代码

以下是一个完整的Flutter应用示例,展示了如何使用Resonance插件来控制音量和振动:

import 'package:flutter/material.dart';
import 'package:resonance/resonance.dart';

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

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  double _volumeLevel = 0;
  double _getMaxVolumeLevel = 0;

  @override
  void initState() {
    super.initState();
    Resonance().addVolumeListener((volume) {
      setState(() {
        _volumeLevel = volume;
      });
    });
  }

  @override
  void dispose() {
    Resonance().removeVolumeListener();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Resonance'),
        ),
        body: SingleChildScrollView(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              const Padding(padding: EdgeInsets.only(top: 12.0)),
              const Text('Try to change volume by pressing hardware button\n'),
              Text('Current volume on: ${_volumeLevel.toStringAsFixed(2)}\n'),
              ElevatedButton(
                onPressed: () async {
                  var volume = await Resonance.volumeGetCurrentLevel();
                  setState(() {
                    _volumeLevel = volume;
                  });
                },
                child: const Text(
                  'Get Current Volume',
                ),
              ),
              ElevatedButton(
                onPressed: () async {
                  var volume =
                      await Resonance.volumeSetLevel(0.5, showVolumeUI: true);
                  setState(() {
                    _volumeLevel = volume;
                  });
                },
                child: const Text(
                  'Set Volume to 0.5',
                ),
              ),
              ElevatedButton(
                onPressed: () async {
                  var volume = await Resonance.volumeSetMaxLevel();
                  setState(() {
                    _volumeLevel = volume;
                  });
                },
                child: const Text(
                  'Set Max Volume',
                ),
              ),
              ElevatedButton(
                onPressed: () async {
                  var volume = await Resonance.volumeSetMuteLevel();
                  setState(() {
                    _volumeLevel = volume;
                  });
                },
                child: const Text(
                  'Set Mute Volume',
                ),
              ),
              Text('\nMax Volume : $_getMaxVolumeLevel\n'),
              ElevatedButton(
                onPressed: () async {
                  var volume = await Resonance.volumeGetMaxLevel();
                  setState(() {
                    _getMaxVolumeLevel = volume;
                  });
                },
                child: const Text(
                  'Get Max Volume',
                ),
              ),
              ElevatedButton(
                onPressed: () {
                  setState(() {
                    _volumeLevel = 0;
                    _getMaxVolumeLevel = 0;
                  });
                },
                child: const Text(
                  'Reset',
                ),
              ),
              const Divider(
                thickness: 1.0,
              ),
              ElevatedButton(
                onPressed: () async {
                  await Resonance.vibrate(
                      duration: const Duration(milliseconds: 2000));
                },
                child: const Text(
                  'Vibrate',
                ),
              ),
              ElevatedButton(
                onPressed: () async {
                  await Resonance.vibratePattern(
                    [0, 400, 1000, 600, 1000, 800],
                    amplitude: 100,
                    repeat: true,
                  );
                },
                child: const Text(
                  'Patterned Vibrate',
                ),
              ),
              ElevatedButton(
                onPressed: () async {
                  await Resonance.vibrationCancel();
                },
                child: const Text(
                  'Cancel Vibrate',
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

注意事项

  • 该插件目前仅适用于Android平台。
  • 在使用插件时,请确保遵循相关权限要求。

开发者信息

许可证

Resonance遵循MIT许可证,详情请参阅许可证文件

通过上述内容,您应该能够理解并使用Resonance插件来实现对设备音量和振动的控制。如果您有任何问题或需要进一步的帮助,请随时联系开发者或查阅官方文档。


更多关于Flutter控制设备音量和振动的Flutter插件resonance的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter控制设备音量和振动的Flutter插件resonance的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


Flutter Resonance 是一个用于控制设备音量和振动的Flutter插件。它基于Android的音量和振动控制器,允许开发者在不与用户交互的情况下控制音量,并支持自定义振动模式。

回到顶部