package com.iwedia.gui.config_handler; import android.annotation.SuppressLint; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.util.Log; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; /** * Configuration handler class * * @author Veljko Ilkic */ @SuppressLint("DefaultLocale") public class ConfigHandler { // ///////////////////////////////////////// // Config file format // ///////////////////////////////////////// // TV_FEATURES:YES/NO // # // DVBT:YES/NO // # // DVBS:YES/NO // # // DVBC:YES/NO // # // IP:YES/NO // # // ATV:YES/NO // # // ATSC:YES/NO // # // DTMB:YES/NO // # // SAT2IP:YES/NO // # // DLNA:YES/NO // # // DLNA_DMS: YES/NO // # // APP_SETTINGS: YES/NO // # // HBB:YES/NO // # // MHEG:YES/NO // # // CI:YES/NO // # // COMPLEX_AUDIO:YES/NO // # // TIMESHIFT:YES/NO // # // PVR: YES/NO // # // PVR_STORAGE(nand/usb): NAND/USB // # // PVR_THRESHOLD(1-100): 1-100 // # // SEEK_OFFSET: 1-10 // # // USE_LCN:YES/NO // # // CURL_GRAPHIC_QULAITY:YES/NO // ///////////////////////////////////////// // Config file format // ///////////////////////////////////////// /** Configuration file name */ private static final String CONFIGURATION_FILE_NAME = "a4tv2.0_config.txt"; /** Configuration file name */ public static final String SCREENSAVER_IMAGE = "android_screensaver2"; public static final String STORE_MODE_VIDEO = "ducks"; /** Configuration file file path */ private String mConfigFilePath = ""; /** Usb device path */ private static String sUsbPath = ""; /** Line separator in config file */ private static final String CONFIG_FILE_LINE_SEPARATOR = "#"; // /////////////////////////////////////////// // Text constants // /////////////////////////////////////////// private static final String TV_FEATURES_TEXT = "TV_FEATURES"; private static final String DVBT_TEXT = "DVBT"; private static final String DVBS_TEXT = "DVBS"; private static final String DVBC_TEXT = "DVBC"; private static final String IP_TEXT = "IP"; private static final String ATV_TEXT = "ATV"; private static final String ATSC_TEXT = "ATSC"; private static final String DTMB_TEXT = "DTMB"; private static final String SAT2IP_TEXT = "SAT2IP"; private static final String DLNA_TEXT = "DLNA"; private static final String DLNA_DMS_TEXT = "DLNA_DMS"; private static final String APP_SETTINGS_TEXT = "APP_SETTINGS"; private static final String HBB_TEXT = "HBB"; private static final String MHEG_TEXT = "MHEG"; private static final String CI_TEXT = "CI"; private static final String COMPLEX_AUDIO_TEXT = "COMPLEX_AUDIO"; private static final String YES = "YES"; private static final String CURL_TIME_MILIS = "CURL_TIME_MILIS"; private static final String TIMESHIFT_TEXT = "TIMESHIFT"; private static final String PVR_TEXT = "PVR"; private static final String PVR_STORAGE_TEXT = "PVR_STORAGE(NAND/USB)"; private static final String NAND_TEXT = "NAND"; public static final String USB_TEXT = "USB"; private static final String PVR_THRESHOLD_TEXT = "PVR_THRESHOLD(1-100)"; private static final String SEEK_OFFSET_TEXT = "SEEK_OFFSET"; private static final String USE_LCN_TEXT = "USE_LCN"; private static final String TVPLATFORM_TEXT = "TVPLATFORM"; private static final String CURL_GRAPHIC_QUALITY_TEXT = "CURL_GRAPHIC_QULAITY"; // /////////////////////////////////////////// // Include flags // /////////////////////////////////////////// public static boolean TV_FEATURES = false; public static boolean DVB_T = true; public static boolean DVB_S = false; public static boolean DVB_C = false; public static boolean IP = true; public static boolean ATV = false; public static boolean ATSC = false; public static boolean DTMB = false; public static boolean SAT2IP = false; public static boolean DLNA = true; public static boolean DLNA_DMS = false; public static boolean APP_SETTINGS = true; public static boolean HBB = true; public static boolean MHEG = false; public static boolean CI = false; public static boolean COMPLEX_AUDIO = false; public static int CURL_TIME_MILIS_INT = 1000; public static boolean TIMESHIFT = true; public static boolean PVR = true; public static String PVR_STORAGE_STRING = NAND_TEXT; public static int PVR_THRESHOLD_INT = 90; public static int SEEK_OFFSET_INT = 2; public static boolean USE_LCN = false; public static boolean TVPLATFORM = false; public static boolean CURL_GRAPHIC_QUALITY = true; /** App context */ private Context context; /** Constructor 1 */ public ConfigHandler(Context context) { super(); this.context = context; } /** Load configuration from config file */ public void loadConfiguration() { // Init Default Path ApplicationInfo applicationInfo = null; try { applicationInfo = context.getPackageManager().getApplicationInfo( context.getPackageName(), PackageManager.GET_META_DATA); mConfigFilePath = applicationInfo.dataDir; sUsbPath = applicationInfo.metaData.getString("USB_PATH"); } catch (Exception e) { } // Get the text file File file = new File(mConfigFilePath, CONFIGURATION_FILE_NAME); if (file.exists()) { BufferedReader br = null; try { br = new BufferedReader(new FileReader(file)); String line = ""; while (null != (line = br.readLine())) { line = line.trim(); if (line.length() > 0) { // Don't parse separator line if (!line.equals(CONFIG_FILE_LINE_SEPARATOR)) { // Transform line to upper case line = line.toUpperCase(); String[] temp = line.split(":"); String featureName = temp[0].trim(); String featureInclude = temp[1].trim(); // ////////////////////////////// // Check feature name // ////////////////////////////// // ///////////////////////////////// // TV FEATURES // ///////////////////////////////// if (featureName.equals(TV_FEATURES_TEXT)) { TV_FEATURES = isFeatureIncluded(featureInclude); } // ///////////////////////////////// // DVB T // ///////////////////////////////// if (featureName.equals(DVBT_TEXT)) { DVB_T = isFeatureIncluded(featureInclude); } // ///////////////////////////////// // DVB S // ///////////////////////////////// if (featureName.equals(DVBS_TEXT)) { DVB_S = isFeatureIncluded(featureInclude); } // ///////////////////////////////// // DVB C // ///////////////////////////////// if (featureName.equals(DVBC_TEXT)) { DVB_C = isFeatureIncluded(featureInclude); } // ///////////////////////////////// // IP // ///////////////////////////////// if (featureName.equals(IP_TEXT)) { IP = isFeatureIncluded(featureInclude); } // ///////////////////////////////// // ATV // ///////////////////////////////// if (featureName.equals(ATV_TEXT)) { ATV = isFeatureIncluded(featureInclude); } // ///////////////////////////////// // ATSC // ///////////////////////////////// if (featureName.equals(ATSC_TEXT)) { ATSC = isFeatureIncluded(featureInclude); } // ///////////////////////////////// // DTMB // ///////////////////////////////// if (featureName.equals(DTMB_TEXT)) { DTMB = isFeatureIncluded(featureInclude); } // ///////////////////////////////// // SAT2IP // ///////////////////////////////// if (featureName.equals(SAT2IP_TEXT)) { SAT2IP = isFeatureIncluded(featureInclude); } // ///////////////////////////////// // DLNA // ///////////////////////////////// if (featureName.equals(DLNA_TEXT)) { DLNA = isFeatureIncluded(featureInclude); } // ///////////////////////////////// // DLNA DMS // ///////////////////////////////// if (featureName.equals(DLNA_DMS_TEXT)) { DLNA_DMS = isFeatureIncluded(featureInclude); } // ///////////////////////////////// // APP SETTINGS // ///////////////////////////////// if (featureName.equals(APP_SETTINGS_TEXT)) { APP_SETTINGS = isFeatureIncluded(featureInclude); } // ///////////////////////////////// // HBB // ///////////////////////////////// if (featureName.equals(HBB_TEXT)) { HBB = isFeatureIncluded(featureInclude); } // ///////////////////////////////// // MHEG // ///////////////////////////////// if (featureName.equals(MHEG_TEXT)) { MHEG = isFeatureIncluded(featureInclude); } // ///////////////////////////////// // CI // ///////////////////////////////// if (featureName.equals(CI_TEXT)) { CI = isFeatureIncluded(featureInclude); } // ///////////////////////////////// // COMPLEX SOUND SETTINGS // ///////////////////////////////// if (featureName.equals(COMPLEX_AUDIO_TEXT)) { COMPLEX_AUDIO = isFeatureIncluded(featureInclude); } // ///////////////////////////////// // CURL TIME // ///////////////////////////////// if (featureName.equals(CURL_TIME_MILIS)) { CURL_TIME_MILIS_INT = Integer .parseInt(featureInclude.trim()); } // ///////////////////////////////// // TIME SHIFT // ///////////////////////////////// if (featureName.equals(TIMESHIFT_TEXT)) { TIMESHIFT = isFeatureIncluded(featureInclude); } // ///////////////////////////////// // PVR // ///////////////////////////////// if (featureName.equals(PVR_TEXT)) { PVR = isFeatureIncluded(featureInclude); } // ///////////////////////////////// // PVR STORAGE // ///////////////////////////////// if (featureName.equals(PVR_STORAGE_TEXT)) { PVR_STORAGE_STRING = featureInclude.trim(); } // ///////////////////////////////// // PVR THRESHOLD // ///////////////////////////////// if (featureName.equals(PVR_THRESHOLD_TEXT)) { PVR_THRESHOLD_INT = Integer .parseInt(featureInclude.trim()); } // ///////////////////////////////// // SEEK OFFSET // ///////////////////////////////// if (featureName.equals(SEEK_OFFSET_TEXT)) { SEEK_OFFSET_INT = Integer .parseInt(featureInclude.trim()); } // ///////////////////////////////// // USE_LCN // ///////////////////////////////// if (featureName.equals(USE_LCN_TEXT)) { USE_LCN = isFeatureIncluded(featureInclude); } // ///////////////////////////////// // TVPLATFORM // ///////////////////////////////// if (featureName.equals(TVPLATFORM_TEXT)) { TVPLATFORM = isFeatureIncluded(featureInclude); } // ///////////////////////////////// // CURL_GRAPHIC_QULAITY // ///////////////////////////////// if (featureName.equals(CURL_GRAPHIC_QUALITY_TEXT)) { CURL_GRAPHIC_QUALITY = isFeatureIncluded(featureInclude); } } } } br.close(); } catch (IOException e) { Log.e("CONFIG FILE", "SET DEFAULT VALUES"); } } // Error while loading config file else { Log.e("CONFIG FILE", "SET DEFAULT VALUES"); } } /** Check if feature is included in app */ private boolean isFeatureIncluded(String includeFlag) { return (includeFlag.equals(YES)); } public static String getUsbPath() { return sUsbPath; } // ///////////////////////////////////////////////////////////// // Implementation notes // ///////////////////////////////////////////////////////////// // //////////////////////////// // TV FEATURES: // /////////////////////////// // # Inputs in content list // # Inputs in main menu // # Input devices in settings menu // # Backlight option in picture settings // # Multiplex in signal info // # Network in signal info // # Channel id in signal info // /////////////////////////// // DVB T // /////////////////////////// // # DVB T tab in content list // # DVB T tab in scan dialog // # DVB T item in spinner in channel installation dialog // /////////////////////////// // DVB S // /////////////////////////// // # DVB S tab in content list // # DVB S tab in scan dialog // # DVB S item in spinner in channel installation dialog // # Satellite name option in channel installation dialog // /////////////////////////// // DVB C // /////////////////////////// // # DVB C tab in content list // # DVB C tab in scan dialog // # DVB C item in spinner in channel installation dialog // ///////////////////////////// // IP // ///////////////////////////// // # IP tab in content list // # IP tab in scan dialog // ///////////////////////////// // HBB // ///////////////////////////// // # Hbb init // # Hbb options in settings dialog // ////////////////////////////// // MHEG // ////////////////////////////// // # Mheg init // ////////////////////////////// // CI // ////////////////////////////// // #CI info in channel installation dialog // /////////////////////////////// // Complex audio // /////////////////////////////// // # Everything except balance, bass and treble in sound settings // # Treble in sound settings // # Bass in sound settings // ////////////////////////////// // PVR // ////////////////////////////// // #ENABLE/DISABLE PVR RECORD KEYS // ////////////////////////////// // TIMESHIFT // ////////////////////////////// // #ENABLE/DISABLE TIMESHIFT KEYS // ////////////////////////////// // PVR STORAGE // ////////////////////////////// // #DEFINE DEFAULT STORAGE FOR PVR RECORDINGS // /////////////////////////////// // SEEK OFFSET // /////////////////////////////// // #DEFINE VALUE OF SEEK OFFSET IN MEDIA PLAYER }