/** * Copyright (c) 2015-2016, The CyanogenMod Project * * 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. */ package org.cyanogenmod.tests.hardware; import android.os.Bundle; import android.widget.Toast; import java.util.Arrays; import java.util.List; import cyanogenmod.hardware.CMHardwareManager; import cyanogenmod.hardware.DisplayMode; import org.cyanogenmod.tests.TestActivity; /** * Created by adnan on 8/31/15. */ public class CMHardwareTest extends TestActivity { private CMHardwareManager mHardwareManager; private static final List FEATURES = Arrays.asList( CMHardwareManager.FEATURE_ADAPTIVE_BACKLIGHT, CMHardwareManager.FEATURE_COLOR_ENHANCEMENT, CMHardwareManager.FEATURE_DISPLAY_COLOR_CALIBRATION, CMHardwareManager.FEATURE_DISPLAY_GAMMA_CALIBRATION, CMHardwareManager.FEATURE_HIGH_TOUCH_SENSITIVITY, CMHardwareManager.FEATURE_KEY_DISABLE, CMHardwareManager.FEATURE_LONG_TERM_ORBITS, CMHardwareManager.FEATURE_SERIAL_NUMBER, CMHardwareManager.FEATURE_SUNLIGHT_ENHANCEMENT, CMHardwareManager.FEATURE_TOUCH_HOVERING, CMHardwareManager.FEATURE_AUTO_CONTRAST, CMHardwareManager.FEATURE_DISPLAY_MODES, CMHardwareManager.FEATURE_PERSISTENT_STORAGE ); private static final List BOOLEAN_FEATURES = Arrays.asList( CMHardwareManager.FEATURE_ADAPTIVE_BACKLIGHT, CMHardwareManager.FEATURE_COLOR_ENHANCEMENT, CMHardwareManager.FEATURE_HIGH_TOUCH_SENSITIVITY, CMHardwareManager.FEATURE_KEY_DISABLE, CMHardwareManager.FEATURE_SUNLIGHT_ENHANCEMENT, CMHardwareManager.FEATURE_TOUCH_HOVERING, CMHardwareManager.FEATURE_AUTO_CONTRAST ); @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); mHardwareManager = CMHardwareManager.getInstance(this); } @Override protected String tag() { return null; } @Override protected Test[] tests() { return mTests; } private boolean vibratorSupported() { if (mHardwareManager.isSupported(CMHardwareManager.FEATURE_VIBRATOR)) { return true; } else { Toast.makeText(CMHardwareTest.this, "Vibrator not supported", Toast.LENGTH_SHORT).show(); return false; } } private boolean displayColorCalibrationSupported() { if (mHardwareManager.isSupported(CMHardwareManager.FEATURE_DISPLAY_COLOR_CALIBRATION)) { return true; } else { Toast.makeText(CMHardwareTest.this, "Display Color Calibration not supported", Toast.LENGTH_SHORT).show(); return false; } } private boolean ltoSupported() { if (mHardwareManager.isSupported(CMHardwareManager.FEATURE_LONG_TERM_ORBITS)) { return true; } else { Toast.makeText(CMHardwareTest.this, "Long Term Orbits not supported", Toast.LENGTH_SHORT).show(); return false; } } private boolean serialSupported() { if (mHardwareManager.isSupported(CMHardwareManager.FEATURE_SERIAL_NUMBER)) { return true; } else { Toast.makeText(CMHardwareTest.this, "Serial number not supported", Toast.LENGTH_SHORT).show(); return false; } } private boolean uniqueDeviceIdSupported() { if (mHardwareManager.isSupported(CMHardwareManager.FEATURE_UNIQUE_DEVICE_ID)) { return true; } else { Toast.makeText(CMHardwareTest.this, "Unique device ID not supported", Toast.LENGTH_SHORT).show(); return false; } } private boolean displayModesSupported() { if (mHardwareManager.isSupported(CMHardwareManager.FEATURE_DISPLAY_MODES)) { return true; } else { Toast.makeText(CMHardwareTest.this, "Display modes not supported", Toast.LENGTH_SHORT).show(); return false; } } private boolean persistentStorageSupported() { if (mHardwareManager.isSupported(CMHardwareManager.FEATURE_PERSISTENT_STORAGE)) { return true; } else { Toast.makeText(CMHardwareTest.this, "Persistent storage not supported", Toast.LENGTH_SHORT).show(); return false; } } private Test[] mTests = new Test[] { new Test("Test get supported features") { public void run() { Toast.makeText(CMHardwareTest.this, "Supported features " + mHardwareManager.getSupportedFeatures(), Toast.LENGTH_SHORT).show(); } }, new Test("Test features supported") { @Override protected void run() { StringBuilder builder = new StringBuilder(); for (int feature : FEATURES) { builder.append("Feature " + feature + "\n") .append("is supported " + mHardwareManager.isSupported(feature) + "\n"); } Toast.makeText(CMHardwareTest.this, "Supported features " + builder.toString(), Toast.LENGTH_SHORT).show(); } }, new Test("Test boolean features enabled") { @Override protected void run() { StringBuilder builder = new StringBuilder(); for (int feature : BOOLEAN_FEATURES) { builder.append("Feature " + feature + "\n") .append("is enabled " + mHardwareManager.isSupported(feature) + "\n"); } Toast.makeText(CMHardwareTest.this, "Features " + builder.toString(), Toast.LENGTH_SHORT).show(); } }, new Test("Test get vibrator intensity") { @Override protected void run() { if (vibratorSupported()) { Toast.makeText(CMHardwareTest.this, "Vibrator intensity " + mHardwareManager.getVibratorIntensity(), Toast.LENGTH_SHORT).show(); } } }, new Test("Test get vibrator default intensity") { @Override protected void run() { if (vibratorSupported()) { Toast.makeText(CMHardwareTest.this, "Vibrator default intensity " + mHardwareManager.getVibratorDefaultIntensity(), Toast.LENGTH_SHORT).show(); } } }, new Test("Test get vibrator max intensity") { @Override protected void run() { if (vibratorSupported()) { Toast.makeText(CMHardwareTest.this, "Vibrator max intensity " + mHardwareManager.getVibratorMaxIntensity(), Toast.LENGTH_SHORT).show(); } } }, new Test("Test get vibrator min intensity") { @Override protected void run() { if (vibratorSupported()) { Toast.makeText(CMHardwareTest.this, "Vibrator min intensity " + mHardwareManager.getVibratorMinIntensity(), Toast.LENGTH_SHORT).show(); } } }, new Test("Test get vibrator min intensity") { @Override protected void run() { if (vibratorSupported()) { Toast.makeText(CMHardwareTest.this, "Vibrator min intensity " + mHardwareManager.getVibratorWarningIntensity(), Toast.LENGTH_SHORT).show(); } } }, new Test("Test Display Color Calibration") { @Override protected void run() { if (displayColorCalibrationSupported()) { Toast.makeText(CMHardwareTest.this, "Display Color Calibration " + mHardwareManager.getDisplayColorCalibration(), Toast.LENGTH_SHORT).show(); } } }, new Test("Test Default Display Color Calibration") { @Override protected void run() { if (displayColorCalibrationSupported()) { Toast.makeText(CMHardwareTest.this, "Default Display Color Calibration " + mHardwareManager.getDisplayColorCalibrationDefault(), Toast.LENGTH_SHORT).show(); } } }, new Test("Test Display Color Calibration Max") { @Override protected void run() { if (displayColorCalibrationSupported()) { Toast.makeText(CMHardwareTest.this, "Display Color Calibration Max " + mHardwareManager.getDisplayColorCalibrationMax(), Toast.LENGTH_SHORT).show(); } } }, new Test("Test Display Color Calibration Min") { @Override protected void run() { if (displayColorCalibrationSupported()) { Toast.makeText(CMHardwareTest.this, "Display Color Calibration Min " + mHardwareManager.getDisplayColorCalibrationMin(), Toast.LENGTH_SHORT).show(); } } }, new Test("Test Set Display Color Calibration") { @Override protected void run() { if (displayColorCalibrationSupported()) { mHardwareManager.setDisplayColorCalibration(new int[] {0,0,0}); } } }, new Test("Test Get Long Term Orbits Source") { @Override protected void run() { if (ltoSupported()) { Toast.makeText(CMHardwareTest.this, "Long Term Orbit Source " + mHardwareManager.getLtoSource(), Toast.LENGTH_SHORT).show(); } } }, new Test("Test Get Long Term Orbits Destination") { @Override protected void run() { if (ltoSupported()) { Toast.makeText(CMHardwareTest.this, "Long Term Orbit Destination " + mHardwareManager.getLtoDestination(), Toast.LENGTH_SHORT).show(); } } }, new Test("Test Get Long Term Orbits Interval") { @Override protected void run() { if (ltoSupported()) { Toast.makeText(CMHardwareTest.this, "Long Term Orbit Download Interval " + mHardwareManager.getLtoDownloadInterval(), Toast.LENGTH_SHORT).show(); } } }, new Test("Test Get Serial Number") { @Override protected void run() { if (serialSupported()) { Toast.makeText(CMHardwareTest.this, "Serial number " + mHardwareManager.getSerialNumber(), Toast.LENGTH_SHORT).show(); } } }, new Test("Test Get Unique Device ID") { @Override protected void run() { if (uniqueDeviceIdSupported()) { Toast.makeText(CMHardwareTest.this, "Unique Device ID " + mHardwareManager.getUniqueDeviceId(), Toast.LENGTH_SHORT).show(); } } }, new Test("Test Get Display Modes") { @Override protected void run() { if (displayModesSupported()) { StringBuilder builder = new StringBuilder(); for (DisplayMode displayMode : mHardwareManager.getDisplayModes()) { builder.append("Display mode " + displayMode.name + "\n"); } Toast.makeText(CMHardwareTest.this, "Display modes: \n" + builder.toString(), Toast.LENGTH_SHORT).show(); } } }, new Test("Test Get Current Display Mode") { @Override protected void run() { if (displayModesSupported()) { Toast.makeText(CMHardwareTest.this, "Default Display Mode " + mHardwareManager.getCurrentDisplayMode(), Toast.LENGTH_SHORT).show(); } } }, new Test("Test Get Default Display Mode") { @Override protected void run() { if (displayModesSupported()) { Toast.makeText(CMHardwareTest.this, "Default Display Mode " + mHardwareManager.getCurrentDisplayMode(), Toast.LENGTH_SHORT).show(); } } }, }; }