[Android Training视频系列] 8.3 Dealing with Audio Output Hardware

产业园区运营负责人如何实现创新资源的系统化配置?.docx 产业园区运营负责人如何实现创新资源的系统化配置? 立即下载

用户在播放音乐的时候有多个选择,可以使用内置的扬声器,有线耳机或者是支持A2DP的蓝牙耳机。(补充:A2DP全名是Advanced Audio Distribution Profile 蓝牙音频传输模型协定, A2DP是能够采用耳机内的芯片来堆栈数据,达到声音的高清晰度。有A2DP的耳机就是蓝牙立体声耳机。声音能达到44.1kHz,一般的耳机只能达到8kHz。如果手机支持蓝牙,只要装载A2DP协议,就能使用A2DP耳机了。还有消费者看到技术参数提到蓝牙V1.0 V1.1 V1.2 V2.0——这些是指蓝牙的技术版本,是指通过蓝牙传输的速度,他们是否支持A2DP具体要看蓝牙产品制造商是否使用这个技术。)

       检测目前正在使用的硬件设备

       选择不同的播放设备会影响应用程序的行为。

       可以使用AudioManager来查询某个音频是输出到扬声器、有线耳机还是蓝牙上。代码如下:

if (am.isBluetoothA2dpOn()) {

    // Adjust output for Bluetooth.

} else if (am.isSpeakerphoneOn()) {

    // Adjust output for Speakerphone.

} else if (am.isWiredHeadsetOn()) {

    // Adjust output for headsets

} else {

    // If audio plays and noone can hear it, is it still playing?

}

       处理音频输出设备的改变

       当有线耳机被拔出或者蓝牙设备断开连接的时候,音频流会自动输出到内置的扬声器上。假设之前播放声音很大,这个时候突然转到扬声器播放会显得非常嘈杂。

       幸运的是,系统会在这种事件发生时发出广播带有ACTION_AUDIO_BECOMING_NOISY的intent。无论何时播放音频都应该去注册这个BroadcastReceiver来监听这个intent会是比较好的做法。在音乐播放器下,用户通常希望发生那样事情的时候能够暂停当前歌曲的播放。而在游戏里,通常会选择减低音量。

private class NoisyAudioStreamReceiver extends BroadcastReceiver {

    @Override

    public void onReceive(Context context, Intent intent) {

        if (AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intent.getAction())) {

            // Pause the playback

        }

    }

}

 

private IntentFilter intentFilter =

 new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY);

 

private void startPlayback() {

    registerReceiver(myNoisyAudioStreamReceiver(), intentFilter);

}

 

private void stopPlayback() {

    unregisterReceiver(myNoisyAudioStreamReceiver);

}

视频讲解:http://www.eyeandroid.com/thread-15915-1-1.html
高校技术转移办公室人员需要哪些材料完成成果转化项目审核?.docx 高校技术转移办公室人员需要哪些材料完成成果转化项目审核? 立即下载

相关推荐

状态估计【扩展卡尔曼滤波算法的神经网络训练】BP神经网络、扩展卡尔曼滤波EKF+BP、粒子滤波PF轨迹估计研究(Matlab代码实现)

【状态估计】【扩展卡尔曼滤波算法的神经网络训练】BP神经网络、扩展卡尔曼滤波EKF+BP、粒子滤波PF轨迹估计研究(Matlab代码实现)内容概要:本文主要介绍了基于变频控制的多相交错LLC谐振变换器闭环仿真研究,重点探讨了多相交错并联技术在降低输出电流纹波和提升功率容量方面的优势,分析了交错角对纹波抵消的影响以及均流问题的成因。针对变频控制带来的非线性特性,文章采用扩展描述函数(EDF)建立小信号模型,用于指导PID控制器的设计,并验证其在稳态和动态工况下的控制性能。通过Simulink仿真平台对闭环系统进行建模与测试,考察了启动过程、负载阶跃响应及频率调节的平滑性,结果表明所设计的控制系统具有良好的稳态精度和动态响应能力。; 适合人群:电力电子、电气工程及其自动化等相关专业的高校师生及从事电源系统研发的工程技术人员。; 使用场景及目标:①掌握多相交错LLC谐振变换器的工作原理与建模方法;②学习变频控制下非线性系统的建模与PID环路设计技巧;③应用于高效率、低纹波开关电源的仿真设计与优化。; 阅读建议:建议结合文中提供的仿真模型与参数设置进行实践操作,重点关注EDF建模过程与控制器参数整定方法,通过对比不同交错角下的仿真结果加深对纹波抑制机理的理解。

Android4.4.4相机,极限优化修改版,做最好的原生相机

1、图库和相机分离,PNG减肥,精简体积约5MB 2、支持X86、ARM、MIPS内核处理器。 3、支持32位、64位处理器,不限品牌。 4、提升启动相机速度。 5、提升相机对焦速度。 6、降低摄像头闪烁频率,以降低发热量。 7、支持Android 4.0—4.4、Android L系统。 8、支持ART模式。 9、默认增加1%的HDR效果,提升弱光拍照效果。 10、降低jpg压

1360

ADS2016子电路封装避坑指南:手把手教你制作可复用的自定义Symbol

本文详细介绍了在ADS2016中制作可复用的自定义Symbol的全流程,重点解析了子电路封装的常见问题与解决方案。从电路模块的标准化处理、Hierarchy创建技巧到Symbol视觉优化和库管理策略,帮助工程师提升射频与微波电路设计效率。特别针对Symbol比例适配和引脚优化等核心问题,提供了实用的避坑指南和工程验证方法。

weixin_30275415的博客 218

Android学习进阶路线Android源码分享)

毕业8月有余,同时伴随着从事的Android经验的提升。仔细思量过去的工作内容,掐指算来也是少得可怜---主要维护FM收 音机模块,间或看看Lancher模块的代码。尽管这样,总的来说,在这八个月事件的学习里,我自我感觉收获还是很大的---自学了很多 Android相关方面的知识。虽然里真正的大牛还有很远的一段路程要走,自己也会坚持学习、坚持走下去。            再次,把自己学习

1198

MTK眼中6G物理层与无线协议的进化之路

提议统一波束和小区级的测量、报告和切换框架/流程,进一步减少移动性切换过程中的中断,采用可扩展框架/流程,允许在不同移动性场景中进行部分用户设备配置更新以实现快速切换,支持用户设备发起的移动性(同步/切换)以降低延迟和因信令交换导致的失败,设计移动性RS以实现空闲状态下的节能和连接状态下的无缝用户体验,实现5G/6G间的无缝互操作移动性,为固定无线接入(FWA)提供潜在增强,构建统一的跨层移动性框架以降低复杂度、减少中断和失败。为适应多样化的流量类型,需要灵活的帧结构和高层时间对齐。

asd199086的博客 1748

【OpenStack】OpenStack原理(一)——OpenStack发展及架构

OpenStack目前的七个核心组件,分别是计算(Compute)、对象存储(Object Storage)、认证(Identity)、用户界面(Dashboard)、块存储(Block Storage)、网络(Network)和镜像服务(Image Service)。

大数据分析BDA 2万+

[Android Training视频系列]2.2 Pausing and Resuming an Activity

1.主要内容 本讲介绍onPause和onResume,主要分析了在onPause函数中应该执行哪些操作。 2.视频讲解 http://www.eyeandroid.com/thread-11291-1-1.html 3.翻译参考 在正常的程序使用中,处于前台运行的activity有时会被另外一些可见的组件遮挡,从而造成activity被暂停。比如,一个半透明的activit

861

基于人脸识别的驾驶员疲劳检测方法研究

摘 要交通安全问题愈发严重,疲劳驾驶已是造成交通事故的主要因素之一。为减少因疲劳驾驶造成的交通事故,本文设计了一种基于图像处理技术的疲劳驾驶监测系统,该系统结合了肤色模型、灰度积分投影技术以及PERCLOS方法,旨在通过实时视频图像分析准确检测驾驶员的疲劳状态。首先,系统通过肤色模型从图像中有效提取人脸区域,并在此基础上利用Haar级联分类器进行人脸检测,确保在人脸角度变化或部分遮挡的情况下依然能够实现高效识别。接着,灰度积分投影技术被应用于眼部定位,通过分析眼睛区域的灰度变化,精确确定眼睛的上下边界,从

carrott0617的博客 1005

[Android Training视频系列]1.4 Starting Another Activity

1.主要内容 本小结在1.3节的基础上,继续完善代码,会书写Button响应事件,在响应事件中新建一个Intent去启动另外一个Activity。 2.视频讲解 http://www.eyeandroid.com/thread-11210-1-1.html 3.翻译参考 Respond to the Send Button-响应Send(发送)按钮 响应按钮

807

Windows11搭建GPU版本PyTorch 开发环境教程

Windows11搭建GPU版本PyTorch环境详细过程

世界那么大,我想去看看~【随心更新,看世界去了😄】 3236

AI游戏制作07——波次计时器,敌人按波次生成

AI游戏制作07——波次计时器,敌人按波次生成

qq_40572023的博客 47

[Android Training视频系列] 8.2 Managing Audio Focus

由于很多应用程序都可以播放音频,因此在播放前考虑它们如何交互就显得很重要了,为了避免同时出现多个声音,Android使用音频焦点(AudioFocus)来控制音频的播放 - 仅仅是获取到Audio Focus的应用程序才能够播放音频。 在应用程序开始播放音频之前,它需要经过发出请求[request]à接受请求[receive] à音频焦点锁定[AudioFocus]的过程。同样它需要知道如何监听音频焦点的丢失并进行合适的响应。

802

基于YOLOv11的手术器械计数系统:从数据集构建到Web应用部署

m2cai16-tool数据集:包含15种腹腔镜手术器械的标注图像Cholec80数据集:包含80个胆囊切除手术视频,标注了7种器械SurgicalTools数据集:包含超过10,000张手术器械图像,涵盖21类常见器械手术剪(Scissors)止血钳(Hemostat)持针器(Needle Holder)手术刀(Scalpel)镊子(Forceps)拉钩(Retractor)吸引器(Suction)

YOLO 397

[Android Training视频系列]1.1 Creating an Android Project

1.主要内容 本小节介绍如何创建一个Android Project,分别从Eclipse和命令行的方式来创建了默认的Android Project 2.视频讲解 http://www.eyeandroid.com/thread-10472-1-1.html 3.翻译参考 1.使用Eclipse创建项目 2.使用命令行创建项目 创建安卓项目

713

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

[Android Training视频系列]2.3 Stopping and Restarting an Activity

1.主要内容 本小节介绍onStop与onRestart以及onStart的使用,通过本讲我们能学会应该在onStop与onStart里面执行什么样的操作。 2.观看视频讲解 http://www.eyeandroid.com/thread-11346-1-1.html 3.翻译参考 停止与重启Activity 在activity生命周期中,恰当的停止与重启ac

703

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

[Android Training视频系列]2.4 Recreating an Activity

1.主要内容 本讲讲解onSaveInstanceState与onRestoreInstanceState的使用。 2.视频讲解 http://www.eyeandroid.com/thread-11391-1-1.html 3.翻译参考 存在一些情况,由于普通的程序行为,你的activity会被销毁,比如,当用户点击Back按钮,或者自己调用finish()方法。另外,如果

700

[Android Training视频系列] 6.3 Saving Data in SQL Databases(保存数据到SQLite)

一 主要内容 1.概述 2.定义Schema与Contract 3.使用SQL Helper创建数据库 4.向数据库添加信息 5.从数据库中读取信息 6.删除数据库中的信息 7.更新数据库中的信息 二 翻译转载 对于重复或者结构化的数据(如联系人信息)等保存到DB是个不错的主意。这节课假定你已经熟悉SQL数据库的操作。在Android上可能会使用到的APIs,可以从a

698

[Android Training视频系列] 8.1 Controlling Your App’s Volume and Playback

主要内容: 1 鉴别使用的是哪个音频流 2 使用物理音量键控制应用程序的音量 3 使用物理播放控制键来控制应用程序的音频播放

681

[Android Training视频系列]2.1 Starting an Activity

1.主要内容  本小节首先对Activity的各个生命周期作简单介绍,然后介绍如何设置Main Activity,最后讲解创建和销毁Activity。 2.视频讲解 http://www.eyeandroid.com/thread-11253-1-1.html 3.翻译参考 启动Activity 与其他在应用程序中由main()函数作为开端不同,Andr

664

[Android Training视频系列] 6.2 Saving Files(保存文件)

一:主要内容 1.概述 2.选择内部存储还是外部存储 3.获取访问External Storage的权限 4.保存文件到Internal Storage 5.保存文件到External Storage 6.查询剩余空间 7.删除文件 8.Q&A Demo截图 二:翻译参考 http://www.eyeandroid.com/thread-11349-1-1.html

606

[Android Training视频系列]6.1 Saving Key-Value Sets

1.主要内容 本小节介绍SharedPreference相关API的使用 获取SharedPreference的Handle 写Shared Preference 读Shared Preference 2.视频讲解 http://www.eyeandroid.com/thread-11495-1-1.html 3.翻译参考 来自:http://blog.

569

[Android Training视频系列]1.2 Running Your App

1.主要内容 本讲主要介绍如何在真机和模拟器上运行您的应用程序,包括Eclipse和命令行两种方式。 2.视频讲解 http://www.eyeandroid.com/thread-10673-1-1.html 3.翻译参考 这节将教您 Run on a Real Device 在真机上运行应用程序 Run on the Emulator在虚拟机上运行应用程序

530

[Android Training视频系列]1.3 Building a Simple User Interface

1.主要内容 本小节介绍如何构建一个简单的用户界面,包括一个输入框和一个按钮。详细介绍了各个View的属性值。 2.视频讲解 http://www.eyeandroid.com/thread-10716-1-1.html 3.翻译参考 目录   1 构建一个简单的用户界面 1.1 使用线性布局 1.2 添加一个文本输入框 1.

508
上一篇: [Android Training视频系列] 8.2 Managing Audio Focus
下一篇: 《Android Reference 翻译》 - Media - Image
cofftech
博客等级 码龄16年 46粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值