public class

HardwareRendererCompat

extends java.lang.Object

 java.lang.Object

↳androidx.test.platform.graphics.HardwareRendererCompat

Gradle dependencies

compile group: 'androidx.test', name: 'monitor', version: '1.6.0-alpha03'

  • groupId: androidx.test
  • artifactId: monitor
  • version: 1.6.0-alpha03

Artifact androidx.test:monitor:1.6.0-alpha03 it located at Google repository (https://maven.google.com/)

Androidx artifact mapping:

androidx.test:monitor com.android.support.test:monitor

Overview

Helper class that provides and functionality on emulator platforms that backported this functionality from a future android API.

Summary

Methods
public static booleanisDrawingEnabled()

Call to

public static voidsetDrawingEnabled(boolean renderingEnabled)

Call to

from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Methods

public static boolean isDrawingEnabled()

Call to

Will always return true if does not exist on this platform.

public static void setDrawingEnabled(boolean renderingEnabled)

Call to

Has no effective if this method does not exist on this platform.

Source

/*
 * Copyright (C) 2021 The Android Open Source 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 androidx.test.platform.graphics;

import android.graphics.HardwareRenderer;
import android.os.Build.VERSION;
import android.util.Log;
import androidx.test.internal.platform.reflect.ReflectionException;
import androidx.test.internal.platform.reflect.ReflectiveMethod;

/**
 * Helper class that provides {@link HardwareRenderer#isDrawingEnabled()} and {@link
 * android.graphics.HardwareRenderer#setDrawingEnabled(boolean)} functionality on emulator platforms
 * that backported this functionality from a future android API.
 */
public class HardwareRendererCompat {

  private static final String TAG = "HardwareRendererCompat";

  private static final ReflectiveMethod<Boolean> isDrawingEnabledReflectiveCall =
      new ReflectiveMethod<>("android.graphics.HardwareRenderer", "isDrawingEnabled");

  private static final ReflectiveMethod<Void> setDrawingEnabledReflectiveCall =
      new ReflectiveMethod<>(
          "android.graphics.HardwareRenderer", "setDrawingEnabled", boolean.class);

  private HardwareRendererCompat() {}

  /**
   * Call to {@link HardwareRenderer#isDrawingEnabled()}
   *
   * <p>Will always return true if {@link HardwareRenderer#isDrawingEnabled()} does not exist on
   * this platform.
   */
  public static boolean isDrawingEnabled() {
    if (VERSION.SDK_INT < 30) {
      // unsupported on these apis
      return true;
    }
    try {
      return isDrawingEnabledReflectiveCall.invokeStatic();
    } catch (ReflectionException e) {
      Log.d(
          TAG,
          "Failed to reflectively call HardwareRenderer#isDrawingEnabled. It probably doesn't exist"
              + " on this platform. Returning true.");
      return true;
    }
  }

  /**
   * Call to {@link HardwareRenderer#setDrawingEnabled(boolean renderingEnabled)}
   *
   * <p>Has no effective if this method does not exist on this platform.
   */
  public static void setDrawingEnabled(boolean renderingEnabled) {
    if (VERSION.SDK_INT < 30) {
      // unsupported on these apis
      return;
    }

    try {
      setDrawingEnabledReflectiveCall.invokeStatic(renderingEnabled);
    } catch (ReflectionException e) {
      Log.i(
          TAG,
          "Failed to reflectively call HardwareRenderer#setDrawingEnabled.  It probably doesn't"
              + " exist on this platform. Ignoring.");
    }
  }

}