/// <summary>
        /// 清晰度回调
        /// </summary>
        /// <param name="infos">所有清晰度列表</param>
        /// <param name="currDef">当前清晰度</param>
        public void onDefinition(AndroidJavaObject infos, AndroidJavaObject currDef)
        {
            Debug.Log("onDefinition");
            List <DefnInfo> list = mPlayer.GetDefnJInfoList(infos);

            DefnInfo current = mPlayer.getDefnJInfo(currDef);

            Debug.Log("onDefinition current defn = " + current.defn + ", benefitType = " + current.benefitType);
            mPlayer.OnDefnEvent(list, current);
        }
    public DefnInfo getDefnJInfo(AndroidJavaObject defnJInfoObj)
    {
        DefnInfo defnInfo = new DefnInfo()
        {
            defn             = (DefinitionModel)defnJInfoObj.Call <int>("getDefinition"),
            audioType        = defnJInfoObj.Call <int>("getAudioType"),
            codecType        = defnJInfoObj.Call <int>("getCodecType"),
            dynamicRangeType = defnJInfoObj.Call <int>("getDynamicRangeType"),
            ctrlType         = defnJInfoObj.Call <int>("getCtrlType"),
            benefitType      = defnJInfoObj.Call <int>("getBenefitType"),
            obj = defnJInfoObj,
        };

        return(defnInfo);
    }
    public List <DefnInfo> GetDefnJInfoList(AndroidJavaObject infos)
    {
        List <DefnInfo> defnJInfoObjList = new List <DefnInfo>();

#if UNITY_ANDROID && !UNITY_EDITOR
        int count = infos.Call <int>("size");
        for (int i = 0; i < count; i++)
        {
            DefnInfo defnInfo = new DefnInfo();
            if (infos != null)
            {
                defnInfo = getDefnJInfo(infos.Call <AndroidJavaObject>("get", i));
                Debug.Log("GetDefnJInfo defnInfo = " + defnInfo.defn + ", " + defnInfo.benefitType);
                defnJInfoObjList.Add(defnInfo);
            }
        }

        return(defnJInfoObjList);
#else
        return(null);
#endif
    }
 public void switchDefinition(DefnInfo defn)
 {
     mKTTVPlayer.Call("switchDefinition", defn.obj);
 }