Java tutorial
//package com.java2s; /* * Copyright Car Connectivity Consortium * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * You may decide to give the Car Connectivity Consortium input, suggestions * or feedback of a technical nature which may be implemented on the * Car Connectivity Consortium products (Feedback?). * * You agrees that any such Feedback is given on non-confidential * basis and Licensee hereby waives any confidentiality restrictions * for such Feedback. In addition, Licensee grants to the Car Connectivity Consortium * and its affiliates a worldwide, non-exclusive, perpetual, irrevocable, * sub-licensable, royalty-free right and license under Licensees copyrights to copy, * reproduce, modify, create derivative works and directly or indirectly * distribute, make available and communicate to public the Feedback * in or in connection to any CCC products, software and/or services. */ import android.graphics.Color; public class Main { public static boolean isContrastRequirementMet(int colorA, int colorB) { final double lumA = calculateLuminance(colorA); final double lumB = calculateLuminance(colorB); return contrastRatio(lumA, lumB) >= 7 || contrastRatio(lumB, lumA) >= 7; } private static double calculateLuminance(int color) { /* variable names as in definition: http://www.w3.org/TR/WCAG20-TECHS/G17.html */ final double r = Color.red(color) / 255.0; final double g = Color.green(color) / 255.0; final double b = Color.blue(color) / 255.0; final double R = calculateSubPixelLuminance(r); final double G = calculateSubPixelLuminance(g); final double B = calculateSubPixelLuminance(b); final double L = 0.2126 * R + 0.7152 * G + 0.0722 * B; return L; } private static double contrastRatio(double L1, double L2) { return (L1 + 0.05) / (L2 + 0.05); } private static double calculateSubPixelLuminance(double subPixelValue) { return subPixelValue < 0.03928 ? subPixelValue / 12.92 : Math.pow((subPixelValue + 0.055) / 1.055, 2.4); } }