package me.pjq.pushup; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.os.Build; import android.os.Environment; import android.util.Log; import java.io.File; public class LocalPathResolver { private static final String TAG = LocalPathResolver.class.getSimpleName(); //private static final String PREFIX_DIR = "/ef/mywords"; private static final String PREFIX_DIR = MyApplication.getContext().getString(R.string.PREFIX_DIR); private static final String BASE_DIR = "/images"; private static final String EFOFFLINE_OFFLINE_PACKAGE_DIR = "/efoffline/offline-package"; private static final String LANGUAGE_DIR = "/efoffline/language"; private static final String ASR_HMM_DIR = "/efoffline/asr/hmm"; private static String base; public static void init(Context context) { if (ApplicationConfig.INSTANCE.DEBUG()) { base = Environment.getExternalStorageDirectory().getPath(); } else { if (true) { base = Environment.getExternalStorageDirectory().getPath(); } else { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { base = context.getExternalCacheDir().getPath(); } else { File filesDir = context.getApplicationContext().getFilesDir(); base = filesDir.getPath(); } } } base = base + PREFIX_DIR; Log.i(TAG, "base dir = " + base); } public static String getBaseDir() { return base + BASE_DIR; } public static String getCachePath(String subpath) { return base + BASE_DIR + File.separator + subpath; } public static String getTranslatorMp3Path() { return getCachePath("translator"); } /** * Get the Android log dir. * * @return */ public static String getLogDir() { return Environment.getExternalStorageDirectory().getPath() + PREFIX_DIR + File.separator + "log"; } public static String getOfflinePackageDir() { return base + EFOFFLINE_OFFLINE_PACKAGE_DIR; } public static String getLanguageDir() { return base + LANGUAGE_DIR; } public static String getAsrHMMDir() { return base + ASR_HMM_DIR; } /** * Get the application internal data/data path like * this:/data/data/com.ef.efekta12/ * * @param context * @return */ public static String getInternalDataDataPath(Context context) { PackageManager m = context.getPackageManager(); String s = context.getPackageName(); try { PackageInfo p = m.getPackageInfo(s, 0); s = p.applicationInfo.dataDir; } catch (NameNotFoundException e) { EFLogger.w(TAG, "Error Package name not found ", e); return null; } return s; } }