2016-11-29 9 views
0

휴대 전화 테스트 용 Android 앱을 제작 중이며 헤드폰을 연결 한 상태에서 이어폰 스피커를 통해 음질을 재생할 수 있어야합니다. 헤드폰을 연결하지 않은 상태에서 이어 스피커를 통해 음질을 재생할 수 있습니다. 헤드폰을 꽂았을 때 이어폰을 통해 내 음색을 들으려면 어쨌든 가집니까? 나는에 헤드폰없이 작동 코드를 포함 할 것이다. 다른 활동에서헤드폰이 달린 이어 스피커를 통해 음을들을 수 있습니까?

mp = MediaPlayer.create(getApplicationContext(), R.raw.tone_1ghz_5sec); 
    mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); 
    //set to false for through headphones 
    audioManager.setSpeakerphoneOn(false); 
    mp.start(); 

, 나는이 여기에 열쇠, 스피커를 강제로 오디오 시스템 클래스를 사용?

+1

가능한 중복을 [어떻게 귀 조각 노선 기본 오디오를하는 경우 헤드폰 연결된 있습니까?] (http://stackoverflow.com/questions/38461743/how-to-route-default-audio-to-ear-piece-when-headphones-are-connected) – tar

+0

저를 해당 게시물로 안내해 주셔서 감사합니다. . 내 문제를 해결하는 데 도움이되었습니다. – Toby

답변

1

나는 그것을 작동시킬 수있었습니다. 위의 코드로 원하는대로 귀 스피커를 통과하거나 스피커에 전화를 걸 수 있습니다. 그런 다음 여전히 헤드폰이 연결 되더라도, 전화 스피커를 통해 재생 얻고 싶은 경우에, 당신은 이런 식으로 작업을 수행 할 수의

AudioManager manager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE); 
    Class<?> cl = null; 
    try { 
     cl = Class.forName("android.media.AudioManager"); 
     setDeviceConnectionState = cl.getMethod("setWiredDeviceConnectionState", new Class[] { 
       Integer.TYPE, Integer.TYPE, String.class }); 
     //4 is for the headset with microphone 8 is for headset without microphone 
     //0 is for off and 1 is for on 
     setDeviceConnectionState.invoke(manager, new Object[] { 4 , 0, "device" }); 
     setDeviceConnectionState.invoke(manager, new Object[] { 8 , 0, "device" }); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } catch (NoSuchMethodException e) { 
     e.printStackTrace(); 
    } catch (InvocationTargetException e) { 
     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    } 
관련 문제