Java tutorial
package com.ada.utils; /* * Copyright (C) 2010 Michael Pardo * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.util.ArrayList; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.os.Build; import com.ada.androidutils.BuildConfig; public class Log { private static final int DUMP_LENGTH = 4000; public static final int LEVEL_VERBOSE = 0; public static final int LEVEL_DEBUG = 1; public static final int LEVEL_INFO = 2; public static final int LEVEL_WARNING = 3; public static final int LEVEL_ERROR = 4; public static final int LEVEL_NONE = 5; private static String mTag = "AndroidUtils"; private static boolean mEnabled = false; private static String mRemoteUrl; private static String mPackageName; private static String mPackageVersion; public static void initialize(Context context) { initialize(context, null, null, BuildConfig.DEBUG); } public static void initialize(Context context, String tag, String url, boolean enabled) { if (tag != null) { mTag = tag; } mEnabled = enabled; mRemoteUrl = url; if (context != null) { try { PackageInfo pi = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); mPackageName = pi.packageName; mPackageVersion = pi.versionName; if (tag == null && pi.applicationInfo.labelRes > 0) { mTag = context.getString(pi.applicationInfo.labelRes); } } catch (NameNotFoundException e) { } } } public static int v(String msg) { if (mEnabled) { return android.util.Log.v(mTag, msg); } return 0; } public static int v(String tag, String msg) { if (mEnabled) { return android.util.Log.v(tag, msg); } return 0; } public static int v(String msg, Throwable tr) { if (mEnabled) { return android.util.Log.v(mTag, msg, tr); } return 0; } public static int v(String tag, String msg, Throwable tr) { if (mEnabled) { return android.util.Log.v(tag, msg, tr); } return 0; } public static int d(String msg) { if (mEnabled) { return android.util.Log.d(mTag, msg); } return 0; } public static int d(String tag, String msg) { if (mEnabled) { return android.util.Log.d(tag, msg); } return 0; } public static int d(String msg, Throwable tr) { if (mEnabled) { return android.util.Log.d(mTag, msg, tr); } return 0; } public static int d(String tag, String msg, Throwable tr) { if (mEnabled) { return android.util.Log.d(tag, msg, tr); } return 0; } public static int i(String msg) { if (mEnabled) { return android.util.Log.i(mTag, msg); } return 0; } public static int i(String tag, String msg) { if (mEnabled) { return android.util.Log.i(tag, msg); } return 0; } public static int i(String msg, Throwable tr) { if (mEnabled) { return android.util.Log.i(mTag, msg, tr); } return 0; } public static int i(String tag, String msg, Throwable tr) { if (mEnabled) { return android.util.Log.i(tag, msg, tr); } return 0; } public static int w(String msg) { if (mEnabled) { return android.util.Log.w(mTag, msg); } return 0; } public static int w(String tag, String msg) { if (mEnabled) { return android.util.Log.w(tag, msg); } return 0; } public static int w(String msg, Throwable tr) { if (mEnabled) { return android.util.Log.w(mTag, msg, tr); } return 0; } public static int w(String tag, String msg, Throwable tr) { if (mEnabled) { return android.util.Log.w(tag, msg, tr); } return 0; } public static int e(String msg) { if (mEnabled) { return android.util.Log.e(mTag, msg); } return 0; } public static int e(String tag, String msg) { if (mEnabled) { return android.util.Log.e(tag, msg); } return 0; } public static int e(String msg, Throwable tr) { if (mEnabled) { return android.util.Log.e(mTag, msg, tr); } return 0; } public static int e(String tag, String msg, Throwable tr) { if (mEnabled) { return android.util.Log.e(tag, msg, tr); } return 0; } public static int t(String msg, Object... args) { if (mEnabled) { return android.util.Log.v("test", String.format(msg, args)); } return 0; } public static void remote(final String msg) { if (mRemoteUrl == null) { return; } new Thread(new Runnable() { @Override public void run() { try { DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(mRemoteUrl); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("package_name", mPackageName)); params.add(new BasicNameValuePair("package_version", mPackageVersion)); params.add(new BasicNameValuePair("phone_model", Build.MODEL)); params.add(new BasicNameValuePair("sdk_version", Build.VERSION.RELEASE)); params.add(new BasicNameValuePair("message", msg)); httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); httpClient.execute(httpPost); } catch (Exception e) { } } }).start(); } public static void dump(String longMsg) { dump(mTag, longMsg, LEVEL_INFO); } public static void dump(String longMsg, int level) { dump(mTag, longMsg, level); } public static void dump(String tag, String longMsg) { dump(tag, longMsg, LEVEL_INFO); } public static void dump(String tag, String longMsg, int level) { int len = longMsg.length(); String curr; for (int a = 0; a < len; a += DUMP_LENGTH) { if (a + DUMP_LENGTH < len) { curr = longMsg.substring(a, a + DUMP_LENGTH); } else { curr = longMsg.substring(a); } switch (level) { case LEVEL_ERROR: Log.e(tag, curr); break; case LEVEL_WARNING: Log.w(tag, curr); break; case LEVEL_INFO: Log.i(tag, curr); break; case LEVEL_DEBUG: Log.d(tag, curr); break; case LEVEL_VERBOSE: default: Log.v(tag, curr); break; } } } }