替代已弃用的 AudioManager.isWiredHeadsetOn?

     2023-04-14     271

关键词:

【中文标题】替代已弃用的 AudioManager.isWiredHeadsetOn?【英文标题】:Alternative to the deprecated AudioManager.isWiredHeadsetOn? 【发布时间】:2013-01-02 07:43:44 【问题描述】:

方法AudioManager.isWiredHeadsetOn()从api级别14被弃用,我们现在如何检测是否连接了有线耳机?

【问题讨论】:

【参考方案1】:

这是我的解决方案:

private boolean isHeadsetOn(Context context) 
    AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);

    if (am == null)
        return false;

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) 
        return am.isWiredHeadsetOn() || am.isBluetoothScoOn() || am.isBluetoothA2dpOn();
     else 
        AudioDeviceInfo[] devices = am.getDevices(AudioManager.GET_DEVICES_OUTPUTS);

        for (AudioDeviceInfo device : devices) 
            if (device.getType() == AudioDeviceInfo.TYPE_WIRED_HEADSET
                    || device.getType() == AudioDeviceInfo.TYPE_WIRED_HEADPHONES
                    || device.getType() == AudioDeviceInfo.TYPE_BLUETOOTH_A2DP
                    || device.getType() == AudioDeviceInfo.TYPE_BLUETOOTH_SCO) 
                return true;
            
        
    
    return false;

【讨论】:

isWiredHeadsetOnisBluetoothA2dpOn 的弃用来自 API 14。在 14 和 M (23) 之前应该做什么?我认为这里的文档也很奇怪,所以我写了这个:issuetracker.google.com/issues/111788828。无论如何,预计这种解决方法可以很好地接受电话:***.com/a/29651130/878126(替换isWiredHeadsetOn)? 也许你要扩展你的解决方案,文档说TYPE_WIRED_HEADSET:描述耳机的设备类型,它是耳机和麦克风的组合。 developer.android.com/reference/android/media/…【参考方案2】:

文档的弃用消息指出:

仅用于检查是否连接了耳机。

所以我想继续使用它来检查是否连接了有线耳机是可以的,但不能检查音频是否正在路由到它或通过它播放。

【讨论】:

我想答案就这么简单。我发现弃用一个方法很令人困惑,如果它没有真正被弃用,它只是稍微改变了目的。不管怎样,谢谢。 :)【参考方案3】:

试试这个解决方案。它在我的情况下工作。可能对你有帮助!

IntentFilter iFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
Intent iStatus = context.registerReceiver(null, iFilter);
boolean isConnected = iStatus.getIntExtra("state", 0) == 1;

【讨论】:

但这不会告诉您在启动应用之前插入耳机时的耳机状态。【参考方案4】:

它对我很有效:

if(context.registerReceiver(null, new IntentFilter(Intent.ACTION_HEADSET_PLUG)).getIntExtra("state", 0)==1)
//if(audioManager.isWiredHeadsetOn())
    System.out.println("Headset is wiredOn");

else
    System.out.println("Headset is not wiredOn");

【讨论】:

【参考方案5】:
IntentFilter iFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
Intent iStatus = context.registerReceiver(null, iFilter);
boolean isConnected = iStatus.getIntExtra("state", 0) == 1;

我知道这段代码可以在哪个andorid平台版本上使用。 它不适用于我在 Android 8 上。 结果 iStatus 为空。

【讨论】:

【参考方案6】:

我们必须使用广播接收器来查找蓝牙连接的状态。

这是一个很好的example

【讨论】:

替代已弃用的 AudioManager.isWiredHeadsetOn?

】替代已弃用的AudioManager.isWiredHeadsetOn?【英文标题】:AlternativetothedeprecatedAudioManager.isWiredHeadsetOn?【发布时间】:2013-01-0207:43:44【问题描述】:方法AudioManager.isWiredHeadsetOn()从api级别14被弃用,我们现在如何检测是否连接了有线... 查看详情

已弃用的 AudioManger.setStreamMute 的替代方案?

...题描述】:AudioManger.setStreamMute现在被api23弃用,最好使用AudioManager.adjustStreamVolume和AudioManager.ADJUST_MUT 查看详情

已弃用的 NSURLConnection 方法,有替代方法吗?

】已弃用的NSURLConnection方法,有替代方法吗?【英文标题】:DeprecatedNSURLConnectionMethods,isthereanalternative?【发布时间】:2012-02-2814:12:26【问题描述】:我正在设置一个NSURLConnection来访问远程服务器:NSURL*url=[[NSURLalloc]initWithString:proj... 查看详情

寻找现在已弃用的 retryWhen 的替代方案

】寻找现在已弃用的retryWhen的替代方案【英文标题】:LookingforanalternativeofretryWhenwhichisnowDeprecated【发布时间】:2020-10-0616:34:43【问题描述】:我遇到了WebClient和reactor-extra的问题。确实,我有以下方法:publicEmployeegetEmployee(Stringemp... 查看详情

图像中已弃用的 Notification 类的替代方法是啥?

】图像中已弃用的Notification类的替代方法是啥?【英文标题】:WhatisthealternativeforthedeprecatedNotificationclassintheimage?图像中已弃用的Notification类的替代方法是什么?【发布时间】:2014-02-1811:14:20【问题描述】:我打算在android设备的... 查看详情

已弃用的 google plus api 的替代解决方案是啥?

】已弃用的googleplusapi的替代解决方案是啥?【英文标题】:Whatisthealternativesolutionofdeprecatedgoogleplusapi?已弃用的googleplusapi的替代解决方案是什么?【发布时间】:2019-06-2315:43:08【问题描述】:Google宣布在3月7日弃用所有googleplusapi... 查看详情

iOS 12.0 替代使用已弃用的 archiveRootObject:toFile:

】iOS12.0替代使用已弃用的archiveRootObject:toFile:【英文标题】:iOS12.0AlternativetoUsingDeprecatedarchiveRootObject:toFile:【发布时间】:2019-05-0322:47:12【问题描述】:在iOS12中,archiveRootObject:toFile:已被弃用。任何人都可以提出一种简化的替代... 查看详情

pymxs 替代已弃用的 MaxPlus 实用程序函数

】pymxs替代已弃用的MaxPlus实用程序函数【英文标题】:pymxsalternativestothedeprecatedMaxPlusutilityfunctions【发布时间】:2021-08-2400:11:17【问题描述】:随着Autodesk从3dsMax中删除MaxPlus,我现在不得不重新编写一些代码,并且想知道是否有... 查看详情

已弃用的 Hibernate.createClob(Reader reader, int length) 的替代方法是啥

】已弃用的Hibernate.createClob(Readerreader,intlength)的替代方法是啥【英文标题】:WhatisthealternatefordeprecatedHibernate.createClob(Readerreader,intlength)已弃用的Hibernate.createClob(Readerreader,intlength)的替代方法是什么【发布时间】:2012-02-1601:23:11【 查看详情

如何为已弃用的英特尔 IPP API 找到替代 API?

】如何为已弃用的英特尔IPPAPI找到替代API?【英文标题】:HowtofindalternativeAPIsfordeprecatedIntelIPPAPIs?【发布时间】:2014-11-0410:11:49【问题描述】:我正在与IntelIntegratedPerformancePrimitives(IntelIPP8.2)合作。我正在尝试使用来自UtilityFunction... 查看详情

Android:替代已弃用的 Context.MODE_WORLD_READABLE?

】Android:替代已弃用的Context.MODE_WORLD_READABLE?【英文标题】:Android:AlternativetothedeprecatedContext.MODE_WORLD_READABLE?【发布时间】:2012-12-0103:51:09【问题描述】:Fromhere我知道一种写入文件并可供其他应用程序和其他意图访问的方法,... 查看详情

[FFmpeg]啥是已弃用的 avpicture_alloc、avpicture::data 的替代品

】[FFmpeg]啥是已弃用的avpicture_alloc、avpicture::data的替代品【英文标题】:[FFmpeg]whatisreplacementsofavpicture_alloc,avpicture::datawhichweredeprecated[FFmpeg]什么是已弃用的avpicture_alloc、avpicture::data的替代品【发布时间】:2016-04-1204:47:35【问题描... 查看详情

channel 或 mutablesharedflow ,哪个是已弃用的 localbroadcastmanager 的更好替代品

...l或mutablesharedflow,哪个是已弃用的localbroadcastmanager的更好替代品【英文标题】:channelormutablesharedflow,whichoneisabetterreplacementfordeprecatedlocalbroadcastmanager【发布时间】:2021-04-0321:15:20【问题描述】:过去,我在聊天和出租车应用程序... 查看详情

替代已弃用的 setup_environ() 一次性 django 脚本?

】替代已弃用的setup_environ()一次性django脚本?【英文标题】:Alternativetothedeprecatedsetup_environ()forone-offdjangoscripts?【发布时间】:2013-02-0912:48:39【问题描述】:不久前我使用setup_environ()编写了一个一次性的python脚本,该脚本可以从... 查看详情

替代已弃用的 setup_environ() 一次性 django 脚本?

】替代已弃用的setup_environ()一次性django脚本?【英文标题】:Alternativetothedeprecatedsetup_environ()forone-offdjangoscripts?【发布时间】:2013-02-0912:48:39【问题描述】:不久前我使用setup_environ()编写了一个一次性的python脚本,该脚本可以从... 查看详情

OAuth2FeignRequestInterceptor 的替代方案,依赖于已弃用的类

】OAuth2FeignRequestInterceptor的替代方案,依赖于已弃用的类【英文标题】:AlternativeforOAuth2FeignRequestInterceptorthatdependsonadeprecatedclass【发布时间】:2020-05-0511:07:44【问题描述】:免责声明:老实说,我尝试在google/github上搜索,扫描了... 查看详情

macOS 10.8 (Mountain Lion) 之后已弃用的资源 'CurResfile'、'UseResFile' 等的替代 API

】macOS10.8(MountainLion)之后已弃用的资源\\\'CurResfile\\\'、\\\'UseResFile\\\'等的替代API【英文标题】:AlternativeAPIsforresources\'CurResfile\',\'UseResFile\',etc.whichhavebeendeprecatedaftermacOS10.8(MountainLion)macOS10.8(MountainLion)之后 查看详情

Alamofire 已弃用的代码

...我将其追溯到Alamofire中的以下语句。我没有看到任何关于替代品的提及。@available(*,deprecated=3.4.0)publicstaticfuncerrorWithCode( 查看详情