我正在尝试通过Flutter App上的电话扬声器播放一首歌,但我找不到该怎么做。我可以演奏,但只能通过大声扬声器播放。找不到有关Flutter的任何文档。我的应用程序将对某些组件(例如传感器,扬声器触摸屏)进行测试。
我的代码如下:
import 'package:flutter/material.dart';
import 'package:audioplayers/audioplayers.dart';
import 'package:audioplayers/audio_cache.dart';
class ContainerAltaVoz extends StatefulWidget {
@override
_ContainerAltaVozState createState() => _ContainerAltaVozState();
}
class _ContainerAltaVozState extends State<ContainerAltaVoz> {
AudioPlayer audioPlayer = AudioPlayer();
AudioCache audioCache = AudioCache(prefix: "audios/");
AudioPlayerState playerState;
bool primeiraExecucao = true;
tocar() async {
if(primeiraExecucao == true){
audioPlayer = await audioCache.play("testSound.mp3");
setState(() {
primeiraExecucao = false;
});
}else{
audioPlayer.resume();
}
setState(() {
playerState = AudioPlayerState.PLAYING;
});
}
pausar(){
audioPlayer.pause();
setState(() {
playerState = AudioPlayerState.PAUSED;
});
}
parar(){
audioPlayer.stop();
setState(() {
playerState = AudioPlayerState.STOPPED;
primeiraExecucao = true;
});
}
@override
void initState(){
super.initState();
}
@override
Widget build(BuildContext context) {
return SafeArea(
child: WillPopScope(
child: Scaffold(
body: GestureDetector(
onTap: (){
Navigator.of(context).pop();
parar();
},
behavior: HitTestBehavior.translucent,
child: Container(
height: MediaQuery.of(context).size.height,
width: MediaQuery.of(context).size.width,
child: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
IconButton(
iconSize: 80,
onPressed: (){
if(playerState == AudioPlayerState.PLAYING){
setState(() {
pausar();
});
}else{
setState(() {
tocar();
});
}
},
icon: playerState != AudioPlayerState.PLAYING ? Icon(Icons.play_arrow, color: Colors.blue,)
: Icon(Icons.pause, color: Colors.blue,),
),
IconButton(
iconSize: 80,
onPressed: (){
parar();
},
icon: Icon(Icons.stop, color: Colors.blue,),
),
],
)
),
),
),
),
onWillPop: (){
Navigator.of(context).pop();
parar();
},
)
);
}
}