Один из моих пользователей не может успешно создать MediaPlayer. API всегда возвращает ноль.
ringtone = MediaPlayer.create(GlobalApplication.getInstance(), ringUri, null, new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
.setContentType(AudioAttributes.CONTENT_TYPE_UNKNOWN)
.build(), 0);
Я уже распечатываю кольцо Uri. Это рингтон по умолчанию, как показано ниже, который должен быть в порядке. Мой пользователь также пробует другую системную мелодию звонка и все еще имеет ту же проблему.
content://settings/system/ringtone
Так что, я думаю, проблема не в «недопустимом аудио-ресурсе», упомянутом Метод создания MediaPlayer возвращает нулевой объект Android .
Когда я зашел в MediaPlayer.create (), я заметил, что эта функция выводит журнал о том, почему создание не удалось. Тем не менее, это не выбрасывает эти ошибки. Поэтому я не могу записать, что не так в моей системе журналов. В моей системе журналов мой пользователь может сообщить мой журнал (не logcat) в мое облако, чтобы я мог изучить проблему.
В этом случае, как я могу отладить глубже? Есть ли способ, которым я могу получить logcat от реального пользователя, не прося его сделать много вещей? Или моя программа может записать какой-нибудь вывод Log.d Log.e, чтобы я мог выбрать несколько полезных журналов и поместить их в мою систему журналов?
public static MediaPlayer create(Context context, Uri uri, SurfaceHolder holder,
AudioAttributes audioAttributes, int audioSessionId) {
try {
MediaPlayer mp = new MediaPlayer();
final AudioAttributes aa = audioAttributes != null ? audioAttributes :
new AudioAttributes.Builder().build();
mp.setAudioAttributes(aa);
mp.setAudioSessionId(audioSessionId);
mp.setDataSource(context, uri);
if (holder != null) {
mp.setDisplay(holder);
}
mp.prepare();
return mp;
} catch (IOException ex) {
Log.d(TAG, "create failed:", ex);
// fall through
} catch (IllegalArgumentException ex) {
Log.d(TAG, "create failed:", ex);
// fall through
} catch (SecurityException ex) {
Log.d(TAG, "create failed:", ex);
// fall through
}
return null;
}