DeviceParametersReaders.java
/*
* Copyright 2020 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.wear.tiles.readers;
import static androidx.annotation.Dimension.DP;
import androidx.annotation.Dimension;
import androidx.annotation.FloatRange;
import androidx.annotation.IntDef;
import androidx.annotation.RestrictTo;
import androidx.wear.tiles.proto.DeviceParametersProto;
import androidx.wear.tiles.readers.RequestReaders.TileRequest;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/** Readers for androidx.wear.tiles' device parameters structures. */
public class DeviceParametersReaders {
private DeviceParametersReaders() {}
/**
* The platform of the device requesting a tile.
*
* @hide
*/
@RestrictTo(RestrictTo.Scope.LIBRARY)
@IntDef({DEVICE_PLATFORM_UNDEFINED, DEVICE_PLATFORM_WEAR_OS})
@Retention(RetentionPolicy.SOURCE)
public @interface DevicePlatform {}
/** Device platform is undefined. */
public static final int DEVICE_PLATFORM_UNDEFINED = 0;
/** Device is a Wear OS by Google device. */
public static final int DEVICE_PLATFORM_WEAR_OS = 1;
/**
* The shape of a screen.
*
* @hide
*/
@RestrictTo(RestrictTo.Scope.LIBRARY)
@IntDef({SCREEN_SHAPE_UNDEFINED, SCREEN_SHAPE_ROUND, SCREEN_SHAPE_RECT})
@Retention(RetentionPolicy.SOURCE)
public @interface ScreenShape {}
/** Screen shape is undefined. */
public static final int SCREEN_SHAPE_UNDEFINED = 0;
/** A round screen (typically found on most Wear devices). */
public static final int SCREEN_SHAPE_ROUND = 1;
/** Rectangular screens. */
public static final int SCREEN_SHAPE_RECT = 2;
/** Reader for the Device Parameters returned from {@link TileRequest#getDeviceParameters()}. */
public static class DeviceParameters {
private final DeviceParametersProto.DeviceParameters mProto;
DeviceParameters(DeviceParametersProto.DeviceParameters proto) {
this.mProto = proto;
}
/** Get the width of the screen, in DP. */
@Dimension(unit = DP)
public int getScreenWidthDp() {
return mProto.getScreenWidthDp();
}
/** Get the height of the screen, in DP. */
@Dimension(unit = DP)
public int getScreenHeightDp() {
return mProto.getScreenHeightDp();
}
/**
* Get the density of the screen. This value is the scaling factor to get from DP to Pixels,
* where PX = DP * density.
*/
@FloatRange(from = 0.0, fromInclusive = false)
public float getScreenDensity() {
return mProto.getScreenDensity();
}
/** Get the platform of the device. */
@DevicePlatform
public int getDevicePlatform() {
return mProto.getDevicePlatformValue();
}
/** Get the shape of the screen of the device. */
@ScreenShape
public int getScreenShape() {
return mProto.getScreenShapeValue();
}
}
}