File: C:/xampp/htdocs/cieclock/timeservice.java
package com.example.pbnspectro.service;
import static com.example.pbnspectro.utls.ColorTool.cieXYZtoSRGB;
import static com.example.pbnspectro.utls.ColorTool.lab2xyz;
import android.graphics.Color;
import java.util.Calendar;
public class TimesColorService {
/**
* Get the current time and convert it to a color hex code
* @return String[] Returns an array of Strings containing the hexadecimal and integer representations of the RGB color values for the hour, minute, and second.
* The first three elements are the hexadecimal values for the hour, minute, and second colors, respectively.
* The last three elements are the integer values for the hour, minute, and second colors, respectively.
*/
public static String[] getTimeHex() {
Calendar calendar = Calendar.getInstance();
int cHour = calendar.get(Calendar.HOUR);
int cMin = calendar.get(Calendar.MINUTE);
int cSec = calendar.get(Calendar.SECOND);
int cDay = calendar.get(Calendar.DAY_OF_YEAR);
double cDayi = cDay / 360.00 ;
// Calculate the angle of the hour, minute, and second hands
double chouri = 360 - ((cHour - 3) * 30);
if (chouri > 360) {
chouri = chouri - 360;
}
double cmini = 360 - ((cMin - 15) * 6);
if (cmini > 360) {
cmini = cmini - 360;
}
double cseci = 360 - ((cSec - 15) * 6);
if (cseci > 360) {
cseci = cseci - 360;
}
int chrome = 100;
int Lh = getLh(chouri);
int Lm = getLm(cmini);
int Ls = getLs(cseci);
int Ld = getLd(cDayi);
// Convert degrees to radians
double degreeH = Math.toRadians(chouri);
double degreeM = Math.toRadians(cmini);
double degreeS = Math.toRadians(cseci);
double degreed = Math.toRadians(cDayi);
double ah, bh, am, bm, as, bs, ad, bd;
// Calculate 'a' and 'b'
ah = Math.cos(degreeH) * chrome;
bh = Math.sin(degreeH) * chrome;
// Calculate 'a' and 'b'
am = Math.cos(degreeM) * chrome;
bm = Math.sin(degreeM) * chrome;
// Calculate 'a' and 'b'
as = Math.cos(degreeS) * chrome;
bs = Math.sin(degreeS) * chrome;
ad = Math.cos(degreed) * chrome;
bd = Math.sin(degreed) * chrome;
//System.out.println("Hour L,a,b : " + Lh +"," + ah + "," + bh);
//System.out.println("min L,a,b : " + Lm +"," + am + "," + bm);
// System.out.println("sec L,a,b : " + Ls +"," + as + "," + bs);
double xh = lab2xyz("x", Lh, ah, bh) * 0.01;
double yh = lab2xyz("y", Lh, ah, bh) * 0.01;
double zh = lab2xyz("z", Lh, ah, bh) * 0.01;
/*
System.out.println("xh : " + xh);
System.out.println("yh : " + yh);
System.out.println("zh : " + zh);
*/
double xm = lab2xyz("x", Lm, am, bm) * 0.01;
double ym = lab2xyz("y", Lm, am, bm) * 0.01;
double zm = lab2xyz("z", Lm, am, bm) * 0.01;
double xs = lab2xyz("x", Ls, as, bs) * 0.01;
double ys = lab2xyz("y", Ls, as, bs) * 0.01;
double zs = lab2xyz("z", Ls, as, bs) * 0.01;
double xd = lab2xyz("x", Ld, ad, bd) * 0.01;
double yd = lab2xyz("y", Ld, ad, bd) * 0.01;
double zd = lab2xyz("z", Ld, ad, bd) * 0.01;
/* System.out.println("xs : " + xs);
System.out.println("ys : " + ys);
System.out.println("zs : " + zs);*/
int[] hRGB = cieXYZtoSRGB(xh, yh, zh);
int[] mRGB = cieXYZtoSRGB(xm, ym, zm);
int[] sRGB = cieXYZtoSRGB(xs, ys, zs);
int[] dRGB = cieXYZtoSRGB(xd, yd, zd);
//System.out.println("sRGB : " + sRGB[0] + "," + sRGB[1] + "," + sRGB[2]);
return new String[] {
String.format("#%02x%02x%02x", hRGB[0], hRGB[1], hRGB[2]),
String.format("#%02x%02x%02x", mRGB[0], mRGB[1], mRGB[2]),
String.format("#%02x%02x%02x", sRGB[0], sRGB[1], sRGB[2]),
String.format("#%02x%02x%02x", dRGB[0], dRGB[1], dRGB[2]),
String.valueOf(Color.rgb(hRGB[0], hRGB[1], hRGB[2])),
String.valueOf(Color.rgb(mRGB[0], mRGB[1], mRGB[2])),
String.valueOf(Color.rgb(sRGB[0], sRGB[1], sRGB[2])),
String.valueOf(Color.rgb(dRGB[0], dRGB[1], dRGB[2]))
};
}
private static int getLd(double cDayi) {
int Ld = 55;
if (cDayi > 53) {
Ld = 60;
}
if (cDayi > 59) {
Ld = 65;
}
if (cDayi > 65) {
Ld = 70;
}
if (cDayi > 71) {
Ld = 75;
}
if (cDayi > 77) {
Ld = 80;
}
if (cDayi > 83) {
Ld = 85;
// chrome = 87;
}
if (cDayi > 89) {
Ld = 93;
// chrome = 90;
}
if (cDayi > 101) {
Ld = 92;
}
if (cDayi > 107) {
Ld = 90;
}
if (cDayi > 113) {
Ld = 88;
}
if (cDayi > 119) {
Ld = 85;
}
if (cDayi > 125) {
Ld = 83;
}
if (cDayi > 131) {
Ld = 80;
}
if (cDayi > 137) {
Ld = 78;
}
if (cDayi > 143) {
Ld = 75;
}
if (cDayi > 149) {
Ld = 70;
// chrome = 80;
}
if (cDayi > 155) {
Ld = 68;
// chrome = 80;
}
if (cDayi > 161) {
Ld = 65;
// chrome = 80;
}
if (cDayi > 167) {
Ld = 63;
// chrome = 80;
}
if (cDayi > 173) {
Ld = 60;
// chrome = 80;
}
if (cDayi > 179) {
Ld = 58;
// chrome = 80;
}
if (cDayi > 185) {
Ld = 55;
// chrome = 80;
}
return Ld;
}
private static int getLs(double cseci) {
int Ls = 55;
if (cseci > 53) {
Ls = 60;
}
if (cseci > 59) {
Ls = 65;
}
if (cseci > 65) {
Ls = 70;
}
if (cseci > 71) {
Ls = 75;
}
if (cseci > 77) {
Ls = 80;
}
if (cseci > 83) {
Ls = 85;
// chrome = 87;
}
if (cseci > 89) {
Ls = 93;
// chrome = 90;
}
if (cseci > 101) {
Ls = 92;
}
if (cseci > 107) {
Ls = 90;
}
if (cseci > 113) {
Ls = 88;
}
if (cseci > 119) {
Ls = 85;
}
if (cseci > 125) {
Ls = 83;
}
if (cseci > 131) {
Ls = 80;
}
if (cseci > 137) {
Ls = 78;
}
if (cseci > 143) {
Ls = 75;
}
if (cseci > 149) {
Ls = 70;
// chrome = 80;
}
if (cseci > 155) {
Ls = 68;
// chrome = 80;
}
if (cseci > 161) {
Ls = 65;
// chrome = 80;
}
if (cseci > 167) {
Ls = 63;
// chrome = 80;
}
if (cseci > 173) {
Ls = 60;
// chrome = 80;
}
if (cseci > 179) {
Ls = 58;
// chrome = 80;
}
if (cseci > 185) {
Ls = 55;
// chrome = 80;
}
return Ls;
}
private static int getLm(double cmini) {
int Lm = 55;
if (cmini > 53) {
Lm = 60;
}
if (cmini > 59) {
Lm = 65;
}
if (cmini > 65) {
Lm = 70;
}
if (cmini > 71) {
Lm = 75;
}
if (cmini > 77) {
Lm = 80;
}
if (cmini > 83) {
Lm = 85;
// chrome = 87;
}
if (cmini > 89) {
Lm = 93;
// chrome = 90;
}
if (cmini > 101) {
Lm = 92;
}
if (cmini > 107) {
Lm = 90;
}
if (cmini > 113) {
Lm = 88;
}
if (cmini > 119) {
Lm = 85;
}
if (cmini > 125) {
Lm = 83;
}
if (cmini > 131) {
Lm = 80;
}
if (cmini > 137) {
Lm = 78;
}
if (cmini > 143) {
Lm = 75;
}
if (cmini > 149) {
Lm = 70;
// chrome = 80;
}
if (cmini > 155) {
Lm = 68;
// chrome = 80;
}
if (cmini > 161) {
Lm = 65;
// chrome = 80;
}
if (cmini > 167) {
Lm = 63;
// chrome = 80;
}
if (cmini > 173) {
Lm = 60;
// chrome = 80;
}
if (cmini > 179) {
Lm = 58;
// chrome = 80;
}
if (cmini > 185) {
Lm = 55;
// chrome = 80;
}
return Lm;
}
private static int getLh(double chouri) {
int Lh = 55;
if (chouri > 53) {
Lh = 60;
}
if (chouri > 59) {
Lh = 65;
}
if (chouri > 65) {
Lh = 70;
}
if (chouri > 71) {
Lh = 75;
}
if (chouri > 77) {
Lh = 80;
}
if (chouri > 83) {
Lh = 85;
// chrome = 87;
}
if (chouri > 89) {
Lh = 93;
// chrome = 90;
}
if (chouri > 101) {
Lh = 92;
}
if (chouri > 107) {
Lh = 90;
}
if (chouri > 113) {
Lh = 88;
}
if (chouri > 119) {
Lh = 85;
}
if (chouri > 125) {
Lh = 83;
}
if (chouri > 131) {
Lh = 80;
}
if (chouri > 137) {
Lh = 78;
}
if (chouri > 143) {
Lh = 75;
}
if (chouri > 149) {
Lh = 70;
// chrome = 80;
}
if (chouri > 155) {
Lh = 68;
// chrome = 80;
}
if (chouri > 161) {
Lh = 65;
// chrome = 80;
}
if (chouri > 167) {
Lh = 63;
// chrome = 80;
}
if (chouri > 173) {
Lh = 60;
// chrome = 80;
}
if (chouri > 179) {
Lh = 58;
// chrome = 80;
}
if (chouri > 185) {
Lh = 55;
// chrome = 80;
}
return Lh;
}
}