예제 #1
0
    IEnumerator _coroutineExecHandel(string filepath, tabfun.Action_1_param <WWW> wWWCompleteDelegate)
    {
        WWW www = new WWW(filepath);

        yield return(www);

        wWWCompleteDelegate(www);
    }
예제 #2
0
    // 截图
    public Texture2D SreenShot(tabfun.Action_1_param <Texture2D> ac = null)
    {
        Debug.Log("截图!");

        if (Application.platform != RuntimePlatform.IPhonePlayer)
        {
            var Build = new AndroidJavaClass("android.os.Build");
            var brand = Build.GetStatic <string>("BRAND");

            // 保存路径
            string savepath       = "/sdcard/" + Application.productName,
                   savepath1      = "/sdcard/Pictures/Screenshots",
                   savepath2      = "/sdcard/DCIM/Screenshots",
                   savepath_winpc = "C:/Users/王庆东/Desktop/tabfun/应用截图保存/药分子";
            bool cansave          = false;
            if (!Directory.Exists(savepath1))
            {
                if (!Directory.Exists(savepath2))
                {
                    if (!Directory.Exists(savepath))
                    {
                        Directory.CreateDirectory(savepath);
                    }
                }
                else
                {
                    if (Application.platform == RuntimePlatform.Android)
                    {
                        cansave  = true;
                        savepath = savepath2;
                    }
                    else if (Application.platform == RuntimePlatform.WindowsEditor)
                    {
                        savepath = savepath_winpc;
                        cansave  = true;
                    }
                }
            }
            else
            {
                if (Application.platform == RuntimePlatform.Android)
                {
                    savepath = savepath1;
                    cansave  = true;
                }
                else if (Application.platform == RuntimePlatform.WindowsEditor)
                {
                    savepath = savepath_winpc;
                    cansave  = true;
                }
            }
            if (cansave)
            {
                Rect rect = new Rect(0, 0, Display.main.systemWidth, Display.main.systemHeight);
                // 创建空纹理
                Texture2D screenShotTexture2d = new Texture2D((int)rect.width, (int)rect.height,
                                                              TextureFormat.RGB24, false);
                // 读取屏幕像素信息并存储为纹理数据
                screenShotTexture2d.ReadPixels(rect, 0, 0);
                screenShotTexture2d.Apply();

                System.DateTime now = new System.DateTime();
                now = System.DateTime.Now;
                string filename = string.Empty;

                filename = string.Format("Screenshot_{0}-{1}-{2}-{3}-{4}-{5}.png",
                                         now.Year, now.Month, now.Day,
                                         now.Hour, now.Minute, now.Second);
                // 转换为png
                byte[] bytes = screenShotTexture2d.EncodeToPNG();
                // 保存
                savepath += "/" + filename;
                File.WriteAllBytes(savepath, bytes);

                AndroidJavaClass  classPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
                AndroidJavaObject objActivity = classPlayer.GetStatic <AndroidJavaObject>("currentActivity");
                AndroidJavaClass  classMedia  = new AndroidJavaClass("android.media.MediaScannerConnection");
                classMedia.CallStatic("scanFile", new object[4] {
                    objActivity,
                    new string[] { savepath },
                    new string[] { "image/png" },
                    null
                });
                return(screenShotTexture2d);
            }
        }
        else
        {
            // savePhotoScreent();
            // System.DateTime now = new System.DateTime();
            // now = System.DateTime.Now;
            // string filename = string.Format("Screenshot_{0}-{1}-{2}-{3}-{4}-{5}.png",
            //                                 now.Year, now.Month, now.Day,
            //                                 now.Hour, now.Minute, now.Second);
            // Rect rect = new Rect(0, 0, Display.main.systemWidth, Display.main.systemHeight);
            // // 创建空纹理
            // Texture2D screenShotTexture2d = new Texture2D((int)rect.width, (int)rect.height,
            //                                               TextureFormat.RGB24, false);
            // // 读取屏幕像素信息并存储为纹理数据
            // screenShotTexture2d.ReadPixels(rect, 0, 0);
            // screenShotTexture2d.Apply();
            // // 转换为png
            //// byte[] bytes = screenShotTexture2d.EncodeToPNG();
            // // 保存
            // // savePhotoToLocalPath(filename, System.Convert.ToBase64String(bytes), 1);
            // return screenShotTexture2d;
            //action = ac;
            //grab = true;
        }

        return(null);
    }
예제 #3
0
    public void Query(string _string, tabfun.Action_1_param <Classes> queryResult, bool isSearch = false)
    {
        var preticks = System.DateTime.Now.Ticks;

        Debug.Log(" <<<<<<<<<<<< 开始检查... 参数:" + _string);
        var    rootfiledata = new FileData("tabfun/path.json", FileData.FileType.Rootfile);
        string path         = string.Empty;

        if (Application.platform == RuntimePlatform.Android)
        {
            path = Application.streamingAssetsPath + "/" + rootfiledata.Filepath;
        }
        else
        {
            path = "file://" + Application.streamingAssetsPath + "/" + rootfiledata.Filepath;
        }


        tabfun.helper.Coroutine.Instance.StartWWW(new WWW(path), (www) => {
            if (www.error == null)
            {
                var jsondata = JsonMapper.ToObject(tabfun.helper.Coroutine.Instance.GetJsonString(www));
                if (jsondata == null)
                {
                    return;
                }

                tabfun.helper.LitJson.FindKey(jsondata, "query_drugs", (data) => {
                    if (data == null)
                    {
                        return;
                    }

                    tabfun.helper.LitJson.Each(data, (key, value) => {
                        if (value == null)
                        {
                            return;
                        }

                        tabfun.helper.LitJson.FindKey(value as JsonData, "contain", (containJsonData) => {
                            if (containJsonData == null)
                            {
                                return;
                            }

                            tabfun.helper.LitJson.Each(containJsonData, (k, v) => {
                                var names    = v.ToString().Split('_');
                                bool isFound = false;
                                foreach (var name in names)
                                {
                                    if (name == _string)
                                    {
                                        isFound = true;
                                        break;
                                    }
                                }
                                if (isFound)
                                {
                                    var query_drug_root = (value as JsonData);
                                    var drugspath       = query_drug_root["path"]["drugs"].ToString();
                                    Debug.Log(" >>>>>>>>>>>> " + _string + " 所在key:" + key + " 所在的drugs路径:" + drugspath);

                                    string p = string.Empty;
                                    if (Application.platform == RuntimePlatform.Android)
                                    {
                                        p = Application.streamingAssetsPath + "/" + drugspath;
                                    }
                                    else
                                    {
                                        p = "file://" + Application.streamingAssetsPath + "/" + drugspath;
                                    }
                                    tabfun.helper.Coroutine.Instance.StartWWW(new WWW(p), (drugswww) =>
                                    {
                                        if (drugswww.error == null)
                                        {
                                            Debug.Log(" 加载完成! 药品json文件: " + p);

                                            var drugsjsondata = JsonMapper.ToObject(tabfun.helper.Coroutine.Instance.GetJsonString(drugswww));
                                            if (drugsjsondata == null)
                                            {
                                                return;
                                            }

                                            var returnClasses   = new Classes();
                                            var drugname        = drugsjsondata["name"].ToString();
                                            var drugs           = drugsjsondata["drugs"];
                                            var classes         = drugsjsondata["classes"];
                                            var drug            = drugs[names[0]];
                                            var drugclass       = drug["所属类药"] == null ? "" : drug["所属类药"].ToString();
                                            var drugparentclass = drug["所属父类药"] == null ? "" : drug["所属父类药"].ToString();

                                            tabfun.Action_1_param <JsonData> findresult = (jd) =>
                                            {
                                                returnClasses.Name                  = jd["名称"] == null ? string.Empty : jd["名称"].ToString();
                                                returnClasses.TheSystemOfDrug       = jd["所属系统药"] == null ? string.Empty : jd["所属系统药"].ToString();
                                                returnClasses.TheFunctionalMedicine = jd["所属功能药"] == null ? string.Empty : jd["所属功能药"].ToString();
                                                returnClasses.OnBehalfOfTheDrugName = jd["代表药物"] == null ? string.Empty : jd["代表药物"].ToString();
                                                switch (jd["showType"].ToString())
                                                {
                                                case "0":
                                                    returnClasses.Mtype = Classes.ModelType.UnknownType;
                                                    break;

                                                case "1":
                                                    {
                                                        returnClasses.Mtype = Classes.ModelType.BaseStructrueModelType;
                                                        var infff           = jd["信息详情"];
                                                        if (infff != null)
                                                        {
                                                            returnClasses.Info = new Information();
                                                            var infosturcture  = infff["自身结构"];
                                                            var shiyingzheng   = infff["适应症"];
                                                            var zhuyishixiang  = infff["注意事项"];
                                                            var other1         = infff["其他1"];
                                                            var other2         = infff["其他2"];
                                                            if (infosturcture != null)
                                                            {
                                                                foreach (var i in infosturcture)
                                                                {
                                                                    returnClasses.Info.StructureList.Add(i.ToString());
                                                                }
                                                            }
                                                            if (shiyingzheng != null)
                                                            {
                                                                foreach (var i in shiyingzheng)
                                                                {
                                                                    returnClasses.Info.IndicationsList.Add(i.ToString());
                                                                }
                                                            }
                                                            if (zhuyishixiang != null)
                                                            {
                                                                foreach (var i in zhuyishixiang)
                                                                {
                                                                    returnClasses.Info.PrecautionsList.Add(i.ToString());
                                                                }
                                                            }
                                                            if (other1 != null)
                                                            {
                                                                returnClasses.Info.Other1 = other1.ToString();
                                                            }
                                                            if (other2 != null)
                                                            {
                                                                returnClasses.Info.Other2 = other2.ToString();
                                                            }
                                                        }
                                                    }
                                                    break;

                                                case "2":
                                                    returnClasses.Mtype = Classes.ModelType.OnBehalfOfDrugModelType;
                                                    break;
                                                }
                                                var subclasses = jd["包含子类"];
                                                if (subclasses != null)
                                                {
                                                    foreach (var name in subclasses)
                                                    {
                                                        returnClasses.SubClassesName.Add(name.ToString());
                                                    }
                                                }
                                                var includedrugs = jd["包含药物"];
                                                if (includedrugs != null)
                                                {
                                                    tabfun.helper.LitJson.Each(includedrugs, (includedrugsKey, includedrugsValue) =>
                                                    {
                                                        Debug.Log("该类包含的所有药品:" + includedrugsValue.ToString());
                                                        var drugjsondata = drugs[includedrugsValue.ToString()];
                                                        var n            = drugjsondata["药品名称"] == null ? string.Empty : drugjsondata["药品名称"].ToString();
                                                        if (!isSearch || (isSearch && names[0] == n) || (isSearch && returnClasses.Mtype == Classes.ModelType.OnBehalfOfDrugModelType && returnClasses.OnBehalfOfTheDrugName == n))
                                                        {
                                                            var durg                     = new Drug();
                                                            durg.Name                    = n;
                                                            durg.TheSystemOfDrug         = drugjsondata["所属系统药"] == null ? string.Empty : drugjsondata["所属系统药"].ToString();
                                                            durg.TheFunctionalMedicine   = drugjsondata["所属功能药"] == null ? string.Empty : drugjsondata["所属功能药"].ToString();
                                                            durg.TheNameOfTheClass       = drugjsondata["所属类药"] == null ? string.Empty : drugjsondata["所属类药"].ToString();
                                                            durg.TheNameOfTheParentClass = drugjsondata["所属父类药"] == null ? string.Empty : drugjsondata["所属父类药"].ToString();
                                                            var info                     = drugjsondata["知识点"];
                                                            if (info != null)
                                                            {
                                                                durg.Info         = new Information();
                                                                var infosturcture = info["自身结构"];
                                                                var shiyingzheng  = info["适应症"];
                                                                var zhuyishixiang = info["注意事项"];
                                                                var other1        = info["其他1"];
                                                                var other2        = info["其他2"];
                                                                if (infosturcture != null)
                                                                {
                                                                    foreach (var i in infosturcture)
                                                                    {
                                                                        durg.Info.StructureList.Add(i.ToString());
                                                                    }
                                                                }
                                                                if (shiyingzheng != null)
                                                                {
                                                                    foreach (var i in shiyingzheng)
                                                                    {
                                                                        durg.Info.IndicationsList.Add(i.ToString());
                                                                    }
                                                                }
                                                                if (zhuyishixiang != null)
                                                                {
                                                                    foreach (var i in zhuyishixiang)
                                                                    {
                                                                        durg.Info.PrecautionsList.Add(i.ToString());
                                                                    }
                                                                }
                                                                if (other1 != null)
                                                                {
                                                                    durg.Info.Other1 = other1.ToString();
                                                                }
                                                                if (other2 != null)
                                                                {
                                                                    durg.Info.Other2 = other2.ToString();
                                                                }
                                                            }
                                                            var fujiainfo = drugjsondata["附加信息"];
                                                            if (fujiainfo != null)
                                                            {
                                                                foreach (var i in fujiainfo)
                                                                {
                                                                    var item                   = i as JsonData;
                                                                    var attachedinfo           = new AttachedInfo();
                                                                    attachedinfo.TrackableName = item["识别图"] == null ? string.Empty : item["识别图"].ToString();
                                                                    attachedinfo.ModelName     = item["模型名称"] == null ? string.Empty : item["模型名称"].ToString();
                                                                    attachedinfo.PngName       = item["png"] == null ? string.Empty : item["png"].ToString();
                                                                    durg.AttachedInfoList.Add(attachedinfo);
                                                                }
                                                            }
                                                            returnClasses.Drugs.Add(durg);
                                                        }
                                                    });
                                                    List <Drug> l = new List <Drug>();
                                                    foreach (var d in returnClasses.Drugs)
                                                    {
                                                        l.Add(d);
                                                    }
                                                    returnClasses.Drugs.Clear();
                                                    returnClasses.Drugs.Add(l.Find((d) => { return(d.Name == names[0]); }));
                                                    foreach (var d in l)
                                                    {
                                                        if (d.Name != names[0])
                                                        {
                                                            returnClasses.Drugs.Add(d);
                                                        }
                                                    }
                                                    l.Clear();
                                                }
                                                var attached = jd["附加信息"];
                                                if (attached != null)
                                                {
                                                    foreach (var i in attached)
                                                    {
                                                        var item                   = i as JsonData;
                                                        var attachedinfo           = new AttachedInfo();
                                                        attachedinfo.TrackableName = item["识别图"] == null ? string.Empty : item["识别图"].ToString();
                                                        attachedinfo.ModelName     = item["模型名称"] == null ? string.Empty : item["模型名称"].ToString();
                                                        attachedinfo.PngName       = item["png"] == null ? string.Empty : item["png"].ToString();

                                                        returnClasses.AttachedInfoList.Add(attachedinfo);
                                                    }
                                                }


                                                Debug.Log(" >>>>>>>>>> 查询 " + _string + " 所消耗时间 " + (System.DateTime.Now.Ticks - preticks) / 10000.0f + "微妙");

                                                queryResult(returnClasses);
                                            };
                                            tabfun.helper.LitJson.FindKey(classes, drugclass, (jd) =>
                                            {
                                                if (jd == null)
                                                {
                                                    tabfun.helper.LitJson.FindKey(classes, drugparentclass, (findvalue) =>
                                                    {
                                                        if (findvalue != null)
                                                        {
                                                            findresult(findvalue);
                                                        }
                                                    });
                                                }
                                                else
                                                {
                                                    findresult(jd);
                                                }
                                            });
                                        }
                                        else
                                        {
                                            Debug.Log(" 加载失败! 药品json文件路径:" + p);
                                        }
                                    });
                                }
                            });
                        });
                    });
                });
            }
            else
            {
                Debug.Log(" <<<<<<<<<<<< 加载失败:" + rootfiledata.Filepath);
            }
        });
    }