package com.sinata.xqmuse.utils.picture;
|
|
import android.content.Context;
|
import android.content.Intent;
|
import android.graphics.Bitmap;
|
import android.media.MediaMetadataRetriever;
|
import android.net.Uri;
|
import android.os.Build;
|
import android.os.Environment;
|
import android.text.TextUtils;
|
import android.text.format.Formatter;
|
import android.util.Log;
|
|
import androidx.core.content.FileProvider;
|
|
|
import com.sinata.xqmuse.BuildConfig;
|
|
import java.io.ByteArrayOutputStream;
|
import java.io.File;
|
import java.io.FileInputStream;
|
import java.io.FileOutputStream;
|
import java.io.IOException;
|
import java.net.URLDecoder;
|
import java.util.HashMap;
|
import java.util.Locale;
|
|
|
public class FileUtils {
|
|
public static String getFileName(String pathandname) {
|
/**
|
* 仅保留文件名不保留后缀
|
*/
|
int start = pathandname.lastIndexOf("/");
|
int end = pathandname.lastIndexOf(".");
|
if (start != -1 && end != -1) {
|
return pathandname.substring(start + 1, end);
|
} else {
|
return null;
|
}
|
}
|
|
public static String getFileEndingName(String pathandname) {
|
/**
|
* 仅保留文件名不保留后缀
|
*/
|
int end = pathandname.lastIndexOf(".");
|
if (end != -1) {
|
return pathandname.substring(end+1);
|
} else {
|
return "";
|
}
|
}
|
|
/**
|
* 保留文件名及后缀
|
*/
|
public static String getFileNameWithSuffix(String pathandname) {
|
int start = pathandname.lastIndexOf("/");
|
if (start != -1) {
|
String substring = pathandname.substring(start + 1);
|
try {
|
return URLDecoder.decode(substring,"utf-8");//处理阿里云返回文件路径编码问题
|
}catch (Exception e){
|
return substring;
|
}
|
} else {
|
return null;
|
}
|
}
|
|
public static String getRingDuring(String mUri){
|
String duration="0";
|
try {
|
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
|
mmr.setDataSource(mUri);
|
duration = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
|
} catch (Exception e) {
|
e.printStackTrace();
|
return duration;
|
}
|
Log.e("ryan","duration "+duration);
|
return duration;
|
}
|
|
/**
|
* 获取指定文件大小
|
* @param file
|
* @return
|
* @throws Exception
|
*/
|
public static long getFileSize(File file) throws Exception {
|
long size = 0;
|
if (file.exists()) {
|
FileInputStream fis = null;
|
fis = new FileInputStream(file);
|
size = fis.available();
|
} else {
|
file.createNewFile();
|
Log.e("获取文件大小", "文件不存在!");
|
}
|
return size;
|
}
|
|
public static String formatSize(Context context, String target_size) {
|
return Formatter.formatFileSize(context, Long.valueOf(target_size));
|
}
|
|
|
|
/**
|
* 获取视频第一帧
|
* @param videoPath
|
* @return
|
*/
|
public static byte[] getFirstFrame(String videoPath){
|
MediaMetadataRetriever media = new MediaMetadataRetriever();
|
media.setDataSource(videoPath);// videoPath 本地视频的路径
|
Bitmap bitmap = media.getFrameAtTime(1, MediaMetadataRetriever.OPTION_CLOSEST_SYNC);
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
|
byte[] datas = baos.toByteArray();
|
bitmap.recycle();
|
return datas;
|
}
|
|
/**
|
* 获取视频宽高
|
* @param videoPath
|
* @return
|
*/
|
public static String getWH(String videoPath){
|
MediaMetadataRetriever media = new MediaMetadataRetriever();
|
media.setDataSource(videoPath);// videoPath 本地视频的路径
|
String width = media.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH); //宽
|
String height = media.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT); //高
|
String rotation = media.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION);//视频的方向角度
|
return rotation.equals("90")?(height+","+width):(width+","+height);
|
}
|
|
|
}
|