2011-01-27 4 views
1

현재 다양한 간격으로 사운드를 재생하는 Android 애플리케이션을 개발 중입니다. 내가 작동 영웅 (2.2 실행)와 1.6 에뮬레이터에서 예상대로 정확히 작동하는 코드 (아래 포함)가 있습니다. 그러나, 그것은 내 친구 Xperia x8에서 작동하지 않습니다 - 아무 소리도 재생되지 않습니다. 그는 알림 음을 설정해 놓았습니다. 알림 음은 텍스트를 수신 할 때마다 재생됩니다.일부 플랫폼에서 Android MediaPlayer가 사운드를 재생하지 않습니다.

private void prepareAudio(){ 
    alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    mp = new MediaPlayer(); 
    if(alert != null){ 
     try { 
      mp.setDataSource(ctx, alert); 
     } catch (IllegalArgumentException e) { 
      Log.i("Prepare Audio", e.getMessage()); 
     } catch (SecurityException e) { 
      Log.i("Prepare Audio", e.getMessage()); 
     } catch (IllegalStateException e) { 
      Log.i("Prepare Audio", e.getMessage()); 
     } catch (IOException e) { 
      Log.i("Prepare Audio", e.getMessage()); 
     } 
    } 
    am = (AudioManager)ctx.getSystemService(Context.AUDIO_SERVICE); 
} 

private void notifyUser(){ 
    if(alert != null){ 
     if (am.getStreamVolume(AudioManager.STREAM_ALARM) != 0) { 
      mp.setAudioStreamType(AudioManager.STREAM_ALARM); 
      mp.setLooping(false); 
      try { 
       mp.prepare(); 
      } catch (IllegalStateException e) { 
       Log.i("Notify User", e.getMessage()); 
      } catch (IOException e) { 
       Log.i("Notify User", e.getMessage()); 
      } 
      mp.start(); 
     } else { 
      Log.i("Notify User", "Alarm volume zero"); 
     } 
    } else { 
     Log.i("Notify User", "Uri is null"); 
    } 
    long[] pattern = {0,200,300,600}; 
    v.vibrate(pattern, -1); 
} 

PrepareAudio는 클래스를 초기화 할 때 호출되며 사운드를 재생할 때마다 notifyUser가 호출됩니다. 전화가 항상 진동해야하므로 notifyUser가 확실히 호출됩니다.

내 친구가 설치 한 버전은 Log.i가 아닌 e.printStackTrace를 사용하므로 logcat에서 스팟이 나오지 않습니다. 나는 Log.i로 버전을 업데이트하기 위해 그의 전화를 잡으려고 노력할 것이지만 그동안 간헐적 인 문제를 야기 할 수있는 코드에는 분명히 잘못된 것이있다.

답변

2

원래 게시물에 나와있는 예외 처리를 업데이트하면 문제가 해결 된 것으로 나타났습니다.

당신은 아무것도에 대한 위의 코드를 사용하는 경우, 어떤 불쾌한을 방지하기 때문에 오히려

Log.i("Notify User", e.getMessage()); 

사용

Log.i("Notify User", e.getMessage() + ""); 

보다 때로는 e.getMessage()가 null을 반환 주목할 필요가 예외가 발생하면 FC.

죄송합니다.

0

확실하지 감사합니다,하지만 안드로이드의 이전 버전은 WAV 파일을 재생 문제가 있었다. 이 WAV 파일이나 MP3 파일을 재생하려고합니까?

+0

저는 mp3 (에뮬레이터에서 1.6)로 테스트 한 다음, 영웅이 갖고있는 (2.2와 함께) 둘 다 작동하는지 테스트했습니다. x8이 어떤 형식을 사용하는지 또는 어떤 Android 버전인지는 알지 못합니다 (빠른 Google은 2.1을 제안하지만). 감사! – Dan

관련 문제