Android16音频之设置音频属性AudioTrack.Builder().setAudioAttributes:用法实例(一百一十九)

简介: CSDN博客专家、《Android系统多媒体进阶实战》作者

博主新书推荐:《Android系统多媒体进阶实战》🚀
Android Audio工程师专栏地址:Audio工程师进阶系列原创干货持续更新中...... 】🚀
Android多媒体专栏地址:多媒体系统工程师系列原创干货持续更新中...... 】🚀
推荐1:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀
推荐2:Android14 Binder之HIDL与AIDL通信实战课 🚀
推荐3:Android15快速自定义与集成音效实战课 🚀
推荐4:Android15音频策略实战课 🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
更多原创,欢迎关注:Android系统攻城狮

🍉🍉🍉文章目录🍉🍉🍉

      • [🌻1. 前言](#🌻1. 前言)
      • [🌻2. Android16进阶之设置音频属性AudioTrack.Builder().setAudioAttributes介绍](#🌻2. Android16进阶之设置音频属性AudioTrack.Builder().setAudioAttributes介绍)
      • [🌻3. 代码实例](#🌻3. 代码实例)
        • [🌻3.1 使用setAudioAttributes设置媒体属性](#🌻3.1 使用setAudioAttributes设置媒体属性)
        • [🌻3.2 使用setAudioAttributes设置通话属性](#🌻3.2 使用setAudioAttributes设置通话属性)
        • [🌻3.3 使用setAudioAttributes设置游戏属性](#🌻3.3 使用setAudioAttributes设置游戏属性)
      • [🌻3.4 用法总结](#🌻3.4 用法总结)

🌻1. 前言

本篇目的:Android16进阶之设置音频属性AudioTrack.Builder().setAudioAttributes:用法实例

🌻2. Android16进阶之设置音频属性AudioTrack.Builder().setAudioAttributes介绍

  1. 基本概念

    setAudioAttributes通过AudioTrack.Builder设置音频流用途、内容类型与策略,系统据此选择路由、焦点、音量、震动策略,替代旧版streamType。

  2. 功能

    支持USAGE_MEDIA USAGE_VOICE_COMMUNICATION USAGE_GAME等;可标记CONTENT_TYPE_MUSIC CONTENT_TYPE_SPEECH;与音频焦点、设备路由联动;无需权限;立即生效。

  3. 使用限制

    需API 21及以上;与setLegacyStreamType互斥;内容类型缺省为CONTENT_TYPE_UNKNOWN;通话流需配合MODE_IN_COMMUNICATION;与allowedCapturePolicy联动。

  4. 性能特性

    Builder链式调用;无JNI阻塞;构建延迟低于1毫秒;与AudioTrack生命周期同步;内存占用恒定。

  5. 使用场景

    低延迟播放、VoIP通话、游戏音效、音乐播放器。

🌻3. 代码实例

🌻3.1 使用setAudioAttributes设置媒体属性
  1. 应用场景

    音乐播放器构建低延迟输出。

  2. 用法实例

java 复制代码
AudioAttributes attr = new AudioAttributes.Builder()
        .setUsage(AudioAttributes.USAGE_MEDIA)
        .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
        .build();
AudioTrack track = new AudioTrack.Builder()
        .setAudioAttributes(attr)
        .setAudioFormat(new AudioFormat.Builder()
                .setSampleRate(48000)
                .setChannelMask(AudioFormat.CHANNEL_OUT_STEREO)
                .setEncoding(AudioFormat.ENCODING_PCM_16BIT)
                .build())
        .setBufferSizeInBytes(4096)
        .build();

代码功能:声明媒体用途,系统走媒体音量并可选外放或耳机。

🌻3.2 使用setAudioAttributes设置通话属性
  1. 应用场景

    VoIP通话建立低延迟语音流。

  2. 用法实例

java 复制代码
AudioAttributes attr = new AudioAttributes.Builder()
        .setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION)
        .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
        .build();
AudioTrack track = new AudioTrack.Builder()
        .setAudioAttributes(attr)
        .setAudioFormat(new AudioFormat.Builder()
                .setSampleRate(16000)
                .setChannelMask(AudioFormat.CHANNEL_OUT_MONO)
                .setEncoding(AudioFormat.ENCODING_PCM_16BIT)
                .build())
        .setBufferSizeInBytes(640)
        .build();

代码功能:声明语音通信,系统走通话音量并启用回声消除路由。

🌻3.3 使用setAudioAttributes设置游戏属性
  1. 应用场景

    游戏短音效播放,需低延迟。

  2. 用法实例

java 复制代码
AudioAttributes attr = new AudioAttributes.Builder()
        .setUsage(AudioAttributes.USAGE_GAME)
        .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
        .build();
AudioTrack track = new AudioTrack.Builder()
        .setAudioAttributes(attr)
        .setAudioFormat(new AudioFormat.Builder()
                .setSampleRate(44100)
                .setChannelMask(AudioFormat.CHANNEL_OUT_STEREO)
                .setEncoding(AudioFormat.ENCODING_PCM_FLOAT)
                .build())
        .setBufferSizeInBytes(2048)
        .build();

代码功能:声明游戏用途,系统选小缓冲区路径,降低延迟。

🌻3.4 用法总结

代码关键字 功能描述 典型应用
setAudioAttributes USAGE_MEDIA 媒体属性 音乐播放
setAudioAttributes USAGE_VOICE_COMMUNICATION 通话属性 VoIP语音
setAudioAttributes USAGE_GAME 游戏属性 音效输出
相关推荐
Likeadust2 小时前
视频直播点播平台EasyDSS助力阳光政务直播体系建设
音视频·政务
xcLeigh6 小时前
HTML5实现好看的视频播放器(三种风格,附源码)
前端·音视频·html5
骄傲的心别枯萎9 小时前
RV1126 NO.57:ROCKX+RV1126人脸识别推流项目之读取人脸图片并把特征值保存到sqlite3数据库
数据库·opencv·计算机视觉·sqlite·音视频·rv1126
好游科技10 小时前
IM即时通讯系统:安全可控、功能全面的社交解决方案全解析
安全·音视频·webrtc·im即时通讯·私有化部署im即时通讯·社交app
Android系统攻城狮10 小时前
Android ALSA驱动进阶之获取采样格式位宽snd_pcm_format_width:用法实例(九十八)
android·pcm·音频进阶·alsa驱动
EasyDSS10 小时前
视频直播点播平台EasyDSS构建高并发、低延迟的远程教学直播新模式
音视频
GIOTTO情11 小时前
多模态舆情监测技术深度解析:Infoseek 如何实现 AI 造假与短视频舆情的精准捕捉?
人工智能·音视频
音视频牛哥11 小时前
C# 开发工业级 RTSP/RTMP 播放器实战:基于 SmartMediakit 的低延迟与高可靠性设计
音视频·rtsp播放器·rtmp播放器·windows rtsp播放器·windows rtmp播放器·c# rtsp播放器·c# rtmp播放器
JellyDDD11 小时前
【悬赏】Android WebRTC 数字人项目回声问题排查(AEC / AudioMode)
音视频·webrtc
于是我说12 小时前
如何判断一个视频到底是真实 MP4 直链,还是流媒体M3U8
网络·音视频