1fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown/*
2fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown * Copyright (C) 2014 The Android Open Source Project
3fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown *
4fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown * Licensed under the Apache License, Version 2.0 (the "License");
5fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown * you may not use this file except in compliance with the License.
6fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown * You may obtain a copy of the License at
7fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown *
8fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown *      http://www.apache.org/licenses/LICENSE-2.0
9fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown *
10fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown * Unless required by applicable law or agreed to in writing, software
11fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown * distributed under the License is distributed on an "AS IS" BASIS,
12fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown * See the License for the specific language governing permissions and
14fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown * limitations under the License.
15fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown */
16fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown
17fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brownpackage android.support.v4.app;
18fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown
19fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brownimport android.app.ActivityManager;
20fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brownimport android.os.Build;
21fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brownimport android.support.annotation.NonNull;
22fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown
23fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown/**
24fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown * Helper for accessing features in {@link android.app.ActivityManager}
25fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown * introduced after API level 4 in a backwards compatible fashion.
26fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown */
27fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brownpublic final class ActivityManagerCompat {
28fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown    private ActivityManagerCompat() {
29fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown    }
30fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown
31fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown    /**
32fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown     * Returns true if this is a low-RAM device.  Exactly whether a device is low-RAM
33fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown     * is ultimately up to the device configuration, but currently it generally means
34fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown     * something in the class of a 512MB device with about a 800x480 or less screen.
35fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown     * This is mostly intended to be used by apps to determine whether they should turn
36fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown     * off certain features that require more RAM.
37fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown     */
38fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown    public static boolean isLowRamDevice(@NonNull ActivityManager am) {
39fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown        if (Build.VERSION.SDK_INT >= 19) {
40fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown            return ActivityManagerCompatKitKat.isLowRamDevice(am);
41fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown        }
42fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown        return false;
43fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown    }
44fb81e09002d1d611168b204fc50d259fc15f27b2Jeff Brown}
45