1 /*
2  * Copyright (C) 2012 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.example.android.displayingbitmaps.util;
18 
19 import android.annotation.TargetApi;
20 import android.os.Build;
21 import android.os.Build.VERSION_CODES;
22 import android.os.StrictMode;
23 
24 import com.example.android.displayingbitmaps.ui.ImageDetailActivity;
25 import com.example.android.displayingbitmaps.ui.ImageGridActivity;
26 
27 /**
28  * Class containing some static utility methods.
29  */
30 public class Utils {
Utils()31     private Utils() {};
32 
33 
34     @TargetApi(VERSION_CODES.HONEYCOMB)
enableStrictMode()35     public static void enableStrictMode() {
36         if (Utils.hasGingerbread()) {
37             StrictMode.ThreadPolicy.Builder threadPolicyBuilder =
38                     new StrictMode.ThreadPolicy.Builder()
39                             .detectAll()
40                             .penaltyLog();
41             StrictMode.VmPolicy.Builder vmPolicyBuilder =
42                     new StrictMode.VmPolicy.Builder()
43                             .detectAll()
44                             .penaltyLog();
45 
46             if (Utils.hasHoneycomb()) {
47                 threadPolicyBuilder.penaltyFlashScreen();
48                 vmPolicyBuilder
49                         .setClassInstanceLimit(ImageGridActivity.class, 1)
50                         .setClassInstanceLimit(ImageDetailActivity.class, 1);
51             }
52             StrictMode.setThreadPolicy(threadPolicyBuilder.build());
53             StrictMode.setVmPolicy(vmPolicyBuilder.build());
54         }
55     }
56 
hasFroyo()57     public static boolean hasFroyo() {
58         // Can use static final constants like FROYO, declared in later versions
59         // of the OS since they are inlined at compile time. This is guaranteed behavior.
60         return Build.VERSION.SDK_INT >= VERSION_CODES.FROYO;
61     }
62 
hasGingerbread()63     public static boolean hasGingerbread() {
64         return Build.VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD;
65     }
66 
hasHoneycomb()67     public static boolean hasHoneycomb() {
68         return Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB;
69     }
70 
hasHoneycombMR1()71     public static boolean hasHoneycombMR1() {
72         return Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB_MR1;
73     }
74 
hasJellyBean()75     public static boolean hasJellyBean() {
76         return Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN;
77     }
78 
hasKitKat()79     public static boolean hasKitKat() {
80         return Build.VERSION.SDK_INT >= VERSION_CODES.KITKAT;
81     }
82 }
83