⏳ History playlist add
This commit is contained in:
parent
f013cf296d
commit
b22b3a627f
46 changed files with 303 additions and 220 deletions
|
@ -162,7 +162,6 @@ public class AutoGeneratedPlaylistBitmap {
|
|||
|
||||
|
||||
}
|
||||
;
|
||||
Log.d(TAG, "getBitmapCollection: smalltime = " + (System.currentTimeMillis() - start));
|
||||
if (round)
|
||||
return BitmapEditor.getRoundedCornerBitmap(bitmap, bitmap.getWidth() / 40);
|
||||
|
|
|
@ -83,16 +83,16 @@ public final class BitmapEditor {
|
|||
int wh = w * h;
|
||||
int div = radius + radius + 1;
|
||||
|
||||
int r[] = new int[wh];
|
||||
int g[] = new int[wh];
|
||||
int b[] = new int[wh];
|
||||
int a[] = new int[wh];
|
||||
int[] r = new int[wh];
|
||||
int[] g = new int[wh];
|
||||
int[] b = new int[wh];
|
||||
int[] a = new int[wh];
|
||||
int rsum, gsum, bsum, asum, x, y, i, p, yp, yi, yw;
|
||||
int vmin[] = new int[Math.max(w, h)];
|
||||
int[] vmin = new int[Math.max(w, h)];
|
||||
|
||||
int divsum = (div + 1) >> 1;
|
||||
divsum *= divsum;
|
||||
int dv[] = new int[256 * divsum];
|
||||
int[] dv = new int[256 * divsum];
|
||||
for (i = 0; i < 256 * divsum; i++) {
|
||||
dv[i] = (i / divsum);
|
||||
}
|
||||
|
@ -295,7 +295,7 @@ public final class BitmapEditor {
|
|||
public static boolean PerceivedBrightness(int will_White, int[] c) {
|
||||
double TBT = Math.sqrt(c[0] * c[0] * .241 + c[1] * c[1] * .691 + c[2] * c[2] * .068);
|
||||
// Log.d("themee",TBT+"");
|
||||
return (TBT > will_White) ? false : true;
|
||||
return !(TBT > will_White);
|
||||
}
|
||||
|
||||
public static int[] getAverageColorRGB(Bitmap bitmap) {
|
||||
|
@ -404,15 +404,15 @@ public final class BitmapEditor {
|
|||
int wh = w * h;
|
||||
int div = radius + radius + 1;
|
||||
|
||||
int r[] = new int[wh];
|
||||
int g[] = new int[wh];
|
||||
int b[] = new int[wh];
|
||||
int[] r = new int[wh];
|
||||
int[] g = new int[wh];
|
||||
int[] b = new int[wh];
|
||||
int rsum, gsum, bsum, x, y, i, p, yp, yi, yw;
|
||||
int vmin[] = new int[Math.max(w, h)];
|
||||
int[] vmin = new int[Math.max(w, h)];
|
||||
|
||||
int divsum = (div + 1) >> 1;
|
||||
divsum *= divsum;
|
||||
int dv[] = new int[256 * divsum];
|
||||
int[] dv = new int[256 * divsum];
|
||||
for (i = 0; i < 256 * divsum; i++) {
|
||||
dv[i] = (i / divsum);
|
||||
}
|
||||
|
@ -635,8 +635,7 @@ public final class BitmapEditor {
|
|||
|
||||
public static boolean TrueIfBitmapBigger(Bitmap bitmap, int size) {
|
||||
int sizeBitmap = (bitmap.getHeight() > bitmap.getWidth()) ? bitmap.getHeight() : bitmap.getWidth();
|
||||
if (sizeBitmap > size) return true;
|
||||
return false;
|
||||
return sizeBitmap > size;
|
||||
}
|
||||
|
||||
public static Bitmap GetRoundedBitmapWithBlurShadow(Bitmap original, int paddingTop, int paddingBottom, int paddingLeft, int paddingRight) {
|
||||
|
|
|
@ -245,13 +245,9 @@ public final class FileUtil {
|
|||
.equals(android.os.Environment.MEDIA_MOUNTED);
|
||||
Boolean isSDSupportedDevice = Environment.isExternalStorageRemovable();
|
||||
|
||||
if (isSDSupportedDevice && isSDPresent) {
|
||||
// yes SD-card is present
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
// Sorry
|
||||
}
|
||||
// yes SD-card is present
|
||||
// Sorry
|
||||
return isSDSupportedDevice && isSDPresent;
|
||||
}
|
||||
|
||||
public static File safeGetCanonicalFile(File file) {
|
||||
|
|
|
@ -26,7 +26,7 @@ import java.io.FileWriter;
|
|||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
/**
|
||||
* Created by hefuyi on 2016/11/8.
|
||||
|
@ -102,7 +102,7 @@ public class LyricUtil {
|
|||
}
|
||||
|
||||
private static String getLrcOriginalPath(String filePath) {
|
||||
return filePath.replace(filePath.substring(filePath.lastIndexOf(".") + 1, filePath.length()), "lrc");
|
||||
return filePath.replace(filePath.substring(filePath.lastIndexOf(".") + 1), "lrc");
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
@ -110,16 +110,9 @@ public class LyricUtil {
|
|||
if (str == null || str.length() == 0) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
byte[] encode = str.getBytes("UTF-8");
|
||||
// base64 解密
|
||||
return new String(Base64.decode(encode, 0, encode.length, Base64.DEFAULT), "UTF-8");
|
||||
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return null;
|
||||
byte[] encode = str.getBytes(StandardCharsets.UTF_8);
|
||||
// base64 解密
|
||||
return new String(Base64.decode(encode, 0, encode.length, Base64.DEFAULT), StandardCharsets.UTF_8);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
|
|
@ -195,7 +195,7 @@ public class PlaylistsUtil {
|
|||
final int playlistId = songs.get(0).getPlaylistId();
|
||||
Uri uri = MediaStore.Audio.Playlists.Members.getContentUri(
|
||||
"external", playlistId);
|
||||
String selectionArgs[] = new String[songs.size()];
|
||||
String[] selectionArgs = new String[songs.size()];
|
||||
for (int i = 0; i < selectionArgs.length; i++) {
|
||||
selectionArgs[i] = String.valueOf(songs.get(i).getIdInPlayList());
|
||||
}
|
||||
|
|
|
@ -528,7 +528,7 @@ object PreferenceUtil {
|
|||
get() {
|
||||
val folderPath = FoldersFragment.getDefaultStartDirectory().path
|
||||
val filePath: String = sharedPreferences.getStringOrDefault(START_DIRECTORY, folderPath)
|
||||
return File(filePath) ?: File(FoldersFragment.getDefaultStartDirectory().path)
|
||||
return File(filePath)
|
||||
}
|
||||
set(value) = sharedPreferences.edit {
|
||||
putString(
|
||||
|
|
|
@ -70,7 +70,7 @@ public class RetroUtil {
|
|||
}
|
||||
|
||||
public static String formatValue(float value) {
|
||||
String arr[] = {"", "K", "M", "B", "T", "P", "E"};
|
||||
String[] arr = {"", "K", "M", "B", "T", "P", "E"};
|
||||
int index = 0;
|
||||
while ((value / 1000) >= 1) {
|
||||
value = value / 1000;
|
||||
|
|
|
@ -36,11 +36,62 @@ public class ImageUtils {
|
|||
private static final int ALPHA_TOLERANCE = 50;
|
||||
// Size of the smaller bitmap we're actually going to scan.
|
||||
private static final int COMPACT_BITMAP_SIZE = 64; // pixels
|
||||
private final Matrix mTempMatrix = new Matrix();
|
||||
private int[] mTempBuffer;
|
||||
private Bitmap mTempCompactBitmap;
|
||||
private Canvas mTempCompactBitmapCanvas;
|
||||
private Paint mTempCompactBitmapPaint;
|
||||
private final Matrix mTempMatrix = new Matrix();
|
||||
|
||||
/**
|
||||
* Classifies a color as grayscale or not. Grayscale here means "very close to a perfect
|
||||
* gray"; if all three channels are approximately equal, this will return true.
|
||||
* <p>
|
||||
* Note that really transparent colors are always grayscale.
|
||||
*/
|
||||
public static boolean isGrayscale(int color) {
|
||||
int alpha = 0xFF & (color >> 24);
|
||||
if (alpha < ALPHA_TOLERANCE) {
|
||||
return true;
|
||||
}
|
||||
int r = 0xFF & (color >> 16);
|
||||
int g = 0xFF & (color >> 8);
|
||||
int b = 0xFF & color;
|
||||
return Math.abs(r - g) < TOLERANCE
|
||||
&& Math.abs(r - b) < TOLERANCE
|
||||
&& Math.abs(g - b) < TOLERANCE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a drawable to a bitmap, scaled to fit within maxWidth and maxHeight.
|
||||
*/
|
||||
public static Bitmap buildScaledBitmap(Drawable drawable, int maxWidth,
|
||||
int maxHeight) {
|
||||
if (drawable == null) {
|
||||
return null;
|
||||
}
|
||||
int originalWidth = drawable.getIntrinsicWidth();
|
||||
int originalHeight = drawable.getIntrinsicHeight();
|
||||
if ((originalWidth <= maxWidth) && (originalHeight <= maxHeight) &&
|
||||
(drawable instanceof BitmapDrawable)) {
|
||||
return ((BitmapDrawable) drawable).getBitmap();
|
||||
}
|
||||
if (originalHeight <= 0 || originalWidth <= 0) {
|
||||
return null;
|
||||
}
|
||||
// create a new bitmap, scaling down to fit the max dimensions of
|
||||
// a large notification icon if necessary
|
||||
float ratio = Math.min((float) maxWidth / (float) originalWidth,
|
||||
(float) maxHeight / (float) originalHeight);
|
||||
ratio = Math.min(1.0f, ratio);
|
||||
int scaledWidth = (int) (ratio * originalWidth);
|
||||
int scaledHeight = (int) (ratio * originalHeight);
|
||||
Bitmap result = Bitmap.createBitmap(scaledWidth, scaledHeight, Config.ARGB_8888);
|
||||
// and paint our app bitmap on it
|
||||
Canvas canvas = new Canvas(result);
|
||||
drawable.setBounds(0, 0, scaledWidth, scaledHeight);
|
||||
drawable.draw(canvas);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether a bitmap is grayscale. Grayscale here means "very close to a perfect
|
||||
|
@ -93,55 +144,4 @@ public class ImageUtils {
|
|||
mTempBuffer = new int[size];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Classifies a color as grayscale or not. Grayscale here means "very close to a perfect
|
||||
* gray"; if all three channels are approximately equal, this will return true.
|
||||
* <p>
|
||||
* Note that really transparent colors are always grayscale.
|
||||
*/
|
||||
public static boolean isGrayscale(int color) {
|
||||
int alpha = 0xFF & (color >> 24);
|
||||
if (alpha < ALPHA_TOLERANCE) {
|
||||
return true;
|
||||
}
|
||||
int r = 0xFF & (color >> 16);
|
||||
int g = 0xFF & (color >> 8);
|
||||
int b = 0xFF & color;
|
||||
return Math.abs(r - g) < TOLERANCE
|
||||
&& Math.abs(r - b) < TOLERANCE
|
||||
&& Math.abs(g - b) < TOLERANCE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a drawable to a bitmap, scaled to fit within maxWidth and maxHeight.
|
||||
*/
|
||||
public static Bitmap buildScaledBitmap(Drawable drawable, int maxWidth,
|
||||
int maxHeight) {
|
||||
if (drawable == null) {
|
||||
return null;
|
||||
}
|
||||
int originalWidth = drawable.getIntrinsicWidth();
|
||||
int originalHeight = drawable.getIntrinsicHeight();
|
||||
if ((originalWidth <= maxWidth) && (originalHeight <= maxHeight) &&
|
||||
(drawable instanceof BitmapDrawable)) {
|
||||
return ((BitmapDrawable) drawable).getBitmap();
|
||||
}
|
||||
if (originalHeight <= 0 || originalWidth <= 0) {
|
||||
return null;
|
||||
}
|
||||
// create a new bitmap, scaling down to fit the max dimensions of
|
||||
// a large notification icon if necessary
|
||||
float ratio = Math.min((float) maxWidth / (float) originalWidth,
|
||||
(float) maxHeight / (float) originalHeight);
|
||||
ratio = Math.min(1.0f, ratio);
|
||||
int scaledWidth = (int) (ratio * originalWidth);
|
||||
int scaledHeight = (int) (ratio * originalHeight);
|
||||
Bitmap result = Bitmap.createBitmap(scaledWidth, scaledHeight, Config.ARGB_8888);
|
||||
// and paint our app bitmap on it
|
||||
Canvas canvas = new Canvas(result);
|
||||
drawable.setBounds(0, 0, scaledWidth, scaledHeight);
|
||||
drawable.draw(canvas);
|
||||
return result;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue