Flutter振动控制插件vibration_ohos的使用

Flutter振动控制插件vibration_ohos的使用

vibration_ohos

vibration_ohos 是 OpenHarmony 平台上 vibration 插件的实现。

在你的项目的 module.json5 文件中增加以下权限设置:

{
    "requestPermissions": [
         {"name" :  "ohos.permission.VIBRATE"}
    ]
}

使用方法

首先,在你的 pubspec.yaml 文件中添加依赖项:

dependencies:
  vibration: any
  vibration_ohos: any

基本用法

以下是一个基本的振动示例:

(VibrationPlatform.instance as VibrationOhos).vibrate(
  vibrateEffect: const VibratePreset(count: 100), // 振动次数
  vibrateAttribute: const VibrateAttribute(       // 振动属性
    usage: 'alarm',                              // 振动用途
  ),
);

完整示例

以下是一个完整的示例代码,展示了如何在 Flutter 应用程序中使用 vibration_ohos 插件进行振动控制。

import 'package:flutter/material.dart';
import 'package:flutter/services.dart' show rootBundle;
import 'package:flutter_platform_utils/flutter_platform_utils.dart';
import 'package:vibration/vibration.dart';
import 'package:vibration_ohos/vibration_ohos.dart';

void main() => runApp(const VibratingApp());

class VibratingApp extends StatelessWidget {
  const VibratingApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('振动插件示例应用'),
        ),
        body: Builder(
          builder: (BuildContext context) {
            return Center(
              child: Column(
                children: <Widget>[
                  ElevatedButton(
                    child: const Text('默认振动500毫秒'),
                    onPressed: () {
                      Vibration.vibrate();
                    },
                  ),
                  ElevatedButton(
                    child: const Text('振动1000毫秒'),
                    onPressed: () {
                      Vibration.vibrate(duration: 1000);
                    },
                  ),
                  if (!PlatformUtils.isOhos)
                    ElevatedButton(
                      child: const Text('使用模式振动'),
                      onPressed: () {
                        const snackBar = SnackBar(
                          content: Text(
                            '模式: 等待0.5秒,振动1秒,等待0.5秒,振动2秒,等待0.5秒,振动3秒,等待0.5秒,振动0.5秒',
                          ),
                        );
                        ScaffoldMessenger.of(context).showSnackBar(snackBar);
                        Vibration.vibrate(
                          pattern: [500, 1000, 500, 2000, 500, 3000, 500, 500],
                        );
                      },
                    ),
                  if (!PlatformUtils.isOhos)
                    ElevatedButton(
                      child: const Text('使用模式和振幅振动'),
                      onPressed: () {
                        const snackBar = SnackBar(
                          content: Text(
                            '模式: 等待0.5秒,振动1秒,等待0.5秒,振动2秒,等待0.5秒,振动3秒,等待0.5秒,振动0.5秒',
                          ),
                        );

                        ScaffoldMessenger.of(context).showSnackBar(snackBar);
                        Vibration.vibrate(
                          pattern: [500, 1000, 500, 2000, 500, 3000, 500, 500],
                          intensities: [0, 128, 0, 255, 0, 64, 0, 255],
                        );
                      },
                    ),
                  if (PlatformUtils.isOhos)
                    ElevatedButton(
                      child: const Text('使用VibratePreset振动'),
                      onPressed: () {
                        (VibrationPlatform.instance as VibrationOhos).vibrate(
                          vibrateEffect: const VibratePreset(count: 100),
                          vibrateAttribute: const VibrateAttribute(
                            usage: 'alarm',
                          ),
                        );
                      },
                    ),
                  // ohos only
                  // TODO: 不支持当前版本
                  if (PlatformUtils.isOhos)
                    ElevatedButton(
                      child: const Text('使用自定义haptic_file振动'),
                      onPressed: () {
                        rootBundle.load('assets/haptic_file.json').then((data) {
                          (VibrationPlatform.instance as VibrationOhos).vibrate(
                            vibrateEffect: VibrateFromFile(
                              hapticFd: HapticFileDescriptor(
                                data: data.buffer.asUint8List(),
                              ),
                            ),
                            vibrateAttribute: const VibrateAttribute(
                              usage: 'alarm',
                            ),
                          );
                        });
                      },
                    )
                ],
              ),
            );
          },
        ),
      ),
    );
  }
}

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

1 回复

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


vibration_ohos 是一个用于在 OpenHarmony(OHOS)平台上控制设备振动的 Flutter 插件。它允许开发者在 Flutter 应用中触发设备的振动功能。以下是关于如何使用 vibration_ohos 插件的基本指南。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 vibration_ohos 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  vibration_ohos: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在你的 Dart 文件中导入 vibration_ohos 插件。

import 'package:vibration_ohos/vibration_ohos.dart';

3. 使用插件

vibration_ohos 插件提供了几个方法来控制设备的振动。

3.1 触发振动

你可以使用 vibrate 方法来触发设备振动。你可以指定振动的持续时间(以毫秒为单位)。

void triggerVibration() async {
  await VibrationOhos.vibrate(duration: 500);  // 振动 500 毫秒
}

3.2 停止振动

如果你想要停止当前的振动,可以使用 cancel 方法。

void stopVibration() async {
  await VibrationOhos.cancel();
}

3.3 检查振动支持

在触发振动之前,你可以检查设备是否支持振动功能。

void checkVibrationSupport() async {
  bool hasVibrator = await VibrationOhos.hasVibrator();
  if (hasVibrator) {
    print("设备支持振动");
  } else {
    print("设备不支持振动");
  }
}

4. 完整示例

以下是一个完整的示例,展示了如何在 Flutter 应用中使用 vibration_ohos 插件。

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: VibrationDemo(),
    );
  }
}

class VibrationDemo extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Vibration Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: () async {
                bool hasVibrator = await VibrationOhos.hasVibrator();
                if (hasVibrator) {
                  await VibrationOhos.vibrate(duration: 500);
                } else {
                  print("设备不支持振动");
                }
              },
              child: Text('触发振动'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                await VibrationOhos.cancel();
              },
              child: Text('停止振动'),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部