package com.wigwamlabs.spotify;
import android.app.NotificationManager;
import android.content.Context;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import com.crashlytics.android.Crashlytics;
@SuppressWarnings({"ConstantIfStatement", "SameParameterValue"})
public final class Debug {
private enum AndroidLog {
OFF,
DEBUG_ONLY,
}
private enum ServerLog {
ON,
OFF,
}
private static final String TAG = "SpotifyLibrary";
private static final boolean CRASHLYTICS_ENABLED = !BuildConfig.DEBUG;
static void logAudioFocus(String msg) {
log(AndroidLog.DEBUG_ONLY, ServerLog.ON, msg);
}
static void logMediaButton(String button) {
log(AndroidLog.DEBUG_ONLY, ServerLog.ON, "Received media button: " + button);
}
static void logQueue(String msg) {
log(AndroidLog.DEBUG_ONLY, ServerLog.ON, msg);
}
static void logAudioResponsivenessVerbose(String msg) {
log(AndroidLog.OFF, ServerLog.OFF, "Audio responsiveness: " + msg);
}
static void logAudioResponsiveness(String msg) {
log(AndroidLog.DEBUG_ONLY, ServerLog.ON, "Audio responsiveness: " + msg);
}
static void notifyAudioUnresponsive(Context context, String title, String contentText) {
if (BuildConfig.DEBUG) {
final NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
final NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_stat_player)
.setContentTitle(title)
.setContentText(contentText);
notificationManager.notify(R.id.actionLogin, builder.build());
}
}
static void logForegroundNotification(String msg) {
log(AndroidLog.DEBUG_ONLY, ServerLog.ON, "Foreground notifications: " + msg);
}
static void logLifecycle(String msg) {
log(AndroidLog.DEBUG_ONLY, ServerLog.ON, msg);
}
static void logTts(String msg) {
log(AndroidLog.DEBUG_ONLY, ServerLog.ON, "TTS: " + msg);
}
static void logImageProvider(String msg, Exception e) {
log(AndroidLog.DEBUG_ONLY, ServerLog.ON, "Image provider: " + msg, e);
}
static void logImageProvider(String msg) {
log(AndroidLog.DEBUG_ONLY, ServerLog.ON, "Image provider: " + msg);
}
public static void logBitmapCache(String msg) {
log(AndroidLog.DEBUG_ONLY, ServerLog.ON, "Bitmap cache: " + msg);
}
@Deprecated
public static void logTemp(String msg) {
log(AndroidLog.DEBUG_ONLY, ServerLog.OFF, "XXX: " + msg);
}
private static void log(AndroidLog androidLog, ServerLog serverLog, String event) {
if (androidLog == AndroidLog.DEBUG_ONLY && BuildConfig.DEBUG) {
Log.d(TAG, event);
}
if (CRASHLYTICS_ENABLED && serverLog == ServerLog.ON) {
Crashlytics.log(event);
}
}
private static void log(AndroidLog androidLog, ServerLog serverLog, String event, Throwable exception) {
if (androidLog == AndroidLog.DEBUG_ONLY && BuildConfig.DEBUG) {
Log.w(TAG, event, exception);
}
if (CRASHLYTICS_ENABLED && serverLog == ServerLog.ON) {
Crashlytics.logException(exception);
}
}
}