Android,从真实用户那里获取更多日志

时间:2018-11-02 03:10:52

标签: android android-mediaplayer logcat

我的用户之一无法成功创建MediaPlayer。 API始终返回null。

       ringtone = MediaPlayer.create(GlobalApplication.getInstance(), ringUri, null, new AudioAttributes.Builder()
                        .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
                        .setContentType(AudioAttributes.CONTENT_TYPE_UNKNOWN)
                        .build(), 0);

我已经打印出ringUri。这是默认的手机铃声,如下所示。我的用户还尝试了其他系统铃声,但仍然遇到相同的问题。

content://settings/system/ringtone

所以我想问题不是MediaPlayer create method return null object 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;
}

0 个答案:

没有答案