如何在通话扬声器或高音扬声器上播放歌曲?

时间:2019-12-12 02:32:39

标签: flutter

我正在尝试通过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();
          },
        )
    );
  }
}

0 个答案:

没有答案