您的位置:首页 > 理论基础 > 计算机网络

多种常用工具类

2015-06-17 17:10 681 查看
在这里总结多个工具类,方便以后的使用,有关于App、Toast、日志、网络状态等等常用到的方法总结,和大家分享,共同进步




1、日志

package net.wujingchao.android.utility

import android.util.Log;

public final class L {

    private final static int LEVEL = 5;

    private final static String DEFAULT_TAG = "L";

    private L() {

        throw new UnsupportedOperationException("L cannot instantiated!");

    }

    public static void v(String tag,String msg) {

        if(LEVEL >= 5)Log.v(tag == null ? DEFAULT_TAG:tag,msg == null?"":msg);

    }

    public static void d(String tag,String msg) {

        if(LEVEL >= 4)Log.d(tag == null ? DEFAULT_TAG:tag,msg == null?"":msg);

    }

    public static void i(String tag,String msg) {

        if(LEVEL >= 3)Log.i(tag == null ? DEFAULT_TAG:tag,msg == null?"":msg);

    }

    public static void w(String tag,String msg) {

        if(LEVEL >= 2)Log.w(tag == null ? DEFAULT_TAG:tag,msg == null?"":msg);

    }

    public static void e(String tag,String msg) {

        if(LEVEL >= 1)Log.e(tag == null ? DEFAULT_TAG:tag,msg == null?"":msg);

    }

}

2、Toast

package net.wujingchao.android.utility        

import android.content.Context;

import android.widget.Toast;

public class T {

    private final static boolean isShow = true;

    private T(){

        throw new UnsupportedOperationException("T cannot be instantiated");

    }

    public static void showShort(Context context,CharSequence text) {

        if(isShow)Toast.makeText(context,text,Toast.LENGTH_SHORT).show();

    }

    public static void showLong(Context context,CharSequence text) {

        if(isShow)Toast.makeText(context,text,Toast.LENGTH_LONG).show();

    }

}

3、网络

package net.wujingchao.android.utility

import android.app.Activity;

import android.content.ComponentName;

import android.content.Context;

import android.content.Intent;

import android.net.ConnectivityManager;

import android.net.NetworkInfo;

import javax.net.ssl.HttpsURLConnection;

import javax.net.ssl.SSLContext;

import javax.net.ssl.TrustManager;

import javax.net.ssl.X509TrustManager;

public class NetworkUtil {

  

    private NetworkUtil() {

        throw new UnsupportedOperationException("NetworkUtil cannot be instantiated");

    }

    /**

     * 判断网络是否连接

     *

     */

    public static boolean isConnected(Context context)  {

        ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

       if (null != connectivity) {

            NetworkInfo info = connectivity.getActiveNetworkInfo();

            if (null != info && info.isConnected()){

                if (info.getState() == NetworkInfo.State.CONNECTED) {

                    return true;

                }

            }

        }

        return false;

    }

    /**

     * 判断是否是wifi连接

     */

    public static boolean isWifi(Context context){

        ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

        if (connectivity == null) return false;

       return connectivity.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;

    }

    /**

     * 打开网络设置界面

     */

    public static void openSetting(Activity activity) {

        Intent intent = new Intent("/");

        ComponentName componentName = new ComponentName("com.android.settings","com.android.settings.WirelessSettings");

        intent.setComponent(componentName);

        intent.setAction("android.intent.action.VIEW");

        activity.startActivityForResult(intent, 0);

    }

    /**

     * 使用SSL不信任的证书

     */

    public static  void useUntrustedCertificate() {

        // Create a trust manager that does not validate certificate chains

        TrustManager[] trustAllCerts = new TrustManager[]{

                new X509TrustManager() {

                    public java.security.cert.X509Certificate[] getAcceptedIssuers() {

                        return null;

                    }

                    public void checkClientTrusted(

                            java.security.cert.X509Certificate[] certs, String authType) {

                    }

                   public void checkServerTrusted(

                            java.security.cert.X509Certificate[] certs, String authType) {

                    }

                }

       };

        // Install the all-trusting trust manager

       try {

            SSLContext sc = SSLContext.getInstance("SSL");

            sc.init(null, trustAllCerts, new java.security.SecureRandom());

            HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

        } catch (Exception e) {

           e.printStackTrace();

        }

    }

}

4、像素单位转换

package net.wujingchao.android.utility        

import android.content.Context;

import android.util.TypedValue;

        public class DensityUtil {

    private DensityUtil() {

        throw new UnsupportedOperationException("DensityUtil cannot be instantiated");

    }

    public int dip2px(Context context,int dipValue) {

        final float scale = context.getResources().getDisplayMetrics().density;

        return (int)(dipValue*scale + 0.5f);

   }

    public int px2dip(Context context,float pxValue) {

        final float scale = context.getResources().getDisplayMetrics().density;

        return (int)(pxValue/scale + 0.5f);

    }

    public static float px2sp(Context context, float pxValue){

        return (pxValue / context.getResources().getDisplayMetrics().scaledDensity);

    }

    public static int sp2px(Context context, int spValue){

       return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,

                spValue, context.getResources().getDisplayMetrics());

    }

}

5、屏幕

package net.wujingchao.android.utility        

import android.app.Activity;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.Rect;

import android.util.DisplayMetrics;

import android.view.View;

import android.view.WindowManager;

public class ScreenUtil {

    private ScreenUtil()

    {

        throw new UnsupportedOperationException("ScreenUtil cannot be instantiated");

    }

    public static int getScreenWidth(Context context)

    {

        WindowManager wm = (WindowManager) context

                .getSystemService(Context.WINDOW_SERVICE);

        DisplayMetrics outMetrics = new DisplayMetrics();

        wm.getDefaultDisplay().getMetrics(outMetrics);

        return outMetrics.widthPixels;

    }

    public static int getScreenHeight(Context context) {

        WindowManager wm = (WindowManager) context

                .getSystemService(Context.WINDOW_SERVICE);

        DisplayMetrics outMetrics = new DisplayMetrics();

        wm.getDefaultDisplay().getMetrics(outMetrics);

        return outMetrics.heightPixels;

    }

    public static int getStatusHeight(Context context) {

        int statusHeight = -1;

        try {

            Class<?> clazz = Class.forName("com.android.internal.R$dimen");

            Object object = clazz.newInstance();

            int height = Integer.parseInt(clazz.getField("status_bar_height")

                    .get(object).toString());

            statusHeight = context.getResources().getDimensionPixelSize(height);

        } catch (Exception e) {

            e.printStackTrace();

        }

        return statusHeight;

    }

    /**

     * 获取当前屏幕截图,包含状态栏

     */

    public static Bitmap snapShotWithStatusBar(Activity activity){

        View view = activity.getWindow().getDecorView();

        view.setDrawingCacheEnabled(true);

        view.buildDrawingCache();

        Bitmap bmp = view.getDrawingCache();

        int width = getScreenWidth(activity);

        int height = getScreenHeight(activity);

        Bitmap bp = null;

        bp = Bitmap.createBitmap(bmp, 0, 0, width, height);

        view.destroyDrawingCache();

        return bp;

    }

    /**

     * 获取当前屏幕截图,不包含状态栏

     *

     */

    public static Bitmap snapShotWithoutStatusBar(Activity activity){

        View view = activity.getWindow().getDecorView();

        view.setDrawingCacheEnabled(true);

        view.buildDrawingCache();

        Bitmap bmp = view.getDrawingCache();

        Rect frame = new Rect();

        activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);

        int statusBarHeight = frame.top;

        int width = getScreenWidth(activity);

        int height = getScreenHeight(activity);

        Bitmap bp = null;

        bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height

                - statusBarHeight);

        view.destroyDrawingCache();

        return bp;

    }

}

6、App相关

package net.wujingchao.android.utility        

import android.content.Context;

import android.content.pm.PackageInfo;

import android.content.pm.PackageManager;

public class AppUtil {

    private AppUtil() {

        throw new UnsupportedOperationException("AppUtil cannot instantiated");

   }

    /**

     * 获取app版本名

     */

    public static String getAppVersionName(Context context){

        PackageManager pm = context.getPackageManager();

        PackageInfo pi;

        try {

           pi = pm.getPackageInfo(context.getPackageName(),0);

            return pi.versionName;

        } catch (PackageManager.NameNotFoundException e) {

            e.printStackTrace();

        }

        return "";

    }

    /**

     * 获取应用程序版本名称信息

     */

    public static String getVersionName(Context context)

    {

        try{

            PackageManager packageManager = context.getPackageManager();

            PackageInfo packageInfo = packageManager.getPackageInfo(

                    context.getPackageName(), 0);

            return packageInfo.versionName;

        }catch (PackageManager.NameNotFoundException e) {

            e.printStackTrace();

        }

        return null;

    }

    /**

     * 获取app版本号

     */

    public static int getAppVersionCode(Context context){

        PackageManager pm = context.getPackageManager();

        PackageInfo pi;

        try {

            pi = pm.getPackageInfo(context.getPackageName(),0);

            return pi.versionCode;

        } catch (PackageManager.NameNotFoundException e) {

            e.printStackTrace();

        }

        return 0;

    }

}

7、键盘

package net.wujingchao.android.utility

import android.content.Context;

import android.view.inputmethod.InputMethodManager;

import android.widget.EditText;

public class KeyBoardUtil{

    private KeyBoardUtil(){

        throw new UnsupportedOperationException("KeyBoardUtil cannot be instantiated");

    }

    /**

     * 打开软键盘

     */

    public static void openKeybord(EditText mEditText, Context mContext){

        InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);

        imm.showSoftInput(mEditText, InputMethodManager.RESULT_SHOWN);

        imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);

    }

    /**

     * 关闭软键盘

     */

    public static void closeKeybord(EditText mEditText, Context mContext) {

        InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);

        imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);

    }

}

8、文件上传下载

package net.wujingchao.android.utility

import android.content.Context;

import android.os.Environment;

import java.io.ByteArrayOutputStream;

import java.io.DataOutputStream;

import java.io.File; 

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStream; 

import java.io.OutputStream;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.ProtocolException;

import java.net.URL;

import java.util.UUID;

import com.mixiaofan.App;

public class DownloadUtil {

         private static final int TIME_OUT = 30*1000; //超时时间

         private static final String CHARSET = "utf-8"; //设置编码

         private DownloadUtil() {

            throw new UnsupportedOperationException("DownloadUtil cannot be instantiated");

         }

    /**

     * @param file  上传文件

     * @param RequestURL 上传文件URL

     * @return 服务器返回的信息,如果出错则返回为null

     */

         public static String uploadFile(File file,String RequestURL) {

                 String BOUNDARY = UUID.randomUUID().toString(); //边界标识 随机生成 String PREFIX = "--" , LINE_END = "\r\n";

         String PREFIX = "--" , LINE_END = "\r\n";

         String CONTENT_TYPE = "multipart/form-data"; //内容类型

                 try {

                         URL url = new URL(RequestURL);

                         HttpURLConnection conn = (HttpURLConnection) url.openConnection();

             conn.setReadTimeout(TIME_OUT);

             conn.setConnectTimeout(TIME_OUT);

             conn.setDoInput(true); //允许输入流

                        conn.setDoOutput(true); //允许输出流

                         conn.setUseCaches(false); //不允许使用缓存 

                         conn.setRequestMethod("POST"); //请求方式 

                         conn.setRequestProperty("Charset", CHARSET);

             conn.setRequestProperty("Cookie", "PHPSESSID=" + App.getSessionId());

                         //设置编码 

                         conn.setRequestProperty("connection", "keep-alive"); 

                         conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY);

                         if(file!=null) { 

                     /** * 当文件不为空,把文件包装并且上传 */

                     OutputStream outputSteam=conn.getOutputStream();

                     DataOutputStream dos = new DataOutputStream(outputSteam);

                     StringBuffer sb = new StringBuffer();

                    sb.append(PREFIX);

                     sb.append(BOUNDARY); sb.append(LINE_END);

                     /**

                     * 这里重点注意:

                     * name里面的值为服务器端需要key 只有这个key 才可以得到对应的文件

                    * filename是文件的名字,包含后缀名的 比如:abc.png

                     */

                     sb.append("Content-Disposition: form-data; name=\"img\"; filename=\""+file.getName()+"\""+LINE_END);

                     sb.append("Content-Type: application/octet-stream; charset="+CHARSET+LINE_END);

                     sb.append(LINE_END);

                     dos.write(sb.toString().getBytes());

                     InputStream is = new FileInputStream(file);

                     byte[] bytes = new byte[1024];

                     int len;

                     while((len=is.read(bytes))!=-1)

                     {

                        dos.write(bytes, 0, len);

                     }

                     is.close();

                     dos.write(LINE_END.getBytes());

                     byte[] end_data = (PREFIX+BOUNDARY+PREFIX+LINE_END).getBytes();

                     dos.write(end_data);

                     dos.flush();

                     /**

                     * 获取响应码 200=成功

                     * 当响应成功,获取响应的流

                     */

                     ByteArrayOutputStream bos = new ByteArrayOutputStream();

                     InputStream resultStream = conn.getInputStream();

                     len = -1;

                     byte [] buffer = new byte[1024*8];

                     while((len = resultStream.read(buffer)) != -1) {

                         bos.write(buffer,0,len);

                     }

                     resultStream.close();

                    bos.flush();

                     bos.close();

                     String info = new String(bos.toByteArray());

                     int res = conn.getResponseCode();

                     if(res==200){

                        return info;

                     }else {

                         return null;

                     }

                            }

               } catch (MalformedURLException e) {

                    e.printStackTrace();

               } catch (ProtocolException e) {

                    e.printStackTrace();

               } catch (FileNotFoundException e) {

                    e.printStackTrace();

               } catch (IOException e) {

                     e.printStackTrace();

               }

         return null;

         }

     public static byte[] download(String urlStr) {

            HttpURLConnection conn = null;

            InputStream is = null;

            byte[] result = null;

            ByteArrayOutputStream bos = null;

            try {

                URL url = new URL(urlStr);

                conn = (HttpURLConnection) url.openConnection();

               conn.setRequestMethod("GET");

                conn.setConnectTimeout(TIME_OUT);

                conn.setReadTimeout(TIME_OUT);

                conn.setDoInput(true);

                conn.setUseCaches(false);//不使用缓存

                if(conn.getResponseCode() == 200) {

                    is = conn.getInputStream();

                    byte [] buffer = new byte[1024*8];

                    int len;

                    bos = new ByteArrayOutputStream();

                    while((len = is.read(buffer)) != -1) {

                        bos.write(buffer,0,len);

                    }

                    bos.flush();

                    result = bos.toByteArray();

                }

            } catch (MalformedURLException e) {

                e.printStackTrace();

            } catch (IOException e) {

                e.printStackTrace();

            } finally {

                try {

                    if(bos != null){

                        bos.close();

                    }

                    if (is != null) {

                        is.close();

                    }

                    if (conn != null)conn.disconnect();

                } catch (IOException e) {

                    e.printStackTrace();

                }

            }

            return result;

        }

    /**

     * 获取缓存文件

     */

     public static File getDiskCacheFile(Context context,String filename,boolean isExternal) {

        if(isExternal && (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))) {

            return new File(context.getExternalCacheDir(),filename);

        }else {

            return new File(context.getCacheDir(),filename);

        }

    }

    /**

     * 获取缓存文件目录

     */

     public static File getDiskCacheDirectory(Context context) {

        if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {

            return context.getExternalCacheDir();

        }else {

            return context.getCacheDir();

        }

    }

}

9、加密

package net.wujingchao.android.utility

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

public class CipherUtil { 

    private CipherUtil() {

    }

    //字节数组转化为16进制字符串

    public static String byteArrayToHex(byte[] byteArray) {

        char[] hexDigits = {'0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F' };

        char[] resultCharArray =new char[byteArray.length * 2];

        int index = 0;

        for (byte b : byteArray) {

            resultCharArray[index++] = hexDigits[b>>> 4 & 0xf];

            resultCharArray[index++] = hexDigits[b & 0xf];

        }

        return new String(resultCharArray);

    }

    //字节数组md5算法

    public static byte[] md5 (byte [] bytes) {

        try {

            MessageDigest messageDigest = MessageDigest.getInstance("MD5");

            messageDigest.update(bytes);

            return messageDigest.digest();

        } catch (NoSuchAlgorithmException e) {

            e.printStackTrace();

        }

        return null;

    }

}

10、时间

package net.wujingchao.android.utility

import java.text.SimpleDateFormat;

import java.util.Date;

public class DateUtil {

    //转换中文对应的时段

    public static String convertNowHour2CN(Date date) {

        SimpleDateFormat sdf = new SimpleDateFormat("HH");

        String hourString = sdf.format(date);

        int hour = Integer.parseInt(hourString);

        if(hour < 6) {

            return "凌晨";

        }else if(hour >= 6 && hour < 12) {

            return "早上";

        }else if(hour == 12) {

            return "中午";

        }else if(hour > 12 && hour <=18) {

            return "下午";

        }else if(hour >=19) {

            return "晚上";

        }

        return "";

    }

    //剩余秒数转换

    public static String convertSecond2Day(int time) {

        int day = time/86400;

        int hour = (time - 86400*day)/3600;

        int min = (time - 86400*day - 3600*hour)/60;

        int sec = (time - 86400*day - 3600*hour - 60*min);

        StringBuilder sb = new StringBuilder();

        sb.append(day);

        sb.append("天");

        sb.append(hour);

        sb.append("时");

        sb.append(min);

        sb.append("分");

        sb.append(sec);

        sb.append("秒");

        return sb.toString();

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息