private List <SwitchTimeInfo> GetOppo(string xmlFile)
        {
            List <SwitchTimeInfo> list = new List <SwitchTimeInfo>();

            // 开机时间存放文件:data\data\com.oppo.market\shared_prefs\com.oppo.market_preferences.xml
            if (FileHelper.IsValid(xmlFile))
            {
                try
                {
                    DataSet ds = new DataSet();
                    ds.ReadXml(xmlFile);
                    if (null == ds || ds.Tables.Count <= 0 || !ds.Tables.Contains("long"))
                    {
                        return(list);
                    }

                    var switchTime = from st in ds.Tables["long"].AsEnumerable()
                                     //where st.Field<string>("name").Equals("pref.start.phone.time")
                                     select new
                    {
                        name  = st.Field <string>("name"),
                        value = st.Field <string>("value"),
                    };
                    switchTime.ForEach(s =>
                    {
                        //开机时间
                        if (!string.IsNullOrEmpty(s.name) && s.name == "pref.start.phone.time")
                        {
                            var switchTimeInfo  = new SwitchTimeInfo();
                            switchTimeInfo.Type = EnumSwitchTimeType.Boot;
                            switchTimeInfo.SwitchTimeInfoDate = DynamicConvert.ToSafeDateTime(s.value);

                            list.Add(switchTimeInfo);
                        }
                        //关机时间:不确定是不是这个时间
                        //if (!string.IsNullOrEmpty(s.name) && s.name == "pref.start.market.time")
                        //{
                        //    //var switchTimeInfo = new SwitchTimeInfo();
                        //    //switchTimeInfo.Type = EnumSwitchTimeType.Shutdown;
                        //    //switchTimeInfo.SwitchTimeInfoDate = DynamicConvert.ToSafeDateTime(s.value);
                        //    //switchTimeInfos.Add(switchTimeInfo);
                        //}
                    });
                }
                catch (Exception ex)
                {
                    Framework.Log4NetService.LoggerManagerSingle.Instance.Error("提取开关机时间数据出错!", ex);
                }
            }

            return(list);
        }
        private List <SwitchTimeInfo> GetHuawei(string xmlFile, string mmiPath)
        {
            List <SwitchTimeInfo> list = new List <SwitchTimeInfo>();

            // 最近一次的开机时间存放文件:data\system\users\0.xml
            if (FileHelper.IsValid(xmlFile))
            {
                try
                {
                    DataSet ds = new DataSet();
                    ds.ReadXml(xmlFile);
                    if (null != ds && ds.Tables.Count > 0 && ds.Tables.Contains("user"))
                    {
                        String lastLoggedIn   = ds.Tables["user"].Rows[0]["lastLoggedIn"].ToString();
                        var    switchTimeInfo = new SwitchTimeInfo();
                        switchTimeInfo.Type = EnumSwitchTimeType.Boot;
                        switchTimeInfo.SwitchTimeInfoDate = DynamicConvert.ToSafeDateTime(lastLoggedIn);

                        list.Add(switchTimeInfo);
                    }
                }
                catch (Exception ex)
                {
                    Framework.Log4NetService.LoggerManagerSingle.Instance.Error("提取开关机时间数据出错!", ex);
                }
            }

            // 每次开机时间文件存放路径:\data\log\mmi
            if (FileHelper.IsValidDictory(mmiPath))
            {
                DirectoryInfo dir    = new DirectoryInfo(mmiPath);
                var           fiList = dir.GetFiles();
                fiList.ForEach(f =>
                {
                    try
                    {
                        string fileName = f.Name;
                        string time     = string.Empty;
                        int index       = fileName.IndexOf("_normal_");
                        if (!string.IsNullOrEmpty(fileName) && index > 0)
                        {
                            time            = fileName.Substring(0, index);
                            string yyyyMMdd = time.Substring(0, 10);
                            string hhmmss   = time.Substring(11, 8);
                            hhmmss          = hhmmss.Replace("-", ":");

                            var switchTimeInfo  = new SwitchTimeInfo();
                            switchTimeInfo.Type = EnumSwitchTimeType.Boot;
                            switchTimeInfo.SwitchTimeInfoDate = (yyyyMMdd + " " + hhmmss).ToDateTime();

                            list.Add(switchTimeInfo);
                        }
                    }
                    catch (Exception ex)
                    {
                        Framework.Log4NetService.LoggerManagerSingle.Instance.Error("提取开关机时间数据出错!", ex);
                    }
                });
            }

            return(list);
        }
        private List <SwitchTimeInfo> GetSamsung(string dataFile, string txtFile)
        {
            List <SwitchTimeInfo> list = new List <SwitchTimeInfo>();

            // 获取最近一次的开机时间信息:data/system/SimCard.dat
            if (FileHelper.IsValid(dataFile))
            {
                try
                {
                    //开机时间
                    using (FileStream fs = new FileStream(dataFile, FileMode.Open, FileAccess.Read))
                    {
                        using (StreamReader sr = new StreamReader(fs))
                        {
                            String content = sr.ReadToEnd();
                            string split   = "SimChangeTime=";
                            int    index   = content.IndexOf(split);
                            if (string.IsNullOrEmpty(content) || index < 0 || content.Length < index + split.Length + 13)
                            {
                                //do nothing
                            }
                            else
                            {
                                string boot = content.Substring(index + split.Length, 13);

                                var switchTimeInfo = new SwitchTimeInfo();
                                switchTimeInfo.Type = EnumSwitchTimeType.SIMChange;
                                switchTimeInfo.SwitchTimeInfoDate = DynamicConvert.ToSafeDateTime(boot);

                                list.Add(switchTimeInfo);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Framework.Log4NetService.LoggerManagerSingle.Instance.Error("提取开关机时间数据出错!", ex);
                }
            }

            // 获取每次开机时间信息:/data/log/poweroff_info.txt
            if (FileHelper.IsValid(txtFile))
            {
                try
                {
                    //开机时间
                    using (FileStream fs = new FileStream(txtFile, FileMode.Open, FileAccess.Read))
                    {
                        using (StreamReader sr = new StreamReader(fs))
                        {
                            String content = sr.ReadToEnd();
                            if (!string.IsNullOrEmpty(content))
                            {
                                string split      = "Batt Status";
                                int    startIndex = 0;
                                int    index      = content.IndexOf(split);
                                while (index != -1 && index >= 19)
                                {
                                    string shutDown = content.Substring(startIndex, 19);
                                    index      = content.IndexOf(split, index + split.Length);
                                    startIndex = index - 20;

                                    var switchTimeInfo = new SwitchTimeInfo();
                                    switchTimeInfo.Type = EnumSwitchTimeType.Shutdown;
                                    switchTimeInfo.SwitchTimeInfoDate = shutDown.ToDateTime();

                                    list.Add(switchTimeInfo);
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Framework.Log4NetService.LoggerManagerSingle.Instance.Error("提取开关机时间数据出错!", ex);
                }
            }

            return(list);
        }