나는 RingtoneManager를 사용하고 있으며 일부 전화기에서는 항상 null을 반환합니다. 사운드가 조용하거나 음색을 찾지 못하면 null을 반환한다는 것을 알고 있습니다. 소리가 켜져 있고 소리가 들리면 null이 반환되는 이유는 무엇입니까?null ringtone을 반환하는 RingtoneManager
Ringtone ringtone;
ringtone = RingtoneManager.getRingtone(context, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
if(ringtone == null)
{
Log.d("Debug", "ringtone is null");
}
else
{
ringtone.play();
}
나는 모든 권한이 벨소리를 재생 (내 휴대 전화에서 작동), 심지어 SD 카드 권한이 있어야 활성화 : 코드는 여기에
내가 사용하고 무엇을 .... 내 넥서스 S에서 작동 벨소리가 SD 카드에있는 경우에만 사용할 수 있습니다. 이견있는 사람?
에 따르면 RingtoneManager의 소스 코드. getRingtone이 null을 반환하는 유일한 경우는 지정된 URI의 벨소리를 열 수없는 경우입니다. 또한''ringtone을 열지 못했습니다 '+ ringtoneUri'을 logcat에 넣어야합니다. 당신은 logcat 출력에 그러한 라인을 보았습니까? –
내 것은 아니지만 일부 사용자는 벨소리가 실행되지 않는다고 불평하고 있습니다. NULL 체크를하기 전에 역 참조 된 포인터 때문에 충돌이 발생했습니다. 내가 생각할 수있는 유일한 생각은 URI를 얻을 수 없다는 것입니다. 그러나 유효한 벨소리가있을 때 왜 그렇게 할 수 없는지 모르겠습니다. 어쩌면 자원 잠금 장치일까요? – atomicbaum