检查Android设备是否有内置扬声器

时间:2014-07-08 00:00:47

标签: android

如何检查运行Android的设备是否有扬声器?意思是它能播放音频吗?

是否有任何配置限定符?以及以编程方式

编辑:刚刚买了一台Android Wear手表,它没有扬声器,所以不知道怎么检查这个

3 个答案:

答案 0 :(得分:2)

Android API没有任何此类限定符,也没有任何库方法。

但这只是一个原创想法,尝试播放一些音频并同时通过麦克风录音。 检查它们是否相同。 这不是一种万无一失的方式,只是一个想法!

答案 1 :(得分:2)

自API级别21(基于此级别的大多数Android Wear)以来,Android提供了一项功能PackageManager.FEATURE_AUDIO_OUTPUT,可以用来检测是否有输出音频的方法。

我在MOTO 360上测试了此功能(没有扬声器),它没有此功能,而Ticwatch(带扬声器)确实具有此功能。

但是当我将蓝牙耳机连接到MOTO 360时,它仍然没有这个功能,这让我很困惑。

所以我使用AudioManager.isBluetoothA2dpOn()进行进一步检查。

检测代码可以是这样的:

public boolean hasAudioOutput() {
    AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    PackageManager packageManager = getPackageManager();

    if (audioManager.isBluetoothA2dpOn()) {
        // Adjust output for Bluetooth.
        return true;
    } else if (audioManager.isBluetoothScoOn()) {
        // Adjust output for Bluetooth of sco.
        return true;
    } else if (audioManager.isWiredHeadsetOn()) {
        // Adjust output for headsets
        return true;
    } else if (audioManager.isSpeakerphoneOn()) {
        // Adjust output for Speakerphone.
        return true;
    } else if (packageManager.hasSystemFeature(PackageManager.FEATURE_AUDIO_OUTPUT)) {
        // Has internal speaker or other form of audio output.
        return true;
    } else {
        // No device for audio output.
        return false;
    }
}

答案 2 :(得分:0)

可能大多数Android手机都有一个扬声器我猜:P / ..但如果你问你是否可以检查它是否连接到扬声器或耳机或类似的东西......那么你可以使用

if (isBluetoothA2dpOn()) {
    // Adjust output for Bluetooth.
} else if (isSpeakerphoneOn()) {
    // Adjust output for Speakerphone.
} else if (isWiredHeadsetOn()) {
    // Adjust output for headsets
} else { 
    // If audio plays and noone can hear it, is it still playing?
}

消息来源:http://developer.android.com/training/managing-audio/audio-output.html#CheckHardware