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
- Android工具类(时间格式化、获取地址)
- 生成本地文件/格式化时间/获取时间差 工具类
- android 时间获取以及时间格式化
- android 时间获取以及时间格式化
- android 时间获取以及时间格式化
- android 时间获取以及时间格式化
- android 时间获取以及时间格式化
- 获取时间/日期工具类:格式化日期,获取当前时间,指定时间,上一月,指定时间的毫秒数
- Android工具类之时间日期格式化代码大全
- Android工具类之时间日期格式化代码大全
- JS时间格式化工具类
- js时间格式化工具类
- 时间格式化的工具类
- android 获取时间的工具类
- android 获取日期/时间格式化及注意
- java 时间 格式化(获取当前时间)
- 获取时间,格式化时间
- 写爬虫用到的工具类--(2)[时间格式化]
- sudo指令
- Spring之AOP(非XML配置)
- 用echarts3和worldcloud制作炫酷的字符云图
- 网络协议详解
- 信息系统项目管理知识--项目整合管理
- Android工具类(时间格式化、获取地址)
- linux命令之mv
- ViewPager.setCurrentItem(0)报错
- RPC框架比较
- 便于搜索引擎搜索的meta设置
- Oracle---使用PL/SQL Developer连接Oracle12C(64位)版本
- VMware Workstation12安装Mac OS X 10.11
- 59条令人捧腹但真实的程序员编程语录
- 嵌入式Linux开打core dumps调试功能