Android工具类(时间格式化、获取地址)

来源:互联网 发布:乐清网络问政平台 编辑:程序博客网 时间:2024/05/18 06:14

Android工具类

时间格式化输出(ms -> hh:mm:ss)及Android4.4及以上根据系统返回的data获取图片及视频地址的方法:

import android.annotation.TargetApi;import android.content.ContentUris;import android.content.Context;import android.database.Cursor;import android.net.Uri;import android.os.Build;import android.os.Environment;import android.provider.DocumentsContract;import android.provider.MediaStore;/** * Created by admin on 2017/5/2. * 系统工具类 */public class SystemUtil {    /**     * 获取媒体文件的播放时间,格式化输出     *     * @param ms 毫秒     * @return 格式化后的结果: hh:mm:ss     */    public static String getMediaTime(int ms) {        int hour, minute, second;        //计算小时 1h = 3600_000 ms        hour = ms / 3600_000;        //计算分钟 1min = 60_000 ms        minute = (ms - hour * 3600_000) / 60_000;        //计算秒钟 1s = 1000 ms        second = (ms - hour * 3600_000 - minute * 60_000) / 1000;        //格式化输出,补零操作        String sHour, sMinute, sSecond;        if (hour < 10) {            sHour = "0" + String.valueOf(hour);        } else {            sHour = String.valueOf(hour);        }        if (minute < 10) {            sMinute = "0" + String.valueOf(minute);        } else {            sMinute = String.valueOf(minute);        }        if (second < 10) {            sSecond = "0" + String.valueOf(second);        } else {            sSecond = String.valueOf(second);        }        return sHour + ":" + sMinute + ":" + sSecond;    }    /**     * <br>功能简述:4.4及以上获取图片及视频地址的方法     * <br>功能详细描述:     * <br>注意:     *     * @param context 上下文     * @param uri 待解析的 Uri     * @return 真实路径     */    @TargetApi(Build.VERSION_CODES.KITKAT)    public static String getPath(final Context context, final Uri uri) {        //判断是否高于版本4.4        final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;        //DocumentProvider        if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {            //ExternalStorageProvider            if (isExternalStorageDocument(uri)) {                final String docId = DocumentsContract.getDocumentId(uri);                final String[] split = docId.split(":");                final String type = split[0];                if ("primary".equalsIgnoreCase(type)) {                    return Environment.getExternalStorageDirectory() + "/" + split[1];                }            }            //DownloadsProvider            else if (isDownloadsDocument(uri)) {                final String docId = DocumentsContract.getDocumentId(uri);                final Uri contentUri = ContentUris.withAppendedId(                        Uri.parse("content://downloads/public_downloads"), Long.valueOf(docId));                return getDataColumn(context, contentUri, null, null);            }            //MediaProvider            else if (isMediaDocument(uri)) {                final String docId = DocumentsContract.getDocumentId(uri);                final String[] split = docId.split(":");                final String type = split[0];                Uri contentUri = null;                if ("iamge".equals(type)) {                    contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;                } else if ("video".equals(type)) {                    contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;                } else if ("audio".equals(type)) {                    contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;                }                final String selection = "_id=?";                final String[] selectionArgs = new String[]{split[1]};                return getDataColumn(context, contentUri, selection, selectionArgs);            }        }        //MediaStore (and general)        else if ("content".equalsIgnoreCase(uri.getScheme())) {            //return the remote address            if (isGooglePhotosUri(uri)) {                return uri.getLastPathSegment();            } else {                return getDataColumn(context, uri, null, null);            }        }        //File        else if ("file".equalsIgnoreCase(uri.getScheme())) {            return uri.getPath();        }        return null;    }    public static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) {        Cursor cursor = null;        final String column = "_data";        final String[] projection = {column};        try {            cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null);            if (cursor != null && cursor.moveToFirst()) {                final int index = cursor.getColumnIndexOrThrow(column);                return cursor.getString(index);            }        } catch (Exception e) {            e.printStackTrace();        } finally {            if (cursor != null) {                cursor.close();            }        }        return null;    }    /**     * @param uri The Uri to check.     * @return Whether the Uri authority is ExtermalStorageProvider     */    public static boolean isExternalStorageDocument(Uri uri) {        return "com.android.externalstorage.documents".equals(uri.getAuthority());    }    /**     * @param uri The Uri to check.     * @return Whether the Uri authority is DownloadsProvider     */    public static boolean isDownloadsDocument(Uri uri) {        return "com.android.providers.downloads.documents".equals(uri.getAuthority());    }    /**     * @param uri The Uri to check.     * @return Whether the Uri authority is MediaProvider     */    public static boolean isMediaDocument(Uri uri) {        return "com.android.media.documents".equals(uri.getAuthority());    }    /**     * @param uri The Uri to check.     * @return Whether the Uri authority is Google Photos     */    public static boolean isGooglePhotosUri(Uri uri) {        return "com.google.android.apps.photos.content".equals(uri.getAuthority());    }}

使用示例:

    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);    intent.setType("*/*"); //设置类型,例:image/* video/*    /*取得视频资源后返回(intent, 1)*/    startActivityForResult(intent, VIDEO_REQUEST);

打开系统文档管理选择文件,返回结果。

    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        try {            super.onActivityResult(requestCode, resultCode, data);            if (requestCode == VIDEO_REQUEST && data != null) {                //进入播放页面                Intent intent = new Intent();                intent.setClass(MainActivity.this, VLCPlayerActivity.class);                intent.putExtra("VideoType", "Local");                intent.putExtra("VideoUrl", SystemUtil.getPath(MainActivity.this, data.getData()));                startActivity(intent);            }        } catch (Exception e) {            Log.d("Local", e.toString());        }    }

根据返回的data通过SystemUtil.getPath()获取String格式的地址


0 0
原创粉丝点击