2014-07-08 2 views
2

Android를 실행하는 기기에 스피커가 있는지 여부를 확인하는 방법은 무엇입니까? 의미는 오디오를 재생할 수 있습니까?Android 기기에 내부 스피커가 있는지 확인하십시오.

구성 한정자가 있습니까? 어떤

프로그램에 대한 수정이 : 그냥 Android Wear 시계를 구입하고 그것이 내가 확인 얼마나 확신하지 스피커가없는이

답변

2

안드로이드 API가없는 그러한 규정을 둘 없습니다 어떤 것이 있나? 라이브러리 방법.

그러나 미처 생각하지 못했지만 일부 오디오를 재생하고 동시에 마이크를 통해 녹음 해보십시오. 동일한 지 확인하십시오. 이것은 어리석은 방법이 아니라 단지 생각입니다.

+0

"일부 오디오를 재생하고 동시에 마이크를 통해 녹음 해보십시오"에 대해 확신하지는 않지만 "이 방법을 확인할 수있는 방법이 없습니다" – MobileMon

0

아마 대부분의 안드로이드 폰 내가 추측 스피커가 : 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? 
} 

SOURCE 사용할 수 있습니다 that..then 같은 스피커 또는 헤드폰 또는 무언가에 연결 여부를 확인할 수있는 경우에 당신이 요청하는 경우 : http://developer.android.com/training/managing-audio/audio-output.html#CheckHardware

+0

가 그럼 난 그냥 Android Wear 시계를 구입이없는 오디오 때문에 흠 ... 이것이 내가 – MobileMon

+1

무엇을 찾고 있어요 경우 아주 확실하지 AH 나는 본다. 당신이 오디오를 검사 할 필요가있는 어떤 특정한 이유가있다 (왜냐하면 당신이 어쨌든 그 소리를들을 수 있기 때문에 원인이 ...). – Imperfectluck

+0

어느 회사인가 ?? Android 마모 시계에는 스피커가 없습니다. 그들은 오디오 잭 대신에 – Tushar

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; 
    } 
} 
관련 문제