Flutter音量控制插件volume的使用
Flutter音量控制插件volume的使用
简介
volume
是一个用于在 Android 程序中控制音量的 Flutter 插件。目前尚未实现 iOS 支持,欢迎提交 PR 进行 iOS 实现。
Streams(流)
AudioManager.STREAM_VOICE_CALL -> 控制通话音量
AudioManager.STREAM_SYSTEM -> 控制系统音量
AudioManager.STREAM_RING -> 控制铃声音量
AudioManager.STREAM_MUSIC -> 控制媒体音量
AudioManager.STREAM_ALARM -> 控制闹钟音量
AudioManager.STREAM_NOTIFICATION -> 控制通知音量
显示和隐藏系统音量 UI
ShowVolumeUI.SHOW (默认) -> 更改音量时显示系统音量 UI
ShowVolumeUI.HIDE -> 更改音量时不显示系统音量 UI
函数和获取器
音量按钮在应用内生效
await Volume.controlVolume(AudioManager audioManager); // 传递任何流作为参数
返回最大可能音量(以整数形式)
await Volume.getMaxVol; // 返回一个整数
返回当前音量级别(以整数形式)
await Volume.getVol; // 返回一个整数
设置流的音量
await Volume.setVol(int i, {ShowVolumeUI showVolumeUI});
i
的最大值小于或等于Volume.getMaxVol
。showVolumeUI
是可选参数,默认为ShowVolumeUI.SHOW
。
使用示例
以下是一个完整的示例,展示了如何使用 volume
插件来控制音量。
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:volume/volume.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
AudioManager audioManager;
int maxVol, currentVol;
ShowVolumeUI showVolumeUI = ShowVolumeUI.SHOW;
[@override](/user/override)
void initState() {
super.initState();
audioManager = AudioManager.STREAM_SYSTEM;
initAudioStreamType();
updateVolumes();
}
Future<void> initAudioStreamType() async {
await Volume.controlVolume(AudioManager.STREAM_SYSTEM);
}
updateVolumes() async {
// 获取最大音量
maxVol = await Volume.getMaxVol;
// 获取当前音量
currentVol = await Volume.getVol;
setState(() {});
}
setVol(int i) async {
await Volume.setVol(i, showVolumeUI: showVolumeUI);
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('音量控制示例'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
DropdownButton(
value: audioManager,
items: [
DropdownMenuItem(
child: Text("通话音量"),
value: AudioManager.STREAM_VOICE_CALL,
),
DropdownMenuItem(
child: Text("系统音量"),
value: AudioManager.STREAM_SYSTEM,
),
DropdownMenuItem(
child: Text("铃声音量"),
value: AudioManager.STREAM_RING,
),
DropdownMenuItem(
child: Text("媒体音量"),
value: AudioManager.STREAM_MUSIC,
),
DropdownMenuItem(
child: Text("闹钟音量"),
value: AudioManager.STREAM_ALARM,
),
DropdownMenuItem(
child: Text("通知音量"),
value: AudioManager.STREAM_NOTIFICATION,
),
],
isDense: true,
onChanged: (AudioManager aM) async {
setState(() {
audioManager = aM;
});
await Volume.controlVolume(aM);
},
),
ToggleButtons(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
children: <Widget>[
Padding(
padding: const EdgeInsets.all(20.0),
child: Text("显示 UI"),
),
Padding(
padding: const EdgeInsets.all(20.0),
child: Text("隐藏 UI"),
),
],
isSelected: [
showVolumeUI == ShowVolumeUI.SHOW,
showVolumeUI == ShowVolumeUI.HIDE
],
onPressed: (int i) {
setState(() {
if (i == 0) {
showVolumeUI = ShowVolumeUI.SHOW;
} else if (i == 1) {
showVolumeUI = ShowVolumeUI.HIDE;
}
});
},
),
(currentVol != null || maxVol != null)
? Slider(
value: currentVol / 1.0,
divisions: maxVol,
max: maxVol / 1.0,
min: 0,
onChanged: (double d) {
setVol(d.toInt());
updateVolumes();
},
)
: Container(),
],
),
),
),
);
}
}
更多关于Flutter音量控制插件volume的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter音量控制插件volume的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,volume
插件用于控制设备的音量。它是一个简单的插件,允许你获取当前的音量级别,并设置新的音量级别。以下是如何在Flutter中使用 volume
插件的步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 volume
插件的依赖:
dependencies:
flutter:
sdk: flutter
volume: ^2.0.0
然后运行 flutter pub get
来安装依赖。
2. 导入插件
在你的 Dart 文件中导入 volume
插件:
import 'package:volume/volume.dart';
3. 初始化音量控制
在使用 volume
插件之前,你需要初始化它。通常,你可以在 initState
方法中进行初始化:
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
[@override](/user/override)
void initState() {
super.initState();
Volume.controlVolume(AudioManager.STREAM_MUSIC);
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: VolumeControlScreen(),
);
}
}
4. 获取当前音量
你可以使用 Volume.getVol
方法来获取当前的音量级别:
double currentVolume = await Volume.getVol;
print('Current volume: $currentVolume');
5. 设置音量
你可以使用 Volume.setVol
方法来设置新的音量级别。音量级别通常在 0.0
到 1.0
之间,其中 0.0
表示静音,1.0
表示最大音量:
await Volume.setVol(0.5); // 设置音量为50%
6. 监听音量变化
你可以使用 Volume.addListener
方法来监听音量的变化:
Volume.addListener(() {
Volume.getVol.then((volume) {
print('Volume changed to: $volume');
});
});
7. 移除音量监听器
当你不再需要监听音量变化时,可以移除监听器:
Volume.removeListener();
完整示例
以下是一个完整的示例,展示了如何使用 volume
插件来控制设备的音量:
import 'package:flutter/material.dart';
import 'package:volume/volume.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
double _currentVolume = 0.0;
[@override](/user/override)
void initState() {
super.initState();
_initVolume();
_listenVolume();
}
Future<void> _initVolume() async {
await Volume.controlVolume(AudioManager.STREAM_MUSIC);
_currentVolume = await Volume.getVol;
setState(() {});
}
void _listenVolume() {
Volume.addListener(() {
Volume.getVol.then((volume) {
setState(() {
_currentVolume = volume;
});
});
});
}
Future<void> _setVolume(double volume) async {
await Volume.setVol(volume);
setState(() {
_currentVolume = volume;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Volume Control'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Current Volume: ${(_currentVolume * 100).toStringAsFixed(0)}%'),
Slider(
value: _currentVolume,
onChanged: _setVolume,
min: 0.0,
max: 1.0,
),
],
),
),
),
);
}
}