현재 다양한 간격으로 사운드를 재생하는 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로 버전을 업데이트하기 위해 그의 전화를 잡으려고 노력할 것이지만 그동안 간헐적 인 문제를 야기 할 수있는 코드에는 분명히 잘못된 것이있다.
저는 mp3 (에뮬레이터에서 1.6)로 테스트 한 다음, 영웅이 갖고있는 (2.2와 함께) 둘 다 작동하는지 테스트했습니다. x8이 어떤 형식을 사용하는지 또는 어떤 Android 버전인지는 알지 못합니다 (빠른 Google은 2.1을 제안하지만). 감사! – Dan