2013-12-23 10 views
3

오디오 잭을 연결 한 상태에서 오디오 파일을 재생하고 싶습니다 (헤드폰 만 필요하지 않음).Android - 기기를 오디오 잭에 연결했을 때 소리가 나기

도움이된다면 Android 버전 4.3 이상에만 관심이 있으며 필요한 경우 전화를 기꺼이 받겠습니다. 여기

내가 지금까지 시도한 것입니다 :

  1. 해킹의 일종이지만 작동하지 않습니다.

    try { 
        Class audioSystemClass = Class.forName("android.media.AudioSystem"); 
        Method setForceUse = audioSystemClass.getMethod("setForceUse", int.class, int.class); 
        setForceUse.invoke(null, 1, 1); 
    
        MediaPlayer mp = MediaPlayer.create(this, R.raw.bad); 
        mp.start(); 
    
    } catch (ClassNotFoundException e) { 
        Log.d("mediaException", "class", e); 
    } catch (NoSuchMethodException e) { 
        Log.d("mediaException", "method", e); 
    } catch (IllegalAccessException e) { 
        Log.d("mediaException", "access", e); 
    } catch (InvocationTargetException e) { 
        Log.d("mediaException", "invocation", e); 
    } 
    
  2. 는 여기에 몇 가지 스레드에서이 발견뿐만 아니라 작동하지 않습니다 :

    AudioManager audioManager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE); 
    
    audioManager.setMode(AudioManager.MODE_NORMAL); 
    audioManager.setSpeakerphoneOn(true); 
    
    MediaPlayer mp = MediaPlayer.create(this, R.raw.bad); 
    mp.start(); 
    
  3. 나는 가능한 경로를 얻기 위해 노력 MediaRouter 클래스를 사용. 그러나 오디오 잭에 플러그가 꽂혀있을 때만 사용할 수있는 경로는 "헤드폰"입니다. 이 작업을 수행 할 수있는 방법을

    MediaRouter router = (MediaRouter) this.getSystemService(Context.MEDIA_ROUTER_SERVICE); 
    
    for (int i = 0; i < router.getRouteCount(); i++) { 
        Log.d("playSound", router.getRouteAt(i).toString()); 
    } 
    
+0

정확히 작동하지 않는 방법은 무엇입니까? – ozbek

+0

오디오 잭이 꽂혀있는 동안 스피커폰에서 오디오를 재생하지 않습니다. 그것이 내가하려는 일입니다. – Koc

+0

정상적인 동작이 아니겠습니까? – ozbek

답변

1

나는 발견했다. MediaPlayer와 AudioManger는 같은 모드에 있습니다. Nexus 5 (4.4.2)에서 이것을 시도했습니다.

 final AudioManager audioManager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE); 
     audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); 
     audioManager.setSpeakerphoneOn(true); 

     MediaPlayer mp = null; 
     mp = MediaPlayer.create(this, R.raw.bad); 
     mp.setAudioStreamType(AudioManager.MODE_IN_COMMUNICATION); 
     mp.start();