Sas*_*ota 11 java android android-audiomanager
我有一个针对API Level 19+的应用程序.我需要检查耳机是否已连接(有线或蓝牙).
我看到AudioManager.isWiredHeadsetOn()从API级别16开始不推荐使用,并且文档提供使用AudioManager.getDevices()仅从API级别23开始引入.
问题:检查耳机是否已连接到API级别16 - 22的正确方法是什么?
注意:我知道我仍然可以使用已弃用的方法,但我不想这样做.如果他们弃用它,他们应该引入替代API(我找不到).
小智 1
由于 AndroidStudio 警告 AudioManager.getDevices 需要 VersionCode M,因此最好的方法是进行版本检查,如下所示:
// ... some code
boolean isWiredHeadsetOn=false;
AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
Log.d(TAG, "onCreate:::: retrieved AudioManager instance");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
Log.d(TAG, "onCreate:::: BuildVersion>=M");
AudioDeviceInfo[] mAudioDeviceInfos = mAudioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS);
Log.d(TAG, "onCreate:::: got AudioDeviceInfo[]");
for (int i = 0; i < mAudioDeviceInfos.length; i++) {
if (mAudioDeviceInfos[i].getType() == AudioDeviceInfo.TYPE_WIRED_HEADSET) {
Log.d(TAG, "onCreate:::: \n\nfind wiredHeadset!!!\n\n");
isWiredHeadsetOn=true;
} else {
Log.d(TAG, "onCreate:::: find device type: " + mAudioDeviceInfos[i].getType() + ", id: " + mAudioDeviceInfos[i].getProductName());
}
}
} else {
Log.d(TAG, "onCreate:::: BuildVersion<M");
isWiredHeadsetOn=mAudioManager.isWiredHeadsetOn();
}
// ... continue code
Run Code Online (Sandbox Code Playgroud)
希望我能帮忙。最好的问候,Cs
| 归档时间: |
|
| 查看次数: |
516 次 |
| 最近记录: |