/* * Copyright 2015 Hippo Seven * * 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 com.hippo.nimingban; import android.content.Context; import android.os.Environment; import android.support.annotation.Nullable; import com.hippo.nimingban.util.Settings; import com.hippo.yorozuya.FileUtils; import java.io.File; public class NMBAppConfig { private static final String APP_DIRNAME = "nmb"; private static final String CRASH_DIRNAME = "crash"; private static final String DOODLE_DIRNAME = "doodle"; private static final String IMAGE_DIRNAME = "image"; private static final String COOKIES_DIRNAME = "cookies"; private static final String PHOTO_DIRNAME = "photo"; private static final String LOGCAT_DIRNAME = "logcat"; private static Context sContext; public static void initialize(Context context) { sContext = context.getApplicationContext(); } public static File getNativeLibDir() { return new File(sContext.getApplicationInfo().nativeLibraryDir); } public static @Nullable File getExternalAppDir() { if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { File file = new File(Environment.getExternalStorageDirectory(), APP_DIRNAME); if (FileUtils.ensureDirectory(file)) { return file; } else { return null; } } else { return null; } } /** * mkdirs and get */ public static @Nullable File getDirInAppDir(String filename) { File appFolder = getExternalAppDir(); if (appFolder != null) { File dir = new File(appFolder, filename); if (FileUtils.ensureDirectory(dir)) { return dir; } } return null; } /** * No dir */ public static @Nullable File getFileInAppDir(String filename) { File appFolder = getExternalAppDir(); if (appFolder != null) { File file = new File(appFolder, filename); if (FileUtils.ensureFile(file)) { return file; } } return null; } public static @Nullable File getCrashDir() { return getDirInAppDir(CRASH_DIRNAME); } public static @Nullable File getDoodleDir() { return getDirInAppDir(DOODLE_DIRNAME); } public static @Nullable File getImageDir() { return getDirInAppDir(IMAGE_DIRNAME); } public static @Nullable File getCookiesDir() { return getDirInAppDir(COOKIES_DIRNAME); } public static @Nullable File getPhotoDir() { return getDirInAppDir(PHOTO_DIRNAME); } public static @Nullable File getLogcatDir() { return getDirInAppDir(LOGCAT_DIRNAME); } public static @Nullable File getTempDir() { File temp = new File(sContext.getCacheDir(), "temp"); if (FileUtils.ensureDirectory(temp)) { return temp; } else { return null; } } private static @Nullable File getRecordImageDir() { File temp = sContext.getDir("record", 0); if (FileUtils.ensureDirectory(temp)) { return temp; } else { return null; } } public static @Nullable File createRecordImageFile() { return FileUtils.createTempFile(getRecordImageDir(), null); } public static @Nullable File createTempFile() { return createTempFile(null); } public static @Nullable File createTempFile(String extension) { return FileUtils.createTempFile(getTempDir(), extension); } public static @Nullable File createTempFileWithFilename(String filename) { File dir = getTempDir(); if (dir == null) { return null; } File file = new File(dir, filename); if (FileUtils.ensureFile(file)) { return file; } else { return null; } } public static @Nullable File createTempDir() { return FileUtils.createTempDir(getTempDir()); } public static boolean needloadImage(Context context) { switch (Settings.getImageLoadingStrategy()) { case Settings.IMAGE_LOADING_STRATEGY_ALL: return true; case Settings.IMAGE_LOADING_STRATEGY_WIFI: return NMBApplication.isConnectedWifi(context); default: case Settings.IMAGE_LOADING_STRATEGY_NO: return false; } } }