You need to enable JavaScript to run this app. Flutter使用audioplayers播放音频 模拟器正常安卓实体机无声音
优惠活动
大模型
产品
解决方案
定价
更多

Flutter使用audioplayers播放音频 模拟器正常安卓实体机无声音

修复Android实体机音频无输出的方案
  • 调整播放器实例的定义位置
    你当前将AudioCache实例定义在build方法中,每次页面触发重绘都会生成新的播放器实例,极易导致音频资源加载异常,建议调整为State类的全局成员变量,同时添加资源预加载和释放逻辑,修改后的代码如下:
import 'package:flutter/material.dart';
import 'package:audioplayers/audioplayers.dart';

void main() => runApp(MartinApp());

class MartinApp extends StatefulWidget {
  @override
  _MartinAppState createState() => _MartinAppState();
}

class _MartinAppState extends State<MartinApp> {
  final AudioCache player = AudioCache();
  late AudioPlayer audioPlayer;

  @override
  void initState() {
    super.initState();
    audioPlayer = AudioPlayer();
    // 预加载音频资源,避免首次点击加载延迟
    player.load('55.mp3');
    // 强制指定音频播放参数,适配实体机
    audioPlayer.setAudioContext(
      AudioContext(
        android: AudioContextAndroid(
          isSpeakerphoneOn: true,
          stayAwake: true,
          contentType: AndroidContentType.music,
          usageType: AndroidUsageType.media,
          audioFocus: AndroidAudioFocus.gain,
        ),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
          child: Center(
              child: ElevatedButton(
                  onPressed: () async {
                    // 停止之前的播放避免冲突
                    await audioPlayer.stop();
                    await player.play('55.mp3', volume: 1, player: audioPlayer);
                  },
                  child: Text('press here'))),
        ),
      ),
    );
  }

  @override
  void dispose() {
    // 释放播放器资源
    audioPlayer.dispose();
    super.dispose();
  }
}

如果使用的是4.x及以上版本的audioplayers,AudioCache已整合为新的资源加载方式,可简化写法为:

onPressed: () async {
  await audioPlayer.stop();
  await audioPlayer.play(AssetSource('55.mp3'), volume: 1);
}
  • 检查基础配置

    • 确认android/app/build.gradle中的minSdkVersion不低于16,高版本audioplayers建议设置为21以上避免兼容问题
    • 确认pubspec.yaml中已正确声明assets资源目录,配置示例:
    flutter:
      assets:
        - assets/55.mp3
    
  • 实体机环境排查

    • 确认实体机未开启勿扰/静音模式,且媒体音量已打开(注意部分设备静音模式会强制关闭媒体音量,通话音量和媒体音量是独立控制的)
    • 尝试替换其他标准编码的mp3文件测试,部分特殊编码的音频仅支持模拟器软件解码,实体机硬件解码不兼容,可转码为通用mp3格式后重试

内容的提问来源于stack exchange,提问作者Norsak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 02:15:03