[
  {
    "path": ".gitattributes",
    "content": "# Auto detect text files and perform LF normalization\n* text=auto\n\n# Custom for Visual Studio\n*.cs     diff=csharp\n\n# Standard to msysgit\n*.doc\t diff=astextplain\n*.DOC\t diff=astextplain\n*.docx diff=astextplain\n*.DOCX diff=astextplain\n*.dot  diff=astextplain\n*.DOT  diff=astextplain\n*.pdf  diff=astextplain\n*.PDF\t diff=astextplain\n*.rtf\t diff=astextplain\n*.RTF\t diff=astextplain\n"
  },
  {
    "path": ".gitignore",
    "content": "# Windows image file caches\nThumbs.db\nehthumbs.db\n\n# Folder config file\nDesktop.ini\n\n# Recycle Bin used on file shares\n$RECYCLE.BIN/\n\n# Windows Installer files\n*.cab\n*.msi\n*.msm\n*.msp\n\n# Windows shortcuts\n*.lnk\n\n# =========================\n# Operating System Files\n# =========================\n\n# OSX\n# =========================\n\n.DS_Store\n.AppleDouble\n.LSOverride\n\n# Thumbnails\n._*\n\n# Files that might appear on external disk\n.Spotlight-V100\n.Trashes\n\n# Directories potentially created on remote AFP share\n.AppleDB\n.AppleDesktop\nNetwork Trash Folder\nTemporary Items\n.apdisk\n"
  },
  {
    "path": ".gradle/2.2.1/taskArtifacts/cache.properties",
    "content": "#Mon May 25 14:28:55 CST 2015\n"
  },
  {
    "path": ".idea/.name",
    "content": "BilibiliClient"
  },
  {
    "path": ".idea/compiler.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"CompilerConfiguration\">\n    <option name=\"DEFAULT_COMPILER\" value=\"Javac\" />\n    <resourceExtensions />\n    <wildcardResourcePatterns>\n      <entry name=\"!?*.java\" />\n      <entry name=\"!?*.form\" />\n      <entry name=\"!?*.class\" />\n      <entry name=\"!?*.groovy\" />\n      <entry name=\"!?*.scala\" />\n      <entry name=\"!?*.flex\" />\n      <entry name=\"!?*.kt\" />\n      <entry name=\"!?*.clj\" />\n    </wildcardResourcePatterns>\n    <annotationProcessing>\n      <profile default=\"true\" name=\"Default\" enabled=\"false\">\n        <processorPath useClasspath=\"true\" />\n      </profile>\n    </annotationProcessing>\n  </component>\n</project>\n\n"
  },
  {
    "path": ".idea/copyright/profiles_settings.xml",
    "content": "<component name=\"CopyrightManager\">\n  <settings default=\"\" />\n</component>"
  },
  {
    "path": ".idea/encodings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"Encoding\" useUTFGuessing=\"true\" native2AsciiForPropertiesFiles=\"false\" />\n</project>\n\n"
  },
  {
    "path": ".idea/gradle.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"GradleSettings\">\n    <option name=\"linkedExternalProjectsSettings\">\n      <GradleProjectSettings>\n        <option name=\"distributionType\" value=\"DEFAULT_WRAPPED\" />\n        <option name=\"externalProjectPath\" value=\"$PROJECT_DIR$\" />\n        <option name=\"modules\">\n          <set>\n            <option value=\"$PROJECT_DIR$\" />\n            <option value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n            <option value=\"$PROJECT_DIR$/app\" />\n            <option value=\"$PROJECT_DIR$/vitamio\" />\n          </set>\n        </option>\n      </GradleProjectSettings>\n    </option>\n  </component>\n</project>\n\n"
  },
  {
    "path": ".idea/inspectionProfiles/Project_Default.xml",
    "content": "<component name=\"InspectionProjectProfileManager\">\n  <profile version=\"1.0\" is_locked=\"false\">\n    <option name=\"myName\" value=\"Project Default\" />\n    <option name=\"myLocal\" value=\"false\" />\n    <inspection_tool class=\"AndroidLintValidFragment\" enabled=\"false\" level=\"ERROR\" enabled_by_default=\"false\" />\n    <inspection_tool class=\"LoggerInitializedWithForeignClass\" enabled=\"false\" level=\"WARNING\" enabled_by_default=\"false\">\n      <option name=\"loggerClassName\" value=\"org.apache.log4j.Logger,org.slf4j.LoggerFactory,org.apache.commons.logging.LogFactory,java.util.logging.Logger\" />\n      <option name=\"loggerFactoryMethodName\" value=\"getLogger,getLogger,getLog,getLogger\" />\n    </inspection_tool>\n  </profile>\n</component>"
  },
  {
    "path": ".idea/inspectionProfiles/profiles_settings.xml",
    "content": "<component name=\"InspectionProjectProfileManager\">\n  <settings>\n    <option name=\"PROJECT_PROFILE\" value=\"Project Default\" />\n    <option name=\"USE_PROJECT_PROFILE\" value=\"true\" />\n    <version value=\"1.0\" />\n  </settings>\n</component>"
  },
  {
    "path": ".idea/libraries/appcompat_v7_22_1_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"appcompat-v7-22.1.1\">\n    <ANNOTATIONS>\n      <root url=\"jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/22.1.1/annotations.zip!/\" />\n    </ANNOTATIONS>\n    <CLASSES>\n      <root url=\"file://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/22.1.1/res\" />\n      <root url=\"jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/22.1.1/classes.jar!/\" />\n    </CLASSES>\n    <JAVADOC />\n    <SOURCES>\n      <root url=\"jar://D:/as/sdk-install/extras/android/m2repository/com/android/support/appcompat-v7/22.1.1/appcompat-v7-22.1.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/jsoup_1_8_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"jsoup-1.8.1\">\n    <CLASSES>\n      <root url=\"jar://$PROJECT_DIR$/app/libs/jsoup-1.8.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC />\n    <SOURCES />\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/multidex_1_0_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"multidex-1.0.0\">\n    <CLASSES>\n      <root url=\"jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/multidex/1.0.0/classes.jar!/\" />\n      <root url=\"file://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/multidex/1.0.0/res\" />\n    </CLASSES>\n    <JAVADOC />\n    <SOURCES />\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/support_annotations_22_1_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"support-annotations-22.1.1\">\n    <CLASSES>\n      <root url=\"jar://D:/as/sdk-install/extras/android/m2repository/com/android/support/support-annotations/22.1.1/support-annotations-22.1.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC />\n    <SOURCES>\n      <root url=\"jar://D:/as/sdk-install/extras/android/m2repository/com/android/support/support-annotations/22.1.1/support-annotations-22.1.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/support_v4_22_1_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"support-v4-22.1.1\">\n    <CLASSES>\n      <root url=\"file://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-v4/22.1.1/res\" />\n      <root url=\"jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-v4/22.1.1/classes.jar!/\" />\n      <root url=\"jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-v4/22.1.1/libs/internal_impl-22.1.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC />\n    <SOURCES>\n      <root url=\"jar://D:/as/sdk-install/extras/android/m2repository/com/android/support/support-v4/22.1.1/support-v4-22.1.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/universal_image_loader_1_9_3.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"universal-image-loader-1.9.3\">\n    <CLASSES>\n      <root url=\"jar://$PROJECT_DIR$/app/libs/universal-image-loader-1.9.3.jar!/\" />\n    </CLASSES>\n    <JAVADOC />\n    <SOURCES />\n  </library>\n</component>"
  },
  {
    "path": ".idea/misc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"EntryPointsManager\">\n    <entry_points version=\"2.0\" />\n  </component>\n  <component name=\"ProjectRootManager\" version=\"2\" languageLevel=\"JDK_1_7\" assert-keyword=\"true\" jdk-15=\"true\" project-jdk-name=\"1.7\" project-jdk-type=\"JavaSDK\">\n    <output url=\"file://$PROJECT_DIR$/build/classes\" />\n  </component>\n  <component name=\"masterDetails\">\n    <states>\n      <state key=\"ProjectJDKs.UI\">\n        <settings>\n          <last-edited>1.7</last-edited>\n          <splitter-proportions>\n            <option name=\"proportions\">\n              <list>\n                <option value=\"0.2\" />\n              </list>\n            </option>\n          </splitter-proportions>\n        </settings>\n      </state>\n    </states>\n  </component>\n</project>\n\n"
  },
  {
    "path": ".idea/modules.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ProjectModuleManager\">\n    <modules>\n      <module fileurl=\"file://$PROJECT_DIR$/BilibiliClient.iml\" filepath=\"$PROJECT_DIR$/BilibiliClient.iml\" />\n      <module fileurl=\"file://$PROJECT_DIR$/DanmakuFlameMaster/DanmakuFlameMaster.iml\" filepath=\"$PROJECT_DIR$/DanmakuFlameMaster/DanmakuFlameMaster.iml\" />\n      <module fileurl=\"file://$PROJECT_DIR$/app/app.iml\" filepath=\"$PROJECT_DIR$/app/app.iml\" />\n      <module fileurl=\"file://$PROJECT_DIR$/vitamio/vitamio.iml\" filepath=\"$PROJECT_DIR$/vitamio/vitamio.iml\" />\n    </modules>\n  </component>\n</project>\n\n"
  },
  {
    "path": ".idea/scopes/scope_settings.xml",
    "content": "<component name=\"DependencyValidationManager\">\n  <state>\n    <option name=\"SKIP_IMPORT_STATEMENTS\" value=\"false\" />\n  </state>\n</component>"
  },
  {
    "path": ".idea/vcs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"VcsDirectoryMappings\">\n    <mapping directory=\"\" vcs=\"\" />\n  </component>\n</project>\n\n"
  },
  {
    "path": ".idea/workspace.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"AndroidConfiguredLogFilters\">\n    <filters>\n      <filter>\n        <option name=\"name\" value=\"app: com.cjj.bb\" />\n        <option name=\"packageNamePattern\" value=\"com.cjj.bb\" />\n      </filter>\n    </filters>\n  </component>\n  <component name=\"AndroidLayouts\">\n    <shared>\n      <config />\n    </shared>\n  </component>\n  <component name=\"AndroidLogFilters\">\n    <option name=\"TOOL_WINDOW_CONFIGURED_FILTER\" value=\"app: com.cjj.bb\" />\n  </component>\n  <component name=\"ChangeListManager\">\n    <list default=\"true\" id=\"ffc9c45d-e6ba-43ac-a230-f38778fc9b75\" name=\"Default\" comment=\"\" />\n    <ignored path=\"BilibiliClient.iws\" />\n    <ignored path=\".idea/workspace.xml\" />\n    <option name=\"TRACKING_ENABLED\" value=\"true\" />\n    <option name=\"SHOW_DIALOG\" value=\"false\" />\n    <option name=\"HIGHLIGHT_CONFLICTS\" value=\"true\" />\n    <option name=\"HIGHLIGHT_NON_ACTIVE_CHANGELIST\" value=\"false\" />\n    <option name=\"LAST_RESOLUTION\" value=\"IGNORE\" />\n  </component>\n  <component name=\"ChangesViewManager\" flattened_view=\"true\" show_ignored=\"false\" />\n  <component name=\"CreatePatchCommitExecutor\">\n    <option name=\"PATCH_PATH\" value=\"\" />\n  </component>\n  <component name=\"DaemonCodeAnalyzer\">\n    <disable_hints />\n  </component>\n  <component name=\"ExecutionTargetManager\" SELECTED_TARGET=\"default_target\" />\n  <component name=\"FavoritesManager\">\n    <favorites_list name=\"BilibiliClient\" />\n  </component>\n  <component name=\"FileEditorManager\">\n    <leaf>\n      <file leaf-file-name=\"DonghuaFragment.java\" pinned=\"false\" current=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/fragment/DonghuaFragment.java\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"572\" max-vertical-offset=\"5083\">\n              <caret line=\"46\" column=\"21\" selection-start-line=\"46\" selection-start-column=\"21\" selection-end-line=\"46\" selection-end-column=\"21\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"VideoListAdapter.java\" pinned=\"false\" current=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/adapter/VideoListAdapter.java\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"1649\" max-vertical-offset=\"2414\">\n              <caret line=\"97\" column=\"66\" selection-start-line=\"97\" selection-start-column=\"66\" selection-end-line=\"97\" selection-end-column=\"66\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"video_list_item.xml\" pinned=\"false\" current=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/app/src/main/res/layout/video_list_item.xml\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"117\" max-vertical-offset=\"1207\">\n              <caret line=\"18\" column=\"25\" selection-start-line=\"18\" selection-start-column=\"25\" selection-end-line=\"18\" selection-end-column=\"25\" />\n              <folding />\n            </state>\n          </provider>\n          <provider editor-type-id=\"android-designer\">\n            <state />\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"build.gradle\" pinned=\"false\" current=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/build.gradle\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"0\" max-vertical-offset=\"425\">\n              <caret line=\"0\" column=\"0\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"0\" selection-end-column=\"0\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"build.gradle\" pinned=\"false\" current=\"true\" current-in-tab=\"true\">\n        <entry file=\"file://$PROJECT_DIR$/app/build.gradle\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state vertical-scroll-proportion=\"0.6306028\" vertical-offset=\"0\" max-vertical-offset=\"1088\">\n              <caret line=\"24\" column=\"31\" selection-start-line=\"24\" selection-start-column=\"31\" selection-end-line=\"24\" selection-end-column=\"31\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"strings.xml\" pinned=\"false\" current=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/app/src/main/res/values/strings.xml\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state vertical-scroll-proportion=\"-0.68\" vertical-offset=\"51\" max-vertical-offset=\"782\">\n              <caret line=\"4\" column=\"44\" selection-start-line=\"4\" selection-start-column=\"44\" selection-end-line=\"4\" selection-end-column=\"44\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"build.gradle\" pinned=\"false\" current=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/vitamio/build.gradle\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"510\" max-vertical-offset=\"612\">\n              <caret line=\"30\" column=\"0\" selection-start-line=\"30\" selection-start-column=\"0\" selection-end-line=\"30\" selection-end-column=\"0\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"AndroidManifest.xml\" pinned=\"false\" current=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/app/src/main/AndroidManifest.xml\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"947\" max-vertical-offset=\"1632\">\n              <caret line=\"82\" column=\"18\" selection-start-line=\"82\" selection-start-column=\"18\" selection-end-line=\"82\" selection-end-column=\"18\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"DonghuaActivity.java\" pinned=\"false\" current=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/activity/DonghuaActivity.java\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"901\" max-vertical-offset=\"2006\">\n              <caret line=\"53\" column=\"35\" selection-start-line=\"53\" selection-start-column=\"35\" selection-end-line=\"53\" selection-end-column=\"35\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"BankumiTabAdapter.java\" pinned=\"false\" current=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/adapter/BankumiTabAdapter.java\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"561\" max-vertical-offset=\"1173\">\n              <caret line=\"33\" column=\"32\" selection-start-line=\"33\" selection-start-column=\"32\" selection-end-line=\"33\" selection-end-column=\"32\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n    </leaf>\n  </component>\n  <component name=\"FindManager\">\n    <FindUsagesManager>\n      <setting name=\"OPEN_NEW_TAB\" value=\"false\" />\n    </FindUsagesManager>\n  </component>\n  <component name=\"GradleLocalSettings\">\n    <option name=\"tasksExpandState\">\n      <map>\n        <entry key=\"\" value=\"true\" />\n      </map>\n    </option>\n    <option name=\"availableProjects\">\n      <map>\n        <entry>\n          <key>\n            <ExternalProjectPojo>\n              <option name=\"name\" value=\"BilibiliClient\" />\n              <option name=\"path\" value=\"$PROJECT_DIR$\" />\n            </ExternalProjectPojo>\n          </key>\n          <value>\n            <list>\n              <ExternalProjectPojo>\n                <option name=\"name\" value=\":app\" />\n                <option name=\"path\" value=\"$PROJECT_DIR$/app\" />\n              </ExternalProjectPojo>\n              <ExternalProjectPojo>\n                <option name=\"name\" value=\"BilibiliClient\" />\n                <option name=\"path\" value=\"$PROJECT_DIR$\" />\n              </ExternalProjectPojo>\n              <ExternalProjectPojo>\n                <option name=\"name\" value=\":vitamio\" />\n                <option name=\"path\" value=\"$PROJECT_DIR$/vitamio\" />\n              </ExternalProjectPojo>\n              <ExternalProjectPojo>\n                <option name=\"name\" value=\":DanmakuFlameMaster\" />\n                <option name=\"path\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n              </ExternalProjectPojo>\n            </list>\n          </value>\n        </entry>\n      </map>\n    </option>\n    <option name=\"availableTasks\">\n      <map>\n        <entry key=\"$PROJECT_DIR$/DanmakuFlameMaster\">\n          <value>\n            <list>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Displays the Android dependencies of the project.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"androidDependencies\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles all variants of all applications and secondary packages.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"assemble\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles all the Test applications.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"assembleAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles all Debug builds.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"assembleDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles the android (on device) tests for the Debug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"assembleDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles the unit tests for the Debug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"assembleDebugUnitTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"assembleDefault\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles all Release builds.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"assembleRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles the unit tests for the Release build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"assembleReleaseUnitTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles and tests this project.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"build\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles and tests this project and all projects that depend on it.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"buildDependents\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles and tests this project and all projects it depends on.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"buildNeeded\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles a bundle containing the library in Debug.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"bundleDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles a bundle containing the library in Release.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"bundleRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs all checks.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"check\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"checkDebugManifest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"checkReleaseManifest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Deletes the build directory.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"clean\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"compileDebugAidl\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"compileDebugAndroidTestAidl\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"compileDebugAndroidTestJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"compileDebugAndroidTestNdk\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"compileDebugAndroidTestRenderscript\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"compileDebugAndroidTestSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"compileDebugJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"compileDebugNdk\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"compileDebugRenderscript\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"compileDebugSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"compileDebugUnitTestJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"compileDebugUnitTestSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"compileLint\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"compileReleaseAidl\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"compileReleaseJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"compileReleaseNdk\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"compileReleaseRenderscript\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"compileReleaseSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"compileReleaseUnitTestJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"compileReleaseUnitTestSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Installs and runs the tests for Debug build on connected devices.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"connectedAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs all device checks on currently connected devices.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"connectedCheck\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"copyDebugLint\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"copyReleaseLint\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs all device checks using Device Providers and Test Servers.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"deviceCheck\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"dexDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"generateDebugAndroidTestAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"generateDebugAndroidTestBuildConfig\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"generateDebugAndroidTestResValues\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"generateDebugAndroidTestResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"generateDebugAndroidTestSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"generateDebugAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"generateDebugBuildConfig\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"generateDebugResValues\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"generateDebugResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"generateDebugSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"generateReleaseAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"generateReleaseBuildConfig\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"generateReleaseResValues\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"generateReleaseResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"generateReleaseSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Installs the android (on device) tests for the Debug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"installDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs lint on all variants.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"lint\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs lint on the Debug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"lintDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs lint on the Release build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"lintRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"mergeDebugAndroidTestAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"mergeDebugAndroidTestResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"mergeDebugAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"mergeDebugProguardFiles\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"mergeReleaseAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"mergeReleaseProguardFiles\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Creates a version of android.jar that's suitable for unit tests.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"mockableAndroidJar\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"packageDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"packageDebugJar\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"packageDebugJniLibs\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"packageDebugLocalJar\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"packageDebugRenderscript\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"packageDebugResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"packageReleaseJar\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"packageReleaseJniLibs\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"packageReleaseLocalJar\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"packageReleaseRenderscript\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"packageReleaseResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"preBuild\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"preCompileDebugUnitTestJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"preCompileReleaseUnitTestJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"preDebugAndroidTestBuild\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"preDebugBuild\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"preDexDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"preReleaseBuild\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"prepareDebugAndroidTestDependencies\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"prepareDebugDependencies\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"prepareReleaseDependencies\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"processDebugAndroidTestJavaRes\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"processDebugAndroidTestManifest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"processDebugAndroidTestResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"processDebugJavaRes\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"processDebugManifest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"processDebugResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"processReleaseJavaRes\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"processReleaseManifest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"processReleaseResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Displays the signing info for each variant.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"signingReport\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Run all unit tests.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"test\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Run unit tests for the Debug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"testDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Run unit tests for the Release build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"testRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Uninstall all applications.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"uninstallAll\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Uninstalls the android (on device) tests for the Debug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"uninstallDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                <option name=\"name\" value=\"validateDebugSigning\" />\n              </ExternalTaskPojo>\n            </list>\n          </value>\n        </entry>\n        <entry key=\"$PROJECT_DIR$/app\">\n          <value>\n            <list>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Displays the Android dependencies of the project.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"androidDependencies\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles all variants of all applications and secondary packages.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"assemble\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles all the Test applications.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"assembleAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles all Debug builds.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"assembleDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles all Release builds.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"assembleRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles all Weixin builds.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"assembleWeixin\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles the DebugWeixin build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"assembleWeixinDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles the android (on device) tests for the WeixinDebug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"assembleWeixinDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles the unit tests for the WeixinDebug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"assembleWeixinDebugUnitTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles the ReleaseWeixin build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"assembleWeixinRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles the unit tests for the WeixinRelease build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"assembleWeixinReleaseUnitTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles all Xinhao builds.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"assembleXinhao\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles the DebugXinhao build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"assembleXinhaoDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles the android (on device) tests for the XinhaoDebug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"assembleXinhaoDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles the unit tests for the XinhaoDebug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"assembleXinhaoDebugUnitTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles the ReleaseXinhao build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"assembleXinhaoRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles the unit tests for the XinhaoRelease build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"assembleXinhaoReleaseUnitTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles and tests this project.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"build\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles and tests this project and all projects that depend on it.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"buildDependents\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles and tests this project and all projects it depends on.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"buildNeeded\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs all checks.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"check\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"checkWeixinDebugManifest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"checkWeixinReleaseManifest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"checkXinhaoDebugManifest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"checkXinhaoReleaseManifest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Deletes the build directory.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"clean\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"collectWeixinDebugMultiDexComponents\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"collectWeixinReleaseMultiDexComponents\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"collectXinhaoDebugMultiDexComponents\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"collectXinhaoReleaseMultiDexComponents\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileLint\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileWeixinDebugAidl\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileWeixinDebugAndroidTestAidl\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileWeixinDebugAndroidTestJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileWeixinDebugAndroidTestNdk\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileWeixinDebugAndroidTestRenderscript\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileWeixinDebugAndroidTestSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileWeixinDebugJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileWeixinDebugNdk\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileWeixinDebugRenderscript\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileWeixinDebugSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileWeixinDebugUnitTestJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileWeixinDebugUnitTestSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileWeixinReleaseAidl\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileWeixinReleaseJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileWeixinReleaseNdk\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileWeixinReleaseRenderscript\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileWeixinReleaseSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileWeixinReleaseUnitTestJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileWeixinReleaseUnitTestSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileXinhaoDebugAidl\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileXinhaoDebugAndroidTestAidl\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileXinhaoDebugAndroidTestJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileXinhaoDebugAndroidTestNdk\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileXinhaoDebugAndroidTestRenderscript\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileXinhaoDebugAndroidTestSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileXinhaoDebugJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileXinhaoDebugNdk\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileXinhaoDebugRenderscript\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileXinhaoDebugSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileXinhaoDebugUnitTestJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileXinhaoDebugUnitTestSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileXinhaoReleaseAidl\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileXinhaoReleaseJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileXinhaoReleaseNdk\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileXinhaoReleaseRenderscript\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileXinhaoReleaseSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileXinhaoReleaseUnitTestJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"compileXinhaoReleaseUnitTestSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Installs and runs instrumentation tests for all flavors on connected devices.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"connectedAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Installs and runs the tests for DebugWeixin build on connected devices.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"connectedAndroidTestWeixinDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Installs and runs the tests for DebugXinhao build on connected devices.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"connectedAndroidTestXinhaoDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs all device checks on currently connected devices.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"connectedCheck\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"createWeixinDebugMainDexClassList\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"createWeixinReleaseMainDexClassList\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"createXinhaoDebugMainDexClassList\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"createXinhaoReleaseMainDexClassList\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Installs and runs instrumentation tests using all Device Providers.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"deviceAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs all device checks using Device Providers and Test Servers.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"deviceCheck\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"dexWeixinDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"dexWeixinDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"dexWeixinRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"dexXinhaoDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"dexXinhaoDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"dexXinhaoRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateWeixinDebugAndroidTestAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateWeixinDebugAndroidTestBuildConfig\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateWeixinDebugAndroidTestResValues\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateWeixinDebugAndroidTestResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateWeixinDebugAndroidTestSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateWeixinDebugAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateWeixinDebugBuildConfig\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateWeixinDebugResValues\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateWeixinDebugResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateWeixinDebugSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateWeixinReleaseAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateWeixinReleaseBuildConfig\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateWeixinReleaseResValues\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateWeixinReleaseResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateWeixinReleaseSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateXinhaoDebugAndroidTestAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateXinhaoDebugAndroidTestBuildConfig\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateXinhaoDebugAndroidTestResValues\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateXinhaoDebugAndroidTestResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateXinhaoDebugAndroidTestSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateXinhaoDebugAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateXinhaoDebugBuildConfig\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateXinhaoDebugResValues\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateXinhaoDebugResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateXinhaoDebugSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateXinhaoReleaseAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateXinhaoReleaseBuildConfig\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateXinhaoReleaseResValues\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateXinhaoReleaseResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"generateXinhaoReleaseSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Installs the DebugWeixin build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"installWeixinDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Installs the android (on device) tests for the WeixinDebug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"installWeixinDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Installs the ReleaseWeixin build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"installWeixinRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Installs the DebugXinhao build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"installXinhaoDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Installs the android (on device) tests for the XinhaoDebug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"installXinhaoDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Installs the ReleaseXinhao build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"installXinhaoRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs lint on all variants.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"lint\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs lint on just the fatal issues in the WeixinRelease build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"lintVitalWeixinRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs lint on just the fatal issues in the XinhaoRelease build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"lintVitalXinhaoRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs lint on the WeixinDebug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"lintWeixinDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs lint on the WeixinRelease build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"lintWeixinRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs lint on the XinhaoDebug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"lintXinhaoDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs lint on the XinhaoRelease build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"lintXinhaoRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"mergeWeixinDebugAndroidTestAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"mergeWeixinDebugAndroidTestResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"mergeWeixinDebugAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"mergeWeixinDebugResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"mergeWeixinReleaseAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"mergeWeixinReleaseResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"mergeXinhaoDebugAndroidTestAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"mergeXinhaoDebugAndroidTestResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"mergeXinhaoDebugAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"mergeXinhaoDebugResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"mergeXinhaoReleaseAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"mergeXinhaoReleaseResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Creates a version of android.jar that's suitable for unit tests.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"mockableAndroidJar\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"packageAllWeixinDebugClassesForMultiDex\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"packageAllWeixinReleaseClassesForMultiDex\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"packageAllXinhaoDebugClassesForMultiDex\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"packageAllXinhaoReleaseClassesForMultiDex\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"packageWeixinDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"packageWeixinDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"packageWeixinRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"packageXinhaoDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"packageXinhaoDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"packageXinhaoRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"preBuild\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"preCompileWeixinDebugUnitTestJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"preCompileWeixinReleaseUnitTestJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"preCompileXinhaoDebugUnitTestJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"preCompileXinhaoReleaseUnitTestJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"preDexWeixinDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"preDexXinhaoDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"preWeixinDebugAndroidTestBuild\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"preWeixinDebugBuild\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"preWeixinReleaseBuild\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"preXinhaoDebugAndroidTestBuild\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"preXinhaoDebugBuild\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"preXinhaoReleaseBuild\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Prepare BilibiliClient:DanmakuFlameMaster:unspecified\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"prepareBilibiliClientDanmakuFlameMasterUnspecifiedLibrary\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Prepare BilibiliClient:vitamio:unspecified\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"prepareBilibiliClientVitamioUnspecifiedLibrary\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Prepare com.android.support:appcompat-v7:22.1.1\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"prepareComAndroidSupportAppcompatV72211Library\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Prepare com.android.support:multidex:1.0.0\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"prepareComAndroidSupportMultidex100Library\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Prepare com.android.support:support-v4:22.1.1\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"prepareComAndroidSupportSupportV42211Library\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"prepareWeixinDebugAndroidTestDependencies\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"prepareWeixinDebugDependencies\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"prepareWeixinReleaseDependencies\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"prepareXinhaoDebugAndroidTestDependencies\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"prepareXinhaoDebugDependencies\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"prepareXinhaoReleaseDependencies\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"processWeixinDebugAndroidTestJavaRes\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"processWeixinDebugAndroidTestManifest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"processWeixinDebugAndroidTestResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"processWeixinDebugJavaRes\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"processWeixinDebugManifest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"processWeixinDebugResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"processWeixinReleaseJavaRes\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"processWeixinReleaseManifest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"processWeixinReleaseResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"processXinhaoDebugAndroidTestJavaRes\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"processXinhaoDebugAndroidTestManifest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"processXinhaoDebugAndroidTestResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"processXinhaoDebugJavaRes\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"processXinhaoDebugManifest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"processXinhaoDebugResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"processXinhaoReleaseJavaRes\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"processXinhaoReleaseManifest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"processXinhaoReleaseResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"shrinkWeixinDebugMultiDexComponents\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"shrinkWeixinReleaseMultiDexComponents\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"shrinkXinhaoDebugMultiDexComponents\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"shrinkXinhaoReleaseMultiDexComponents\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Displays the signing info for each variant.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"signingReport\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Run all unit tests.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"test\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Run unit tests for the WeixinDebug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"testWeixinDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Run unit tests for the WeixinRelease build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"testWeixinRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Run unit tests for the XinhaoDebug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"testXinhaoDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Run unit tests for the XinhaoRelease build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"testXinhaoRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Uninstall all applications.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"uninstallAll\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Uninstalls the DebugWeixin build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"uninstallWeixinDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Uninstalls the android (on device) tests for the WeixinDebug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"uninstallWeixinDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Uninstalls the ReleaseWeixin build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"uninstallWeixinRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Uninstalls the DebugXinhao build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"uninstallXinhaoDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Uninstalls the android (on device) tests for the XinhaoDebug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"uninstallXinhaoDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Uninstalls the ReleaseXinhao build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"uninstallXinhaoRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"validateConfigSigning\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"zipalignWeixinDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"zipalignWeixinRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"zipalignXinhaoDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/app\" />\n                <option name=\"name\" value=\"zipalignXinhaoRelease\" />\n              </ExternalTaskPojo>\n            </list>\n          </value>\n        </entry>\n        <entry key=\"$PROJECT_DIR$/vitamio\">\n          <value>\n            <list>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Displays the Android dependencies of the project.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"androidDependencies\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles all variants of all applications and secondary packages.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"assemble\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles all the Test applications.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"assembleAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles all Debug builds.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"assembleDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles the android (on device) tests for the Debug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"assembleDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles the unit tests for the Debug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"assembleDebugUnitTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"assembleDefault\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles all Release builds.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"assembleRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles the unit tests for the Release build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"assembleReleaseUnitTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles and tests this project.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"build\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles and tests this project and all projects that depend on it.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"buildDependents\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles and tests this project and all projects it depends on.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"buildNeeded\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles a bundle containing the library in Debug.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"bundleDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Assembles a bundle containing the library in Release.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"bundleRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs all checks.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"check\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"checkDebugManifest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"checkReleaseManifest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Deletes the build directory.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"clean\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"compileDebugAidl\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"compileDebugAndroidTestAidl\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"compileDebugAndroidTestJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"compileDebugAndroidTestNdk\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"compileDebugAndroidTestRenderscript\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"compileDebugAndroidTestSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"compileDebugJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"compileDebugNdk\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"compileDebugRenderscript\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"compileDebugSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"compileDebugUnitTestJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"compileDebugUnitTestSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"compileLint\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"compileReleaseAidl\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"compileReleaseJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"compileReleaseNdk\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"compileReleaseRenderscript\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"compileReleaseSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"compileReleaseUnitTestJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"compileReleaseUnitTestSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Installs and runs the tests for Debug build on connected devices.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"connectedAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs all device checks on currently connected devices.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"connectedCheck\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"copyDebugLint\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"copyReleaseLint\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs all device checks using Device Providers and Test Servers.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"deviceCheck\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"dexDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"generateDebugAndroidTestAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"generateDebugAndroidTestBuildConfig\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"generateDebugAndroidTestResValues\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"generateDebugAndroidTestResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"generateDebugAndroidTestSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"generateDebugAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"generateDebugBuildConfig\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"generateDebugResValues\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"generateDebugResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"generateDebugSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"generateReleaseAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"generateReleaseBuildConfig\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"generateReleaseResValues\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"generateReleaseResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"generateReleaseSources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Installs the android (on device) tests for the Debug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"installDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs lint on all variants.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"lint\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs lint on the Debug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"lintDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Runs lint on the Release build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"lintRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"mergeDebugAndroidTestAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"mergeDebugAndroidTestResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"mergeDebugAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"mergeDebugProguardFiles\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"mergeReleaseAssets\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"mergeReleaseProguardFiles\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Creates a version of android.jar that's suitable for unit tests.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"mockableAndroidJar\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"packageDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"packageDebugJar\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"packageDebugJniLibs\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"packageDebugLocalJar\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"packageDebugRenderscript\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"packageDebugResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"packageReleaseJar\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"packageReleaseJniLibs\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"packageReleaseLocalJar\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"packageReleaseRenderscript\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"packageReleaseResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"preBuild\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"preCompileDebugUnitTestJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"preCompileReleaseUnitTestJava\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"preDebugAndroidTestBuild\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"preDebugBuild\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"preDexDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"preReleaseBuild\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"prepareDebugAndroidTestDependencies\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"prepareDebugDependencies\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"prepareReleaseDependencies\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"processDebugAndroidTestJavaRes\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"processDebugAndroidTestManifest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"processDebugAndroidTestResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"processDebugJavaRes\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"processDebugManifest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"processDebugResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"processReleaseJavaRes\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"processReleaseManifest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"processReleaseResources\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Displays the signing info for each variant.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"signingReport\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Run all unit tests.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"test\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Run unit tests for the Debug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"testDebug\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Run unit tests for the Release build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"testRelease\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Uninstall all applications.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"uninstallAll\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"description\" value=\"Uninstalls the android (on device) tests for the Debug build.\" />\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"uninstallDebugAndroidTest\" />\n              </ExternalTaskPojo>\n              <ExternalTaskPojo>\n                <option name=\"linkedExternalProjectPath\" value=\"$PROJECT_DIR$/vitamio\" />\n                <option name=\"name\" value=\"validateDebugSigning\" />\n              </ExternalTaskPojo>\n            </list>\n          </value>\n        </entry>\n      </map>\n    </option>\n    <option name=\"modificationStamps\">\n      <map>\n        <entry key=\"$PROJECT_DIR$\" value=\"7162876885376\" />\n      </map>\n    </option>\n    <option name=\"projectBuildClasspath\">\n      <map>\n        <entry key=\"$PROJECT_DIR$\">\n          <value>\n            <ExternalProjectBuildClasspathPojo>\n              <option name=\"modulesBuildClasspath\">\n                <map>\n                  <entry key=\"$PROJECT_DIR$\">\n                    <value>\n                      <ExternalModuleBuildClasspathPojo>\n                        <option name=\"entries\">\n                          <list>\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle/1.1.0/gradle-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle/1.1.0/gradle-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle-core/1.1.0/gradle-core-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle-core/1.1.0/gradle-core-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint/24.1.0/lint-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint/24.1.0/lint-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-gradle/5.1/proguard-gradle-5.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-gradle/5.1/proguard-gradle-5.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder/1.1.0/builder-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder/1.1.0/builder-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/eclipse/jdt/core/compiler/ecj/4.4/ecj-4.4-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/eclipse/jdt/core/compiler/ecj/4.4/ecj-4.4.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-checks/24.1.0/lint-checks-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-checks/24.1.0/lint-checks-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-base/5.1/proguard-base-5.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-base/5.1/proguard-base-5.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdk-common/24.1.0/sdk-common-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdk-common/24.1.0/sdk-common-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-model/1.1.0/builder-model-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-model/1.1.0/builder-model-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/manifest-merger/24.1.0/manifest-merger-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/manifest-merger/24.1.0/manifest-merger-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-test-api/1.1.0/builder-test-api-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-test-api/1.1.0/builder-test-api-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/ddms/ddmlib/24.1.0/ddmlib-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/ddms/ddmlib/24.1.0/ddmlib-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/squareup/javawriter/2.5.0/javawriter-2.5.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/squareup/javawriter/2.5.0/javawriter-2.5.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdklib/24.1.0/sdklib-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdklib/24.1.0/sdklib-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/common/24.1.0/common-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/common/24.1.0/common-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm/5.0.3/asm-5.0.3-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm/5.0.3/asm-5.0.3.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-api/24.1.0/lint-api-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-api/24.1.0/lint-api-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/code/gson/gson/2.2.4/gson-2.2.4-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/annotations/24.1.0/annotations-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/annotations/24.1.0/annotations-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/dvlib/24.1.0/dvlib-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/dvlib/24.1.0/dvlib-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/layoutlib/layoutlib-api/24.1.0/layoutlib-api-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/layoutlib/layoutlib-api/24.1.0/layoutlib-api-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/guava/guava/17.0/guava-17.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/guava/guava/17.0/guava-17.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/commons-codec/commons-codec/1.4/commons-codec-1.4.jar\" />\n                          </list>\n                        </option>\n                        <option name=\"path\" value=\"$PROJECT_DIR$\" />\n                      </ExternalModuleBuildClasspathPojo>\n                    </value>\n                  </entry>\n                  <entry key=\"$PROJECT_DIR$/DanmakuFlameMaster\">\n                    <value>\n                      <ExternalModuleBuildClasspathPojo>\n                        <option name=\"entries\">\n                          <list>\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle/1.1.0/gradle-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle/1.1.0/gradle-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle-core/1.1.0/gradle-core-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle-core/1.1.0/gradle-core-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint/24.1.0/lint-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint/24.1.0/lint-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-gradle/5.1/proguard-gradle-5.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-gradle/5.1/proguard-gradle-5.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder/1.1.0/builder-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder/1.1.0/builder-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/eclipse/jdt/core/compiler/ecj/4.4/ecj-4.4-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/eclipse/jdt/core/compiler/ecj/4.4/ecj-4.4.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-checks/24.1.0/lint-checks-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-checks/24.1.0/lint-checks-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-base/5.1/proguard-base-5.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-base/5.1/proguard-base-5.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdk-common/24.1.0/sdk-common-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdk-common/24.1.0/sdk-common-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-model/1.1.0/builder-model-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-model/1.1.0/builder-model-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/manifest-merger/24.1.0/manifest-merger-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/manifest-merger/24.1.0/manifest-merger-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-test-api/1.1.0/builder-test-api-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-test-api/1.1.0/builder-test-api-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/ddms/ddmlib/24.1.0/ddmlib-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/ddms/ddmlib/24.1.0/ddmlib-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/squareup/javawriter/2.5.0/javawriter-2.5.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/squareup/javawriter/2.5.0/javawriter-2.5.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdklib/24.1.0/sdklib-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdklib/24.1.0/sdklib-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/common/24.1.0/common-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/common/24.1.0/common-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm/5.0.3/asm-5.0.3-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm/5.0.3/asm-5.0.3.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-api/24.1.0/lint-api-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-api/24.1.0/lint-api-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/code/gson/gson/2.2.4/gson-2.2.4-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/annotations/24.1.0/annotations-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/annotations/24.1.0/annotations-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/dvlib/24.1.0/dvlib-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/dvlib/24.1.0/dvlib-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/layoutlib/layoutlib-api/24.1.0/layoutlib-api-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/layoutlib/layoutlib-api/24.1.0/layoutlib-api-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/guava/guava/17.0/guava-17.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/guava/guava/17.0/guava-17.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/commons-codec/commons-codec/1.4/commons-codec-1.4.jar\" />\n                          </list>\n                        </option>\n                        <option name=\"path\" value=\"$PROJECT_DIR$/DanmakuFlameMaster\" />\n                      </ExternalModuleBuildClasspathPojo>\n                    </value>\n                  </entry>\n                  <entry key=\"$PROJECT_DIR$/VPIndexLibrary\">\n                    <value>\n                      <ExternalModuleBuildClasspathPojo>\n                        <option name=\"entries\">\n                          <list>\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle/1.1.0/gradle-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle/1.1.0/gradle-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle-core/1.1.0/gradle-core-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle-core/1.1.0/gradle-core-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint/24.1.0/lint-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint/24.1.0/lint-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-gradle/5.1/proguard-gradle-5.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-gradle/5.1/proguard-gradle-5.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder/1.1.0/builder-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder/1.1.0/builder-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/eclipse/jdt/core/compiler/ecj/4.4/ecj-4.4-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/eclipse/jdt/core/compiler/ecj/4.4/ecj-4.4.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-checks/24.1.0/lint-checks-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-checks/24.1.0/lint-checks-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-base/5.1/proguard-base-5.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-base/5.1/proguard-base-5.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdk-common/24.1.0/sdk-common-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdk-common/24.1.0/sdk-common-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-model/1.1.0/builder-model-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-model/1.1.0/builder-model-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/manifest-merger/24.1.0/manifest-merger-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/manifest-merger/24.1.0/manifest-merger-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-test-api/1.1.0/builder-test-api-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-test-api/1.1.0/builder-test-api-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/ddms/ddmlib/24.1.0/ddmlib-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/ddms/ddmlib/24.1.0/ddmlib-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/squareup/javawriter/2.5.0/javawriter-2.5.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/squareup/javawriter/2.5.0/javawriter-2.5.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdklib/24.1.0/sdklib-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdklib/24.1.0/sdklib-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/common/24.1.0/common-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/common/24.1.0/common-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm/5.0.3/asm-5.0.3-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm/5.0.3/asm-5.0.3.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-api/24.1.0/lint-api-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-api/24.1.0/lint-api-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/code/gson/gson/2.2.4/gson-2.2.4-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/annotations/24.1.0/annotations-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/annotations/24.1.0/annotations-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/dvlib/24.1.0/dvlib-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/dvlib/24.1.0/dvlib-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/layoutlib/layoutlib-api/24.1.0/layoutlib-api-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/layoutlib/layoutlib-api/24.1.0/layoutlib-api-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/guava/guava/17.0/guava-17.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/guava/guava/17.0/guava-17.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/commons-codec/commons-codec/1.4/commons-codec-1.4.jar\" />\n                            <option value=\"D:/as/sdk-install/extras/android/m2repository/com/android/support/support-v4/22.1.1/support-v4-22.1.1.aar\" />\n                            <option value=\"D:/as/sdk-install/extras/android/m2repository/com/android/support/support-annotations/22.1.1/support-annotations-22.1.1.jar\" />\n                          </list>\n                        </option>\n                        <option name=\"path\" value=\"$PROJECT_DIR$/VPIndexLibrary\" />\n                      </ExternalModuleBuildClasspathPojo>\n                    </value>\n                  </entry>\n                  <entry key=\"$PROJECT_DIR$/app\">\n                    <value>\n                      <ExternalModuleBuildClasspathPojo>\n                        <option name=\"entries\">\n                          <list>\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle/1.1.0/gradle-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle/1.1.0/gradle-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle-core/1.1.0/gradle-core-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle-core/1.1.0/gradle-core-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint/24.1.0/lint-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint/24.1.0/lint-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-gradle/5.1/proguard-gradle-5.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-gradle/5.1/proguard-gradle-5.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder/1.1.0/builder-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder/1.1.0/builder-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/eclipse/jdt/core/compiler/ecj/4.4/ecj-4.4-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/eclipse/jdt/core/compiler/ecj/4.4/ecj-4.4.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-checks/24.1.0/lint-checks-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-checks/24.1.0/lint-checks-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-base/5.1/proguard-base-5.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-base/5.1/proguard-base-5.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdk-common/24.1.0/sdk-common-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdk-common/24.1.0/sdk-common-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-model/1.1.0/builder-model-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-model/1.1.0/builder-model-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/manifest-merger/24.1.0/manifest-merger-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/manifest-merger/24.1.0/manifest-merger-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-test-api/1.1.0/builder-test-api-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-test-api/1.1.0/builder-test-api-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/ddms/ddmlib/24.1.0/ddmlib-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/ddms/ddmlib/24.1.0/ddmlib-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/squareup/javawriter/2.5.0/javawriter-2.5.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/squareup/javawriter/2.5.0/javawriter-2.5.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdklib/24.1.0/sdklib-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdklib/24.1.0/sdklib-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/common/24.1.0/common-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/common/24.1.0/common-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm/5.0.3/asm-5.0.3-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm/5.0.3/asm-5.0.3.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-api/24.1.0/lint-api-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-api/24.1.0/lint-api-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/code/gson/gson/2.2.4/gson-2.2.4-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/annotations/24.1.0/annotations-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/annotations/24.1.0/annotations-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/dvlib/24.1.0/dvlib-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/dvlib/24.1.0/dvlib-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/layoutlib/layoutlib-api/24.1.0/layoutlib-api-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/layoutlib/layoutlib-api/24.1.0/layoutlib-api-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/guava/guava/17.0/guava-17.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/guava/guava/17.0/guava-17.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/commons-codec/commons-codec/1.4/commons-codec-1.4.jar\" />\n                            <option value=\"D:/as/sdk-install/extras/android/m2repository/com/android/support/appcompat-v7/22.1.1/appcompat-v7-22.1.1.aar\" />\n                            <option value=\"D:/as/sdk-install/extras/android/m2repository/com/android/support/support-v4/22.1.1/support-v4-22.1.1.aar\" />\n                            <option value=\"D:/as/sdk-install/extras/android/m2repository/com/android/support/support-annotations/22.1.1/support-annotations-22.1.1.jar\" />\n                            <option value=\"$MODULE_DIR$/libs/jsoup-1.8.1.jar\" />\n                            <option value=\"$MODULE_DIR$/libs/universal-image-loader-1.9.3.jar\" />\n                          </list>\n                        </option>\n                        <option name=\"path\" value=\"$PROJECT_DIR$/app\" />\n                      </ExternalModuleBuildClasspathPojo>\n                    </value>\n                  </entry>\n                  <entry key=\"$PROJECT_DIR$/vitamio\">\n                    <value>\n                      <ExternalModuleBuildClasspathPojo>\n                        <option name=\"entries\">\n                          <list>\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle/1.1.0/gradle-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle/1.1.0/gradle-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle-core/1.1.0/gradle-core-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle-core/1.1.0/gradle-core-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint/24.1.0/lint-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint/24.1.0/lint-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-gradle/5.1/proguard-gradle-5.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-gradle/5.1/proguard-gradle-5.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder/1.1.0/builder-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder/1.1.0/builder-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/eclipse/jdt/core/compiler/ecj/4.4/ecj-4.4-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/eclipse/jdt/core/compiler/ecj/4.4/ecj-4.4.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-checks/24.1.0/lint-checks-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-checks/24.1.0/lint-checks-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-base/5.1/proguard-base-5.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-base/5.1/proguard-base-5.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdk-common/24.1.0/sdk-common-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdk-common/24.1.0/sdk-common-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-model/1.1.0/builder-model-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-model/1.1.0/builder-model-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/manifest-merger/24.1.0/manifest-merger-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/manifest-merger/24.1.0/manifest-merger-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-test-api/1.1.0/builder-test-api-1.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-test-api/1.1.0/builder-test-api-1.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/ddms/ddmlib/24.1.0/ddmlib-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/ddms/ddmlib/24.1.0/ddmlib-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/squareup/javawriter/2.5.0/javawriter-2.5.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/squareup/javawriter/2.5.0/javawriter-2.5.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdklib/24.1.0/sdklib-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdklib/24.1.0/sdklib-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/common/24.1.0/common-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/common/24.1.0/common-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm/5.0.3/asm-5.0.3-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm/5.0.3/asm-5.0.3.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-api/24.1.0/lint-api-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-api/24.1.0/lint-api-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/code/gson/gson/2.2.4/gson-2.2.4-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/annotations/24.1.0/annotations-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/annotations/24.1.0/annotations-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/dvlib/24.1.0/dvlib-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/dvlib/24.1.0/dvlib-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/layoutlib/layoutlib-api/24.1.0/layoutlib-api-24.1.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/layoutlib/layoutlib-api/24.1.0/layoutlib-api-24.1.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/guava/guava/17.0/guava-17.0-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/guava/guava/17.0/guava-17.0.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar\" />\n                            <option value=\"$APPLICATION_HOME_DIR$/gradle/m2repository/commons-codec/commons-codec/1.4/commons-codec-1.4.jar\" />\n                          </list>\n                        </option>\n                        <option name=\"path\" value=\"$PROJECT_DIR$/vitamio\" />\n                      </ExternalModuleBuildClasspathPojo>\n                    </value>\n                  </entry>\n                </map>\n              </option>\n              <option name=\"name\" value=\"app\" />\n              <option name=\"projectBuildClasspath\">\n                <list>\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/announce\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/antlr\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/base-services\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/base-services-groovy\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/build-comparison\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/build-init\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/cli\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/code-quality\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/core\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/cunit\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/dependency-management\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/diagnostics\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/ear\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/ide\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/ide-native\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/internal-integ-testing\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/internal-testing\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/ivy\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/jacoco\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/javascript\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/jetty\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/language-groovy\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/language-java\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/language-jvm\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/language-native\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/launcher\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/maven\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/messaging\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/model-core\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/model-groovy\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/native\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/open-api\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/osgi\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/platform-base\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/platform-jvm\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/platform-native\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/plugin-development\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/plugin-use\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/plugins\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/publish\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/reporting\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/resources\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/resources-http\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/scala\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/signing\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/sonar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/tooling-api\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/ui\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/src/wrapper\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/ant-1.9.3.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/ant-launcher-1.9.3.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/gradle-base-services-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/gradle-base-services-groovy-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/gradle-cli-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/gradle-core-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/gradle-docs-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/gradle-launcher-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/gradle-messaging-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/gradle-model-core-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/gradle-model-groovy-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/gradle-native-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/gradle-open-api-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/gradle-resources-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/gradle-tooling-api-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/gradle-ui-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/gradle-wrapper-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/groovy-all-2.3.6.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/ant-antlr-1.9.3.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-announce-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-antlr-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-build-comparison-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-build-init-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-code-quality-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-cunit-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-dependency-management-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-diagnostics-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-ear-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-ide-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-ide-native-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-ivy-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-jacoco-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-javascript-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-jetty-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-language-groovy-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-language-java-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-language-jvm-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-language-native-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-maven-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-osgi-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-platform-base-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-platform-jvm-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-platform-native-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-plugin-development-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-plugin-use-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-plugins-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-publish-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-reporting-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-resources-http-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-scala-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-signing-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/gradle-sonar-2.2.1.jar\" />\n                  <option value=\"$USER_HOME$/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53/gradle-2.2.1/lib/plugins/ivy-2.2.0.jar\" />\n                  <option value=\"$PROJECT_DIR$/buildSrc/src/main/java\" />\n                  <option value=\"$PROJECT_DIR$/buildSrc/src/main/groovy\" />\n                </list>\n              </option>\n            </ExternalProjectBuildClasspathPojo>\n          </value>\n        </entry>\n      </map>\n    </option>\n  </component>\n  <component name=\"IdeDocumentHistory\">\n    <option name=\"changedFiles\">\n      <list>\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/utils/JsoupUtil.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/utils/PreferenceUtils.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/utils/IntentHelper.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/view/CircleImageView.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/view/FileUtils.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/view/PlayerService.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/utils/ToastUtils.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/adapter/KejiTabAdapter.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/adapter/DonghuaTabAdapter.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/adapter/DianyingTabAdapter.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/adapter/BankumiTabAdapter.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/adapter/MusicTabAdapter.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/adapter/RankAdapter.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/fragment/RankFragment.java\" />\n        <option value=\"$PROJECT_DIR$/DanmakuFlameMaster/build.gradle\" />\n        <option value=\"$PROJECT_DIR$/VPIndexLibrary/build.gradle\" />\n        <option value=\"$PROJECT_DIR$/DanmakuFlameMaster/src/main/AndroidManifest.xml\" />\n        <option value=\"$PROJECT_DIR$/vitamio/AndroidManifest.xml\" />\n        <option value=\"$PROJECT_DIR$/VPIndexLibrary/AndroidManifest.xml\" />\n        <option value=\"$PROJECT_DIR$/settings.gradle\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/viewpagerindicator/CirclePageIndicator.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/viewpagerindicator/TabPageIndicator.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/viewpagerindicator/IconPageIndicator.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/viewpagerindicator/LinePageIndicator.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/viewpagerindicator/TitlePageIndicator.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/viewpagerindicator/UnderlinePageIndicator.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/res/layout/donghua_tab.xml\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/activity/DonghuaActivity.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/res/layout/activity_video.xml\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/res/layout/main_head.xml\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/res/layout/activity_main.xml\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/fragment/FragmentLogin.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/activity/MainActivity.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/fragment/FramentTime.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/adapter/MainTabAdapter.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/fragment/HomePageFragment2.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/res/layout/fragment_homepage.xml\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/res/layout/area_item.xml\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/activity/BiliWebviewActivity.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/activity/TVActivity.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/activity/VideoInfoActivity.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/res/values/styles.xml\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/res/layout/back_head.xml\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/res/layout/fragment_subarea.xml\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/java/com/cjj/bb/fragment/DonghuaFragment.java\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/res/layout/fragment_donghua.xml\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/res/layout/video_list_item.xml\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/AndroidManifest.xml\" />\n        <option value=\"$PROJECT_DIR$/vitamio/build.gradle\" />\n        <option value=\"$PROJECT_DIR$/app/src/main/res/values/strings.xml\" />\n        <option value=\"$PROJECT_DIR$/app/build.gradle\" />\n      </list>\n    </option>\n  </component>\n  <component name=\"ProjectFrameBounds\">\n    <option name=\"x\" value=\"1\" />\n    <option name=\"y\" value=\"1\" />\n    <option name=\"width\" value=\"1438\" />\n    <option name=\"height\" value=\"858\" />\n  </component>\n  <component name=\"ProjectLevelVcsManager\" settingsEditedManually=\"false\">\n    <OptionsSetting value=\"true\" id=\"Add\" />\n    <OptionsSetting value=\"true\" id=\"Remove\" />\n    <OptionsSetting value=\"true\" id=\"Checkout\" />\n    <OptionsSetting value=\"true\" id=\"Update\" />\n    <OptionsSetting value=\"true\" id=\"Status\" />\n    <OptionsSetting value=\"true\" id=\"Edit\" />\n    <ConfirmationsSetting value=\"0\" id=\"Add\" />\n    <ConfirmationsSetting value=\"0\" id=\"Remove\" />\n  </component>\n  <component name=\"ProjectReloadState\">\n    <option name=\"STATE\" value=\"0\" />\n  </component>\n  <component name=\"ProjectView\">\n    <navigator currentView=\"ProjectPane\" proportions=\"\" version=\"1\">\n      <flattenPackages />\n      <showMembers />\n      <showModules />\n      <showLibraryContents />\n      <hideEmptyPackages />\n      <abbreviatePackageNames />\n      <autoscrollToSource />\n      <autoscrollFromSource />\n      <sortByType />\n    </navigator>\n    <panes>\n      <pane id=\"PackagesPane\" />\n      <pane id=\"AndroidView\">\n        <subPane>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"BilibiliClient\" />\n              <option name=\"myItemType\" value=\"com.android.tools.idea.navigator.nodes.AndroidViewProjectNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"BilibiliClient\" />\n              <option name=\"myItemType\" value=\"com.android.tools.idea.navigator.nodes.AndroidViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"app\" />\n              <option name=\"myItemType\" value=\"com.android.tools.idea.navigator.nodes.AndroidModuleNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"res\" />\n              <option name=\"myItemType\" value=\"com.android.tools.idea.navigator.nodes.AndroidResFolderNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"BilibiliClient\" />\n              <option name=\"myItemType\" value=\"com.android.tools.idea.navigator.nodes.AndroidViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"app\" />\n              <option name=\"myItemType\" value=\"com.android.tools.idea.navigator.nodes.AndroidModuleNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"res\" />\n              <option name=\"myItemType\" value=\"com.android.tools.idea.navigator.nodes.AndroidResFolderNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"layout\" />\n              <option name=\"myItemType\" value=\"com.android.tools.idea.navigator.nodes.AndroidResFolderTypeNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"BilibiliClient\" />\n              <option name=\"myItemType\" value=\"com.android.tools.idea.navigator.nodes.AndroidViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"app\" />\n              <option name=\"myItemType\" value=\"com.android.tools.idea.navigator.nodes.AndroidModuleNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n        </subPane>\n      </pane>\n      <pane id=\"Scope\" />\n      <pane id=\"ProjectPane\">\n        <subPane>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"BilibiliClient\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"BilibiliClient\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"BilibiliClient\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"BilibiliClient\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"BilibiliClient\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"build\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"intermediates\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"BilibiliClient\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"BilibiliClient\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"app\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n        </subPane>\n      </pane>\n    </panes>\n  </component>\n  <component name=\"PropertiesComponent\">\n    <property name=\"GoToClass.includeLibraries\" value=\"false\" />\n    <property name=\"GoToClass.toSaveIncludeLibraries\" value=\"false\" />\n    <property name=\"GoToFile.includeJavaFiles\" value=\"false\" />\n    <property name=\"MemberChooser.sorted\" value=\"false\" />\n    <property name=\"MemberChooser.showClasses\" value=\"true\" />\n    <property name=\"MemberChooser.copyJavadoc\" value=\"false\" />\n    <property name=\"android.sdk.path\" value=\"D:/as/sdk-install\" />\n    <property name=\"recentsLimit\" value=\"5\" />\n    <property name=\"android.project.structure.last.selected\" value=\"app\" />\n    <property name=\"android.project.structure.proportion\" value=\"0.15\" />\n    <property name=\"last_opened_file_path\" value=\"$PROJECT_DIR$/app/libs/jsoup-1.8.1.jar\" />\n    <property name=\"ANDROID_EXTENDED_DEVICE_CHOOSER_SERIALS\" value=\"0123456789ABCDEF\" />\n    <property name=\"ANDROID_EXTENDED_DEVICE_CHOOSER_AVD\" value=\"Nexus_5_API_21_x86\" />\n    <property name=\"OverrideImplement.combined\" value=\"true\" />\n    <property name=\"OverrideImplement.overriding.sorted\" value=\"false\" />\n  </component>\n  <component name=\"RecentsManager\">\n    <key name=\"CopyFile.RECENT_KEYS\">\n      <recent name=\"F:\\cjj\\BilibiliClient\\app\\src\\main\\res\\drawable-hdpi\" />\n      <recent name=\"F:\\cjj\\BilibiliClient\\app\\src\\main\\res\" />\n      <recent name=\"F:\\cjj\\BilibiliClient\\app\\src\\main\\res\\values\" />\n      <recent name=\"F:\\cjj\\BilibiliClient\\app\\src\\main\\res\\drawable-mdpi\" />\n      <recent name=\"F:\\cjj\\BilibiliClient\\app\\src\\main\\res\\drawable\" />\n    </key>\n  </component>\n  <component name=\"RunManager\" selected=\"Android Application.app\">\n    <configuration default=\"true\" type=\"AndroidTestRunConfigurationType\" factoryName=\"Android Tests\">\n      <module name=\"\" />\n      <option name=\"TESTING_TYPE\" value=\"0\" />\n      <option name=\"INSTRUMENTATION_RUNNER_CLASS\" value=\"\" />\n      <option name=\"METHOD_NAME\" value=\"\" />\n      <option name=\"CLASS_NAME\" value=\"\" />\n      <option name=\"PACKAGE_NAME\" value=\"\" />\n      <option name=\"TARGET_SELECTION_MODE\" value=\"EMULATOR\" />\n      <option name=\"USE_LAST_SELECTED_DEVICE\" value=\"false\" />\n      <option name=\"PREFERRED_AVD\" value=\"\" />\n      <option name=\"USE_COMMAND_LINE\" value=\"true\" />\n      <option name=\"COMMAND_LINE\" value=\"\" />\n      <option name=\"WIPE_USER_DATA\" value=\"false\" />\n      <option name=\"DISABLE_BOOT_ANIMATION\" value=\"false\" />\n      <option name=\"NETWORK_SPEED\" value=\"full\" />\n      <option name=\"NETWORK_LATENCY\" value=\"none\" />\n      <option name=\"CLEAR_LOGCAT\" value=\"false\" />\n      <option name=\"SHOW_LOGCAT_AUTOMATICALLY\" value=\"true\" />\n      <option name=\"FILTER_LOGCAT_AUTOMATICALLY\" value=\"true\" />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"Remote\" factoryName=\"Remote\">\n      <option name=\"USE_SOCKET_TRANSPORT\" value=\"true\" />\n      <option name=\"SERVER_MODE\" value=\"false\" />\n      <option name=\"SHMEM_ADDRESS\" value=\"javadebug\" />\n      <option name=\"HOST\" value=\"localhost\" />\n      <option name=\"PORT\" value=\"5005\" />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"TestNG\" factoryName=\"TestNG\">\n      <module name=\"\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"SUITE_NAME\" />\n      <option name=\"PACKAGE_NAME\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"METHOD_NAME\" />\n      <option name=\"GROUP_NAME\" />\n      <option name=\"TEST_OBJECT\" value=\"CLASS\" />\n      <option name=\"VM_PARAMETERS\" value=\"-ea\" />\n      <option name=\"PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" value=\"$PROJECT_DIR$\" />\n      <option name=\"OUTPUT_DIRECTORY\" />\n      <option name=\"ANNOTATION_TYPE\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <option name=\"TEST_SEARCH_SCOPE\">\n        <value defaultName=\"moduleWithDependencies\" />\n      </option>\n      <option name=\"USE_DEFAULT_REPORTERS\" value=\"false\" />\n      <option name=\"PROPERTIES_FILE\" />\n      <envs />\n      <properties />\n      <listeners />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"Application\" factoryName=\"Application\">\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PROGRAM_PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" value=\"$PROJECT_DIR$\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"ENABLE_SWING_INSPECTOR\" value=\"false\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <module name=\"\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"JUnit\" factoryName=\"JUnit\">\n      <module name=\"\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"PACKAGE_NAME\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"METHOD_NAME\" />\n      <option name=\"TEST_OBJECT\" value=\"class\" />\n      <option name=\"VM_PARAMETERS\" value=\"-ea\" />\n      <option name=\"PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" value=\"$PROJECT_DIR$\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <option name=\"TEST_SEARCH_SCOPE\">\n        <value defaultName=\"moduleWithDependencies\" />\n      </option>\n      <envs />\n      <patterns />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"AndroidRunConfigurationType\" factoryName=\"Android Application\">\n      <module name=\"\" />\n      <option name=\"ACTIVITY_CLASS\" value=\"\" />\n      <option name=\"MODE\" value=\"default_activity\" />\n      <option name=\"DEPLOY\" value=\"true\" />\n      <option name=\"ARTIFACT_NAME\" value=\"\" />\n      <option name=\"TARGET_SELECTION_MODE\" value=\"EMULATOR\" />\n      <option name=\"USE_LAST_SELECTED_DEVICE\" value=\"false\" />\n      <option name=\"PREFERRED_AVD\" value=\"\" />\n      <option name=\"USE_COMMAND_LINE\" value=\"true\" />\n      <option name=\"COMMAND_LINE\" value=\"\" />\n      <option name=\"WIPE_USER_DATA\" value=\"false\" />\n      <option name=\"DISABLE_BOOT_ANIMATION\" value=\"false\" />\n      <option name=\"NETWORK_SPEED\" value=\"full\" />\n      <option name=\"NETWORK_LATENCY\" value=\"none\" />\n      <option name=\"CLEAR_LOGCAT\" value=\"false\" />\n      <option name=\"SHOW_LOGCAT_AUTOMATICALLY\" value=\"true\" />\n      <option name=\"FILTER_LOGCAT_AUTOMATICALLY\" value=\"true\" />\n      <method />\n    </configuration>\n    <configuration default=\"false\" name=\"app\" type=\"AndroidRunConfigurationType\" factoryName=\"Android Application\">\n      <module name=\"app\" />\n      <option name=\"ACTIVITY_CLASS\" value=\"\" />\n      <option name=\"MODE\" value=\"default_activity\" />\n      <option name=\"DEPLOY\" value=\"true\" />\n      <option name=\"ARTIFACT_NAME\" value=\"\" />\n      <option name=\"TARGET_SELECTION_MODE\" value=\"SHOW_DIALOG\" />\n      <option name=\"USE_LAST_SELECTED_DEVICE\" value=\"false\" />\n      <option name=\"PREFERRED_AVD\" value=\"\" />\n      <option name=\"USE_COMMAND_LINE\" value=\"true\" />\n      <option name=\"COMMAND_LINE\" value=\"\" />\n      <option name=\"WIPE_USER_DATA\" value=\"false\" />\n      <option name=\"DISABLE_BOOT_ANIMATION\" value=\"false\" />\n      <option name=\"NETWORK_SPEED\" value=\"full\" />\n      <option name=\"NETWORK_LATENCY\" value=\"none\" />\n      <option name=\"CLEAR_LOGCAT\" value=\"false\" />\n      <option name=\"SHOW_LOGCAT_AUTOMATICALLY\" value=\"true\" />\n      <option name=\"FILTER_LOGCAT_AUTOMATICALLY\" value=\"true\" />\n      <RunnerSettings RunnerId=\"AndroidDebugRunner\" />\n      <ConfigurationWrapper RunnerId=\"AndroidDebugRunner\" />\n      <method />\n    </configuration>\n    <list size=\"1\">\n      <item index=\"0\" class=\"java.lang.String\" itemvalue=\"Android Application.app\" />\n    </list>\n    <configuration name=\"&lt;template&gt;\" type=\"Applet\" default=\"true\" selected=\"false\">\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"HTML_FILE_NAME\" />\n      <option name=\"HTML_USED\" value=\"false\" />\n      <option name=\"WIDTH\" value=\"400\" />\n      <option name=\"HEIGHT\" value=\"300\" />\n      <option name=\"POLICY_FILE\" value=\"$APPLICATION_HOME_DIR$/bin/appletviewer.policy\" />\n      <option name=\"VM_PARAMETERS\" />\n    </configuration>\n    <configuration name=\"&lt;template&gt;\" type=\"#org.jetbrains.idea.devkit.run.PluginConfigurationType\" default=\"true\" selected=\"false\">\n      <option name=\"VM_PARAMETERS\" value=\"-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea\" />\n    </configuration>\n    <configuration name=\"&lt;template&gt;\" type=\"WebApp\" default=\"true\" selected=\"false\">\n      <Host>localhost</Host>\n      <Port>5050</Port>\n    </configuration>\n  </component>\n  <component name=\"ShelveChangesManager\" show_recycled=\"false\" />\n  <component name=\"SliceManager\">\n    <option name=\"analysisUIOptions\">\n      <AnalysisUIOptions />\n    </option>\n  </component>\n  <component name=\"TaskManager\">\n    <task active=\"true\" id=\"Default\" summary=\"Default task\">\n      <changelist id=\"ffc9c45d-e6ba-43ac-a230-f38778fc9b75\" name=\"Default\" comment=\"\" />\n      <created>1432535307771</created>\n      <updated>1432535307771</updated>\n    </task>\n    <servers />\n  </component>\n  <component name=\"ToolWindowManager\">\n    <frame x=\"1\" y=\"1\" width=\"1438\" height=\"858\" extended-state=\"1\" />\n    <editor active=\"true\" />\n    <layout>\n      <window_info id=\"Palette&#9;\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.33\" sideWeight=\"0.5\" order=\"2\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Changes\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.33\" sideWeight=\"0.5\" order=\"7\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Designer\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.33\" sideWeight=\"0.5\" order=\"3\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Terminal\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.33\" sideWeight=\"0.5\" order=\"7\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Debug\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.4\" sideWeight=\"0.5\" order=\"3\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Event Log\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.33\" sideWeight=\"0.5\" order=\"7\" side_tool=\"true\" content_ui=\"tabs\" />\n      <window_info id=\"Favorites\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.33\" sideWeight=\"0.5\" order=\"2\" side_tool=\"true\" content_ui=\"tabs\" />\n      <window_info id=\"Version Control\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.33\" sideWeight=\"0.5\" order=\"7\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Gradle Console\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.33\" sideWeight=\"0.5\" order=\"7\" side_tool=\"true\" content_ui=\"tabs\" />\n      <window_info id=\"Build Variants\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.33\" sideWeight=\"0.5\" order=\"2\" side_tool=\"true\" content_ui=\"tabs\" />\n      <window_info id=\"Messages\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.38516405\" sideWeight=\"0.5\" order=\"7\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Android\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.56918687\" sideWeight=\"0.5\" order=\"7\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Gradle\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.33\" sideWeight=\"0.5\" order=\"3\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"TODO\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.33\" sideWeight=\"0.5\" order=\"6\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Structure\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.25\" sideWeight=\"0.5\" order=\"1\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Commander\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"SLIDING\" type=\"SLIDING\" visible=\"false\" weight=\"0.4\" sideWeight=\"0.5\" order=\"0\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Maven Projects\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.33\" sideWeight=\"0.5\" order=\"3\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Application Servers\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.33\" sideWeight=\"0.5\" order=\"7\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Project\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"true\" weight=\"0.37590712\" sideWeight=\"0.5\" order=\"0\" side_tool=\"false\" content_ui=\"combo\" />\n      <window_info id=\"Run\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.32952926\" sideWeight=\"0.5\" order=\"2\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Memory Monitor\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.33\" sideWeight=\"0.5\" order=\"7\" side_tool=\"true\" content_ui=\"tabs\" />\n      <window_info id=\"Ant Build\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.25\" sideWeight=\"0.5\" order=\"1\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Hierarchy\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.25\" sideWeight=\"0.5\" order=\"2\" side_tool=\"false\" content_ui=\"combo\" />\n      <window_info id=\"Cvs\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.25\" sideWeight=\"0.5\" order=\"4\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Message\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.33\" sideWeight=\"0.5\" order=\"0\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Preview\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.21988389\" sideWeight=\"0.5\" order=\"3\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Find\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.32952926\" sideWeight=\"0.5\" order=\"1\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Inspection\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" weight=\"0.4\" sideWeight=\"0.5\" order=\"5\" side_tool=\"false\" content_ui=\"tabs\" />\n    </layout>\n  </component>\n  <component name=\"Vcs.Log.UiProperties\">\n    <option name=\"RECENTLY_FILTERED_USER_GROUPS\">\n      <collection />\n    </option>\n    <option name=\"RECENTLY_FILTERED_BRANCH_GROUPS\">\n      <collection />\n    </option>\n  </component>\n  <component name=\"VcsContentAnnotationSettings\">\n    <option name=\"myLimit\" value=\"2678400000\" />\n  </component>\n  <component name=\"VcsManagerConfiguration\">\n    <option name=\"myTodoPanelSettings\">\n      <TodoPanelSettings />\n    </option>\n  </component>\n  <component name=\"XDebuggerManager\">\n    <breakpoint-manager />\n  </component>\n  <component name=\"editorHistoryManager\">\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/values/vpi__styles.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"204\" max-vertical-offset=\"901\">\n          <caret line=\"23\" column=\"12\" selection-start-line=\"23\" selection-start-column=\"12\" selection-end-line=\"23\" selection-end-column=\"12\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/layout/fragment_main.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"-6.678571\" vertical-offset=\"0\" max-vertical-offset=\"9826\">\n          <caret line=\"11\" column=\"2\" selection-start-line=\"11\" selection-start-column=\"2\" selection-end-line=\"11\" selection-end-column=\"2\" />\n          <folding />\n        </state>\n      </provider>\n      <provider editor-type-id=\"android-designer\">\n        <state />\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/layout/banner.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"0\" max-vertical-offset=\"1037\">\n          <caret line=\"0\" column=\"0\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"0\" selection-end-column=\"0\" />\n          <folding />\n        </state>\n      </provider>\n      <provider editor-type-id=\"android-designer\">\n        <state />\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/viewpagerindicator/CirclePageIndicator.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"602\" max-vertical-offset=\"8891\">\n          <caret line=\"83\" column=\"24\" selection-start-line=\"83\" selection-start-column=\"24\" selection-end-line=\"83\" selection-end-column=\"24\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/viewpagerindicator/TabPageIndicator.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"306\" max-vertical-offset=\"4250\">\n          <caret line=\"57\" column=\"26\" selection-start-line=\"57\" selection-start-column=\"26\" selection-end-line=\"57\" selection-end-column=\"26\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/values/attrs.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"0\" max-vertical-offset=\"659\">\n          <caret line=\"0\" column=\"0\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"0\" selection-end-column=\"0\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/values/vpi__attrs.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"1623\" max-vertical-offset=\"2295\">\n          <caret line=\"117\" column=\"35\" selection-start-line=\"117\" selection-start-column=\"35\" selection-end-line=\"117\" selection-end-column=\"35\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/drawable/base_tabpager_indicator_selected.9.png\">\n      <provider selected=\"true\" editor-type-id=\"ninepatcheditor\">\n        <state />\n      </provider>\n      <provider editor-type-id=\"images\">\n        <state />\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/drawable/tab_indicator.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.077389985\" vertical-offset=\"0\" max-vertical-offset=\"659\">\n          <caret line=\"3\" column=\"107\" selection-start-line=\"3\" selection-start-column=\"107\" selection-end-line=\"3\" selection-end-column=\"107\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/viewpagerindicator/PageIndicator.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"0\" max-vertical-offset=\"918\">\n          <caret line=\"25\" column=\"17\" selection-start-line=\"25\" selection-start-column=\"17\" selection-end-line=\"25\" selection-end-column=\"17\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/layout/activity_video.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.2155309\" vertical-offset=\"0\" max-vertical-offset=\"2108\">\n          <caret line=\"8\" column=\"20\" selection-start-line=\"8\" selection-start-column=\"20\" selection-end-line=\"8\" selection-end-column=\"20\" />\n          <folding />\n        </state>\n      </provider>\n      <provider editor-type-id=\"android-designer\">\n        <state />\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/layout/main_head.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.053882726\" vertical-offset=\"0\" max-vertical-offset=\"850\">\n          <caret line=\"2\" column=\"29\" selection-start-line=\"2\" selection-start-column=\"29\" selection-end-line=\"2\" selection-end-column=\"29\" />\n          <folding />\n        </state>\n      </provider>\n      <provider editor-type-id=\"android-designer\">\n        <state />\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/fragment/FramentTime.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"0\" max-vertical-offset=\"527\">\n          <caret line=\"15\" column=\"13\" selection-start-line=\"15\" selection-start-column=\"13\" selection-end-line=\"15\" selection-end-column=\"13\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/layout/activity_main.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.49\" vertical-offset=\"195\" max-vertical-offset=\"595\">\n          <caret line=\"23\" column=\"4\" selection-start-line=\"23\" selection-start-column=\"4\" selection-end-line=\"23\" selection-end-column=\"4\" />\n          <folding />\n        </state>\n      </provider>\n      <provider editor-type-id=\"android-designer\">\n        <state />\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/fragment/FragmentLogin.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"0\" max-vertical-offset=\"408\">\n          <caret line=\"23\" column=\"19\" selection-start-line=\"21\" selection-start-column=\"4\" selection-end-line=\"23\" selection-end-column=\"19\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/layout/fragment_homepage.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"-14.178572\" vertical-offset=\"402\" max-vertical-offset=\"4573\">\n          <caret line=\"47\" column=\"30\" selection-start-line=\"47\" selection-start-column=\"30\" selection-end-line=\"47\" selection-end-column=\"30\" />\n          <folding />\n        </state>\n      </provider>\n      <provider editor-type-id=\"android-designer\">\n        <state />\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/fragment/HomePageFragment2.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"306\" max-vertical-offset=\"10863\">\n          <caret line=\"152\" column=\"9\" selection-start-line=\"152\" selection-start-column=\"9\" selection-end-line=\"152\" selection-end-column=\"9\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/drawable/corner.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"0\" max-vertical-offset=\"659\">\n          <caret line=\"0\" column=\"0\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"0\" selection-end-column=\"0\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/drawable/list_selector.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"0\" max-vertical-offset=\"659\">\n          <caret line=\"0\" column=\"0\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"0\" selection-end-column=\"0\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/drawable-xhdpi/ic_cate_ranks.png\">\n      <provider selected=\"true\" editor-type-id=\"images\">\n        <state />\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/values/colors.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.10119048\" vertical-offset=\"0\" max-vertical-offset=\"672\">\n          <caret line=\"4\" column=\"17\" selection-start-line=\"4\" selection-start-column=\"17\" selection-end-line=\"4\" selection-end-column=\"17\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/activity/ABPlayerApplication.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"0\" max-vertical-offset=\"748\">\n          <caret line=\"10\" column=\"13\" selection-start-line=\"10\" selection-start-column=\"13\" selection-end-line=\"10\" selection-end-column=\"13\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/activity/VideoViewActivity.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"0\" max-vertical-offset=\"15453\">\n          <caret line=\"72\" column=\"13\" selection-start-line=\"72\" selection-start-column=\"13\" selection-end-line=\"72\" selection-end-column=\"13\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/activity/VideoInfoActivity.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"0\" max-vertical-offset=\"782\">\n          <caret line=\"41\" column=\"38\" selection-start-line=\"41\" selection-start-column=\"38\" selection-end-line=\"41\" selection-end-column=\"38\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/activity/TVActivity.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"0\" max-vertical-offset=\"918\">\n          <caret line=\"42\" column=\"38\" selection-start-line=\"42\" selection-start-column=\"38\" selection-end-line=\"42\" selection-end-column=\"38\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/fragment/BangumiFragment.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"0\" max-vertical-offset=\"2244\">\n          <caret line=\"19\" column=\"13\" selection-start-line=\"19\" selection-start-column=\"13\" selection-end-line=\"19\" selection-end-column=\"13\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/fragment/BroadcastTimetableFragment.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"0\" max-vertical-offset=\"221\">\n          <caret line=\"4\" column=\"13\" selection-start-line=\"4\" selection-start-column=\"13\" selection-end-line=\"4\" selection-end-column=\"13\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/layout/back_head.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"-1.1014264\" vertical-offset=\"695\" max-vertical-offset=\"1326\">\n          <caret line=\"0\" column=\"38\" selection-start-line=\"0\" selection-start-column=\"38\" selection-end-line=\"0\" selection-end-column=\"38\" />\n          <folding />\n        </state>\n      </provider>\n      <provider editor-type-id=\"android-designer\">\n        <state />\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/layout/donghua_tab.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.18858954\" vertical-offset=\"0\" max-vertical-offset=\"631\">\n          <caret line=\"7\" column=\"30\" selection-start-line=\"7\" selection-start-column=\"30\" selection-end-line=\"7\" selection-end-column=\"30\" />\n          <folding />\n        </state>\n      </provider>\n      <provider editor-type-id=\"android-designer\">\n        <state />\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/activity/BiliWebviewActivity.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.7589286\" vertical-offset=\"0\" max-vertical-offset=\"1156\">\n          <caret line=\"43\" column=\"0\" selection-start-line=\"43\" selection-start-column=\"0\" selection-end-line=\"43\" selection-end-column=\"0\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/activity/BiliVideoViewActivity.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"2.4825494\" vertical-offset=\"302\" max-vertical-offset=\"20077\">\n          <caret line=\"188\" column=\"33\" selection-start-line=\"188\" selection-start-column=\"33\" selection-end-line=\"188\" selection-end-column=\"33\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/values/styles.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"1275\" max-vertical-offset=\"2516\">\n          <caret line=\"83\" column=\"41\" selection-start-line=\"83\" selection-start-column=\"41\" selection-end-line=\"83\" selection-end-column=\"41\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/activity/MainActivity.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"17\" max-vertical-offset=\"2482\">\n          <caret line=\"27\" column=\"53\" selection-start-line=\"27\" selection-start-column=\"53\" selection-end-line=\"27\" selection-end-column=\"53\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/adapter/MainTabAdapter.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"82\" max-vertical-offset=\"1173\">\n          <caret line=\"26\" column=\"22\" selection-start-line=\"26\" selection-start-column=\"22\" selection-end-line=\"26\" selection-end-column=\"22\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/layout/fragment_subarea.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"-3.642857\" vertical-offset=\"0\" max-vertical-offset=\"1513\">\n          <caret line=\"6\" column=\"0\" selection-start-line=\"6\" selection-start-column=\"0\" selection-end-line=\"6\" selection-end-column=\"0\" />\n          <folding />\n        </state>\n      </provider>\n      <provider editor-type-id=\"android-designer\">\n        <state />\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/fragment/SubareaFragment.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"204\" max-vertical-offset=\"884\">\n          <caret line=\"44\" column=\"44\" selection-start-line=\"44\" selection-start-column=\"44\" selection-end-line=\"44\" selection-end-column=\"44\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/adapter/AreaGridAdapter.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"153\" max-vertical-offset=\"952\">\n          <caret line=\"50\" column=\"73\" selection-start-line=\"50\" selection-start-column=\"73\" selection-end-line=\"50\" selection-end-column=\"73\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/layout/area_item.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"-0.60714287\" vertical-offset=\"0\" max-vertical-offset=\"527\">\n          <caret line=\"1\" column=\"0\" selection-start-line=\"1\" selection-start-column=\"0\" selection-end-line=\"1\" selection-end-column=\"0\" />\n          <folding />\n        </state>\n      </provider>\n      <provider editor-type-id=\"android-designer\">\n        <state />\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/activity/DonghuaActivity.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"76\" max-vertical-offset=\"1564\">\n          <caret line=\"53\" column=\"35\" selection-start-line=\"53\" selection-start-column=\"35\" selection-end-line=\"53\" selection-end-column=\"35\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/adapter/BankumiTabAdapter.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"99\" max-vertical-offset=\"1105\">\n          <caret line=\"33\" column=\"32\" selection-start-line=\"33\" selection-start-column=\"32\" selection-end-line=\"33\" selection-end-column=\"32\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"jar://$PROJECT_DIR$/app/build/intermediates/exploded-aar/com.android.support/support-v4/22.1.1/classes.jar!/android/support/v4/app/Fragment.class\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.34542587\" vertical-offset=\"2739\" max-vertical-offset=\"5440\">\n          <caret line=\"175\" column=\"29\" selection-start-line=\"175\" selection-start-column=\"29\" selection-end-line=\"175\" selection-end-column=\"29\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/model/Page.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.32886904\" vertical-offset=\"0\" max-vertical-offset=\"672\">\n          <caret line=\"13\" column=\"16\" selection-start-line=\"13\" selection-start-column=\"16\" selection-end-line=\"13\" selection-end-column=\"16\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/layout/fragment_donghua.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.18858954\" vertical-offset=\"0\" max-vertical-offset=\"1105\">\n          <caret line=\"7\" column=\"4\" selection-start-line=\"7\" selection-start-column=\"4\" selection-end-line=\"7\" selection-end-column=\"4\" />\n          <folding />\n        </state>\n      </provider>\n      <provider editor-type-id=\"android-designer\">\n        <state />\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/fragment/DonghuaFragment.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"572\" max-vertical-offset=\"5083\">\n          <caret line=\"46\" column=\"21\" selection-start-line=\"46\" selection-start-column=\"21\" selection-end-line=\"46\" selection-end-column=\"21\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/java/com/cjj/bb/adapter/VideoListAdapter.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"816\" max-vertical-offset=\"1887\">\n          <caret line=\"97\" column=\"66\" selection-start-line=\"97\" selection-start-column=\"66\" selection-end-line=\"97\" selection-end-column=\"66\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/layout/video_list_item.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"117\" max-vertical-offset=\"1207\">\n          <caret line=\"18\" column=\"25\" selection-start-line=\"18\" selection-start-column=\"25\" selection-end-line=\"18\" selection-end-column=\"25\" />\n          <folding />\n        </state>\n      </provider>\n      <provider editor-type-id=\"android-designer\">\n        <state />\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/AndroidManifest.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"947\" max-vertical-offset=\"1632\">\n          <caret line=\"82\" column=\"18\" selection-start-line=\"82\" selection-start-column=\"18\" selection-end-line=\"82\" selection-end-column=\"18\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/vitamio/build.gradle\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"510\" max-vertical-offset=\"612\">\n          <caret line=\"30\" column=\"0\" selection-start-line=\"30\" selection-start-column=\"0\" selection-end-line=\"30\" selection-end-column=\"0\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/src/main/res/values/strings.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"-0.68\" vertical-offset=\"51\" max-vertical-offset=\"782\">\n          <caret line=\"4\" column=\"44\" selection-start-line=\"4\" selection-start-column=\"44\" selection-end-line=\"4\" selection-end-column=\"44\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/build.gradle\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.0\" vertical-offset=\"0\" max-vertical-offset=\"659\">\n          <caret line=\"0\" column=\"0\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"0\" selection-end-column=\"0\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/build.gradle\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state vertical-scroll-proportion=\"0.6306028\" vertical-offset=\"0\" max-vertical-offset=\"1088\">\n          <caret line=\"24\" column=\"31\" selection-start-line=\"24\" selection-start-column=\"31\" selection-end-line=\"24\" selection-end-column=\"31\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n  </component>\n</project>\n\n"
  },
  {
    "path": "BilibiliClient.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module external.linked.project.path=\"$MODULE_DIR$\" external.root.project.path=\"$MODULE_DIR$\" external.system.id=\"GRADLE\" external.system.module.group=\"\" external.system.module.version=\"unspecified\" type=\"JAVA_MODULE\" version=\"4\">\n  <component name=\"FacetManager\">\n    <facet type=\"java-gradle\" name=\"Java-Gradle\">\n      <configuration>\n        <option name=\"BUILD_FOLDER_PATH\" value=\"$MODULE_DIR$/build\" />\n      </configuration>\n    </facet>\n  </component>\n  <component name=\"NewModuleRootManager\" inherit-compiler-output=\"true\">\n    <exclude-output />\n    <content url=\"file://$MODULE_DIR$\">\n      <excludeFolder url=\"file://$MODULE_DIR$/.gradle\" />\n    </content>\n    <orderEntry type=\"inheritedJdk\" />\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\n  </component>\n</module>\n\n"
  },
  {
    "path": "README.md",
    "content": "BiliClient\n=========================================================================================================================\n\n说明\n-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n###这是仿bilibili客户端，是我一个刚学android的朋友写的，原作地址：\n\nhttps://github.com/winkstu/ABPlayer\n\n###开发工具是eclipse，我下了下来，迁移到as上，\n###和做了一些修改。\n\n\nbilibili截图\n---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n![](http://www.apkbus.com/data/attachment/album/201505/26/164030en9nb4rsmso9nqpc.png)\n![](http://www.apkbus.com/data/attachment/album/201505/26/164035tgq1hqt7boy7zbtq.png)\n\n![](http://www.apkbus.com/data/attachment/album/201505/26/164031wptzct3jhnj9n6c6.png)\n![](http://www.apkbus.com/data/attachment/album/201505/26/164033sgz2y2un1xa7wy3e.png)\n\n![](http://www.apkbus.com/data/attachment/album/201505/26/164032ezo7xm6a36rm3flp.png)\n![](http://www.apkbus.com/data/attachment/album/201505/26/164032w6zwrz9zdvw6k1d3.jpg)\n\nbtw:图片仅供参考，请以apk为标准，啊哈哈，不过所给图片的功能逻辑都已经实现。。。\n![](http://www.apkbus.com/data/attachment/forum/201505/26/181654rgzwvvz5gt9mxgzm.gif)\n\n"
  },
  {
    "path": "app/.gitignore",
    "content": "/build\n"
  },
  {
    "path": "app/app.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module external.linked.project.path=\"$MODULE_DIR$\" external.root.project.path=\"$MODULE_DIR$/..\" external.system.id=\"GRADLE\" external.system.module.group=\"BilibiliClient\" external.system.module.version=\"unspecified\" type=\"JAVA_MODULE\" version=\"4\">\n  <component name=\"FacetManager\">\n    <facet type=\"android-gradle\" name=\"Android-Gradle\">\n      <configuration>\n        <option name=\"GRADLE_PROJECT_PATH\" value=\":app\" />\n      </configuration>\n    </facet>\n    <facet type=\"android\" name=\"Android\">\n      <configuration>\n        <option name=\"SELECTED_BUILD_VARIANT\" value=\"weixinDebug\" />\n        <option name=\"SELECTED_TEST_ARTIFACT\" value=\"_android_test_\" />\n        <option name=\"ASSEMBLE_TASK_NAME\" value=\"assembleWeixinDebug\" />\n        <option name=\"COMPILE_JAVA_TASK_NAME\" value=\"compileWeixinDebugSources\" />\n        <option name=\"ASSEMBLE_TEST_TASK_NAME\" value=\"assembleWeixinDebugAndroidTest\" />\n        <option name=\"SOURCE_GEN_TASK_NAME\" value=\"generateWeixinDebugSources\" />\n        <option name=\"TEST_SOURCE_GEN_TASK_NAME\" value=\"generateWeixinDebugAndroidTestSources\" />\n        <option name=\"ALLOW_USER_CONFIGURATION\" value=\"false\" />\n        <option name=\"MANIFEST_FILE_RELATIVE_PATH\" value=\"/src/main/AndroidManifest.xml\" />\n        <option name=\"RES_FOLDER_RELATIVE_PATH\" value=\"/src/main/res\" />\n        <option name=\"RES_FOLDERS_RELATIVE_PATH\" value=\"file://$MODULE_DIR$/src/main/res\" />\n        <option name=\"ASSETS_FOLDER_RELATIVE_PATH\" value=\"/src/main/assets\" />\n      </configuration>\n    </facet>\n  </component>\n  <component name=\"NewModuleRootManager\" inherit-compiler-output=\"false\">\n    <output url=\"file://$MODULE_DIR$/build/intermediates/classes/weixin/debug\" />\n    <output-test url=\"file://$MODULE_DIR$/build/intermediates/classes/androidTest/weixin/debug\" />\n    <exclude-output />\n    <content url=\"file://$MODULE_DIR$\">\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/r/weixin/debug\" isTestSource=\"false\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/aidl/weixin/debug\" isTestSource=\"false\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/buildConfig/weixin/debug\" isTestSource=\"false\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/rs/weixin/debug\" isTestSource=\"false\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/res/rs/weixin/debug\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/res/generated/weixin/debug\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/weixinDebug/res\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/weixinDebug/resources\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/weixinDebug/assets\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/weixinDebug/aidl\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/weixinDebug/java\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/weixinDebug/jni\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/weixinDebug/rs\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/r/androidTest/weixin/debug\" isTestSource=\"true\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/aidl/androidTest/weixin/debug\" isTestSource=\"true\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/weixin/debug\" isTestSource=\"true\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/source/rs/androidTest/weixin/debug\" isTestSource=\"true\" generated=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/res/rs/androidTest/weixin/debug\" type=\"java-test-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/build/generated/res/generated/androidTest/weixin/debug\" type=\"java-test-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/weixin/res\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/weixin/resources\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/weixin/assets\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/weixin/aidl\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/weixin/java\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/weixin/jni\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/weixin/rs\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTestWeixin/res\" type=\"java-test-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTestWeixin/resources\" type=\"java-test-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTestWeixin/assets\" type=\"java-test-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTestWeixin/aidl\" isTestSource=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTestWeixin/java\" isTestSource=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTestWeixin/jni\" isTestSource=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTestWeixin/rs\" isTestSource=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/res\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/resources\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/assets\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/aidl\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/java\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/jni\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/debug/rs\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/res\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/resources\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/assets\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/aidl\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/java\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/jni\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/rs\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/res\" type=\"java-test-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/resources\" type=\"java-test-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/assets\" type=\"java-test-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/aidl\" isTestSource=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/java\" isTestSource=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/jni\" isTestSource=\"true\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/androidTest/rs\" isTestSource=\"true\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/assets\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/bundles\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/classes\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/coverage-instrumented-classes\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/dependency-cache\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/dex\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/dex-cache\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/incremental\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/jacoco\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/javaResources\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/libs\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/lint\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/manifests\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/ndk\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/pre-dexed\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/proguard\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/res\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/rs\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/intermediates/symbols\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/outputs\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/reports\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/test-results\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/build/tmp\" />\n    </content>\n    <orderEntry type=\"jdk\" jdkName=\"Android API 22 Platform\" jdkType=\"Android SDK\" />\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"appcompat-v7-22.1.1\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"multidex-1.0.0\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"jsoup-1.8.1\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"support-v4-22.1.1\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"support-annotations-22.1.1\" level=\"project\" />\n    <orderEntry type=\"library\" exported=\"\" name=\"universal-image-loader-1.9.3\" level=\"project\" />\n    <orderEntry type=\"module\" module-name=\"DanmakuFlameMaster\" exported=\"\" />\n    <orderEntry type=\"module\" module-name=\"vitamio\" exported=\"\" />\n  </component>\n</module>\n\n"
  },
  {
    "path": "app/build.gradle",
    "content": "apply plugin: 'com.android.application'\n\nandroid {\n    compileSdkVersion 22\n    buildToolsVersion \"22.0.1\"\n\n\n\n    defaultConfig {\n        applicationId \"com.cjj.bb\"\n        minSdkVersion 15\n        targetSdkVersion 22\n        versionCode 1\n        versionName \"1.0\"\n\n        multiDexEnabled true\n\n        // dex突破65535的限制\n        multiDexEnabled true\n        // 默认是xinhao的渠道\n        manifestPlaceholders = [UMENG_CHANNEL_VALUE: \"bili\"]\n    }\n    buildTypes {\n        release {\n            minifyEnabled false\n            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'\n        }\n    }\n\n\n    productFlavors {\n        xinhao {\n            manifestPlaceholders = [UMENG_CHANNEL_VALUE: \"cjj\"]\n        }\n        weixin {\n            manifestPlaceholders = [UMENG_CHANNEL_VALUE: \"bili\"]\n        }\n//        baidu {\n//            manifestPlaceholders = [UMENG_CHANNEL_VALUE: \"baidu\"]\n//        }\n//        wandoujia {\n//            manifestPlaceholders = [UMENG_CHANNEL_VALUE: \"wandoujia\"]\n//        }\n    }\n\n\n}\n\ndependencies {\n    compile fileTree(dir: 'libs', include: ['*.jar'])\n    compile 'com.android.support:appcompat-v7:22.1.1'\n    compile project(':vitamio')\n    compile files('libs/universal-image-loader-1.9.3.jar')\n    compile files('libs/jsoup-1.8.1.jar')\n    compile project(':DanmakuFlameMaster')\n    //    compile project(':VPIndexLibrary')\n    compile 'com.android.support:support-v4:22.1.1'\n}\n"
  },
  {
    "path": "app/proguard-rules.pro",
    "content": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in D:\\as\\sdk-install/tools/proguard/proguard-android.txt\n# You can edit the include path and order by changing the proguardFiles\n# directive in build.gradle.\n#\n# For more details, see\n#   http://developer.android.com/guide/developing/tools/proguard.html\n\n# Add any project specific keep options here:\n\n# If your project uses WebView with JS, uncomment the following\n# and specify the fully qualified class name to the JavaScript interface\n# class:\n#-keepclassmembers class fqcn.of.javascript.interface.for.webview {\n#   public *;\n#}\n"
  },
  {
    "path": "app/src/androidTest/java/com/cjj/bb/ApplicationTest.java",
    "content": "package com.cjj.bb;\n\nimport android.app.Application;\nimport android.test.ApplicationTestCase;\n\n/**\n * <a href=\"http://d.android.com/tools/testing/testing_android.html\">Testing Fundamentals</a>\n */\npublic class ApplicationTest extends ApplicationTestCase<Application> {\n    public ApplicationTest() {\n        super(Application.class);\n    }\n}"
  },
  {
    "path": "app/src/main/AndroidManifest.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    package=\"com.cjj.bb\" >\n\n    <application\n        android:allowBackup=\"true\"\n        android:name=\".activity.ABPlayerApplication\"\n        android:icon=\"@mipmap/ic_launcher\"\n        android:label=\"@string/app_name\"\n        android:theme=\"@style/AppTheme\" >\n        <activity\n            android:name=\".activity.MainActivity\"\n            android:label=\"@string/app_name\" >\n            <intent-filter>\n                <action android:name=\"android.intent.action.MAIN\" />\n\n                <category android:name=\"android.intent.category.LAUNCHER\" />\n            </intent-filter>\n        </activity>\n        <!-- bili网页内容界面 -->\n        <activity\n            android:name=\".activity.BiliWebviewActivity\"\n            android:screenOrientation=\"portrait\" >\n        </activity>\n        <!-- 动画列表内容界面 -->\n        <activity\n            android:name=\".activity.DonghuaActivity\"\n            android:screenOrientation=\"portrait\"\n            android:theme=\"@style/MyTheme\"  >\n        </activity>\n        <!-- 视频详细内容界面 -->\n        <activity\n            android:name=\".activity.VideoInfoActivity\"\n            android:screenOrientation=\"portrait\" >\n        </activity>\n        <!-- 网络电视界面 -->\n        <activity\n            android:name=\".activity.TVActivity\"\n            android:screenOrientation=\"portrait\" >\n        </activity>\n        <!-- 视频播放界面 -->\n        <activity\n            android:name=\".activity.VideoViewActivity\"\n            android:configChanges=\"orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation\"\n            android:label=\"@string/app_name\"\n            android:launchMode=\"singleTop\"\n            android:process=\":vitamio\"\n            android:screenOrientation=\"landscape\"\n            android:theme=\"@android:style/Theme.NoTitleBar\"\n            android:windowSoftInputMode=\"stateAlwaysHidden\" >\n        </activity>\n        <!-- 初始化界面 -->\n        <activity\n            android:name=\"io.vov.vitamio.activity.InitActivity\"\n            android:configChanges=\"orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation\"\n            android:launchMode=\"singleTop\"\n            android:theme=\"@android:style/Theme.NoTitleBar\"\n            android:windowSoftInputMode=\"stateAlwaysHidden\" >\n        </activity>\n\n        <activity\n            android:name=\".activity.BiliVideoViewActivity\"\n            android:configChanges=\"orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation\"\n            android:label=\"@string/app_name\"\n            android:launchMode=\"singleTop\"\n            android:process=\":vitamio\"\n            android:screenOrientation=\"landscape\"\n            android:theme=\"@android:style/Theme.NoTitleBar\"\n            android:windowSoftInputMode=\"stateAlwaysHidden\">\n        </activity>\n\n        <service\n            android:name=\".view.PlayerService\"\n            android:process=\":vitamio\" />\n        <!--<service-->\n            <!--android:name=\"io.vov.vitamio.VitamioService\"-->\n            <!--android:exported=\"false\" >-->\n            <!--<intent-filter>-->\n                <!--<action android:name=\"io.vov.vitamio.IVitamioService\" />-->\n            <!--</intent-filter>-->\n        <!--</service>-->\n\n        <meta-data\n            android:name=\"UMENG_CHANNEL\"\n            android:value=\"${UMENG_CHANNEL_VALUE}\" />\n\n\n    </application>\n\n</manifest>\n"
  },
  {
    "path": "app/src/main/assets/comment.json",
    "content": "[{\"c\":\"0,16777215,1,25,196050,1364468342\",\"m\":\"。。。。。。。。。。。。。。。。。。。。。。\"},{\"c\":\"3.619,16777215,1,25,196050,1364468347\",\"m\":\"。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。\"},{\"c\":\"7.539,16777215,1,25,196050,1364468351\",\"m\":\"。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。\"},{\"c\":\"11.291,16777215,1,25,196050,1364468355\",\"m\":\"。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。\"},{\"c\":\"13.476,16777215,1,25,196050,1364468357\",\"m\":\"。。。。。。。。\"},{\"c\":\"1.724,16777215,1,25,196050,1364468442\",\"m\":\"3.28  打卡\"},{\"c\":\"31.229,16777215,1,25,478568,1364994609\",\"m\":\"0 0\"},{\"c\":\"54.791,16777215,1,25,418656,1365183861\",\"m\":\"....\"},{\"c\":\"65.617,10027008,1,25,2ack2073121228,1365184819\",\"m\":\"一天不看香蕉君，不舒服斯基丶\"},{\"c\":\"11.188,16776960,1,25,478568,1365823290\",\"m\":\"。。。。\"},{\"c\":\"61.625,16776960,1,25,478568,1365823340\",\"m\":\"卧槽\"},{\"c\":\"87.933,16777215,1,25,461326,1366819637\",\"m\":\"小湿机你在看咩\"},{\"c\":\"87.933,16777215,1,25,461326,1366819652\",\"m\":\"小湿机\"},{\"c\":\"0,16776960,1,25,1bak1902192501,1368157455\",\"m\":\"..\"},{\"c\":\"10.711,16776960,1,25,1bak1902192501,1368157482\",\"m\":\"............................\"},{\"c\":\"39.512,16777215,1,25,27dk1948164898,1368848882\",\"m\":\"科比\"},{\"c\":\"35.673,16777215,1,25,22ck1867180364,1369403593\",\"m\":\"播放次数：396042\"},{\"c\":\"61.976,16777215,1,25,24ek2015510060,1370615680\",\"m\":\"在线2  \"},{\"c\":\"6.519,16777215,1,25,17dk3730002906,1370623489\",\"m\":\"卧槽...点错了\"},{\"c\":\"27.787,16777215,1,25,36ek248534870,1370698155\",\"m\":\"金♂刚♂如♂来\"},{\"c\":\"87.589,16777215,1,25,350k2104532353,1370921441\",\"m\":\" 萎了、、、、、、、、、、、、\"},{\"c\":\"23.343,16777215,1,25,1f0k242492437,1371043001\",\"m\":\"fuck\"},{\"c\":\"79.84,16777215,1,25,1f0k242492437,1371043057\",\"m\":\"顶上去报复社会\"},{\"c\":\"49.79,16777215,1,25,231580,1371209285\",\"m\":\"美国\"},{\"c\":\"47.652,65280,1,25,498k2063980741,1371983881\",\"m\":\"   暖被窝一次一千円节假日半价  / 发布于  2011年 4月28日(星期四) 7时24分  /  播放:397078  评论:2456  收藏:1504 \"},{\"c\":\"25.769,16777215,1,25,38ek1896980399,1373078365\",\"m\":\"炒饭无误\"},{\"c\":\"15.499,16777215,1,25,104k3072012724,1373078412\",\"m\":\"顶上去！！！！！报复社会！！！！！！！！！！\"},{\"c\":\"87.927,16777215,1,25,535868,1373078428\",\"m\":\"打卡\"},{\"c\":\"54.177,16777215,1,25,104k3072012724,1373078485\",\"m\":\"收藏的什么性取向？\"},{\"c\":\"55.095,16777215,1,25,2d9k2101697339,1373082287\",\"m\":\"我瞎了。。。\"},{\"c\":\"8.009,16777215,1,25,1fbk1946851889,1373082945\",\"m\":\"报复社会\"},{\"c\":\"64.865,16777215,1,25,2e5k1018989651,1373083835\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"15.102,16777215,1,25,2e5k1018989651,1373083865\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"72.016,16777215,1,25,563619,1373086101\",\"m\":\"顶上去报复社会\"},{\"c\":\"4.466,16777215,1,25,563619,1373086131\",\"m\":\"1584个收藏是闹那样\"},{\"c\":\"65.066,16777215,1,25,4c7k2002975241,1373086719\",\"m\":\"改版后老多老坟\"},{\"c\":\"33.342,16777215,1,25,1ffk2090928940,1373087526\",\"m\":\"2013年7月6日 13:12:22\"},{\"c\":\"22.229,16777215,1,25,247k1855594942,1373088592\",\"m\":\"2013.7.6\"},{\"c\":\"11.035,16777215,1,25,117k3702574478,1373089139\",\"m\":\"yoooooooooooooooooooooooooooooo\"},{\"c\":\"23.519,16777215,1,25,115k3078797035,1373092760\",\"m\":\"2013年7月6日14:39:18\"},{\"c\":\"17.136,16777215,1,25,484k1017188638,1373093593\",\"m\":\"......................................................\"},{\"c\":\"82.21,16777215,1,25,4c3k244535907,1373094036\",\"m\":\"石更了\"},{\"c\":\"3.156,65280,1,25,551590,1373094641\",\"m\":\"。。。。。。。。。。。。\"},{\"c\":\"18.774,65280,1,25,551590,1373094657\",\"m\":\"我次奥\"},{\"c\":\"5.036,16777215,1,25,329k987402398,1373095195\",\"m\":\"草\"},{\"c\":\"17.707,16777215,1,25,33ck249485211,1373103359\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"15.1,16777215,1,37,33ck249485211,1373103502\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"15.246,3407616,1,25,48ek3702141711,1373106289\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"22.92,3407616,1,25,48ek3702141711,1373106384\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"21.267,16711833,1,25,1f8k3671002319,1373107024\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"35.259,16777215,1,25,482k3721736082,1373107177\",\"m\":\"打卡\"},{\"c\":\"16.772,16777215,1,25,123k2075644583,1373108045\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"81.461,16777215,1,25,308543,1373109391\",\"m\":\"我居然无耻的看完了\"},{\"c\":\"16.612,16777215,1,25,36ek1035411925,1373109676\",\"m\":\"炒饭小号  无误\"},{\"c\":\"6.797,16777215,1,25,501507,1373110201\",\"m\":\"每日打卡\"},{\"c\":\"20.621,16777215,1,25,192k2103294627,1373110747\",\"m\":\"............\"},{\"c\":\"84.827,16777215,1,25,28ak467794641,1373111880\",\"m\":\"双手打字以示清白\"},{\"c\":\"7.152,16737792,1,25,262k455357332,1373112100\",\"m\":\"啊\"},{\"c\":\"14.061,16777215,1,25,562163,1373115212\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"2.747,65280,1,25,30bk3722666395,1373115887\",\"m\":\"打卡啦\"},{\"c\":\"32.453,16777215,1,25,1adk3736329486,1373116156\",\"m\":\"求BGM！！！！！！！！！！！！！！！！！！！！！！！！！！\"},{\"c\":\"55.498,16777215,1,25,1aak3072357289,1373118377\",\"m\":\" 还能动。。。。\"},{\"c\":\"61.828,16777215,1,25,1aak3072357289,1373118380\",\"m\":\"FUCK\"},{\"c\":\"20.848,16777215,1,25,3eek1962717247,1373121959\",\"m\":\"我来打卡了.......\"},{\"c\":\"40.693,3381759,1,25,1edk1962794156,1373123160\",\"m\":\"1111111111111111111111111111111111111111\"},{\"c\":\"52.029,3381759,1,25,1edk1962794156,1373123171\",\"m\":\"1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\"},{\"c\":\"4.408,16777215,1,25,2f9k454125677,1373124185\",\"m\":\"哦草！\"},{\"c\":\"50.444,65280,1,25,553421,1373125176\",\"m\":\"收藏1618什么心态...\"},{\"c\":\"38.361,16777215,1,25,4a4k29683238,1373126181\",\"m\":\"你麻痹？\"},{\"c\":\"19.81,16777215,1,25,3d2k1967534807,1373132178\",\"m\":\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"},{\"c\":\"17.87,16777215,1,25,451k465242735,1373135469\",\"m\":\"哎呦卧槽，顶上去报复世界\"},{\"c\":\"12.465,16777215,1,25,1abk2016062444,1373146913\",\"m\":\"2013年7月7日5:40:08\"},{\"c\":\"22.633,16777215,1,25,420552,1373155854\",\"m\":\"必须顶上去报复社会\"},{\"c\":\"0,16777215,1,25,548565,1373158670\",\"m\":\"打卡\"},{\"c\":\"21.253,16777215,1,25,548565,1373158760\",\"m\":\"\"},{\"c\":\"12.916,16777215,1,25,406k2091038619,1373159899\",\"m\":\"打卡2013年7月7日9:17:11\"},{\"c\":\"16.102,16777215,1,25,174857,1373163531\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"28.248,16777215,1,25,418656,1373164750\",\"m\":\"打卡\"},{\"c\":\"28.434,16777215,1,25,258613,1373166524\",\"m\":\"香蕉君无敌了\"},{\"c\":\"16.911,16777215,1,25,444k1861315545,1373166705\",\"m\":\"香蕉君！\"},{\"c\":\"77.817,16777215,1,25,186k1885029973,1373166760\",\"m\":\"双手打字以示清白\"},{\"c\":\"32.187,16777215,1,25,184k2102925457,1373168322\",\"m\":\"bibli\"},{\"c\":\"12.112,16777215,1,25,489191,1373168409\",\"m\":\"2013年7月7日11:40:17\"},{\"c\":\"16.479,16776960,1,25,334k3740305770,1373168589\",\"m\":\"烧死这些同性恋\"},{\"c\":\"15.867,16711680,1,25,357k3730546841,1373170277\",\"m\":\"简直丧心病狂\"},{\"c\":\"10.316,16777215,1,25,3cdk1035642435,1373171091\",\"m\":\"501\"},{\"c\":\"19.164,16711782,1,25,3ffk717661093,1373171300\",\"m\":\"。。。。。。。。。。。。。。。。。。。。。。。。。。\"},{\"c\":\"17.066,16711782,1,25,3ffk717661093,1373171306\",\"m\":\"！！！\"},{\"c\":\"4.323,16777215,1,25,269k3738528475,1373172137\",\"m\":\"2013 7.7\"},{\"c\":\"42.129,10027008,4,37,31dk3033839023,1373174002\",\"m\":\"科比！\"},{\"c\":\"12.815,16777215,1,25,26ck3074307386,1373175261\",\"m\":\" 打卡\"},{\"c\":\"46.931,16777215,1,25,187k3682680642,1373176996\",\"m\":\"...........\"},{\"c\":\"78.136,16777215,1,25,13ak1874150387,1373180305\",\"m\":\"报复社会。。\"},{\"c\":\"9.993,16711680,1,25,16dk3071440325,1373181548\",\"m\":\"我是小伙伴！ 我是小伙伴！\"},{\"c\":\"44.141,16711680,4,37,16dk3071440325,1373181608\",\"m\":\"我是小伙伴！\"},{\"c\":\"15.061,16777215,1,25,150k1987611877,1373181620\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"64.491,16711680,4,37,16dk3071440325,1373181628\",\"m\":\"我是小伙伴！我是小伙伴！我是小伙伴！我是小伙伴！我是小伙伴！我是小伙伴！我是小伙伴！我是小伙伴！我是小伙伴！我是小伙伴！我是小伙伴！我是小伙伴！我是小伙伴！我是小伙伴！我是小伙伴！我是小伙伴！我是小伙\"},{\"c\":\"15.237,16777215,1,25,415083,1373182130\",\"m\":\"日常打卡，\"},{\"c\":\"23.934,16777215,1,25,420552,1373186603\",\"m\":\"报复社会节奏开启\"},{\"c\":\"8.832,16777215,1,25,366k2936106977,1373186676\",\"m\":\"2013年7月7日16:43:41\"},{\"c\":\"52.229,16777215,1,25,217k3722465722,1373187469\",\"m\":\"主页  \\u003e   生活娱乐  /   暖被窝一次一千円节假日半价  / 发布于  2011年 4月28日(星期四) 7时24分  /  播放:404511  评论:2486  收藏:1638  /  举\"},{\"c\":\"9.524,16777215,1,25,446k987429084,1373190152\",\"m\":\"- - - - - - \"},{\"c\":\"37.971,16777215,1,25,446k987429084,1373190180\",\"m\":\" 这打吗的好屌\"},{\"c\":\"14.824,16777215,1,25,36ak1874994172,1373192037\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"58.871,16777215,1,25,2bak2006106235,1373192955\",\"m\":\"无法直视Ort\"},{\"c\":\"48.069,16777215,1,25,376k242592647,1373197574\",\"m\":\"主页  \\u003e   生活娱乐  /   暖被窝一次一千円节假日半价  / 发布于  2011年 4月28日(星期四) 7时24分  /  播放:404903  评论:2502  收藏:1646  /  举\"},{\"c\":\"41.6,3407616,1,25,385k3726527761,1373198456\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"43.539,16777215,1,25,317k3740600479,1373201930\",\"m\":\"吊...................................................................................................\"},{\"c\":\"0,16777215,1,25,2dfk3683682083,1373202156\",\"m\":\"呵呵呵呵呵\"},{\"c\":\"40.008,16777215,1,25,247k1946749991,1373205163\",\"m\":\"叼暴了\"},{\"c\":\"86.723,16777215,1,37,247k1946749991,1373205210\",\"m\":\"撸起来，骚年\"},{\"c\":\"16.624,16777215,1,25,395k3740450750,1373205479\",\"m\":\"18个香蕉不说话\"},{\"c\":\"11.544,16777215,1,25,2c7k1965573824,1373205504\",\"m\":\"2013年7月7日 21:57:24   打卡\"},{\"c\":\"29.134,13369344,1,25,27fk3062632765,1373206329\",\"m\":\"啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊\"},{\"c\":\"34.049,16777215,1,25,1a2k1968491684,1373207523\",\"m\":\"卧槽\"},{\"c\":\"84.827,16777215,1,25,420552,1373208023\",\"m\":\"顶上去报复社会\"},{\"c\":\"14.981,16777215,1,25,361k1912296216,1373209053\",\"m\":\"顶上去啊！！！！！！！！！！！！！！！！！！\"},{\"c\":\"51.766,16777215,1,25,361k1912296216,1373209106\",\"m\":\"1657个收藏 我干\"},{\"c\":\"14.226,3407616,1,25,304k3722405032,1373209311\",\"m\":\"。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。\"},{\"c\":\"40.375,16777215,1,25,152k3661681594,1373211071\",\"m\":\"啊婆主 已经在上心病狂\"},{\"c\":\"8.751,16777215,1,25,4a8k3029030104,1373212120\",\"m\":\"打卡\"},{\"c\":\"63.029,16777215,1,25,3dck454568877,1373214809\",\"m\":\"yooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo\"},{\"c\":\"82.312,16777215,1,25,545714,1373215092\",\"m\":\"2013年7月8日0:38:20\"},{\"c\":\"21.909,16777215,1,25,237975,1373224589\",\"m\":\"谁挖坟的\"},{\"c\":\"22.424,16777215,1,25,451k465242735,1373240898\",\"m\":\"每日报复社会节奏\"},{\"c\":\"14.501,16777215,1,25,3ack1901744269,1373242869\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"10.479,65280,1,25,150k1870239625,1373244297\",\"m\":\"科比加强版\"},{\"c\":\"20.483,16777215,1,25,466k986806395,1373249876\",\"m\":\"耶\"},{\"c\":\"14.877,16777215,1,25,144k1896832537,1373250214\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"12.279,16777215,1,25,2c4k2095314541,1373250965\",\"m\":\"我来打卡了\"},{\"c\":\"62.535,16777215,1,25,261770,1373251247\",\"m\":\"....\"},{\"c\":\"82.023,16777215,1,25,451k465242735,1373253347\",\"m\":\"赢了怎么破\"},{\"c\":\"12.744,52479,1,25,451k465242735,1373342293\",\"m\":\"顶上去报复社会\"},{\"c\":\"17.345,16777215,1,25,423547,1373815673\",\"m\":\"报复社会，走你\"},{\"c\":\"42.26,16777215,1,25,244k2004555617,1373984022\",\"m\":\"x笑尿。。\"},{\"c\":\"39.958,65280,1,25,360346,1374154683\",\"m\":\"好吧我手滑一下\"},{\"c\":\"54.943,65280,1,25,360346,1374154698\",\"m\":\"无法直视\"},{\"c\":\"13.424,16777215,1,25,325344,1374311786\",\"m\":\"打卡。。  2013年7月20日 17:15:56\"},{\"c\":\"0,16724838,1,25,3c5k242233919,1374320952\",\"m\":\"吾欲报复社会\"},{\"c\":\"15.278,16777215,1,25,585664,1376018232\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"18.567,16777215,1,25,585664,1376018236\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"37.071,13434624,1,25,104k2003100892,1376019458\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"19.153,13369344,1,25,458834,1376019767\",\"m\":\"我擦破\"},{\"c\":\"17.607,13369344,1,25,458834,1376019864\",\"m\":\"耶耶耶耶耶耶耶耶耶爷爷夜\"},{\"c\":\"0,6750003,1,25,612871,1376020469\",\"m\":\"....\"},{\"c\":\"20.048,16776960,4,25,539076,1376020667\",\"m\":\"打卡！ \"},{\"c\":\"10.402,16777215,1,25,460k3707822210,1376022278\",\"m\":\"........................\"},{\"c\":\"1.338,16777215,1,25,19ak3084018091,1376023699\",\"m\":\"摇起来\"},{\"c\":\"47.208,16777215,1,25,611704,1376025935\",\"m\":\"...............收藏的什么心态\"},{\"c\":\"19.201,16777215,1,25,149k993230092,1376025990\",\"m\":\"我去\"},{\"c\":\"50.283,16777215,1,25,149k993230092,1376026021\",\"m\":\"鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅饿鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅\"},{\"c\":\"80.286,16777215,1,25,149k993230092,1376026051\",\"m\":\"啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊\"},{\"c\":\"27.743,16777215,1,25,403201,1376027204\",\"m\":\"看上瘾了咋办\"},{\"c\":\"25.821,16737996,1,25,530815,1376028242\",\"m\":\"！！！！！！！！！！！！！！！！！！！！\"},{\"c\":\"36.653,16737996,1,25,530815,1376028253\",\"m\":\"干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干\"},{\"c\":\"39.751,16737996,1,25,530815,1376028257\",\"m\":\"干干干干干干干干干干干干干干干干干干干干干干\"},{\"c\":\"43.081,16737996,1,25,530815,1376028260\",\"m\":\"干干干干干干干干干干干干干干干干干干干干干干干干干干干\"},{\"c\":\"45.765,16737996,1,25,530815,1376028263\",\"m\":\"干干干干干干干干干干干干干干干干干干干干干干\"},{\"c\":\"48.797,16737996,1,25,530815,1376028266\",\"m\":\"干干干干干干干干干干干干干干干干干干干干干干干干\"},{\"c\":\"51.47,16737996,1,25,530815,1376028268\",\"m\":\"干干干干干干干干干干干干干干干干干干干干干干干干干干\"},{\"c\":\"54.289,16737996,1,25,530815,1376028271\",\"m\":\"干干干干干干干干干干干干干干干干干干干干干干干干干干干\"},{\"c\":\"56.611,16737996,1,25,530815,1376028274\",\"m\":\"干干干干干干干干干干干干干干干干干干干干干干干干\"},{\"c\":\"58.936,16737996,1,25,530815,1376028276\",\"m\":\"干干干干干干干干干干干干干干干干干干干干干\"},{\"c\":\"61.193,16737996,1,25,530815,1376028278\",\"m\":\"干干干干干干干干干干干干干干干干干干干\"},{\"c\":\"63.175,16737996,1,25,530815,1376028280\",\"m\":\"干干干干干干干干干干干干干\"},{\"c\":\"26.562,16777215,1,25,571814,1376028282\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"66.757,16737996,1,25,530815,1376028284\",\"m\":\"干干干干干干干干干干干干干干干干\"},{\"c\":\"69.165,16737996,1,25,530815,1376028286\",\"m\":\"干干干干干干干干干干干干干干干干干干干干干干干\"},{\"c\":\"71.557,16737996,1,25,530815,1376028288\",\"m\":\"干干干干干干干干干干干干干干干干干干干干干干\"},{\"c\":\"73.735,16737996,1,25,530815,1376028291\",\"m\":\"干干干干干干干干干干干干干干干干干干干干干\"},{\"c\":\"76.557,16737996,1,25,530815,1376028293\",\"m\":\"干干干干干干干干干干干干干干干干干干干干\"},{\"c\":\"29.092,16711680,1,37,614672,1376028731\",\"m\":\"16个基友\"},{\"c\":\"22.594,16777215,1,25,309584,1376030511\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"17.225,16777215,5,25,44bk3071973485,1376031371\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"3.602,16777215,1,25,13ek3664566159,1376031421\",\"m\":\"。。。。。。。。\"},{\"c\":\"60.201,16777215,5,25,44bk3071973485,1376031433\",\"m\":\"开撸\"},{\"c\":\"33.999,16777215,1,25,13ek3664566159,1376031451\",\"m\":\"。。。。。。。。。。。。。。。。。。。。。。。。。。。。\"},{\"c\":\"81.941,16777215,1,25,27ek1017187980,1376032222\",\"m\":\"诱惑\"},{\"c\":\"5.011,16777215,1,25,139k2015525676,1376032988\",\"m\":\"打卡- -！\"},{\"c\":\"44.246,65535,1,37,455173,1376033209\",\"m\":\"啊\"},{\"c\":\"36.058,16777215,1,25,377k1911910901,1376033512\",\"m\":\"2013年8月9日15:31:52\"},{\"c\":\"21.127,16777215,1,25,104k1947652358,1376033802\",\"m\":\"AHAHHAHAHA\"},{\"c\":\"2.284,16777215,1,25,194k2032039251,1376037377\",\"m\":\"这么有来首页了\"},{\"c\":\"9.476,16776960,1,25,3f6k3070804403,1376042411\",\"m\":\"打卡\"},{\"c\":\"0,16777215,1,25,325344,1376043241\",\"m\":\"哈哈哈    又上来了   打卡  2013年8月9日 18:12:36\"},{\"c\":\"44.144,16777215,1,25,25fk3061655078,1376043624\",\"m\":\"收藏的什么心态收藏的什么心态收藏的什么心态收藏的什么心态收藏的什么心态\"},{\"c\":\"10.301,16777215,1,25,1cak241839552,1376044031\",\"m\":\"打卡\"},{\"c\":\"50.969,16777215,1,25,318k1904807183,1376045391\",\"m\":\"。。。\"},{\"c\":\"73.398,16777215,1,25,318k1904807183,1376045413\",\"m\":\"好大的屌！\"},{\"c\":\"26.087,16711680,1,25,614708,1376045441\",\"m\":\"..\"},{\"c\":\"31.691,16777215,1,25,4d4k3030298853,1376046937\",\"m\":\"2013年马薇留\"},{\"c\":\"6.405,16777215,1,25,619757,1376048357\",\"m\":\"重口味\"},{\"c\":\"24.329,16777215,1,25,619757,1376048374\",\"m\":\"打卡\"},{\"c\":\"67.762,16777215,1,25,258k3730122316,1376050181\",\"m\":\"0000000000000000000000000000000000000000000000\"},{\"c\":\"73.064,16777215,1,25,258k3730122316,1376050186\",\"m\":\".0000000000000000000000000\"},{\"c\":\"78.785,16777215,1,25,258k3730122316,1376050192\",\"m\":\"00000000000000000000000000000000000\"},{\"c\":\"87.771,16777215,1,25,258k3730122316,1376050203\",\"m\":\"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"},{\"c\":\"1.437,13421772,1,25,611275,1376050973\",\"m\":\"我看了这个就想走。。\"},{\"c\":\"15.69,13421772,1,37,611275,1376051015\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"15.69,13421772,1,37,611275,1376051017\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"15.69,13421772,1,37,611275,1376051019\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"15.69,13421772,1,37,611275,1376051022\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"15.69,13421772,1,25,611275,1376051026\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"15.69,13421772,1,16,611275,1376051030\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"67.909,3381759,1,37,611275,1376051114\",\"m\":\"我不知道我想干什么。可是我就是想说话。。\"},{\"c\":\"79.327,3381759,1,37,611275,1376051135\",\"m\":\"不觉得。。。杨坤么。。\"},{\"c\":\"7.009,13369344,1,25,458834,1376053218\",\"m\":\"..................\"},{\"c\":\"27.069,13369344,1,25,458834,1376053280\",\"m\":\"草\"},{\"c\":\"34.131,16777215,1,25,367k1035115771,1376053822\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"13.785,16777215,1,25,330k1885029985,1376056009\",\"m\":\"每日打卡\"},{\"c\":\"21.79,16777215,1,25,486050,1376056370\",\"m\":\".......................\"},{\"c\":\"19.539,16711731,1,25,12bk2059537792,1376056446\",\"m\":\"瞬间被刷屏了……\"},{\"c\":\"70.195,16711731,1,25,12bk2059537792,1376056498\",\"m\":\"我竟然看完了……\"},{\"c\":\"12.902,16777215,1,25,393225,1376056911\",\"m\":\"主页  \\u003e   生活娱乐  /   暖被窝一次一千円节假日半价  / 发布于  2011年 4月28日(星期四) 7时24分  /  播放:408,415  评论:2,512  收藏:1,721  /\"},{\"c\":\"48.342,16777215,1,25,41ek3701560160,1376057555\",\"m\":\"0 0\"},{\"c\":\"59.019,16777215,1,25,41ek3701560160,1376057566\",\"m\":\"收藏什么心态\"},{\"c\":\"41.194,10027008,1,25,419k1007188745,1376057962\",\"m\":\"基佬在此\"},{\"c\":\"69.806,10027008,1,25,419k1007188745,1376057991\",\"m\":\"曹操草草草草草草草草草草草草草草草草草草草草草草草草草草草草草草草草\"},{\"c\":\"28.757,16777215,1,25,349k1965803175,1376058287\",\"m\":\"是谁\"},{\"c\":\"0,16751001,4,25,617145,1376059073\",\"m\":\"我操，史前巨坟，考古队赛高\"},{\"c\":\"49.29,16777215,1,25,546869,1376059201\",\"m\":\"同步率爆表！\"},{\"c\":\"2.347,16711680,4,37,134k1020459866,1376060215\",\"m\":\"杨坤即视感！爆表！\"},{\"c\":\"18.808,3394560,1,25,383341,1376061683\",\"m\":\"顶起来顶起来\"},{\"c\":\"32.758,16777215,1,25,401332,1376062619\",\"m\":\"...............................................\"},{\"c\":\"79.203,16777215,1,25,600050,1376063136\",\"m\":\"1728个收藏是什么情况？\"},{\"c\":\"7.577,16711680,1,25,591937,1376066729\",\"m\":\"打卡\"},{\"c\":\"14.959,16777215,1,25,312k2005722785,1376068554\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"27.52,16777215,1,25,620468,1376071363\",\"m\":\"wocao\"},{\"c\":\"74.958,16711935,1,25,32ek3723106730,1376073723\",\"m\":\"毫无节操\"},{\"c\":\"14.71,16777215,1,25,244k3703207273,1376075750\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"19.997,16777215,1,25,244k3703207273,1376075756\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"69.767,16777215,1,25,244k3703207273,1376075786\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"20.485,16776960,1,25,394k2021656327,1376097000\",\"m\":\"什么情况？\"},{\"c\":\"82.358,16776960,1,25,394k2021656327,1376097055\",\"m\":\"石更了\"},{\"c\":\"15.177,16777215,1,25,537000,1376098220\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"15.402,16777215,1,25,537000,1376098244\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"33.161,16777215,1,25,4d0k3059467444,1376098921\",\"m\":\"我日\"},{\"c\":\"0.655,6723840,1,25,24ak1919230024,1376099553\",\"m\":\"打卡\"},{\"c\":\"32.027,65280,1,25,566893,1376102189\",\"m\":\"主页  \\u003e   生活娱乐  /   暖被窝一次一千円节假日半价  / 发布于  2011年 4月28日(星期四) 7时24分  / \"},{\"c\":\"11.472,16777215,1,25,307884,1376104108\",\"m\":\"每日打开\"},{\"c\":\"12.86,16777215,1,25,382659,1376104392\",\"m\":\"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\"},{\"c\":\"15.413,16777215,1,25,382659,1376104409\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"15.413,16777215,1,25,382659,1376104415\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"15.413,16777215,1,25,382659,1376104422\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"15.413,16777215,1,25,382659,1376104428\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"15.413,16777215,1,25,382659,1376104435\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"29.998,13408665,1,25,439024,1376104583\",\"m\":\"打卡\"},{\"c\":\"29.078,16777215,1,25,245951,1376105072\",\"m\":\"打卡...\"},{\"c\":\"16.893,16777215,1,25,611704,1376108149\",\"m\":\"走起来~也噩噩噩噩噩噩噩噩噩噩\"},{\"c\":\"15.124,16777215,1,25,252k1933384533,1376117070\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"25.018,16777215,1,25,338k1939335882,1376119947\",\"m\":\"耶\"},{\"c\":\"0.482,16777215,1,25,566783,1376120825\",\"m\":\"\\u003d \\u003d\"},{\"c\":\"34.632,16711680,1,25,289013,1376120976\",\"m\":\"可耻的银恶灵\"},{\"c\":\"4.284,16777215,1,25,566697,1376121670\",\"m\":\"神甩头……\"},{\"c\":\"16.939,13369344,4,25,48ck1942933904,1376124247\",\"m\":\"报复社会搞起啊\"},{\"c\":\"12.574,16777215,1,25,499k3662479322,1376126734\",\"m\":\"。。。。。\"},{\"c\":\"77.721,16777215,1,25,499k3662479322,1376126799\",\"m\":\"我居然看完了+1...\"},{\"c\":\"66.386,6737151,1,25,621354,1376127623\",\"m\":\"飞                                                                                        \"},{\"c\":\"33.26,16777215,1,25,621447,1376131168\",\"m\":\"日常打卡系列\"},{\"c\":\"13.877,16777215,1,25,4b1k3662454931,1376131296\",\"m\":\"2013年8月10日 18:40:29\"},{\"c\":\"8.711,16777215,1,25,127k2104708180,1376131476\",\"m\":\"...\"},{\"c\":\"13.243,16777215,1,25,10fk1034146970,1376131479\",\"m\":\"来打卡。。。。。。。。。。\"},{\"c\":\"13.691,16777215,1,25,237582,1376131564\",\"m\":\"啊♂\"},{\"c\":\"84.488,16777215,1,25,237582,1376131657\",\"m\":\"这健美的肌肉，王の谜微笑\"},{\"c\":\"18.155,16777215,1,25,4d2k1018810962,1376133311\",\"m\":\"顶上去报复社会\"},{\"c\":\"55.547,16776960,4,25,418k1996750992,1376133796\",\"m\":\"小伙伴好强悍\"},{\"c\":\"14.218,13434624,1,25,576058,1376134995\",\"m\":\"wocao \"},{\"c\":\"26.499,13434624,1,25,576058,1376135008\",\"m\":\"3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333\"},{\"c\":\"39.818,13434624,1,25,576058,1376135021\",\"m\":\"3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333\"},{\"c\":\"52.38,13434624,1,25,576058,1376135033\",\"m\":\"3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333\"},{\"c\":\"35.837,16777215,1,25,2c9k2078827628,1376135639\",\"m\":\"顶上去报复社会\"},{\"c\":\"15.832,16777215,1,25,186k3074211670,1376137394\",\"m\":\"杨坤  卧槽\"},{\"c\":\"38.655,16777215,1,25,186k3074211670,1376137417\",\"m\":\"啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊\"},{\"c\":\"51.2,16777215,1,25,186k3074211670,1376137430\",\"m\":\"科比\"},{\"c\":\"37.391,16777215,1,25,608896,1376137620\",\"m\":\"挖坟老坑了！！- -\"},{\"c\":\"20.606,16777215,1,25,325344,1376139878\",\"m\":\"打卡  2013年8月10日 21:03:12 \"},{\"c\":\"31.826,13369344,1,25,3b9k1947407437,1376139894\",\"m\":\"啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊\"},{\"c\":\"23.769,16777215,1,25,249393,1376142115\",\"m\":\"耶耶耶\"},{\"c\":\"6.929,13434777,1,25,404k2086353330,1376145403\",\"m\":\"打卡吧……\"},{\"c\":\"76.145,16777215,1,25,458k2034184434,1376146315\",\"m\":\"好屌屌屌屌屌屌屌屌屌屌屌屌屌屌\"},{\"c\":\"87.886,16777215,1,25,317k3729928182,1376147520\",\"m\":\"有木有感觉像罗纳尔多\"},{\"c\":\"46.027,16777215,1,25,1cek2105502321,1376149328\",\"m\":\"410000\"},{\"c\":\"66.967,13369395,5,25,489k3661677826,1376150846\",\"m\":\"前来打卡\"},{\"c\":\"12.447,16777215,1,25,37ck1785980621,1376179903\",\"m\":\"- -2013.8.11\"},{\"c\":\"48.757,16777215,1,25,37ck1785980621,1376179940\",\"m\":\"硬了怎么办\"},{\"c\":\"0.297,6749952,5,25,516261,1376181869\",\"m\":\"欢迎观看《肌肉进行曲》\"},{\"c\":\"14.965,16777215,1,25,44bk3071973485,1376182825\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"12.347,16776960,4,37,507878,1376183526\",\"m\":\"AV画质\"},{\"c\":\"44.318,16776960,4,37,507878,1376183560\",\"m\":\"1765个收藏心态\"},{\"c\":\"15.332,16777215,1,25,1d4k236011651,1376187564\",\"m\":\"罗纳尔多\"},{\"c\":\"23.92,16777215,1,25,1dbk1786742976,1376190305\",\"m\":\".............\"},{\"c\":\"87.917,16777215,1,25,1dbk1786742976,1376190407\",\"m\":\"迷の微笑\"},{\"c\":\"47.296,16777215,1,25,2b5k3730060046,1376191845\",\"m\":\"广西频道发来贺电\"},{\"c\":\"47.032,16777215,1,25,1b7k2095450225,1376193392\",\"m\":\"我要吐了\"},{\"c\":\"77.956,6684672,5,25,1b7k2095450225,1376193474\",\"m\":\"?????????????????????????????????????????????\"},{\"c\":\"14.184,16777215,1,25,320k2883429025,1376193568\",\"m\":\"YEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYEYE\"},{\"c\":\"77.956,6684672,5,25,1b7k2095450225,1376193581\",\"m\":\"?????????欢迎使用护眼弹幕??????????\"},{\"c\":\"77.956,6684672,5,25,1b7k2095450225,1376193596\",\"m\":\"??????????????????????????????????????\"},{\"c\":\"16.222,13395609,1,25,320k2883429025,1376193605\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"27.023,16777215,1,25,529412,1376193841\",\"m\":\"节操掉了一地\"},{\"c\":\"1.652,13434624,1,25,595888,1376197519\",\"m\":\"看过不说话\"},{\"c\":\"8.227,16777215,1,25,622565,1376199281\",\"m\":\"打卡\"},{\"c\":\"14.5,3394815,1,25,506067,1376202751\",\"m\":\"打卡\"},{\"c\":\"18.145,16777215,1,25,584461,1376203682\",\"m\":\"每日打卡！！！！\"},{\"c\":\"3.565,16777215,1,25,622662,1376203695\",\"m\":\"...\"},{\"c\":\"12.625,16777215,1,25,39ak977057938,1376205596\",\"m\":\"哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇\"},{\"c\":\"73.017,16777215,1,25,592163,1376206800\",\"m\":\"光滑 没毛！！！！\"},{\"c\":\"73.017,10092441,1,25,592163,1376206815\",\"m\":\"没毛！！\"},{\"c\":\"6.05,16777215,1,25,37ck1785980621,1376206948\",\"m\":\"2013.8.11\"},{\"c\":\"58.484,16711680,1,37,2d8k1946238324,1376208217\",\"m\":\"他要自摸了。。。。。。。。。受不鸟了。。。。\"},{\"c\":\"5.201,16777215,1,25,250k409716719,1376208782\",\"m\":\"打开\"},{\"c\":\"18.939,16777215,1,25,206k1911775910,1376210523\",\"m\":\"呵呵\"},{\"c\":\"52.488,16777215,1,25,206k1911775910,1376210557\",\"m\":\"刷屏+1\"},{\"c\":\"67.016,16777215,1,25,206k1911775910,1376210571\",\"m\":\"法克\"},{\"c\":\"81.281,16777215,1,25,3f4k2073541231,1376210956\",\"m\":\"啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊\"},{\"c\":\"80.625,16777215,1,25,100k3030428551,1376211394\",\"m\":\"打证白\"},{\"c\":\"31.416,16777215,1,25,614007,1376212423\",\"m\":\"什么东西\"},{\"c\":\"14.009,16777215,1,25,44bk3071973485,1376212845\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"27.607,16777215,1,25,572231,1376213936\",\"m\":\"日常打卡\"},{\"c\":\"16.912,16777215,1,25,605743,1376218302\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"9.1,16777215,1,25,605743,1376219700\",\"m\":\"看一遍笑一次。。\"},{\"c\":\"16.279,16777215,1,25,605743,1376219708\",\"m\":\"耶耶耶耶耶\"},{\"c\":\"15.025,16777215,1,25,2a0k1010239990,1376219790\",\"m\":\"........................................................................\"},{\"c\":\"4.305,16777215,1,25,11ak1894547491,1376220450\",\"m\":\"...\"},{\"c\":\"10.339,16777215,1,25,482k2034062684,1376221602\",\"m\":\"d打卡\"},{\"c\":\"20.025,16777215,1,25,482k2034062684,1376221611\",\"m\":\"夜夜夜夜\"},{\"c\":\"30.814,16777215,1,25,498k2102044667,1376224344\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶爷爷爷爷夜夜夜yee5\"},{\"c\":\"58.483,16777215,1,25,498k2102044667,1376224371\",\"m\":\"擦擦擦擦擦擦擦擦擦擦擦擦擦擦擦擦擦擦擦擦擦擦擦擦擦擦擦擦擦擦擦\"},{\"c\":\"12.275,16777215,1,25,23bk3733406631,1376224558\",\"m\":\"打卡\"},{\"c\":\"9.587,16711782,1,25,367k2057138470,1376225672\",\"m\":\"表情超销魂！\"},{\"c\":\"13.88,16711680,1,25,334k3070638933,1376226617\",\"m\":\"                                                                                                    \"},{\"c\":\"18.243,16777215,1,25,375895,1376228032\",\"m\":\"我也来打个卡吧\"},{\"c\":\"35.603,16777215,1,25,309177,1376228477\",\"m\":\"夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜夜\"},{\"c\":\"24.416,16777215,1,25,158576,1376228832\",\"m\":\"无法直视\"},{\"c\":\"13.837,13382502,1,25,620591,1376231904\",\"m\":\"打卡\"},{\"c\":\"25.387,13382502,1,25,620591,1376231916\",\"m\":\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"},{\"c\":\"53.762,13382502,1,25,620591,1376231944\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"73.111,13382502,4,25,620591,1376231964\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"84.769,13382502,1,25,620591,1376231975\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"22.134,16777215,1,25,623376,1376232266\",\"m\":\"......................\"},{\"c\":\"55.778,16777215,1,25,597552,1376232792\",\"m\":\"神弹幕 不可否认 我是看弹幕的\"},{\"c\":\"8.139,16777215,1,25,130k2876188882,1376234404\",\"m\":\"a\"},{\"c\":\"15.353,16777215,1,25,121k3730778254,1376234861\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.659,6684825,1,25,189k2073480635,1376239744\",\"m\":\"夜夜夜夜夜夜夜夜夜夜夜夜\"},{\"c\":\"23.454,16724736,1,25,1b3k3670962492,1376266101\",\"m\":\"2013.8.12\"},{\"c\":\"14.862,16724736,1,25,1b3k3670962492,1376266182\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"22.954,16724736,1,25,1b3k3670962492,1376266190\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"30.16,16776960,1,25,180k249509149,1376275642\",\"m\":\"液\"},{\"c\":\"6.397,16777215,1,25,624035,1376276334\",\"m\":\"打卡\"},{\"c\":\"30.983,16777215,1,25,4a5k1946234471,1376279150\",\"m\":\"软掉了 T.T...\"},{\"c\":\"54.218,16777215,1,25,4a5k1946234471,1376279174\",\"m\":\"竟然软掉了 ，，，，\"},{\"c\":\"40.096,16777215,1,25,1e2k3029168501,1376279250\",\"m\":\"我是来听BGM的\"},{\"c\":\"30.241,16777215,1,25,454k463273829,1376280162\",\"m\":\"打卡\"},{\"c\":\"48.883,16777215,1,25,393225,1376281142\",\"m\":\"今日打卡2013年8月12日 12:19:05\"},{\"c\":\"45.148,13369599,4,37,1b3k1033710953,1376282278\",\"m\":\"2013.8.12\"},{\"c\":\"57.568,16777215,1,25,44bk1851130326,1376282652\",\"m\":\"真的是香蕉吗\"},{\"c\":\"17.456,16777215,1,25,2c3k3702014318,1376283657\",\"m\":\"\\u003d \\u003d\"},{\"c\":\"10.043,6749952,1,25,4d8k3722613906,1376285088\",\"m\":\"打卡\"},{\"c\":\"81.256,6749952,1,25,4d8k3722613906,1376285159\",\"m\":\"我艹！不能直视啊 \"},{\"c\":\"77.976,16777215,1,25,532917,1376287835\",\"m\":\"1799收藏\"},{\"c\":\"0.632,16777215,1,25,624425,1376289715\",\"m\":\"打卡\"},{\"c\":\"24.667,16777215,1,25,622912,1376291639\",\"m\":\"2013-8-12 15:13:58\"},{\"c\":\"0,16777215,1,25,567743,1376294017\",\"m\":\"打卡了绅士们...\"},{\"c\":\"21.687,13408512,1,25,20bk986871394,1376294378\",\"m\":\"耶耶耶\"},{\"c\":\"15.04,13408512,1,25,20bk986871394,1376294480\",\"m\":\"耶耶耶耶耶\"},{\"c\":\"18.614,16777215,1,25,585664,1376297871\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.819,16711680,1,25,591937,1376297948\",\"m\":\"打卡！！！！！！！！！\"},{\"c\":\"16.468,16711680,1,25,591937,1376298006\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"17.037,16777215,1,25,566697,1376300118\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶夜夜2\"},{\"c\":\"14.844,16777215,1,25,566697,1376300171\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.789,16777215,1,25,20ek2007451346,1376301534\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"13.681,16777215,1,25,559740,1376302153\",\"m\":\"yoo\"},{\"c\":\"14.361,16777215,1,25,597374,1376304489\",\"m\":\"打卡\"},{\"c\":\"3.66,16777215,1,25,266k3723106730,1376308867\",\"m\":\"打卡\"},{\"c\":\"30.341,16711731,4,37,266k3723106730,1376308894\",\"m\":\"继续丧心病狂\"},{\"c\":\"10.565,16777215,1,25,3c6k3757386694,1376309156\",\"m\":\"打卡\"},{\"c\":\"16.416,16777215,1,25,4d2k1018810962,1376309537\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"12.315,16777215,1,25,4d2k1018810962,1376309718\",\"m\":\"看了7遍了。。\"},{\"c\":\"45.952,16777215,1,25,271k1867408839,1376310116\",\"m\":\"顶上去报复社会\"},{\"c\":\"59.282,16777215,1,25,315k3396199020,1376310939\",\"m\":\"我擦啊啊 啊啊啊啊啊啊啊\"},{\"c\":\"24.622,16777215,1,25,248k1911799324,1376311419\",\"m\":\"打卡+1\"},{\"c\":\"41.684,16777215,1,25,248k1911799324,1376311436\",\"m\":\"每日必看- -\"},{\"c\":\"80.693,16777215,1,25,38ak1960930797,1376312094\",\"m\":\"...\"},{\"c\":\"25.238,16777215,1,25,1b5k3701977691,1376318290\",\"m\":\"................\"},{\"c\":\"13.113,16777215,1,25,172661,1376318903\",\"m\":\"2013.8.12\"},{\"c\":\"51.958,16711680,1,25,387645,1376321267\",\"m\":\"顶上去报复社会\"},{\"c\":\"19.408,16777215,1,25,178252,1376325904\",\"m\":\"金刚如来！\"},{\"c\":\"13.351,16777215,1,25,166k3662278790,1376328310\",\"m\":\"求BGM\"},{\"c\":\"52.529,16777215,1,25,166k3662278790,1376328349\",\"m\":\"文化接触太给力了\"},{\"c\":\"46.894,16777215,1,25,258k3658903074,1376342389\",\"m\":\"丧心病狂！\"},{\"c\":\"23.442,16777215,1,25,625727,1376342676\",\"m\":\"打卡啊\"},{\"c\":\"11.096,16777215,1,25,385k2006107404,1376352828\",\"m\":\"前来打卡\"},{\"c\":\"19.957,16777215,1,25,313k2074454599,1376353232\",\"m\":\"弹幕好多啊\"},{\"c\":\"76.404,16777215,1,25,522845,1376353426\",\"m\":\" - -\"},{\"c\":\"14.544,16777215,1,25,34fk245272954,1376357240\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"16.276,16777215,1,25,34fk245272954,1376357245\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"16.276,16777215,1,25,34fk245272954,1376357250\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"9.564,16777215,1,25,572231,1376360217\",\"m\":\"每日打卡\"},{\"c\":\"14.666,3407616,1,25,576285,1376361161\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.666,3407616,1,25,576285,1376361165\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.666,3407616,1,25,576285,1376361168\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.666,3407616,1,25,576285,1376361171\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.666,3407616,4,25,576285,1376361178\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.666,3407616,4,25,576285,1376361181\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.666,3407616,4,25,576285,1376361183\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.666,3407616,1,25,576285,1376361192\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.666,3407616,1,25,576285,1376361196\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.666,3407616,1,25,576285,1376361198\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.666,3407616,1,25,576285,1376361200\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.666,3407616,1,25,576285,1376361202\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.666,3407616,1,25,576285,1376361204\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.666,3407616,1,25,576285,1376361206\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.666,3407616,1,25,576285,1376361210\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.666,3407616,1,25,576285,1376361213\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.666,3407616,1,25,576285,1376361218\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"5.177,26316,4,25,267k2090994000,1376361508\",\"m\":\"炒饭？\"},{\"c\":\"87.933,16777215,1,25,1a7k3069283466,1376361779\",\"m\":\"2013年8月13\"},{\"c\":\"27.815,16777215,1,25,171405,1376362569\",\"m\":\"耶耶！！！！！！！！！！！耶耶！！！！！！！！！！！耶耶！！！！！！！！！！！耶耶！！！！！！！！！！！耶耶！！！！！！！！！！！耶耶！！！！！！！！！！！耶耶！！！！！！！！！！！耶耶！！！！！！！\"},{\"c\":\"32.579,16777215,1,25,171405,1376362574\",\"m\":\"耶耶！！！！！！！！！！！耶耶！！！！！！！！！！！耶耶！！！！！！！！！！！耶耶！！！！！！！！！！！耶耶！！！！！！！！！！！耶耶！！！！！！！！！！！\"},{\"c\":\"7.32,16777215,1,25,119k1857965230,1376365425\",\"m\":\"耶耶耶耶~\"},{\"c\":\"15.537,16777215,1,25,1c7k2101364304,1376365766\",\"m\":\"没弹幕\"},{\"c\":\"45.25,10027161,1,25,387k453943713,1376367231\",\"m\":\"杨坤，\"},{\"c\":\"7.229,16776960,1,25,606859,1376370237\",\"m\":\"打卡。。\"},{\"c\":\"0,6710886,1,25,582628,1376370715\",\"m\":\"wa\"},{\"c\":\"5.823,16777215,1,25,352k1017434011,1376371231\",\"m\":\".......................\"},{\"c\":\"3.909,16777215,1,25,417219,1376371271\",\"m\":\"打卡。。。。。。\"},{\"c\":\"17.374,16777215,1,25,566697,1376373973\",\"m\":\"耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.054,16777215,1,37,566697,1376374027\",\"m\":\"are you ready\"},{\"c\":\"13.541,16711680,5,37,566697,1376374083\",\"m\":\"Are you ready\"},{\"c\":\"17.659,3381759,1,25,424199,1376374824\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"33.684,16777011,1,25,406k3029170287,1376377099\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"13.417,16777215,1,25,532321,1376377112\",\"m\":\"2013-08-13 14:58:38 打卡\"},{\"c\":\"16.714,13158,1,37,532321,1376377128\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"20.598,13158,1,37,532321,1376377132\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"22.68,13158,1,37,532321,1376377134\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"76.478,16777011,4,25,406k3029170287,1376377142\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"87.215,16777011,4,25,406k3029170287,1376377153\",\"m\":\"500个基友不说话\"},{\"c\":\"19.279,13369344,5,37,532321,1376377169\",\"m\":\"2013-08-13 14:59:35 每日打卡\"},{\"c\":\"29.294,16777215,1,25,626391,1376377489\",\"m\":\"我看了3次了\"},{\"c\":\"79.901,16777215,1,25,626391,1376377540\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"59.807,16777215,1,25,4dck1035737753,1376377654\",\"m\":\"杨坤有木有？\"},{\"c\":\"11.296,16777215,1,25,4dck1035737753,1376377695\",\"m\":\"杨坤杨坤杨坤\"},{\"c\":\"39.395,16777215,1,25,4dck1035737753,1376377708\",\"m\":\"杨坤\"},{\"c\":\"63.041,16777215,1,25,532917,1376377930\",\"m\":\"主页  \\u003e   生活娱乐  /   暖被窝一次一千円节假日半价  / 发布于  2011年 4月28日(星期四) 7时24分  /  播放:415,449  评论:2,533  收藏:1,824  /\"},{\"c\":\"25.6,16777215,1,25,145k3395750786,1376378270\",\"m\":\"打卡日常！\"},{\"c\":\"24.629,6750207,1,25,478k3072636344,1376385749\",\"m\":\"弄得一手好洛阳铲！\"},{\"c\":\"64.338,6750207,1,37,478k3072636344,1376385789\",\"m\":\"大香蕉！\"},{\"c\":\"76.837,6750207,1,37,478k3072636344,1376385802\",\"m\":\"有耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"9.913,16711680,1,25,461k2032076344,1376387128\",\"m\":\"不是这首歌捏\"},{\"c\":\"41.313,16711680,1,25,461k2032076344,1376387160\",\"m\":\"怎么可能是炒饭呢  我不认识他……\\u003d。\\u003d\"},{\"c\":\"66.44,16777215,1,25,605539,1376392369\",\"m\":\"1826个收藏什么心态\"},{\"c\":\"5.782,16777215,1,25,360088,1376396483\",\"m\":\"摇起来\"},{\"c\":\"26.991,16777215,1,25,21ak1033502638,1376397265\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"16.38,16777215,1,25,21ak1033502638,1376397277\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶v耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"44.459,16777215,1,25,3bdk2947511981,1376398050\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"55.836,16777215,1,25,3bdk2947511981,1376398062\",\"m\":\"小丁丁\"},{\"c\":\"24.275,3407616,1,25,597033,1376398577\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"15.221,16711680,1,25,120k3085204837,1376398889\",\"m\":\"......\"},{\"c\":\"14.751,16711680,1,25,120k3085204837,1376398919\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"19.935,16711680,1,25,120k3085204837,1376398924\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"33.583,16777215,1,25,441775,1376402422\",\"m\":\"打卡不解释\"},{\"c\":\"18.175,16777215,1,25,600087,1376402531\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"14.615,16777215,5,25,585664,1376402819\",\"m\":\"Are you ready?\"},{\"c\":\"10.981,16777215,1,25,400k3061677543,1376402907\",\"m\":\"打卡\"},{\"c\":\"19.41,16777215,1,25,29ck1900353397,1376403241\",\"m\":\".................\"},{\"c\":\"40.775,16777215,1,25,223k244518479,1376406469\",\"m\":\"看不到啊看不到啊看不到啊看不到啊看不到啊看不到啊看不到啊看不到啊看不到啊看不到啊看不到啊看不到啊看不到啊\"},{\"c\":\"17.361,16777215,1,25,3b3k3659281694,1376407201\",\"m\":\"2013年8月13日 23:19:57\"},{\"c\":\"34.2,16777215,1,25,599621,1376409181\",\"m\":\"我又来了\"},{\"c\":\"0,16711680,1,25,611275,1376410430\",\"m\":\"这是一个让大家都变基佬的阴谋。\"},{\"c\":\"47.866,16711680,1,25,611275,1376410484\",\"m\":\"我的眼睛！！！\"},{\"c\":\"55.535,16711680,4,37,611275,1376410502\",\"m\":\"我的眼睛！\"},{\"c\":\"84.865,65535,1,25,3a5k1781617181,1376411413\",\"m\":\"干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干干\"},{\"c\":\"12.776,16777215,1,25,276k1981480729,1376412042\",\"m\":\"。。。。\"},{\"c\":\"47.856,16711680,1,25,4cek1867427908,1376414470\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"78.741,16711680,1,37,4cek1867427908,1376414501\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"70.281,16777215,1,25,40fk2948117381,1376427964\",\"m\":\"无法直视 丧心病狂\"},{\"c\":\"17.25,16777215,1,25,20ek3083468584,1376428049\",\"m\":\"打卡8.14早上\"},{\"c\":\"17.965,16777215,1,25,20ek3083468584,1376428081\",\"m\":\"耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶\"},{\"c\":\"36.487,16777215,1,25,254049,1376429548\",\"m\":\"求bgm\"},{\"c\":\"43.589,16777215,1,25,177k3662843066,1376435280\",\"m\":\"丧心病狂的七夕\"},{\"c\":\"15.152,16777215,1,25,453k3723125416,1376444152\",\"m\":\"打卡\"},{\"c\":\"65.262,16777215,1,25,453k3723125416,1376444202\",\"m\":\"卧槽、\"},{\"c\":\"16.507,16777215,1,25,166316,1376446088\",\"m\":\"美国大雕\"},{\"c\":\"17.339,13369344,1,25,532321,1376453125\",\"m\":\"2013年8月14日 12:05:26 打卡\"},{\"c\":\"48.351,6750003,1,25,615328,1376453285\",\"m\":\"baofushehui!!!!!!!!!!!\"},{\"c\":\"58.802,16777215,1,25,3d0k2095941037,1376456170\",\"m\":\"⑨个小伙你好\"},{\"c\":\"68.467,16777215,1,25,3d0k2095941037,1376456180\",\"m\":\"曹。。。。\"},{\"c\":\"18.832,16711680,1,25,385421,1376457625\",\"m\":\"8月14日赵志斌打卡\"},{\"c\":\"0.493,16711680,4,25,385421,1376457661\",\"m\":\"8月14日赵志斌打卡广州北大附中贺电\"},{\"c\":\"0,16777215,1,25,403k3721738134,1376458877\",\"m\":\"2013年8月14日13：42\"},{\"c\":\"5.345,16777215,1,25,19ak2000570677,1376459956\",\"m\":\"打卡\"},{\"c\":\"4.087,16777215,1,25,580660,1376461730\",\"m\":\"兄贵--------------------------------------------------------------------------------------------------\"},{\"c\":\"12.885,16777215,1,25,149k1912070066,1376466041\",\"m\":\"......................\"},{\"c\":\"21.97,16777215,1,25,149k1912070066,1376466070\",\"m\":\"表情帝！！！！！！！！！！！！！！！！！！\"},{\"c\":\"5.968,13408512,1,25,4d9k3736983214,1376466747\",\"m\":\"日常打卡\"},{\"c\":\"63.916,13408512,1,25,4d9k3736983214,1376466805\",\"m\":\" 收藏:1,842 \"},{\"c\":\"38.359,16777215,1,25,18ck3663086991,1376468188\",\"m\":\"..\"},{\"c\":\"10.45,16777215,1,25,554498,1376469294\",\"m\":\"k \"},{\"c\":\"14.564,16777215,1,25,146k3740635017,1376470286\",\"m\":\"```````````````````````\"},{\"c\":\"77.734,16777215,1,25,376k1900079524,1376471392\",\"m\":\"一样呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀\"}]"
  },
  {
    "path": "app/src/main/assets/online.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<list>\n  <head>\n    <version>1.1.0</version>\n    <title>default stream</title>\n  </head>\n  <body>\n    <media id=\"001\" version=\"21\" title=\"CCTV-1 综合\" image=\"http://cn.daroonsoft.com/images/cctv_1.png\" guide=\"cctv1\">\n        <ref href=\"rtmp://203.207.99.19:1935/live/CCTV1\" width=\"384\" height=\"288\" bitrate=\"755\" />\n                <ref href=\"rtmp://203.207.99.19:1935/live/CCTV1\" width=\"320\" height=\"240\" bitrate=\"264\" />\n                <ref href=\"http://218.24.47.44:2424/CCTV1_1/CCTV1.m3u8\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n                <ref href=\"http://202.102.79.115:554/zb0727/cctv1.stream/playlist.m3u8\" width=\"320\" height=\"240\" bitrate=\"548\" />\n                <ref href=\"rtsp://bupt01.video.edu.cn/CCTV-1\" width=\"640\" height=\"480\" bitrate=\"412\" />\n                <ref href=\"rtsp://116.199.127.68/cctv1_HD\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n                <ref href=\"rtsp://211.138.120.114/cctv1\" width=\"512\" height=\"384\" bitrate=\"544\" />\n                <ref href=\"http://cntv.itv.doplive.com.cn/live591/index_128k.m3u8\" width=\"320\" height=\"240\" bitrate=\"256\" />\n    </media>\n    <media id=\"002\" version=\"18\" title=\"CCTV-2 财经\" image=\"http://cn.daroonsoft.com/images/cctv_2.png\"  guide=\"cctv2\">\n        <ref href=\"http://v.baitv.com/signal/letv/cctv2.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"rtsp://114.255.201.246/cctv2_256_h264.sdp\" width=\"320\" height=\"240\" bitrate=\"548\" />\n                <ref href=\"mms://211.138.120.114/cctv2\" width=\"512\" height=\"384\" bitrate=\"544\" />\n                <ref href=\"http://cntv.itv.doplive.com.cn/live592/index_128k.m3u8\" width=\"320\" height=\"240\" bitrate=\"256\" />\n    </media>\n    <media id=\"003\" version=\"15\" title=\"CCTV-3 综艺\" image=\"http://cn.daroonsoft.com/images/cctv_3.png\"  guide=\"cctv3\"\n        desc=\"中央电视台综艺频道是以播出音乐及歌舞节目为主的专业频道，于1995年11月30日正式播出，通过亚太1A卫星覆盖全国，每天播出19小时左右。\" >\n                <ref href=\"http://v.baitv.com/signal/letv/cctv3HD_1300.m3u8\" width=\"320\" height=\"240\" bitrate=\"264\" />\n                <ref href=\"mms://211.138.120.114/cctv3\" width=\"512\" height=\"384\" bitrate=\"544\" />\n                <ref href=\"rtsp://116.199.127.68/cctv3\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n                <ref href=\"http://cntv.itv.doplive.com.cn/live593/index_128k.m3u8\" width=\"320\" height=\"240\" bitrate=\"256\" />\n    </media>\n    <media id=\"004\" version=\"19\" title=\"CCTV-4 中文国际（亚）\" image=\"http://cn.daroonsoft.com/images/cctv_4.png\"  guide=\"cctv4\" \n        desc=\"中央电视台国际频道是以海外华人、华侨和港、澳、台为主要服务对象的专业频道，于1992年10月1日开播。国际频道的播出信号采用数字压缩技术，通过多颗国际卫星传输，基本实现了卫星传输信号的全球覆盖和卫星直播信号的重点地区覆盖。\">\n        <ref href=\"http://113.207.58.12:5071/wtvlive/cntv/cctv4\" width=\"640\" height=\"480\" bitrate=\"632\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=11\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"mms://211.138.120.114/cctv4\" width=\"512\" height=\"384\" bitrate=\"544\" />\n                <ref href=\"http://cntv.itv.doplive.com.cn/live594/index_128k.m3u8\" width=\"320\" height=\"240\" bitrate=\"256\" />\n    </media>\n    <media id=\"005\" version=\"24\" title=\"CCTV-5 体育\" image=\"http://cn.daroonsoft.com/images/cctv_5.png\"  guide=\"cctv5\" \n        desc=\"中央电视台体育频道是国内创办最早、规模最大、拥有世界众多顶级赛事国内独家报道权的专业体育频道，于1995年1月1日正式开播，通过亚太1A卫星覆盖全国，每天平均播出16小时以上。\" >\n                <ref href=\"rtmp://203.207.99.19:1935/live/CCTV5\" width=\"320\" height=\"240\" bitrate=\"548\" />\n                <ref href=\"rtmp://live.cditv.cn/test/CCTV5\" width=\"320\" height=\"240\" bitrate=\"548\" />\n                <ref href=\"rtsp://114.255.201.246/cctv5_256_h264.sdp\" width=\"320\" height=\"240\" bitrate=\"548\" />\n                <ref href=\"rtsp://116.199.127.68/cctv5\" width=\"720\" height=\"576\" bitrate=\"800\" />\n                <ref href=\"rtmp://202.108.17.140/multicast/livestream\" width=\"480\" height=\"320\" bitrate=\"600\" />\n                <ref href=\"rtsp://bupt01.video.edu.cn/CCTV-5\" width=\"640\" height=\"480\" bitrate=\"632\" />\n                <ref href=\"rtsp://211.138.120.114/cctv5\" width=\"512\" height=\"384\" bitrate=\"544\" />\n                <ref href=\"rtsp://media.zzti.edu.cn/cctv5\" width=\"320\" height=\"240\" bitrate=\"548\" />\n                <ref href=\"http://cntv.itv.doplive.com.cn/live595/index_128k.m3u8\" width=\"320\" height=\"240\" bitrate=\"256\" />\n    </media>\n    <media id=\"006\" version=\"17\" title=\"CCTV-6 电影\" image=\"http://cn.daroonsoft.com/images/cctv_6.png\"  guide=\"cctv6\"\n        desc=\"中央电视台电影频道是以宣传电影、培养电影观众、传播影视文化为宗旨的专业频道，于1996年1月1日正式开播，通过亚太1A卫星覆盖全国，每天平均播出近17小时。\" >\n        <ref href=\"http://v.baitv.com/signal/letv/cctv6HD_1300.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"rtsp://114.255.201.246/cctv6_256_h264.sdp\" width=\"320\" height=\"240\" bitrate=\"548\" />\n                <ref href=\"mms://211.138.120.114/cctv6\" width=\"512\" height=\"384\" bitrate=\"544\" />\n                <ref href=\"rtsp://116.199.127.68/cctv6\" width=\"720\" height=\"576\" bitrate=\"800\" />\n                <ref href=\"http://live512.itv.doplive.com.cn/live512/index_128k.m3u8\" width=\"320\" height=\"240\" bitrate=\"256\" />\n    </media>\n    <media id=\"007\" version=\"11\" title=\"CCTV-7 军事 农业\" image=\"http://cn.daroonsoft.com/images/cctv_7.png\"  guide=\"cctv7\"\n        desc=\"中央电视台少儿·军事·农业频道是以播出少儿、军事、农业节目为主的专业频道，于1995年11月30日开播，通过亚太1A卫星覆盖全国。平均每日播出近17个小时。\" >\n        <ref href=\"http://v.baitv.com/signal/letv/cctv7.m3u8\" width=\"640\" height=\"480\" bitrate=\"632\" />\n                <ref href=\"http://cntv.itv.doplive.com.cn/live597/index_900k.m3u8\" width=\"320\" height=\"240\" bitrate=\"256\" />\n    </media>\n    <media id=\"008\" version=\"12\" title=\"CCTV-8 电视剧\" image=\"http://cn.daroonsoft.com/images/cctv_8.png\"  guide=\"cctv8\"\n        desc=\"中央电视台电视剧频道是以优秀电视剧为主要播出内容的专业频道，于1999年5月3日开播，通过亚太1A卫星覆盖全国，平均每天播出17小时。\" >\n        <ref href=\"http://v.baitv.com/signal/letv/cctv8HD_1300.m3u8\" width=\"640\" height=\"480\" bitrate=\"632\" />\n                <ref href=\"rtsp://114.255.201.246/cctv8_256_h264.sdp\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"mms://211.138.120.114/cctv8\" width=\"512\" height=\"384\" bitrate=\"544\" />\n                <ref href=\"rtsp://116.199.127.68/cctv8\" width=\"720\" height=\"576\" bitrate=\"800\" />\n    </media>\n    <media id=\"009\" version=\"17\" title=\"CCTV-News\" image=\"http://cn.daroonsoft.com/images/cctv_news.png\"  guide=\"\">\n        <ref href=\"http://live.3gv.ifeng.com/live/CCTV13.m3u8\" width=\"320\" height=\"240\" bitrate=\"256\" />\n        <ref href=\"mms://bupt02.video.edu.cn/CCTV-9\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"mms://222.47.26.81/litv11\" width=\"320\" height=\"240\" bitrate=\"256\" />\n                <ref href=\"mms://4.71.37.8/cctv9-200\" width=\"320\" height=\"240\" bitrate=\"256\" />\n                <ref href=\"mms://211.138.120.114/cctv9\" width=\"512\" height=\"384\" bitrate=\"544\" />\n    </media>\n    <media id=\"010\" version=\"12\" title=\"CCTV-9 纪录\" image=\"http://cn.daroonsoft.com/images/cctv_9.png\"  guide=\"cctv9\">\n        <ref href=\"http://v.baitv.com/signal/letv/cctv9.m3u8\" width=\"320\" height=\"240\" bitrate=\"256\" />\n        <ref href=\"http://t.live.cntv.cn/m3u8/cctv9-jilu.m3u8\" width=\"720\" height=\"576\" bitrate=\"800\" />\n                <ref href=\"rtmp://live.cditv.cn/test/CCTV9\" width=\"320\" height=\"240\" bitrate=\"548\" />\n    </media>\n    <media id=\"011\" version=\"10\" title=\"CCTV-10 科教\" image=\"http://cn.daroonsoft.com/images/cctv_10.png\"  guide=\"cctv10\"\n        desc=\"中央电视台科学·教育频道(CCTV-10)，是因应国家“科教兴国”方略，以提高国民素质为宗旨，以教科文题材为内容的专业电视频道。\" >\n        <ref href=\"http://v.baitv.com/signal/letv/cctv10.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"mms://211.138.120.114/cctv10\" width=\"512\" height=\"384\" bitrate=\"544\" />\n    </media>\n    <media id=\"012\" version=\"6\" title=\"CCTV-11 戏曲\" image=\"http://cn.daroonsoft.com/images/cctv_11.png\"  guide=\"cctv11\"\n        desc=\"中央电视台戏曲频道以弘扬和发展我国优秀戏曲艺术，满足戏迷审美要求为宗旨的专业频道，于2001年7月9日开播。\" >\n        <ref href=\"http://v.baitv.com/signal/letv/cctv11.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n        <ref href=\"http://t.live.cntv.cn/m3u8/cctv-xiqu.m3u8\" width=\"720\" height=\"576\" bitrate=\"800\" />\n    </media>\n    <media id=\"013\" version=\"9\" title=\"CCTV-12 社会与法\" image=\"http://cn.daroonsoft.com/images/cctv_12.png\" guide=\"cctv12\">\n        <ref href=\"http://v.baitv.com/signal/letv/cctv12.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n        <ref href=\"http://t.live.cntv.cn/m3u8/cctv12.m3u8\" width=\"720\" height=\"576\" bitrate=\"800\" />\n                <ref href=\"rtsp://114.255.201.246/cctv12_256_h264.sdp\" width=\"720\" height=\"576\" bitrate=\"800\" />\n                <ref href=\"http://202.108.39.103:554/57?.flv\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"mms://211.138.120.114/cctv12\" width=\"512\" height=\"384\" bitrate=\"544\" />\n    </media>\n    <media id=\"014\" version=\"23\" title=\"CCTV-13 新闻\" image=\"http://cn.daroonsoft.com/images/cctv_13.png\" guide=\"cctvxwpd\" \n        desc=\"新闻频道全天24小时播出，全天24档整点新闻。整点新闻将以最快的速度向观众提供第一手的国内国际新闻资讯，突出时效性和信息量，实现滚动、递进、更新式报道。整点新闻后，分别安排了各分类新闻，主要有财经、体育、文化、国际四大类。\" >\n        <ref href=\"http://live.3gv.ifeng.com/live/CCTV13.m3u8\" width=\"648\" height=\"480\" bitrate=\"900\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=1\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"http://ora.t.live.cntv.cn/live/test?fmt=x264_0K_flv\" width=\"720\" height=\"576\" bitrate=\"800\" />\n                <ref href=\"mms://211.138.120.114/cctvxw\" width=\"512\" height=\"384\" bitrate=\"544\" />\n    </media>\n        <media id=\"216\" version=\"5\" title=\"CCTV-14 少儿\" image=\"http://cn.daroonsoft.com/images/cctv_shaoer.png\" guide=\"cctvsepd\">\n                <ref href=\"http://v.baitv.com/signal/letv/cctvshaoer.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"rtsp://bupt01.video.edu.cn/CCTV-kid\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n        <media id=\"370\" version=\"1\" title=\"CCTV-15 音乐\" image=\"http://cn.daroonsoft.com/images/cctv_music.png\" guide=\"cctvylpd\">\n                <ref href=\"http://v.baitv.com/signal/letv/cctvmusic.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n        <media id=\"366\" version=\"2\" title=\"风云足球\" image=\"http://cn.daroonsoft.com/images/ffzq.png\"  guide=\"fyzq\">\n                <ref href=\"http://v.baitv.com/signal/letv/fyzq.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n        <media id=\"214\" version=\"1\" title=\"CCTV高清\" image=\"http://cn.daroonsoft.com/images/cctv_gaoqing.png\" guide=\"cctv-gq\"  >\n                <ref href=\"rtmp://202.108.17.104/live/test02\" width=\"720\" height=\"480\" bitrate=\"1044\" />\n        </media>\n    <media id=\"072\" version=\"10\" title=\"中国教育—1\" image=\"http://cn.daroonsoft.com/images/cetv.png\" guide=\"jyyt\"  >\n        <ref href=\"mms://bupt02.video.edu.cn/CETV-1\" width=\"640\" height=\"480\" bitrate=\"1044\" />         \n                <ref href=\"http://gslb.tv.sohu.com/live?cid=30\" width=\"640\" height=\"480\" bitrate=\"1044\" />   \n    </media>\n    <media id=\"073\" version=\"6\" title=\"中国教育—3\" image=\"http://cn.daroonsoft.com/images/cetv.png\" guide=\"jyst\"  >\n        <ref href=\"mms://bupt02.video.edu.cn/CETV-3\" width=\"640\" height=\"480\" bitrate=\"1440\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=29\" width=\"640\" height=\"480\" bitrate=\"1440\" />\n    </media>\n        <media id=\"367\" version=\"1\" title=\"欧洲足球\" image=\"http://cn.daroonsoft.com/images/oozq.png\"  guide=\"\">\n                <ref href=\"rtmp://livertmp.wasu.cn/live/ozzq\" width=\"320\" height=\"240\" bitrate=\"128\" />\n    </media>\n    <media id=\"018\" version=\"28\" title=\"湖南卫视\" image=\"http://cn.daroonsoft.com/images/hunantv.png\" guide=\"hunanws\">\n        <ref href=\"http://v.baitv.com/signal/letv/ws_hunanwsHD_1300.m3u8\" width=\"320\" height=\"240\" bitrate=\"548\" />\n        <ref href=\"http://gslb.tv.sohu.com/live?cid=44\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=9\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"rtsp://121.14.129.221/broadcast/pushfeeder/rtpencoder/hnws-s.sdp\" width=\"176\" height=\"144\" bitrate=\"156\" />\n                <ref href=\"http://180.153.212.207:1863/18091377.flv\" width=\"720\" height=\"402\" bitrate=\"1044\" />\n    </media>\n        <media id=\"022\" version=\"4\" title=\"金鹰卡通\" image=\"http://cn.daroonsoft.com/images/hunantv.png\" guide=\"hnjykt\">\n        <ref href=\"rtmp://livertmp.wasu.cn/live7/jykt\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n    <media id=\"112\" version=\"6\" title=\"长沙新闻\" image=\"http://cn.daroonsoft.com/images/changshatv.png\" guide=\"csxwpd\">\n        <ref href=\"mms://222.240.196.154/xinwenlive\" width=\"320\" height=\"240\" bitrate=\"421\" />\n    </media>\n    <media id=\"113\" version=\"5\" title=\"长沙政法\" image=\"http://cn.daroonsoft.com/images/changshatv.png\" guide=\"cszfpd\">\n        <ref href=\"mms://222.240.196.154/live\" width=\"320\" height=\"240\" bitrate=\"421\" />\n    </media>\n    <media id=\"114\" version=\"4\" title=\"长沙女性\" image=\"http://cn.daroonsoft.com/images/changshatv.png\" guide=\"csnxpd\">\n        <ref href=\"mms://222.240.196.154/wmlive\" width=\"320\" height=\"240\" bitrate=\"421\" />\n    </media>\n    <media id=\"027\" version=\"20\" title=\"上海东方卫视\" image=\"http://cn.daroonsoft.com/images/dongfangtv.png\" guide=\"dfaws\">\n        <ref href=\"http://v.baitv.com/signal/letv/dongfangHD_1300.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=3\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"http://112.90.11.88:1863/3900155972.flv\" width=\"720\" height=\"402\" bitrate=\"1044\" />\n                <ref href=\"rtsp://116.199.127.68/dongfang\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n        <media id=\"372\" version=\"6\" title=\"东方财经\" image=\"http://cn.daroonsoft.com/images/dongfangtv.png\" guide=\"\"  >\n                <ref href=\"http://edgews.yicai.com/channels/602/400.flv/live\" width=\"640\" height=\"480\" bitrate=\"900\" />\n    </media>\n    <media id=\"126\" version=\"7\" title=\"五星体育\" image=\"http://cn.daroonsoft.com/images/shanghaitv.png\" guide=\"sitvwxty\">\n        <ref href=\"http://live-cdn.smgbb.tv/channels/214/400.flv/live\" width=\"480\" height=\"348\" bitrate=\"600\" />\n    </media>\n    <media id=\"111\" version=\"6\" title=\"第一财经\" image=\"http://cn.daroonsoft.com/images/cbnlogo.png\" guide=\"ssdycjpd\">\n        <ref href=\"mms://clientcbn.bbtv.cn/clientcbn\" width=\"320\" height=\"240\" bitrate=\"548\" />\n        <ref href=\"http://live-cdn.smgbb.tv/channels/212/400.flv/live\" width=\"480\" height=\"348\" bitrate=\"600\" />\n    </media>\n    <media id=\"127\" version=\"4\" title=\"上海新闻综合\" image=\"http://cn.daroonsoft.com/images/shanghaitv.png\" guide=\"ssxwzhpd\">\n        <ref href=\"http://live-cdn.smgbb.tv/channels/210/400.flv/live\" width=\"480\" height=\"348\" bitrate=\"600\" />\n    </media>\n    <media id=\"128\" version=\"4\" title=\"上海星尚\" image=\"http://cn.daroonsoft.com/images/shanghaitv.png\" guide=\"\">\n        <ref href=\"http://live-cdn.smgbb.tv/channels/211/400.flv/live\" width=\"480\" height=\"348\" bitrate=\"600\" />\n    </media>\n    <media id=\"130\" version=\"4\" title=\"上海纪实\" image=\"http://cn.daroonsoft.com/images/shanghaitv.png\" guide=\"ssjspd\">\n        <ref href=\"http://live-cdn.smgbb.tv/channels/215/400.flv/live\" width=\"480\" height=\"348\" bitrate=\"600\" />\n    </media>\n    <media id=\"131\" version=\"4\" title=\"上海娱乐\" image=\"http://cn.daroonsoft.com/images/shanghaitv.png\" guide=\"ssxwylpd\">\n        <ref href=\"http://live-cdn.smgbb.tv/channels/217/400.flv/live\" width=\"480\" height=\"348\" bitrate=\"600\" />\n    </media>\n    <media id=\"132\" version=\"4\" title=\"上海艺术人文\" image=\"http://cn.daroonsoft.com/images/shanghaitv.png\" guide=\"\">\n        <ref href=\"http://live-cdn.smgbb.tv/channels/218/400.flv/live\" width=\"480\" height=\"348\" bitrate=\"600\" />\n    </media>\n    <media id=\"133\" version=\"4\" title=\"上海ICS外语频道\" image=\"http://cn.daroonsoft.com/images/shanghaitv.png\" guide=\"\">\n        <ref href=\"http://live-cdn.smgbb.tv/channels/220/400.flv/live\" width=\"480\" height=\"348\" bitrate=\"600\" />\n    </media>\n        <media id=\"240\" version=\"1\" title=\"东方购物\" image=\"http://cn.daroonsoft.com/images/shanghaitv.png\" guide=\"\">\n        <ref href=\"http://live-cdn.smgbb.tv/channels/219/400.flv/live\" width=\"480\" height=\"348\" bitrate=\"600\" />\n    </media>\n        <media id=\"320\" version=\"1\" title=\"风云音乐\" image=\"http://cn.daroonsoft.com/images/shanghaitv.png\" guide=\"sitvyxfy\">\n        <ref href=\"http://v.baitv.com/signal/letv/fyyy.m3u8\" width=\"480\" height=\"348\" bitrate=\"409\" />\n    </media>\n    <media id=\"373\" version=\"6\" title=\"生活时尚\" image=\"http://cn.daroonsoft.com/images/eastmovie.png\" guide=\"\"  >\n        <ref href=\"http://live-cdn.smgbb.tv/channels/222/400.flv/live\" width=\"320\" height=\"240\" bitrate=\"256\" />\n    </media>\n        <media id=\"108\" version=\"9\" title=\"炫动卡通\" image=\"http://cn.daroonsoft.com/images/xuandongkatongtv.png\" guide=\"\">\n                <ref href=\"http://live-cdn.smgbb.tv/channels/224/400.flv/live\" width=\"480\" height=\"348\" bitrate=\"600\" />\n    </media>\n        <media id=\"368\" version=\"1\" title=\"劲爆体育\" image=\"http://cn.daroonsoft.com/images/jbty.png\"  guide=\"sitvjbty\" >\n                <ref href=\"rtmp://livertmp.wasu.cn/live5/jbty\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n    <media id=\"036\" version=\"16\" title=\"北京卫视\" image=\"http://cn.daroonsoft.com/images/btv.png\" guide=\"btv1\">\n        <ref href=\"http://v.baitv.com/signal/letv/bjwsHD_1300.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"http://biz.vsdn.tv380.com/playlive.php?5B63686E5D445830303030303035307C313430367C317C323030307C474754567C687474705B2F63686E5D5B74735D307C687474705B2F74735DVSDNSOOONERCOM00\" width=\"768\" height=\"576\" bitrate=\"1044\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=36\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"rtsp://116.199.127.68/beijing\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n    <media id=\"085\" version=\"4\" title=\"北京影视\" image=\"http://cn.daroonsoft.com/images/btv.png\" guide=\"btv4\">\n        <ref href=\"http://v.baitv.com/signal/letv/bjys.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n    <media id=\"086\" version=\"5\" title=\"北京文艺\" image=\"http://cn.daroonsoft.com/images/btv.png\" guide=\"btv2\">\n                <ref href=\"http://v.baitv.com/signal/letv/bjwyHD_1300.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n    <media id=\"087\" version=\"5\" title=\"北京生活\" image=\"http://cn.daroonsoft.com/images/btv.png\" guide=\"btv7\">\n        <ref href=\"http://v.baitv.com/signal/letv/bjsh.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n    <media id=\"088\" version=\"5\" title=\"北京科教\" image=\"http://cn.daroonsoft.com/images/btv.png\" guide=\"btv3\"  >\n        <ref href=\"http://v.baitv.com/signal/letv/bjkj.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=38\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n    <media id=\"089\" version=\"5\" title=\"北京财经\" image=\"http://cn.daroonsoft.com/images/btv.png\" guide=\"btv5\"  >\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=40\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n    <media id=\"090\" version=\"5\" title=\"北京青年\" image=\"http://cn.daroonsoft.com/images/btv.png\" guide=\"btv8\"  >\n        <ref href=\"http://v.baitv.com/signal/letv/bjqn.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n    <media id=\"094\" version=\"6\" title=\"北京体育\" image=\"http://cn.daroonsoft.com/images/btv.png\" guide=\"btv6\"  >\n        <ref href=\"http://v.baitv.com/signal/letv/btv6_1300.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n        <media id=\"115\" version=\"1\" title=\"杭州综合频道\" image=\"http://cn.daroonsoft.com/images/hangzhoutv.png\" guide=\"hzzhpd\"  >\n        <ref href=\"http://live.hcrt.cn/channels/100/400.flv/live\" width=\"480\" height=\"360\" bitrate=\"450\" />\n    </media>\n        <media id=\"116\" version=\"1\" title=\"杭州西湖明珠频道\" image=\"http://cn.daroonsoft.com/images/hangzhoutv.png\" guide=\"hzxhmzpd\"  >\n        <ref href=\"http://live.hcrt.cn/channels/101/400.flv/live\" width=\"480\" height=\"360\" bitrate=\"450\" />\n    </media>\n        <media id=\"117\" version=\"2\" title=\"杭州生活频道\" image=\"http://cn.daroonsoft.com/images/hangzhoutv.png\" guide=\"hzshpd\"  >\n        <ref href=\"http://live.hcrt.cn/channels/102/400.flv/live\" width=\"480\" height=\"360\" bitrate=\"450\" />\n    </media>\n    <media id=\"118\" version=\"5\" title=\"杭州影视频道\" image=\"http://cn.daroonsoft.com/images/hangzhoutv.png\" guide=\"hzyspd\"  >\n                <ref href=\"http://live.hcrt.cn/channels/39/400.flv/live\" width=\"384\" height=\"288\" bitrate=\"450\" />\n                <ref href=\"rtsp://211.138.120.114/ztv5\" width=\"512\" height=\"384\" bitrate=\"544\" />\n    </media>\n        <media id=\"119\" version=\"2\" title=\"杭州少儿频道\" image=\"http://cn.daroonsoft.com/images/hangzhoutv.png\" guide=\"hzsepd\"  >\n        <ref href=\"http://live.hcrt.cn/channels/40/400.flv/live\" width=\"480\" height=\"384\" bitrate=\"450\" />\n    </media>\n        <media id=\"202\" version=\"2\" title=\"房产频道\" image=\"http://cn.daroonsoft.com/images/hangzhoutv.png\" guide=\"\"  >\n                <ref href=\"http://58.248.254.7:1935/live/ifcpd.sdp/playlist.m3u8\" width=\"320\" height=\"240\" bitrate=\"128\" />\n        </media>\n    <media id=\"037\" version=\"14\" title=\"江西卫视\" image=\"http://cn.daroonsoft.com/images/jiangxitv.png\" guide=\"jxws\"  >\n        <ref href=\"http://v.baitv.com/signal/letv/jiangxi.m3u8\" width=\"768\" height=\"576\" bitrate=\"1044\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=18\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"rtmp://live.cjxtv.com:1935/live2/livestream\" width=\"320\" height=\"240\" bitrate=\"128\" />\n    </media>\n    <media id=\"038\" version=\"10\" title=\"广西卫视\" image=\"http://cn.daroonsoft.com/images/guangxi.png\" guide=\"gxws\"  >\n                <ref href=\"http://v.baitv.com/signal/letv/guangxi.m3u8\" width=\"640\" height=\"480\" bitrate=\"1240\" />\n                <ref href=\"http://222.216.111.88:5000/nn_live.flv?id=1004\" width=\"640\" height=\"480\" bitrate=\"1240\" />\n    </media>\n    <media id=\"039\" version=\"14\" title=\"河南卫视\" image=\"http://cn.daroonsoft.com/images/henantv.png\" guide=\"henanws\"  >\n                <ref href=\"http://v.baitv.com/signal/letv/henan.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n    <media id=\"040\" version=\"13\" title=\"湖北卫视\" image=\"http://cn.daroonsoft.com/images/hubeitv.png\" guide=\"hubeiws\"  >\n        <ref href=\"http://v.baitv.com/signal/letv/hubeiHD_1300.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"http://live9.hbtv.com.cn/channels/zbk/hbws/flv:sd/live\" width=\"768\" height=\"576\" bitrate=\"1240\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=22\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n        <media id=\"134\" version=\"1\" title=\"湖北经视\" image=\"http://cn.daroonsoft.com/images/hubeitv.png\" guide=\"\"  >\n        <ref href=\"http://live9.hbtv.com.cn/channels/zbk/jingshi2/flv:sd/live\" width=\"720\" height=\"576\" bitrate=\"900\" />\n    </media>\n        <media id=\"140\" version=\"1\" title=\"湖北体育\" image=\"http://cn.daroonsoft.com/images/hubeitv.png\" guide=\"hbtypd\"  >\n        <ref href=\"http://live9.hbtv.com.cn/channels/zbk/hbty/flv:sd/live\" width=\"720\" height=\"576\" bitrate=\"900\" />\n    </media>\n        <media id=\"141\" version=\"1\" title=\"湖北影视\" image=\"http://cn.daroonsoft.com/images/hubeitv.png\" guide=\"hubyspd\"  >\n        <ref href=\"http://live9.hbtv.com.cn/channels/zbk/hbys/flv:sd/live\" width=\"720\" height=\"576\" bitrate=\"900\" />\n    </media>\n        <media id=\"225\" version=\"1\" title=\"湖北电视台\" image=\"http://cn.daroonsoft.com/images/hubeitv.png\" guide=\"\"  >\n        <ref href=\"http://live9.hbtv.com.cn/channels/zbk/hbtv/flv:sd/live\" width=\"720\" height=\"576\" bitrate=\"900\" />\n    </media>\n    <media id=\"042\" version=\"16\" title=\"黑龙江电视台\" image=\"http://cn.daroonsoft.com/images/heilongjiangtv.png\" guide=\"hljws\"  >\n                <ref href=\"http://v.baitv.com/signal/letv/heilongjiangHD_1300.m3u8\" width=\"800\" height=\"448\" bitrate=\"1044\" />\n    </media>\n    <media id=\"043\" version=\"8\" title=\"辽宁卫视\" image=\"http://cn.daroonsoft.com/images/niaolingtv.png\" guide=\"lnws\"  >\n        <ref href=\"http://v.baitv.com/signal/letv/liaoning.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=10\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n    <media id=\"044\" version=\"8\" title=\"山西卫视\" image=\"http://cn.daroonsoft.com/images/shanxitv.png\" guide=\"sx1ws\"  >\n        <ref href=\"http://gslb.tv.sohu.com/live?cid=50\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n    <media id=\"045\" version=\"12\" title=\"陕西卫视\" image=\"http://cn.daroonsoft.com/images/shaxiatv.png\" guide=\"sx3ws\"  >\n                <ref href=\"http://biz.vsdn.tv380.com/playlive.php?5B63686E5D445830303030303035307C313531337C317C323030307CE74754567C687474705B2F63686E5D5B74735D307C687474705B2F74735DVSDNSOOONERCOM00\" width=\"768\" height=\"576\" bitrate=\"1240\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=20\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n    <media id=\"046\" version=\"9\" title=\"天津卫视\" image=\"http://cn.daroonsoft.com/images/tianjingtv.png\" guide=\"tjws\"  >\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=15\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n    <media id=\"047\" version=\"6\" title=\"云南卫视\" image=\"http://cn.daroonsoft.com/images/yunnantv.png\" guide=\"ynws\"  >\n        <ref href=\"mms://bupt02.video.edu.cn/YNWS\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"http://biz.vsdn.tv380.com/playlive.php?5B63686E5D445830303030303035307C313533317C317C323030307CE74754567C687474705B2F63686E5D5B74735D307C687474705B2F74735DVSDNSOOONERCOM00\" width=\"768\" height=\"576\" bitrate=\"1240\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=17\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n        <media id=\"310\" version=\"7\" title=\"云南都市\" image=\"http://cn.daroonsoft.com/images/yunnantv.png\" guide=\"\"  >\n        <ref href=\"http://116.55.228.241/channels/622/400.flv/live\" width=\"480\" height=\"384\" bitrate=\"521\" />\n    </media>\n        <media id=\"311\" version=\"7\" title=\"云南娱乐\" image=\"http://cn.daroonsoft.com/images/yunnantv.png\" guide=\"yntyylpd\"  >\n        <ref href=\"http://116.55.228.243/channels/623/400.flv/live\" width=\"480\" height=\"384\" bitrate=\"521\" />\n    </media>\n        <media id=\"312\" version=\"7\" title=\"云南公共\" image=\"http://cn.daroonsoft.com/images/yunnantv.png\" guide=\"ynggpd\"  >\n        <ref href=\"http://116.55.228.241/channels/626/400.flv/live\" width=\"480\" height=\"384\" bitrate=\"521\" />\n    </media>\n    <media id=\"048\" version=\"12\" title=\"重庆卫视\" image=\"http://cn.daroonsoft.com/images/chongqingtv.png\" guide=\"zqws\"  >\n        <ref href=\"mms://bupt02.video.edu.cn/CQWS\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"rtsp://123.147.160.18/cqtv.sdp\" width=\"768\" height=\"576\" bitrate=\"1240\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=35\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n        <media id=\"322\" version=\"1\" title=\"武汉体育\" image=\"http://cn.daroonsoft.com/images/wuhantv.png\" guide=\"whtypd\"  >\n                <ref href=\"rtmp://multimedia.whbc.com.cn:1935/live/whtv5gd\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n        <media id=\"332\" version=\"1\" title=\"武汉科教生活\" image=\"http://cn.daroonsoft.com/images/wuhantv.png\" guide=\"whkjshpd\"  >\n                <ref href=\"rtmp://multimedia.whbc.com.cn:1935/live/whtv3gd\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n    <media id=\"049\" version=\"11\" title=\"宁夏卫视\" image=\"http://cn.daroonsoft.com/images/ningxiatv.png\" guide=\"nxws\"  >\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=33\" width=\"320\" height=\"640\" bitrate=\"480\" />\n    </media>\n    <media id=\"050\" version=\"18\" title=\"江苏卫视\" image=\"http://cn.daroonsoft.com/images/jiangsutv.png\" guide=\"jsws\"  >\n        <ref href=\"http://v.baitv.com/signal/letv/jiangsuHD_1300.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"http://182.131.19.166:1863/1258215255.flv\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"rtsp://116.199.127.68/jiangsu\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n    <media id=\"051\" version=\"10\" title=\"贵州卫视\" image=\"http://cn.daroonsoft.com/images/guizhoutv.png\" guide=\"gzws\"  >\n                <ref href=\"http://v.baitv.com/signal/letv/guizhou.m3u8\" width=\"640\" height=\"480\" bitrate=\"1240\" />\n    </media>\n        <media id=\"052\" version=\"8\" title=\"内蒙古卫视\" image=\"http://cn.daroonsoft.com/images/neimenggutv.png\" guide=\"nmgws\"  >\n        <ref href=\"http://gslb.tv.sohu.com/live?cid=26\" width=\"320\" height=\"240\" bitrate=\"128\" />\n    </media>\n        <media id=\"053\" version=\"8\" title=\"西藏卫视\" image=\"http://cn.daroonsoft.com/images/xizhangtv.png\" guide=\"xzhyws\"  >\n        <ref href=\"http://gslb.tv.sohu.com/live?cid=25\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n    <media id=\"054\" version=\"6\" title=\"新疆卫视\" image=\"http://cn.daroonsoft.com/images/xinjiangtv.png\" guide=\"xjws\"  >\n        <ref href=\"http://gslb.tv.sohu.com/live?cid=5\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"mms://www.xjklmy.com/tv-1\" width=\"384\" height=\"288\" bitrate=\"256\" />\n    </media>\n    <media id=\"055\" version=\"12\" title=\"四川卫视\" image=\"http://cn.daroonsoft.com/images/sichuantv.png\" guide=\"scws\"  >\n                <ref href=\"http://biz.vsdn.tv380.com/playlive.php?5B63686E5D445830303030303035307C313439397C317C323030307CE74754567C687474705B2F63686E5D5B74735D307C687474705B2F74735DVSDNSOOONERCOM00\" width=\"768\" height=\"576\" bitrate=\"1240\" />\n        <ref href=\"http://gslb.tv.sohu.com/live?cid=27\" width=\"320\" height=\"240\" bitrate=\"128\" />\n                <ref href=\"rtmp://rtmp.sctv.com/SRT_Live/SCTV1_800\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n        <media id=\"295\" version=\"1\" title=\"四川文化旅游\" image=\"http://cn.daroonsoft.com/images/sichuantv.png\" guide=\"scwhlypd\"  >\n                <ref href=\"rtmp://rtmp.sctv.com/SRT_Live/SCTV2_800\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n        <media id=\"296\" version=\"1\" title=\"四川经视频道\" image=\"http://cn.daroonsoft.com/images/sichuantv.png\" guide=\"scjjpd\"  >\n                <ref href=\"rtmp://rtmp.sctv.com/SRT_Live/SCTV3_800\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n        <media id=\"297\" version=\"1\" title=\"四川新闻资讯\" image=\"http://cn.daroonsoft.com/images/sichuantv.png\" guide=\"scxwzxpd\"  >\n                <ref href=\"rtmp://rtmp.sctv.com/SRT_Live/SCTV4_800\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n        <media id=\"298\" version=\"1\" title=\"四川影视文艺\" image=\"http://cn.daroonsoft.com/images/sichuantv.png\" guide=\"scyswypd\"  >\n                <ref href=\"rtmp://rtmp.sctv.com/SRT_Live/SCTV5_800\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n        <media id=\"299\" version=\"1\" title=\"四川星空购物\" image=\"http://cn.daroonsoft.com/images/sichuantv.png\" guide=\"\"  >\n                <ref href=\"rtmp://rtmp.sctv.com/SRT_Live/SCTV6_800\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n        <media id=\"300\" version=\"1\" title=\"四川妇女儿童\" image=\"http://cn.daroonsoft.com/images/sichuantv.png\" guide=\"scfnetpd\"  >\n                <ref href=\"rtmp://rtmp.sctv.com/SRT_Live/SCTV7_800\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n        <media id=\"301\" version=\"1\" title=\"四川公共频道\" image=\"http://cn.daroonsoft.com/images/sichuantv.png\" guide=\"scggpd\"  >\n                <ref href=\"rtmp://rtmp.sctv.com/SRT_Live/SCTV9_800\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n    <media id=\"056\" version=\"17\" title=\"浙江卫视\" image=\"http://cn.daroonsoft.com/images/zhejiangtv.png\" guide=\"zjws\"  >\n        <ref href=\"http://v.baitv.com/signal/letv/zhejiangHD_1300.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"http://biz.vsdn.tv380.com/playlive.php?5B63686E5D445830303030303035307C313438337C317C323030307CE74754567C687474705B2F63686E5D5B74735D307C687474705B2F74735DVSDNSOOONERCOM00\" width=\"768\" height=\"576\" bitrate=\"1240\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=31\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"http://119.147.126.78:1863/1975434150.flv\" width=\"720\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"rtsp://116.199.127.68/zhejiang\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n        <media id=\"337\" version=\"1\" title=\"浙江钱江\" image=\"http://cn.daroonsoft.com/images/zhejiangtv.png\" guide=\"zjqjdspd\"  >\n                <ref href=\"rtsp://211.138.120.114/ztv2\" width=\"512\" height=\"384\" bitrate=\"228\" />\n    </media>\n        <media id=\"338\" version=\"1\" title=\"浙江经视\" image=\"http://cn.daroonsoft.com/images/zhejiangtv.png\" guide=\"zjjjpd\"  >\n                <ref href=\"rtsp://211.138.120.114/ztv3\" width=\"426\" height=\"320\" bitrate=\"228\" />\n    </media>\n        <media id=\"339\" version=\"1\" title=\"浙江科教\" image=\"http://cn.daroonsoft.com/images/zhejiangtv.png\" guide=\"zjjykjpd\"  >\n                <ref href=\"rtsp://211.138.120.114/ztv4\" width=\"426\" height=\"320\" bitrate=\"228\" />\n    </media>\n        <media id=\"340\" version=\"1\" title=\"浙江影视\" image=\"http://cn.daroonsoft.com/images/zhejiangtv.png\" guide=\"zjysylpd\"  >\n                <ref href=\"rtsp://211.138.120.114/ztv5\" width=\"426\" height=\"320\" bitrate=\"228\" />\n    </media>\n        <media id=\"341\" version=\"1\" title=\"浙江民生\" image=\"http://cn.daroonsoft.com/images/zhejiangtv.png\" guide=\"zjmsxxpd\"  >\n                <ref href=\"rtsp://211.138.120.114/ztv6\" width=\"426\" height=\"320\" bitrate=\"228\" />\n    </media>\n        <media id=\"342\" version=\"1\" title=\"浙江少儿\" image=\"http://cn.daroonsoft.com/images/zhejiangtv.png\" guide=\"zjsepd\"  >\n                <ref href=\"rtsp://211.138.120.114/ztv8\" width=\"426\" height=\"320\" bitrate=\"228\" />\n    </media>\n    <media id=\"057\" version=\"17\" title=\"安徽卫视\" image=\"http://cn.daroonsoft.com/images/anhuitv.png\" guide=\"ahws\"  >\n        <ref href=\"http://v.baitv.com/signal/letv/anhui.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=13\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n        <media id=\"323\" version=\"1\" title=\"安徽影视\" image=\"http://cn.daroonsoft.com/images/anhuitv.png\" guide=\"ahyspd\"  >\n        <ref href=\"http://livecdn.ahtv.cn/channels/1502/500.flv/live\" width=\"480\" height=\"384\" bitrate=\"512\" />\n    </media>\n        <media id=\"324\" version=\"1\" title=\"安徽经济生活\" image=\"http://cn.daroonsoft.com/images/anhuitv.png\" guide=\"ahjjshpd\"  >\n        <ref href=\"http://livecdn.ahtv.cn/channels/1503/500.flv/live\" width=\"480\" height=\"384\" bitrate=\"512\" />\n    </media>\n        <media id=\"325\" version=\"1\" title=\"安徽综艺\" image=\"http://cn.daroonsoft.com/images/anhuitv.png\" guide=\"\"  >\n        <ref href=\"http://livecdn.ahtv.cn/channels/1504/500.flv/live\" width=\"480\" height=\"384\" bitrate=\"512\" />\n    </media>\n        <media id=\"326\" version=\"1\" title=\"安徽科教\" image=\"http://cn.daroonsoft.com/images/anhuitv.png\" guide=\"ahkjpd\"  >\n        <ref href=\"http://livecdn.ahtv.cn/channels/1505/500.flv/live\" width=\"480\" height=\"384\" bitrate=\"512\" />\n    </media>\n        <media id=\"327\" version=\"1\" title=\"安徽公共\" image=\"http://cn.daroonsoft.com/images/anhuitv.png\" guide=\"ahggpd\"  >\n        <ref href=\"http://livecdn.ahtv.cn/channels/1506/500.flv/live\" width=\"480\" height=\"384\" bitrate=\"512\" />\n    </media>\n        <media id=\"328\" version=\"1\" title=\"安徽人物\" image=\"http://cn.daroonsoft.com/images/anhuitv.png\" guide=\"\"  >\n        <ref href=\"http://livecdn.ahtv.cn/channels/1507/500.flv/live\" width=\"480\" height=\"384\" bitrate=\"512\" />\n    </media>\n        <media id=\"329\" version=\"1\" title=\"安徽国际\" image=\"http://cn.daroonsoft.com/images/anhuitv.png\" guide=\"\"  >\n        <ref href=\"http://livecdn.ahtv.cn/channels/1508/500.flv/live\" width=\"480\" height=\"384\" bitrate=\"512\" />\n    </media>\n    <media id=\"058\" version=\"12\" title=\"山东卫视\" image=\"http://cn.daroonsoft.com/images/shandongtv.png\" guide=\"sdws\"  >\n                <ref href=\"http://v.baitv.com/signal/letv/shandongHD_1300.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n    <media id=\"059\" version=\"14\" title=\"吉林卫视\" image=\"http://cn.daroonsoft.com/images/jilintv.png\" guide=\"jlws\"  >\n                <ref href=\"http://v.baitv.com/signal/letv/jilin.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n        <media id=\"302\" version=\"1\" title=\"吉林都市\" image=\"http://cn.daroonsoft.com/images/jilintv.png\" guide=\"jldspd\"  >\n                <ref href=\"rtsp://222.168.5.236/jlds/\" width=\"320\" height=\"240\" bitrate=\"548\" />\n    </media>\n        <media id=\"303\" version=\"1\" title=\"吉林生活\" image=\"http://cn.daroonsoft.com/images/jilintv.png\" guide=\"jlssh\"  >\n                <ref href=\"rtsp://222.168.5.236/jlsh\" width=\"320\" height=\"240\" bitrate=\"548\" />\n    </media>\n        <media id=\"304\" version=\"1\" title=\"吉林影视\" image=\"http://cn.daroonsoft.com/images/jilintv.png\" guide=\"jlyspd\"  >\n                <ref href=\"rtsp://222.168.5.236/jlys\" width=\"320\" height=\"240\" bitrate=\"548\" />\n    </media>\n        <media id=\"305\" version=\"1\" title=\"吉林乡村\" image=\"http://cn.daroonsoft.com/images/jilintv.png\" guide=\"jlxcpd\"  >\n                <ref href=\"rtsp://222.168.5.236/jlxc/\" width=\"320\" height=\"240\" bitrate=\"548\" />\n    </media>\n        <media id=\"306\" version=\"1\" title=\"吉林法制\" image=\"http://cn.daroonsoft.com/images/jilintv.png\" guide=\"jlfz\"  >\n                <ref href=\"rtsp://222.168.5.236/jlfz\" width=\"320\" height=\"240\" bitrate=\"548\" />\n    </media>\n        <media id=\"307\" version=\"1\" title=\"吉林公共\" image=\"http://cn.daroonsoft.com/images/jilintv.png\" guide=\"jlggpd\"  >\n                <ref href=\"rtsp://222.168.5.236/jlgg\" width=\"320\" height=\"240\" bitrate=\"548\" />\n    </media>\n        <media id=\"308\" version=\"1\" title=\"长春综合频道\" image=\"http://cn.daroonsoft.com/images/changchuntv.png\" guide=\"\"  >\n                <ref href=\"rtsp://video.chinactv.com/CTV/\" width=\"320\" height=\"240\" bitrate=\"548\" />\n    </media>\n        <media id=\"170\" version=\"13\" title=\"东南卫视\" image=\"http://cn.daroonsoft.com/images/dongnantv.png\" guide=\"dnws\"  >\n                <ref href=\"http://v.baitv.com/signal/letv/dongnan.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"mms://video.fjtv.net/setv\" width=\"320\" height=\"240\" bitrate=\"548\" />\n        </media>\n        <media id=\"226\" version=\"8\" title=\"福建海峡卫视\" image=\"http://cn.daroonsoft.com/images/dongnantv.png\" guide=\"\"  >\n                <ref href=\"mms://video.fjtv.net/fjtv9\" width=\"320\" height=\"240\" bitrate=\"548\" />\n                <ref href=\"mms://video.fjtv.net/fjtv10\" width=\"320\" height=\"240\" bitrate=\"548\" />\n        </media>\n        <media id=\"345\" version=\"1\" title=\"福建综合\" image=\"http://cn.daroonsoft.com/images/dongnantv.png\" guide=\"fjzhpd\"  >\n                <ref href=\"mms://video.fjtv.net/fjtv1\" width=\"320\" height=\"240\" bitrate=\"548\" />\n        </media>\n        <media id=\"346\" version=\"1\" title=\"福建公共\" image=\"http://cn.daroonsoft.com/images/dongnantv.png\" guide=\"fjggpd\"  >\n                <ref href=\"mms://video.fjtv.net/fjtv3\" width=\"320\" height=\"240\" bitrate=\"548\" />\n        </media>\n        <media id=\"347\" version=\"1\" title=\"福建新闻\" image=\"http://cn.daroonsoft.com/images/dongnantv.png\" guide=\"fjxwpd\"  >\n                <ref href=\"mms://video.fjtv.net/fjtv4\" width=\"320\" height=\"240\" bitrate=\"548\" />\n        </media>\n        <media id=\"348\" version=\"1\" title=\"福建电视剧\" image=\"http://cn.daroonsoft.com/images/dongnantv.png\" guide=\"fjdsjpd\"  >\n                <ref href=\"mms://video.fjtv.net/fjtv5\" width=\"320\" height=\"240\" bitrate=\"548\" />\n        </media>\n        <media id=\"349\" version=\"1\" title=\"福建都市时尚\" image=\"http://cn.daroonsoft.com/images/dongnantv.png\" guide=\"fjdssspd\"  >\n                <ref href=\"mms://video.fjtv.net/fjtv6\" width=\"320\" height=\"240\" bitrate=\"548\" />\n        </media>\n        <media id=\"350\" version=\"1\" title=\"福建经济生活\" image=\"http://cn.daroonsoft.com/images/dongnantv.png\" guide=\"fjjjshpd\"  >\n                <ref href=\"mms://video.fjtv.net/fjtv7\" width=\"320\" height=\"240\" bitrate=\"548\" />\n        </media>\n        <media id=\"286\" version=\"10\" title=\"厦门卫视\" image=\"http://cn.daroonsoft.com/images/xiamentv.png\" guide=\"xmws\"  >\n                <ref href=\"mms://mediasrv1.iptv.xmg.com.cn/tvhaixia\" width=\"480\" height=\"384\" bitrate=\"544\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=6\" width=\"640\" height=\"480\" bitrate=\"1240\" />\n        </media>\n        <media id=\"171\" version=\"5\" title=\"甘肃卫视\" image=\"http://cn.daroonsoft.com/images/gansutv.png\" guide=\"gsws\"  >\n                <ref href=\"http://v.baitv.com/signal/letv/gansu.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n        </media>\n        <media id=\"172\" version=\"8\" title=\"河北卫视\" image=\"http://cn.daroonsoft.com/images/hebeitv.png\" guide=\"hebeiws\"  >\n                <ref href=\"http://v.baitv.com/signal/letv/hebei.m3u8\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n        </media>\n        <media id=\"174\" version=\"10\" title=\"青海卫视\" image=\"http://cn.daroonsoft.com/images/qinghaitv.png\" guide=\"qhws\"  >\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=12\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=71\" width=\"352\" height=\"288\" bitrate=\"512\" />\n        </media>\n    <media id=\"060\" version=\"5\" title=\"珠海1台\" image=\"http://cn.daroonsoft.com/images/zhuhaitv.png\" guide=\"\"  >\n        <ref href=\"http://58.248.254.7:1935/live/izhuhai.sdp/playlist.m3u8\" width=\"320\" height=\"240\" bitrate=\"128\" />\n                <ref href=\"rtmp://live.zhtv.com/live/zhtv1\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n        <media id=\"334\" version=\"5\" title=\"珠海2台\" image=\"http://cn.daroonsoft.com/images/zhuhaitv.png\" guide=\"\"  >\n                <ref href=\"rtmp://live.zhtv.com/live/zhtv2\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n    <media id=\"061\" version=\"11\" title=\"南方卫视\" image=\"http://cn.daroonsoft.com/images/tvs.png\" guide=\"nfwspd\"  >\n        <ref href=\"http://219.232.160.143:5080/hls/48a26bba89a367c8a636749b4fc300ad.m3u8\" width=\"320\" height=\"240\" bitrate=\"128\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=16\" width=\"640\" height=\"480\" bitrate=\"900\" />\n    </media>\n    <media id=\"062\" version=\"6\" title=\"南方影视频道\" image=\"http://cn.daroonsoft.com/images/tvs.png\" guide=\"nfyspd\"  >\n        <ref href=\"http://58.248.254.7:1935/live/itvs4.sdp/playlist.m3u8\" width=\"320\" height=\"240\" bitrate=\"128\" />\n                <ref href=\"rtsp://116.199.127.68/nanfang_movie\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n    <media id=\"063\" version=\"14\" title=\"旅游卫视\" image=\"http://cn.daroonsoft.com/images/nvyoutv.png\" guide=\"lyws\"  >\n        <ref href=\"mms://bupt02.video.edu.cn/LYWS\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=28\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n    </media>\n        <media id=\"352\" version=\"13\" title=\"海南综合\" image=\"http://cn.daroonsoft.com/images/nvyoutv.png\" guide=\"hnzhpd\"  >\n        <ref href=\"rtsp://41.bluehn.com/LIVECAM1\" width=\"384\" height=\"288\" bitrate=\"256\" />\n    </media>\n        <media id=\"353\" version=\"13\" title=\"海南新闻\" image=\"http://cn.daroonsoft.com/images/nvyoutv.png\" guide=\"\"  >\n        <ref href=\"rtsp://40.bluehn.com/LIVECAM2\" width=\"384\" height=\"288\" bitrate=\"256\" />\n    </media>\n        <media id=\"354\" version=\"13\" title=\"海南影视剧\" image=\"http://cn.daroonsoft.com/images/nvyoutv.png\" guide=\"hnysylpd\"  >\n        <ref href=\"rtsp://41.bluehn.com/LIVECAM3\" width=\"384\" height=\"288\" bitrate=\"256\" />\n    </media>\n        <media id=\"355\" version=\"13\" title=\"海南综艺生活\" image=\"http://cn.daroonsoft.com/images/nvyoutv.png\" guide=\"\"  >\n        <ref href=\"rtsp://43.bluehn.com/LIVECAM4\" width=\"384\" height=\"288\" bitrate=\"256\" />\n    </media>\n        <media id=\"356\" version=\"13\" title=\"海南少儿\" image=\"http://cn.daroonsoft.com/images/nvyoutv.png\" guide=\"hnsepd\"  >\n        <ref href=\"rtsp://42.bluehn.com/LIVECAM5\" width=\"384\" height=\"288\" bitrate=\"256\" />\n    </media>\n    <media id=\"064\" version=\"14\" title=\"深圳卫视\" image=\"http://cn.daroonsoft.com/images/shenzhentv.png\" guide=\"szws\"  >\n        <ref href=\"http://v.baitv.com/signal/letv/shenzhenHD_1300.m3u8\" width=\"576\" height=\"432\" bitrate=\"1440\" />\n                <ref href=\"http://112.231.23.20:554/rtplive/tv29/playlist.m3u8\" width=\"320\" height=\"240\" bitrate=\"128\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=45\" width=\"640\" height=\"480\" bitrate=\"900\" />\n                <ref href=\"rtsp://116.199.127.68/shenzhen\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n    <media id=\"065\" version=\"19\" title=\"广东卫视\" image=\"http://cn.daroonsoft.com/images/guangdongtv.png\" guide=\"gdws\"  >\n                <ref href=\"http://v.baitv.com/signal/letv/guangdongHD_1300.m3u8\" width=\"800\" height=\"448\" bitrate=\"900\" />\n    </media>\n    <media id=\"123\" version=\"9\" title=\"广东珠江\" image=\"http://cn.daroonsoft.com/images/guangdongtv.png\" guide=\"gdzjpd\"  >\n        <ref href=\"http://zb.v.qq.com:1863/?progid=100002500\" width=\"640\" height=\"480\" bitrate=\"900\" />\n                <ref href=\"http://58.248.254.7:1935/live/igdzj.sdp/playlist.m3u8\" width=\"320\" height=\"240\" bitrate=\"128\" />\n                <ref href=\"rtsp://116.199.127.68/zhujiang\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n        </media>\n    <media id=\"124\" version=\"6\" title=\"广东新闻\" image=\"http://cn.daroonsoft.com/images/guangdongtv.png\" guide=\"gdxwpd\"  >\n        <ref href=\"http://182.131.19.173:1863/2631736979.flv\" width=\"640\" height=\"480\" bitrate=\"900\" />\n    </media>\n    <media id=\"015\" version=\"16\" title=\"广东体育\" image=\"http://cn.daroonsoft.com/images/guangdongtv.png\" guide=\"gdtypd\"  >\n                <ref href=\"rtsp://121.14.129.221/asiangames/live/gdsports-s.sdp\" width=\"320\" height=\"240\" bitrate=\"128\" />\n                <ref href=\"rtsp://121.14.129.221/asiangames/live/gdsports-ah.sdp\" width=\"320\" height=\"240\" bitrate=\"128\" />\n                <ref href=\"rtsp://121.14.129.221/asiangames/live/gdsports-h.sdp\" width=\"320\" height=\"240\" bitrate=\"128\" />\n                <ref href=\"rtsp://116.199.127.68/gdtv_sport\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n                <ref href=\"rtmp://v1.gdtv.cn:1935/live/sports\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n    <media id=\"066\" version=\"4\" title=\"广州影视\" image=\"http://cn.daroonsoft.com/images/guangzhouwstv.png\" guide=\"gzyspd\"  >\n        <ref href=\"http://58.248.254.7:1935/live/igzys.sdp/playlist.m3u8\" width=\"320\" height=\"240\" bitrate=\"128\" />\n                <ref href=\"rtsp://116.199.127.68/gztv_movie\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n        <media id=\"234\" version=\"1\" title=\"广州新闻\" image=\"http://cn.daroonsoft.com/images/guangzhouwstv.png\" guide=\"gzxwpd\"  >\n        <ref href=\"rtsp://live21.gztv.com/gztv_news\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n        <media id=\"235\" version=\"2\" title=\"广州综合\" image=\"http://cn.daroonsoft.com/images/guangzhouwstv.png\" guide=\"gzzhpd\"  >\n        <ref href=\"rtsp://live21.gztv.com/gztv_gz?\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n                <ref href=\"rtsp://116.199.127.68/gztv_gz\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n        <media id=\"369\" version=\"1\" title=\"广州竞赛\" image=\"http://cn.daroonsoft.com/images/guangzhouwstv.png\" guide=\"gzjspd\"  >\n        <ref href=\"rtsp://116.199.127.68/gztv_sport\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n        <media id=\"191\" version=\"3\" title=\"惠州综合\" image=\"http://cn.daroonsoft.com/images/huizhouzonghtv.png\" guide=\"gdhzxwzhpd\"  >\n                <ref href=\"http://liveh2.sobeycache.com/live/5207befb73644f90b0b90a1591d96baa?fmt=h264_800k_flv\" width=\"480\" height=\"320\" bitrate=\"548\" />\n        </media>\n        <media id=\"335\" version=\"2\" title=\"惠州公共\" image=\"http://cn.daroonsoft.com/images/huizhouzonghtv.png\" guide=\"\"  >\n                <ref href=\"http://liveh2.sobeycache.com/live/e8e5530ca3e744f1867f208876a84c18?fmt=h264_800k_flv\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n        </media>\n        <media id=\"192\" version=\"2\" title=\"江门综合\" image=\"http://cn.daroonsoft.com/images/jiangmenzonghtv.png\" guide=\"\"  >\n                <ref href=\"http://58.248.254.7:1935/live/ijmws.sdp/playlist.m3u8\" width=\"480\" height=\"320\" bitrate=\"548\" />\n        </media>\n        <media id=\"193\" version=\"2\" title=\"佛山综合\" image=\"http://cn.daroonsoft.com/images/fstv.png\" guide=\"fsxwzhpd\"  >\n                <ref href=\"http://58.248.254.7:1935/live/ifsws.sdp/playlist.m3u8\" width=\"480\" height=\"320\" bitrate=\"548\" />\n        </media>\n        <media id=\"194\" version=\"2\" title=\"佛山公共\" image=\"http://cn.daroonsoft.com/images/fstv.png\" guide=\"fsggpd\"  >\n                <ref href=\"http://58.248.254.7:1935/live/ifsws2.sdp/playlist.m3u8\" width=\"480\" height=\"320\" bitrate=\"548\" />\n        </media>\n        <media id=\"195\" version=\"2\" title=\"河源综合\" image=\"http://cn.daroonsoft.com/images/hyrtv.png\" guide=\"\"  >\n                <ref href=\"http://58.248.254.7:1935/live/ihyzh.sdp/playlist.m3u8\" width=\"320\" height=\"240\" bitrate=\"128\" />\n        </media>\n        <media id=\"196\" version=\"2\" title=\"河源公共\" image=\"http://cn.daroonsoft.com/images/hyrtv.png\" guide=\"\"  >\n                <ref href=\"http://58.248.254.7:1935/live/ihygg.sdp/playlist.m3u8\" width=\"320\" height=\"240\" bitrate=\"128\" />\n        </media>\n        <media id=\"197\" version=\"2\" title=\"梅州综合\" image=\"http://cn.daroonsoft.com/images/meizhoutv.png\" guide=\"\"  >\n                <ref href=\"http://58.248.254.7:1935/live/imzws.sdp/playlist.m3u8\" width=\"480\" height=\"320\" bitrate=\"548\" />\n        </media>\n        <media id=\"198\" version=\"2\" title=\"云浮综合\" image=\"http://cn.daroonsoft.com/images/yunfuzonghtv.png\" guide=\"\"  >\n                <ref href=\"http://58.248.254.7:1935/live/iyunfu.sdp/playlist.m3u8\" width=\"480\" height=\"320\" bitrate=\"548\" />\n        </media>\n        <media id=\"199\" version=\"3\" title=\"韶关台\" image=\"http://cn.daroonsoft.com/images/shaoguantv.png\" guide=\"\"  >\n                <ref href=\"http://58.248.254.7:1935/live/isgws.sdp/playlist.m3u8\" width=\"320\" height=\"240\" bitrate=\"128\" />\n        </media>\n        <media id=\"200\" version=\"2\" title=\"汕头台\" image=\"http://cn.daroonsoft.com/images/shantoutv.png\" guide=\"\"  >\n                <ref href=\"http://58.248.254.7:1935/live/istws.sdp/playlist.m3u8\" width=\"320\" height=\"240\" bitrate=\"128\" />\n        </media>\n    <media id=\"016\" version=\"16\" title=\"凤凰卫视\" image=\"http://cn.daroonsoft.com/images/Phoenixzwtv.jpg\" guide=\"fhzw\">\n                <ref href=\"mms://222.47.26.81/litv01\" width=\"320\" height=\"240\" bitrate=\"598\" />\n                <ref href=\"rtsp://116.199.127.68/fenghuang\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n    <media id=\"017\" version=\"20\" title=\"凤凰资讯\" image=\"http://cn.daroonsoft.com/images/Phoenixzxtv.jpg\" guide=\"fhzx\">\n        <ref href=\"mms://222.47.26.81/litv03\" width=\"320\" height=\"240\" bitrate=\"256\" />\n                <ref href=\"http://ts.3gv.ifeng.com/live/iphone/zwt/index_256k.m3u8\" width=\"320\" height=\"240\" bitrate=\"256\" />\n        </media>\n    <media id=\"068\" version=\"6\" title=\"阳光卫视\" image=\"http://cn.daroonsoft.com/images/suntv.png\" guide=\"ygws\"  >\n        <ref href=\"rtsp://65.49.26.231/suntv\" width=\"320\" height=\"240\" bitrate=\"548\" />\n    </media>\n    <media id=\"070\" version=\"9\" title=\"星空卫视\" image=\"http://cn.daroonsoft.com/images/xingkongweishi.png\" guide=\"xkws\"  >\n        <ref href=\"mms://222.47.62.74/litv06\" width=\"320\" height=\"240\" bitrate=\"548\" />\n                <ref href=\"rtsp://116.199.127.68/xingkong\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n    <media id=\"164\" version=\"6\" title=\"CHC动作电影\" image=\"http://cn.daroonsoft.com/images/chcdzdy.png\" guide=\"chcdzdy\"  >\n        <ref href=\"rtsp://121.14.129.221/broadcast/pushfeeder/rtpencoder/dongzdy-h.sdp\" width=\"320\" height=\"240\" bitrate=\"256\" />\n                <ref href=\"rtsp://121.14.129.221/broadcast/pushfeeder/rtpencoder/dongzdy-s.sdp\" width=\"176\" height=\"144\" bitrate=\"156\" />\n    </media>\n    <media id=\"165\" version=\"6\" title=\"珠江电影\" image=\"http://cn.daroonsoft.com/images/zjmovie.png\" guide=\"\"  >\n        <ref href=\"rtsp://121.14.129.221/broadcast/pushfeeder/rtpencoder/zjdy-h.sdp\" width=\"320\" height=\"240\" bitrate=\"256\" />\n                <ref href=\"rtsp://121.14.129.221/broadcast/pushfeeder/rtpencoder/zjdy-c.sdp\" width=\"176\" height=\"144\" bitrate=\"156\" />\n    </media>\n    <media id=\"159\" version=\"35\" title=\"澳亚卫视\" image=\"http://cn.daroonsoft.com/images/mastv.png\" guide=\"ayws\"  >\n        <ref href=\"rtsp://59.125.169.12/MASTV_BS_500K\" width=\"640\" height=\"480\" bitrate=\"491\" />\n    </media>\n    <media id=\"160\" version=\"3\" title=\"澳视澳门\" image=\"http://cn.daroonsoft.com/images/aoshi.png\" guide=\"\"  >\n        <ref href=\"mms://media4.tdm.com.mo/ch1\" width=\"320\" height=\"240\" bitrate=\"548\" />\n    </media>\n    <media id=\"161\" version=\"2\" title=\"Canal Macau\" image=\"http://cn.daroonsoft.com/images/aoshi.png\" guide=\"\"  >\n        <ref href=\"mms://media4.tdm.com.mo/ch2\" width=\"320\" height=\"240\" bitrate=\"548\" />\n    </media>\n    <media id=\"162\" version=\"4\" title=\"澳视体育\" image=\"http://cn.daroonsoft.com/images/aoshi.png\" guide=\"\"  >\n        <ref href=\"mms://media4.tdm.com.mo/ch4\" width=\"320\" height=\"240\" bitrate=\"548\" />\n    </media>\n    <media id=\"163\" version=\"4\" title=\"澳视生活\" image=\"http://cn.daroonsoft.com/images/aoshishtv.png\" guide=\"\"  >\n        <ref href=\"mms://media4.tdm.com.mo/ch3\" width=\"320\" height=\"240\" bitrate=\"548\" />\n    </media>\n        <media id=\"294\" version=\"4\" title=\"澳门莲花台\" image=\"http://cn.daroonsoft.com/images/lotus.png\" guide=\"\"  >\n        <ref href=\"mms://222.47.62.74/litv12\" width=\"320\" height=\"240\" bitrate=\"548\" />\n                <ref href=\"mms://222.47.26.81/litv12\" width=\"320\" height=\"240\" bitrate=\"548\" />\n    </media>\n        <media id=\"075\" version=\"11\" title=\"华娱卫视\" image=\"http://cn.daroonsoft.com/images/cetvtv.PNG\" guide=\"hyws\"  >\n        <ref href=\"mms://222.47.62.74/litv13\" width=\"320\" height=\"240\" bitrate=\"548\" />\n                <ref href=\"rtsp://116.199.127.68/huayu\" width=\"720\" height=\"576\" bitrate=\"1044\" />\n    </media>\n        <media id=\"231\" version=\"1\" title=\"东风37台\" image=\"http://cn.daroonsoft.com/images/aziotv.png\" guide=\"\"  >\n                <ref href=\"rtsp://203.69.41.22/TA_AZIO_AZIOT_200_MO\" width=\"320\" height=\"240\" bitrate=\"548\" />\n        </media>\n        <media id=\"236\" version=\"3\" title=\"健康卫视\" image=\"http://cn.daroonsoft.com/images/jktv.png\" guide=\"\"  >\n                <ref href=\"rtsp://mms.jkwshk.com/jkws\" width=\"640\" height=\"480\" bitrate=\"412\" />\n                <ref href=\"http://gslb.tv.sohu.com/live?cid=53\" width=\"640\" height=\"480\" bitrate=\"1044\" />\n        </media>\n        <media id=\"201\" version=\"3\" title=\"邮轮旅游\" image=\"http://cn.daroonsoft.com/images/youlunlvyoutv.png\" guide=\"\"  >\n                <ref href=\"http://58.248.254.7:1935/live/iylly.sdp/playlist.m3u8\" width=\"320\" height=\"240\" bitrate=\"128\" />\n        </media>\n        <media id=\"107\" version=\"5\" title=\"NOW\" image=\"http://cn.daroonsoft.com/images/nowtv.png\" guide=\"\"  >\n                <ref href=\"mms://222.47.26.81/litv14\" width=\"320\" height=\"240\" bitrate=\"548\" />\n        </media>\n        <media id=\"203\" version=\"2\" title=\"韩KBS高清\" image=\"http://cn.daroonsoft.com/images/kbstv.png\" guide=\"\"  >\n                <ref href=\"http://news24kbs-2.gscdn.com/news24_300/_definst_/news24_300.stream/playlist.m3u8\" width=\"480\" height=\"270\" bitrate=\"420\" />\n        </media>\n        <media id=\"204\" version=\"2\" title=\"韩WOWNet\" image=\"http://cn.daroonsoft.com/images/wownettv.png\" guide=\"\"  >\n                <ref href=\"http://wowmlive.shinbnstar.com:1935/live2/wowtv/playlist.m3u8\" width=\"320\" height=\"240\" bitrate=\"128\" />\n        </media>\n        <media id=\"208\" version=\"2\" title=\"日NHK高清\" image=\"http://cn.daroonsoft.com/images/nhktv.png\" guide=\"\"  >\n                <ref href=\"http://plslive-w.nhk.or.jp/nhkworld/app/high.m3u8\" width=\"480\" height=\"272\" bitrate=\"548\" />\n        </media>\n        <media id=\"209\" version=\"2\" title=\"日NHK\" image=\"http://cn.daroonsoft.com/images/nhktv.png\" guide=\"\"  >\n                <ref href=\"http://plslive-w.nhk.or.jp/nhkworld/app/mid.m3u8\" width=\"480\" height=\"272\" bitrate=\"548\" />\n        </media>\n        <media id=\"212\" version=\"4\" title=\"euronews\" image=\"http://cn.daroonsoft.com/images/euronews.png\" guide=\"\"  >\n                <ref href=\"http://media4.lsops.net/live/_definst_/euronews_en_medium.sdp/playlist.m3u8\" width=\"480\" height=\"304\" bitrate=\"548\" />\n                <ref href=\"rtsp://media2.lsops.net/live/euronews_en_high.sdp\" width=\"480\" height=\"304\" bitrate=\"548\" />\n        </media>\n        <media id=\"213\" version=\"6\" title=\"CNN\" image=\"http://cn.daroonsoft.com/images/cnn.png\" guide=\"cnn\"  >\n                <ref href=\"http://media4.lsops.net/live/_definst_/cnn_en_medium.sdp/playlist.m3u8\" width=\"432\" height=\"320\" bitrate=\"548\" />\n        </media>\n        <media id=\"277\" version=\"3\" title=\"星空体育\" image=\"http://cn.daroonsoft.com/images/star_sports.png\" guide=\"\"  >\n                <ref href=\"rtmp://livertmp1.wasu.cn/live3/stars\" width=\"640\" height=\"480\" bitrate=\"412\" />\n        </media>\n\n  </body>\n  <categories>\n        <category id=\"01\" version=\"9\" name=\"中央电视台\" >\n                <item>001</item>\n                <item>002</item>\n                <item>003</item>\n                <item>004</item>\n                <item>005</item>\n                <item>006</item>\n                <item>007</item>\n                <item>008</item>\n                <item>009</item>\n                <item>010</item>\n                <item>011</item>\n                <item>012</item>\n                <item>013</item>\n                <item>014</item>\n                <item>214</item>\n                <item>216</item>\n                <item>072</item>\n                <item>073</item>\n                <item>366</item>\n                <item>370</item>\n        </category>\n        <category id=\"02\" version=\"39\" name=\"地方卫视\" >\n                <item>018</item>\n                <item>027</item>\n                <item>036</item>\n                <item>037</item>\n                <item>038</item>\n                <item>039</item>\n                <item>042</item>\n                <item>043</item>\n                <item>044</item>\n                <item>045</item>\n                <item>046</item>\n                <item>047</item>\n                <item>048</item>\n                <item>049</item>\n                <item>050</item>\n                <item>051</item>\n                <item>052</item>\n                <item>053</item>\n                <item>054</item>\n                <item>055</item>\n                <item>056</item>\n                <item>057</item>\n                <item>058</item>\n                <item>059</item>\n                <item>061</item>\n                <item>064</item>\n                <item>170</item>\n                <item>171</item>\n                <item>172</item>\n                <item>174</item>\n                <item>286</item>\n        </category>\n        <category id=\"03\" version=\"36\" name=\"港澳台电视台\" >\n                <item>016</item>\n                <item>017</item>\n                <item>068</item>\n                <item>070</item>\n                <item>075</item>\n                <item>107</item>\n\t\t        <item>159</item>\n\t\t        <item>160</item>\n\t\t        <item>161</item>\n\t\t        <item>162</item>\n\t\t        <item>163</item>\n                <item>164</item>\n                <item>231</item>\n                <item>294</item>\n        </category>\n        <category id=\"04\" version=\"31\" name=\"国外电视台\" >\n                <item>203</item>\n                <item>204</item>\n                <item>208</item>\n                <item>209</item>\n                <item>212</item>\n                <item>213</item>\n                <item>201</item>\n                <item>277</item>\n        </category>\n        <category id=\"05\" version=\"30\" name=\"体育频道\" >\n                <item>005</item>\n                <item>015</item>\n                <item>094</item>\n                <item>126</item>\n                <item>140</item>\n                <item>322</item>\n                <item>366</item>\n                <item>367</item>\n                <item>368</item>\n                <item>277</item>\n                <item>369</item>\n        </category>\n        <category id=\"06\" version=\"18\" name=\"湖南电视台\" >\n                <item>018</item>\n                <item>022</item>\n                <item>112</item>\n                <item>113</item>\n                <item>114</item>\n        </category>\n        <category id=\"07\" version=\"15\" name=\"上海电视台\" >\n                <item>027</item>\n                <item>108</item>\n                <item>111</item>\n                <item>126</item>\n                <item>127</item>\n                <item>128</item>\n                <item>130</item>\n                <item>131</item>\n                <item>132</item>\n                <item>133</item>\n                <item>372</item>\n                <item>373</item>\n                <item>240</item>\n                <item>320</item>\n                <item>368</item>\n        </category>\n        <category id=\"08\" version=\"6\" name=\"北京电视台\" >\n                <item>036</item>\n                <item>085</item>\n                <item>086</item>\n                <item>087</item>\n                <item>088</item>\n                <item>089</item>\n                <item>090</item>\n                <item>094</item>\n        </category>\n        <category id=\"09\" version=\"8\" name=\"浙江电视台\" >\n                <item>056</item>\n                <item>115</item>\n                <item>116</item>\n                <item>117</item>\n                <item>118</item>\n                <item>119</item>\n                <item>202</item>\n                <item>337</item>\n                <item>338</item>\n                <item>339</item>\n                <item>340</item>\n                <item>341</item>\n                <item>342</item>\n        </category>\n        <category id=\"10\" version=\"6\" name=\"湖北电视台\" >\n                <item>040</item>\n                <item>134</item>\n                <item>140</item>\n                <item>141</item>\n                <item>225</item>\n        </category>\n        <category id=\"11\" version=\"11\" name=\"深圳电视台\" >\n                <item>064</item>\n        </category>\n        <category id=\"12\" version=\"11\" name=\"广东电视台\" >\n                <item>015</item>\n                <item>060</item>\n                <item>061</item>\n                <item>062</item>\n                <item>065</item>\n                <item>066</item>\n                <item>123</item>\n                <item>124</item>\n        <item>165</item>\n                <item>191</item>\n                <item>192</item>\n                <item>193</item>\n                <item>194</item>\n                <item>195</item>\n                <item>196</item>\n                <item>197</item>\n                <item>198</item>\n                <item>199</item>\n                <item>200</item>\n                <item>234</item>\n                <item>235</item>\n                <item>334</item>\n                <item>335</item>\n                <item>369</item>\n        </category>\n        <category id=\"13\" version=\"1\" name=\"四川电视台\" >\n                <item>055</item>\n                <item>295</item>\n                <item>296</item>\n                <item>297</item>\n                <item>298</item>\n                <item>299</item>\n                <item>300</item>\n        \t\t<item>301</item>\n        </category>\n        <category id=\"014\" version=\"1\" name=\"安徽电视台\" >\n                <item>057</item>\n                <item>323</item>\n                <item>324</item>\n                <item>325</item>\n                <item>326</item>\n                <item>327</item>\n                <item>328</item>\n        \t\t<item>329</item>\n        </category>\n        <category id=\"15\" version=\"1\" name=\"吉林电视台\" >\n                <item>059</item>\n                <item>302</item>\n                <item>303</item>\n                <item>304</item>\n                <item>305</item>\n                <item>306</item>\n                <item>307</item>\n        \t\t<item>308</item>\n        </category>\n        <category id=\"16\" version=\"2\" name=\"福建电视台\" >\n                <item>170</item>\n                <item>226</item>\n                <item>345</item>\n                <item>346</item>\n                <item>347</item>\n                <item>348</item>\n                <item>349</item>\n        \t\t<item>350</item>\n        \t\t<item>286</item>\n        </category>\n        <category id=\"17\" version=\"2\" name=\"黑龙江电视台\" >\n                <item>042</item>\n        </category>\n        <category id=\"18\" version=\"1\" name=\"武汉电视台\" >\n                <item>322</item>\n                <item>332</item>\n        </category>\n        <category id=\"19\" version=\"1\" name=\"云南电视台\" >\n                <item>047</item>\n                <item>310</item>\n                <item>311</item>\n                <item>312</item>\n        </category>\n        <category id=\"020\" version=\"1\" name=\"海南电视台\" >\n                <item>063</item>\n                <item>352</item>\n                <item>353</item>\n                <item>354</item>\n                <item>355</item>\n                <item>356</item>\n        </category>\n        <category id=\"21\" version=\"1\" name=\"甘肃电视台\" >\n                <item>171</item>\n        </category>\n        <category id=\"22\" version=\"3\" name=\"陕西电视台\" >\n                <item>045</item>\n        </category>\n        <category id=\"23\" version=\"2\" name=\"其他电视台\" >\n                <item>187</item>\n                <item>236</item>\n        </category>\n  </categories>\n</list>"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/activity/ABPlayerApplication.java",
    "content": "package com.cjj.bb.activity;\n\n\nimport android.app.Application;\nimport android.content.Context;\nimport android.os.Environment;\n\nimport com.cjj.bb.view.FileUtils;\n\n\npublic class ABPlayerApplication extends Application{\n\tprivate static ABPlayerApplication mApplication;\n\n\t/** OPlayer SD卡缓存路径 */\n\tpublic static final String OPLAYER_CACHE_BASE = Environment.getExternalStorageDirectory() + \"/oplayer\";\n\t/** 视频截图缓冲路径 */\n\tpublic static final String OPLAYER_VIDEO_THUMB = OPLAYER_CACHE_BASE + \"/thumb/\";\n\t/** 首次扫描 */\n\tpublic static final String PREF_KEY_FIRST = \"application_first\";\n\n\t@Override\n\tpublic void onCreate() {\n\t\tsuper.onCreate();\n\t\tmApplication = this;\n\n\t\tinit();\n\t}\n\n\tprivate void init() {\n\t\t//创建缓存目录\n\t\tFileUtils.createIfNoExists(OPLAYER_CACHE_BASE);\n\t\tFileUtils.createIfNoExists(OPLAYER_VIDEO_THUMB);\n\t}\n\n\tpublic static ABPlayerApplication getApplication() {\n\t\treturn mApplication;\n\t}\n\n\tpublic static Context getContext() {\n\t\treturn mApplication;\n\t}\n\n\t/** 销毁 */\n\tpublic void destory() {\n\t\tmApplication = null;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/activity/BiliVideoViewActivity.java",
    "content": "package com.cjj.bb.activity;\n/*\n * Copyright (C) 2012 YIXIA.COM\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport io.vov.vitamio.utils.FileUtils;\nimport io.vov.vitamio.utils.Log;\nimport io.vov.vitamio.widget.OutlineTextView;\n\nimport java.io.ByteArrayInputStream;\nimport java.io.File;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.nio.ByteBuffer;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.concurrent.atomic.AtomicBoolean;\nimport java.util.zip.DataFormatException;\n\nimport org.json.JSONException;\nimport org.json.JSONObject;\nimport org.jsoup.Jsoup;\nimport org.jsoup.helper.HttpConnection.Response;\n\nimport master.flame.danmaku.controller.IDanmakuView;\nimport master.flame.danmaku.danmaku.loader.ILoader;\nimport master.flame.danmaku.danmaku.loader.IllegalDataException;\nimport master.flame.danmaku.danmaku.loader.android.DanmakuLoaderFactory;\nimport master.flame.danmaku.danmaku.model.android.DanmakuGlobalConfig;\nimport master.flame.danmaku.danmaku.model.android.Danmakus;\nimport master.flame.danmaku.danmaku.parser.BaseDanmakuParser;\nimport master.flame.danmaku.danmaku.parser.IDataSource;\nimport master.flame.danmaku.danmaku.parser.android.BiliDanmukuParser;\n\nimport android.annotation.SuppressLint;\nimport android.app.Activity;\nimport android.app.KeyguardManager;\nimport android.content.BroadcastReceiver;\nimport android.content.ComponentName;\nimport android.content.Context;\nimport android.content.Intent;\nimport android.content.IntentFilter;\nimport android.content.ServiceConnection;\nimport android.content.res.Configuration;\nimport android.graphics.Bitmap;\nimport android.graphics.drawable.AnimationDrawable;\nimport android.media.AudioManager;\nimport android.net.Uri;\nimport android.os.AsyncTask;\nimport android.os.BatteryManager;\nimport android.os.Build;\nimport android.os.Bundle;\nimport android.os.Environment;\nimport android.os.Handler;\nimport android.os.IBinder;\nimport android.os.Message;\nimport android.text.TextUtils;\nimport android.view.KeyEvent;\nimport android.view.SurfaceHolder;\nimport android.view.View;\nimport android.view.ViewGroup.MarginLayoutParams;\nimport android.view.WindowManager;\nimport android.widget.ImageView;\nimport android.widget.TextView;\nimport android.widget.Toast;\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.utils.CompressionTools;\nimport com.cjj.bb.utils.DeviceUtils;\nimport com.cjj.bb.utils.HttpUtil;\nimport com.cjj.bb.utils.ImageUtils;\nimport com.cjj.bb.utils.MediaUtils;\nimport com.cjj.bb.utils.PreferenceUtils;\nimport com.cjj.bb.utils.StringUtils;\nimport com.cjj.bb.utils.ToastUtils;\nimport com.cjj.bb.view.ApplicationUtils;\nimport com.cjj.bb.view.MediaController;\nimport com.cjj.bb.view.PlayerService;\nimport com.cjj.bb.view.VP;\nimport com.cjj.bb.view.VideoView;\n\n\n@SuppressLint(\"HandlerLeak\")\npublic class BiliVideoViewActivity extends Activity implements\n\t\tMediaController.MediaPlayerControl, VideoView.SurfaceCallback {\n\n\tpublic static final int RESULT_FAILED = -7;\n\n\tprivate static final IntentFilter USER_PRESENT_FILTER = new IntentFilter(\n\t\t\tIntent.ACTION_USER_PRESENT);\n\tprivate static final IntentFilter SCREEN_FILTER = new IntentFilter(\n\t\t\tIntent.ACTION_SCREEN_ON);\n\tprivate static final IntentFilter HEADSET_FILTER = new IntentFilter(\n\t\t\tIntent.ACTION_HEADSET_PLUG);\n\tprivate static final IntentFilter BATTERY_FILTER = new IntentFilter(\n\t\t\tIntent.ACTION_BATTERY_CHANGED);\n\n\tprivate IDanmakuView mDanmakuView;//弹幕控件\n\tprivate BaseDanmakuParser mParser;\n\tprivate String danmakuPath;\n\tprivate String av;\n\tprivate String page;\n\tprivate boolean isload = false;\n\tprivate boolean isfirst = true;\n\tprivate View startVideo;\n\tprivate TextView startVideoInfo;\n\tprivate String startText = \"初始化播放器...\";\n\tprivate ImageView biliAnim;\n\tprivate AnimationDrawable anim;\n\t\n\t\n\tprivate boolean mCreated = false;\n\tprivate boolean mNeedLock;\n\tprivate String mDisplayName;\n\tprivate String mBatteryLevel;\n\tprivate boolean mFromStart;\n\tprivate int mLoopCount;\n\tprivate boolean mSaveUri;\n\tprivate int mParentId;\n\tprivate float mStartPos;\n\tprivate boolean mEnd = false;\n\tprivate String mSubPath;\n\tprivate boolean mSubShown;\n\tprivate View mViewRoot;\n\tprivate VideoView mVideoView;\n\tprivate View mVideoLoadingLayout;\n\tprivate TextView mVideoLoadingText;\n\tprivate View mSubtitleContainer;\n\tprivate OutlineTextView mSubtitleText;\n\tprivate ImageView mSubtitleImage;\n\tprivate Uri mUri;\n\tprivate ScreenReceiver mScreenReceiver;\n\tprivate HeadsetPlugReceiver mHeadsetPlugReceiver;\n\tprivate UserPresentReceiver mUserPresentReceiver;\n\tprivate BatteryReceiver mBatteryReceiver;\n\tprivate boolean mReceiverRegistered = false;\n\tprivate boolean mHeadsetPlaying = false;\n\tprivate boolean mCloseComplete = false;\n\tprivate boolean mIsHWCodec = false;\n\n\tprivate MediaController mMediaController;\n\tprivate PlayerService vPlayer;\n\tprivate ServiceConnection vPlayerServiceConnection;\n\t// private Animation mLoadingAnimation;\n\t// private View mLoadingProgressView;\n\n\tstatic {\n\t\tSCREEN_FILTER.addAction(Intent.ACTION_SCREEN_OFF);\n\t}\n\n\t@Override\n\tpublic void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tgetWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,\n\t\t\t\tWindowManager.LayoutParams.FLAG_FULLSCREEN);\n\t\tif (!io.vov.vitamio.LibsChecker.checkVitamioLibs(this))\n\t\t\treturn;\n\n\t\tvPlayerServiceConnection = new ServiceConnection() {\n\t\t\t@Override\n\t\t\tpublic void onServiceConnected(ComponentName name, IBinder service) {\n\t\t\t\tvPlayer = ((PlayerService.LocalBinder) service).getService();\n\t\t\t\tmServiceConnected = true;\n\t\t\t\tif (mSurfaceCreated)\n\t\t\t\t\tvPlayerHandler.sendEmptyMessage(OPEN_FILE);\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void onServiceDisconnected(ComponentName name) {\n\t\t\t\tvPlayer = null;\n\t\t\t\tmServiceConnected = false;\n\t\t\t}\n\t\t};\n\n\t\tsetVolumeControlStream(AudioManager.STREAM_MUSIC);\n\t\tparseIntent(getIntent());\n\t\tloadView(R.layout.activity_video);\n\t\tmanageReceivers();\n\t\t\n\t    findViews();\n\n\t\tmCreated = true;\n\t\tstartText = startText + \"【完成】\\n解析视频地址...【完成】\\n全舰弹幕填装...\";\n\t\tstartVideoInfo.setText(startText);\n\t\tnew VideoViewInitTask().execute();\n\t}\n\t\n    private void findViews(){\n    \t // DanmakuView\n        mDanmakuView = (IDanmakuView) findViewById(R.id.sv_danmaku);\n        startVideo = (View) findViewById(R.id.video_start);\n        startVideo.setVisibility(View.VISIBLE);\n        startVideoInfo = (TextView) findViewById(R.id.video_start_info);\n        biliAnim = (ImageView) findViewById(R.id.bili_anim);\n        anim = (AnimationDrawable) biliAnim.getBackground();\n        anim.start();\n        DanmakuGlobalConfig.DEFAULT.setDanmakuStyle(DanmakuGlobalConfig.DANMAKU_STYLE_STROKEN, 3).setDuplicateMergingEnabled(false);\n//        if (mDanmakuView != null) {\n//            //mParser = createParser(this.getResources().openRawResource(R.raw.comments));\n//            mParser = createParser(openFileInput(danmakuPath));\n//            //mParser = createParser(danmakuPath);\n//            mDanmakuView.setCallback(new Callback() {\n//\n//                @Override\n//                public void updateTimer(DanmakuTimer timer) {\n//\n//                }\n//\n//                @Override\n//                public void prepared() {\n//                \tisload = true;\n//                \tstartPlayer();\n//                    //mDanmakuView.start();\n//                }\n//            });\n//            mDanmakuView.prepare(mParser);\n//\n//            mDanmakuView.showFPS(true);\n//            mDanmakuView.enableDanmakuDrawingCache(true);\n//            ((View) mDanmakuView).setOnClickListener(new View.OnClickListener() {\n//\n//                @Override\n//                public void onClick(View view) {\n//                    mMediaController.setVisibility(View.VISIBLE);\n//                }\n//            });\n//        }\n\n\t\t\n\t}\n\n\tprivate BaseDanmakuParser createParser(InputStream stream) {\n        \n        if(stream==null){\n            return new BaseDanmakuParser() {\n                \n                @Override\n                protected Danmakus parse() {\n                    return new Danmakus();\n                }\n            };\n        }\n            \n        \n        ILoader loader = DanmakuLoaderFactory.create(DanmakuLoaderFactory.TAG_BILI);\n\n        try {\n            loader.load(stream);\n        } catch (IllegalDataException e) {\n            e.printStackTrace();\n        }\n        BaseDanmakuParser parser = new BiliDanmukuParser();\n        IDataSource<?> dataSource = loader.getDataSource();\n        parser.load(dataSource);\n        return parser;\n    }\n\t\nprivate BaseDanmakuParser createParser(String uri) {\n\t   InputStream stream = null;\n        if(uri==null){\n            return new BaseDanmakuParser() {\n                \n                @Override\n                protected Danmakus parse() {\n                    return new Danmakus();\n                }\n            };\n        }\n        try {\n\t\t\tResponse rsp = (Response) Jsoup.connect(uri).execute();\n\t\t\tstream = new ByteArrayInputStream(CompressionTools.decompressXML(rsp.bodyAsBytes()));\n\t\t} catch (IOException e1) {\n\t\t\t// TODO Auto-generated catch block\n\t\t\te1.printStackTrace();\n\t\t} catch (DataFormatException e) {\n\t\t\t// TODO Auto-generated catch block\n\t\t\te.printStackTrace();\n\t\t}    \n        \n        ILoader loader = DanmakuLoaderFactory.create(DanmakuLoaderFactory.TAG_BILI);\n\n        try {\n            loader.load(stream);\n        } catch (IllegalDataException e) {\n            e.printStackTrace();\n        }\n        BaseDanmakuParser parser = new BiliDanmukuParser();\n        IDataSource<?> dataSource = loader.getDataSource();\n        parser.load(dataSource);\n        return parser;\n    }\n\n\tprivate void attachMediaController() {\n\t\tif (mMediaController != null) {\n\t\t\tmNeedLock = mMediaController.isLocked();\n\t\t\tmMediaController.release();\n\t\t}\n\t\tmMediaController = new MediaController(this, mNeedLock);\n\t\tmMediaController.setMediaPlayer(this);\n\t\tmMediaController.setAnchorView(mVideoView.getRootView());\n\t\tsetFileName();\n\t\tsetBatteryLevel();\n\t}\n\n\t@Override\n\tpublic void onStart() {\n\t\tsuper.onStart();\n\t\tif (!mCreated)\n\t\t\treturn;\n//\t\tIntent serviceIntent = new Intent(this, PlayerService.class);\n//\t\tserviceIntent.putExtra(\"isHWCodec\", mIsHWCodec);\n//\t\tbindService(serviceIntent, vPlayerServiceConnection,\n//\t\t\t\tContext.BIND_AUTO_CREATE);\n\t}\n\n\t@Override\n\tpublic void onResume() {\n\t\tsuper.onResume();\n\t\tif (!mCreated)\n\t\t\treturn;\n\t\tif (isInitialized()) {\n\t\t\tKeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);\n\t\t\tif (!keyguardManager.inKeyguardRestrictedInputMode()) {\n\t\t\t\tstartPlayer();\n\t\t\t}\n\t\t} else {\n\t\t\tif (mCloseComplete) {\n\t\t\t\treOpen();\n\t\t\t}\n\t\t}\n        if (mDanmakuView != null && mDanmakuView.isPrepared() && mDanmakuView.isPaused()) {\n            mDanmakuView.resume();\n        }\n\t}\n\n\t@Override\n\tpublic void onPause() {\n\t\tsuper.onPause();\n\t\tif (!mCreated)\n\t\t\treturn;\n\t\tif (isInitialized()) {\n\t\t\t//savePosition();\n\t\t\tif (vPlayer != null && vPlayer.isPlaying()) {\n\t\t\t\tstopPlayer();\n\t\t\t}\n\t\t}\n        if (mDanmakuView != null && mDanmakuView.isPrepared()) {\n            mDanmakuView.pause();\n        }\n\t}\n\n\t@Override\n\tpublic void onStop() {\n\t\tsuper.onStop();\n\t\tif (!mCreated)\n\t\t\treturn;\n\t\tif (isInitialized()) {\n\t\t\tvPlayer.releaseSurface();\n\t\t}\n\t\tif (mServiceConnected) {\n\t\t\tunbindService(vPlayerServiceConnection);\n\t\t\tmServiceConnected = false;\n\t\t}\n//        if (mDanmakuView != null) {\n//            // dont forget release!\n//            mDanmakuView.release();\n//            mDanmakuView = null;\n//        }\n\n\t}\n\n\t@Override\n\tpublic void onDestroy() {\n\t\tsuper.onDestroy();\n\t\tif (!mCreated)\n\t\t\treturn;\n\t\tmanageReceivers();\n\t\tif (isInitialized() && !vPlayer.isPlaying())\n\t\t\trelease();\n\t\tif (mMediaController != null)\n\t\t\tmMediaController.release();\n        if (mDanmakuView != null) {\n            // dont forget release!\n            mDanmakuView.release();\n            mDanmakuView = null;\n        }\n\t}\n\n\t@Override\n\tpublic void onConfigurationChanged(Configuration newConfig) {\n\t\tif (isInitialized()) {\n\t\t\tsetVideoLayout();\n\t\t\tattachMediaController();\n\t\t}\n\n\t\tsuper.onConfigurationChanged(newConfig);\n\t}\n\n\t@Override\n\tpublic void onBackPressed() {\n//\t\tsuper.onBackPressed();\n//        if (mDanmakuView != null) {\n//            // dont forget release!\n//            mDanmakuView.release();\n//            mDanmakuView = null;\n//        }\n\t}\n\n\t@Override\n\tprotected void onSaveInstanceState(Bundle outState) {\n\t\t// http://code.google.com/p/android/issues/detail?id=19917\n\t\toutState.putString(\"WORKAROUND_FOR_BUG_19917_KEY\",\n\t\t\t\t\"WORKAROUND_FOR_BUG_19917_VALUE\");\n\t\tsuper.onSaveInstanceState(outState);\n\t}\n\n\t@Override\n\tpublic void showMenu() {\n\n\t}\n\n\tprivate void loadView(int id) {\n\t\tsetContentView(id);\n\t\tgetWindow().setBackgroundDrawable(null);\n\t\tmViewRoot = findViewById(R.id.video_root);\n\t\tmVideoView = (VideoView) findViewById(R.id.video);\n\t\tmVideoView.initialize(this, this, mIsHWCodec);\n\t\tmSubtitleContainer = findViewById(R.id.subtitle_container);\n\t\tmSubtitleText = (OutlineTextView) findViewById(R.id.subtitle_text);\n\t\tmSubtitleImage = (ImageView) findViewById(R.id.subtitle_image);\n\t\tmVideoLoadingText = (TextView) findViewById(R.id.video_loading_text);\n\t\tmVideoLoadingLayout = findViewById(R.id.video_loading);\n\t\t// mLoadingProgressView =\n\t\t// mVideoLoadingLayout.findViewById(R.id.video_loading_progress);\n\n\t\t// mLoadingAnimation = AnimationUtils.loadAnimation(VideoActivity.this,\n\t\t// R.anim.loading_rotate);\n\t\tgetWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);\n\t}\n\n\tprivate void parseIntent(Intent i) {\n//\t\tUri dat = IntentHelper.getIntentUri(i);\n//\t\tif (dat == null)\n//\t\t\tresultFinish(RESULT_FAILED);\n//\n//\t\tString datString = dat.toString();\n//\t\tif (!datString.equals(dat.toString()))\n//\t\t\tdat = Uri.parse(datString);\n//\n//\t\tmUri = dat;\n//\t\tdanmakuPath = \"http://comment.bilibili.com/\"+i.getStringExtra(\"CID\")+\".xml\";\n//        Logger.d(danmakuPath);\n\t\tav = i.getStringExtra(\"av\");\n\t\tpage = i.getStringExtra(\"page\");\n\n\t\tmNeedLock = i.getBooleanExtra(\"lockScreen\", false);\n\t\tmDisplayName = i.getStringExtra(\"displayName\");\n\t\tmFromStart = i.getBooleanExtra(\"fromStart\", false);\n\t\tmSaveUri = i.getBooleanExtra(\"saveUri\", true);\n\t\tmStartPos = i.getFloatExtra(\"startPosition\", -1.0f);\n\t\tmLoopCount = i.getIntExtra(\"loopCount\", 1);\n\t\tmParentId = i.getIntExtra(\"parentId\", 0);\n\t\tmSubPath = i.getStringExtra(\"subPath\");\n\t\tmSubShown = i.getBooleanExtra(\"subShown\", true);\n\t\tmIsHWCodec = i.getBooleanExtra(\"hwCodec\", false);\n\t\tLog.i(\"L: %b, N: %s, S: %b, P: %f, LP: %d\", mNeedLock, mDisplayName,\n                mFromStart, mStartPos, mLoopCount);\n\t}\n\n\tprivate void manageReceivers() {\n\t\tif (!mReceiverRegistered) {\n\t\t\tmScreenReceiver = new ScreenReceiver();\n\t\t\tregisterReceiver(mScreenReceiver, SCREEN_FILTER);\n\t\t\tmUserPresentReceiver = new UserPresentReceiver();\n\t\t\tregisterReceiver(mUserPresentReceiver, USER_PRESENT_FILTER);\n\t\t\tmBatteryReceiver = new BatteryReceiver();\n\t\t\tregisterReceiver(mBatteryReceiver, BATTERY_FILTER);\n\t\t\tmHeadsetPlugReceiver = new HeadsetPlugReceiver();\n\t\t\tregisterReceiver(mHeadsetPlugReceiver, HEADSET_FILTER);\n\t\t\tmReceiverRegistered = true;\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tif (mScreenReceiver != null)\n\t\t\t\t\tunregisterReceiver(mScreenReceiver);\n\t\t\t\tif (mUserPresentReceiver != null)\n\t\t\t\t\tunregisterReceiver(mUserPresentReceiver);\n\t\t\t\tif (mHeadsetPlugReceiver != null)\n\t\t\t\t\tunregisterReceiver(mHeadsetPlugReceiver);\n\t\t\t\tif (mBatteryReceiver != null)\n\t\t\t\t\tunregisterReceiver(mBatteryReceiver);\n\t\t\t} catch (IllegalArgumentException e) {\n\t\t\t}\n\t\t\tmReceiverRegistered = false;\n\t\t}\n\t}\n\n\tprivate void setFileName() {\n\t\tif (mUri != null) {\n\t\t\tString name = null;\n\t\t\tif (mUri.getScheme() == null || mUri.getScheme().equals(\"file\"))\n\t\t\t\tname = FileUtils.getName(mUri.toString());\n\t\t\telse\n\t\t\t\tname = mUri.getLastPathSegment();\n\t\t\tif (name == null)\n\t\t\t\tname = \"null\";\n\t\t\tif (mDisplayName == null)\n\t\t\t\tmDisplayName = name;\n\t\t\tmMediaController.setFileName(mDisplayName);\n\t\t}\n\t}\n\n\tprivate void applyResult(int resultCode) {\n\t\tvPlayerHandler.removeMessages(BUFFER_PROGRESS);\n\t\tIntent i = new Intent();\n\t\ti.putExtra(\"filePath\", mUri.toString());\n\t\tif (isInitialized()) {\n\t\t\ti.putExtra(\"position\", (double) vPlayer.getCurrentPosition()\n\t\t\t\t\t/ vPlayer.getDuration());\n\t\t\ti.putExtra(\"duration\", vPlayer.getDuration());\n\t\t\t//savePosition();\n\t\t}\n\t\tswitch (resultCode) {\n\t\tcase RESULT_FAILED:\n\t\t\tToastUtils.showLongToast(R.string.video_cannot_play);\n\t\t\tbreak;\n\t\tcase RESULT_CANCELED:\n\t\tcase RESULT_OK:\n\t\t\tbreak;\n\t\t}\n\t\tsetResult(resultCode, i);\n\t}\n\n\tprivate void resultFinish(int resultCode) {\n\t\tapplyResult(resultCode);\n\t\tif (DeviceUtils.hasICS() && resultCode != RESULT_FAILED) {\n\t\t\tandroid.os.Process.killProcess(android.os.Process.myPid());\n\t\t} else {\n\t\t\tfinish();\n\t\t}\n\t}\n\n\tprivate void release() {\n\t\tif (vPlayer != null) {\n\t\t\tif (DeviceUtils.hasICS()) {\n\t\t\t\tandroid.os.Process.killProcess(android.os.Process.myPid());\n\t\t\t} else {\n\t\t\t\tvPlayer.release();\n\t\t\t\tvPlayer.releaseContext();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void reOpen(Uri path, String name, boolean fromStart) {\n\t\tif (isInitialized()) {\n\t\t\t//savePosition();\n\t\t\tvPlayer.release();\n\t\t\tvPlayer.releaseContext();\n\t\t}\n\t\tIntent i = getIntent();\n\t\tif (mMediaController != null)\n\t\t\ti.putExtra(\"lockScreen\", mMediaController.isLocked());\n\t\ti.putExtra(\"startPosition\", PreferenceUtils.getFloat(mUri\n                + VP.SESSION_LAST_POSITION_SUFIX, 7.7f));\n\t\ti.putExtra(\"fromStart\", fromStart);\n\t\ti.putExtra(\"displayName\", name);\n\t\ti.setData(path);\n\t\tparseIntent(i);\n\t\tmUri = path;\n\t\tif (mViewRoot != null)\n\t\t\tmViewRoot.invalidate();\n\t\tif (mOpened != null)\n\t\t\tmOpened.set(false);\n\t}\n\n\tpublic void reOpen() {\n\t\treOpen(mUri, mDisplayName, false);\n\t}\n\n\tprotected void startPlayer() {\n\t\tif (isInitialized() && mScreenReceiver.screenOn\n\t\t\t\t&& !vPlayer.isBuffering()&&isload) {\n\t\t\tLog.i(\"VideoActivity#startPlayer\");\n\t\t\tif (!vPlayer.isPlaying()) {\n\t\t\t\tvPlayer.start();\n\t\t\t\tif(mDanmakuView.isPaused())\n\t\t\t\tmDanmakuView.resume();\n\t\t\t\telse\n\t\t\t\tmDanmakuView.start();\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected void stopPlayer() {\n\t\tif (isInitialized()) {\n\t\t\tvPlayer.stop();\n\t\t\tif(mDanmakuView != null){\n\t\t\t\tif(mDanmakuView.isPrepared()&&mDanmakuView.isShown());\n\t\t\t\tmDanmakuView.pause();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void setBatteryLevel() {\n\t\tif (mMediaController != null)\n\t\t\tmMediaController.setBatteryLevel(mBatteryLevel);\n\t}\n\n\tprivate class BatteryReceiver extends BroadcastReceiver {\n\t\t@Override\n\t\tpublic void onReceive(Context context, Intent intent) {\n\t\t\tint level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);\n\t\t\tint scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);\n\t\t\tint percent = scale > 0 ? level * 100 / scale : 0;\n\t\t\tif (percent > 100)\n\t\t\t\tpercent = 100;\n\t\t\tmBatteryLevel = String.valueOf(percent) + \"%\";\n\t\t\tsetBatteryLevel();\n\t\t}\n\t}\n\n\tprivate class UserPresentReceiver extends BroadcastReceiver {\n\t\t@Override\n\t\tpublic void onReceive(Context context, Intent intent) {\n\t\t\tif (isRootActivity()) {\n\t\t\t\tstartPlayer();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate boolean isRootActivity() {\n\t\treturn ApplicationUtils.isTopActivity(getApplicationContext(),\n                getClass().getName());\n\t\t// ActivityManager activity = (ActivityManager)\n\t\t// getSystemService(Context.ACTIVITY_SERVICE);\n\t\t// return\n\t\t// activity.getRunningTasks(1).get(0).topActivity.flattenToString().endsWith(\"io.vov.vitamio.activity.VideoActivity\");\n\t}\n\n\tpublic class HeadsetPlugReceiver extends BroadcastReceiver {\n\t\t@Override\n\t\tpublic void onReceive(Context context, Intent intent) {\n\t\t\tif (intent != null && intent.hasExtra(\"state\")) {\n\t\t\t\tint state = intent.getIntExtra(\"state\", -1);\n\t\t\t\tif (state == 0) {\n\t\t\t\t\tmHeadsetPlaying = isPlaying();\n\t\t\t\t\tstopPlayer();\n\t\t\t\t} else if (state == 1) {\n\t\t\t\t\tif (mHeadsetPlaying)\n\t\t\t\t\t\tstartPlayer();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tprivate class ScreenReceiver extends BroadcastReceiver {\n\t\tprivate boolean screenOn = true;\n\n\t\t@Override\n\t\tpublic void onReceive(Context context, Intent intent) {\n\t\t\tif (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {\n\t\t\t\tscreenOn = false;\n\t\t\t\tstopPlayer();\n\t\t\t} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {\n\t\t\t\tscreenOn = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void loadVPlayerPrefs() {\n\t\tif (!isInitialized())\n\t\t\treturn;\n\t\tvPlayer.setBuffer(VP.DEFAULT_BUF_SIZE);\n\t\tvPlayer.setVideoQuality(VP.DEFAULT_VIDEO_QUALITY);\n\t\tvPlayer.setDeinterlace(VP.DEFAULT_DEINTERLACE);\n\t\tvPlayer.setVolume(VP.DEFAULT_STEREO_VOLUME, VP.DEFAULT_STEREO_VOLUME);\n\t\tvPlayer.setSubEncoding(VP.DEFAULT_SUB_ENCODING);\n\t\tMarginLayoutParams lp = (MarginLayoutParams) mSubtitleContainer\n\t\t\t\t.getLayoutParams();\n\t\tlp.bottomMargin = (int) VP.DEFAULT_SUB_POS;\n\t\tmSubtitleContainer.setLayoutParams(lp);\n\t\tvPlayer.setSubShown(mSubShown);\n\t\tsetTextViewStyle(mSubtitleText);\n\t\tif (!TextUtils.isEmpty(mSubPath))\n\t\t\tvPlayer.setSubPath(mSubPath);\n\t\tif (mVideoView != null && isInitialized())\n\t\t\tsetVideoLayout();\n\t}\n\n\tprivate void setTextViewStyle(OutlineTextView v) {\n\t\tv.setTextColor(VP.DEFAULT_SUB_COLOR);\n\t\tv.setTypeface(VP.getTypeface(VP.DEFAULT_TYPEFACE_INT),\n\t\t\t\tVP.DEFAULT_SUB_STYLE);\n\t\tv.setShadowLayer(VP.DEFAULT_SUB_SHADOWRADIUS, 0, 0,\n\t\t\t\tVP.DEFAULT_SUB_SHADOWCOLOR);\n\t}\n\n\tprivate boolean isInitialized() {\n\t\treturn (mCreated && vPlayer != null && vPlayer.isInitialized());\n\t}\n\n\tprivate Handler mSubHandler = new Handler() {\n\t\tBundle data;\n\t\tString text;\n\t\tbyte[] pixels;\n\t\tint width = 0, height = 0;\n\t\tBitmap bm = null;\n\t\tint oldType = SUBTITLE_TEXT;\n\n\t\t@Override\n\t\tpublic void handleMessage(Message msg) {\n\t\t\tdata = msg.getData();\n\t\t\tswitch (msg.what) {\n\t\t\tcase SUBTITLE_TEXT:\n\t\t\t\tif (oldType != SUBTITLE_TEXT) {\n\t\t\t\t\tmSubtitleImage.setVisibility(View.GONE);\n\t\t\t\t\tmSubtitleText.setVisibility(View.VISIBLE);\n\t\t\t\t\toldType = SUBTITLE_TEXT;\n\t\t\t\t}\n\t\t\t\ttext = data.getString(VP.SUB_TEXT_KEY);\n\t\t\t\tmSubtitleText.setText(text == null ? \"\" : text.trim());\n\t\t\t\tbreak;\n\t\t\tcase SUBTITLE_BITMAP:\n\t\t\t\tif (oldType != SUBTITLE_BITMAP) {\n\t\t\t\t\tmSubtitleText.setVisibility(View.GONE);\n\t\t\t\t\tmSubtitleImage.setVisibility(View.VISIBLE);\n\t\t\t\t\toldType = SUBTITLE_BITMAP;\n\t\t\t\t}\n\t\t\t\tpixels = data.getByteArray(VP.SUB_PIXELS_KEY);\n\t\t\t\tif (bm == null || width != data.getInt(VP.SUB_WIDTH_KEY)\n\t\t\t\t\t\t|| height != data.getInt(VP.SUB_HEIGHT_KEY)) {\n\t\t\t\t\twidth = data.getInt(VP.SUB_WIDTH_KEY);\n\t\t\t\t\theight = data.getInt(VP.SUB_HEIGHT_KEY);\n\t\t\t\t\tbm = Bitmap.createBitmap(width, height,\n\t\t\t\t\t\t\tBitmap.Config.ARGB_8888);\n\t\t\t\t}\n\t\t\t\tif (pixels != null)\n\t\t\t\t\tbm.copyPixelsFromBuffer(ByteBuffer.wrap(pixels));\n\t\t\t\tmSubtitleImage.setImageBitmap(bm);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate AtomicBoolean mOpened = new AtomicBoolean(Boolean.FALSE);\n\tprivate boolean mSurfaceCreated = false;\n\tprivate boolean mServiceConnected = false;\n\tprivate Object mOpenLock = new Object();\n\tprivate static final int OPEN_FILE = 0;\n\tprivate static final int OPEN_START = 1;\n\tprivate static final int OPEN_SUCCESS = 2;\n\tprivate static final int OPEN_FAILED = 3;\n\tprivate static final int HW_FAILED = 4;\n\tprivate static final int LOAD_PREFS = 5;\n\tprivate static final int BUFFER_START = 11;\n\tprivate static final int BUFFER_PROGRESS = 12;\n\tprivate static final int BUFFER_COMPLETE = 13;\n\tprivate static final int CLOSE_START = 21;\n\tprivate static final int CLOSE_COMPLETE = 22;\n\tprivate static final int SUBTITLE_TEXT = 0;\n\tprivate static final int SUBTITLE_BITMAP = 1;\n\tprivate Handler vPlayerHandler = new Handler() {\n\t\t@Override\n\t\tpublic void handleMessage(Message msg) {\n\t\t\tswitch (msg.what) {\n\t\t\tcase OPEN_FILE:\n\t\t\t\tsynchronized (mOpenLock) {\n\t\t\t\t\tif (!mOpened.get() && vPlayer != null) {\n\t\t\t\t\t\tmOpened.set(true);\n\t\t\t\t\t\tvPlayer.setVPlayerListener(vPlayerListener);\n\t\t\t\t\t\tif (vPlayer.isInitialized())\n\t\t\t\t\t\t\tmUri = vPlayer.getUri();\n\n\t\t\t\t\t\tif (mVideoView != null)\n\t\t\t\t\t\t\tvPlayer.setDisplay(mVideoView.getHolder());\n\t\t\t\t\t\tif (mUri != null)\n\t\t\t\t\t\t\tvPlayer.initialize(mUri, mDisplayName, mSaveUri,\n\t\t\t\t\t\t\t\t\tgetStartPosition(), vPlayerListener,\n\t\t\t\t\t\t\t\t\tmParentId, mIsHWCodec);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase OPEN_START:\n\t\t\t\tmVideoLoadingText.setText(R.string.video_layout_loading);\n\t\t\t\tsetVideoLoadingLayoutVisibility(View.VISIBLE);\n\t\t\t\tbreak;\n\t\t\tcase OPEN_SUCCESS:\n\t\t\t\tloadVPlayerPrefs();\n\t\t\t\tsetVideoLoadingLayoutVisibility(View.GONE);\n\t\t\t\tsetVideoLayout();\n\t\t\t\tvPlayer.start();\n\t\t\t\tif(mDanmakuView.isPaused())\n\t\t\t\t\tmDanmakuView.resume();\n\t\t\t\telse\n\t\t\t\t\tmDanmakuView.start();\n\t\t\t\tattachMediaController();\n\t\t\t\tbreak;\n\t\t\tcase OPEN_FAILED:\n\t\t\t\tresultFinish(RESULT_FAILED);\n\t\t\t\tbreak;\n\t\t\tcase BUFFER_START:\n\t\t\t\tsetVideoLoadingLayoutVisibility(View.VISIBLE);\n\t\t\t\tvPlayerHandler.sendEmptyMessageDelayed(BUFFER_PROGRESS, 1000);\n\t\t\t\tbreak;\n\t\t\tcase BUFFER_PROGRESS:\n\t\t\t\tif (vPlayer.getBufferProgress() >= 100) {\n\t\t\t\t\tsetVideoLoadingLayoutVisibility(View.GONE);\n\t\t\t\t} else {\n\t\t\t\t\tmVideoLoadingText.setText(getString(\n\t\t\t\t\t\t\tR.string.video_layout_buffering_progress,\n\t\t\t\t\t\t\tvPlayer.getBufferProgress()));\n\t\t\t\t\tvPlayerHandler.sendEmptyMessageDelayed(BUFFER_PROGRESS,\n\t\t\t\t\t\t\t1000);\n\t\t\t\t\tstopPlayer();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase BUFFER_COMPLETE:\n\t\t\t\tsetVideoLoadingLayoutVisibility(View.GONE);\n\t\t\t\tvPlayerHandler.removeMessages(BUFFER_PROGRESS);\n\t\t\t\tbreak;\n\t\t\tcase CLOSE_START:\n\t\t\t\tmVideoLoadingText.setText(R.string.closing_file);\n\t\t\t\tsetVideoLoadingLayoutVisibility(View.VISIBLE);\n\t\t\t\tbreak;\n\t\t\tcase CLOSE_COMPLETE:\n\t\t\t\tmCloseComplete = true;\n\t\t\t\tbreak;\n\t\t\tcase HW_FAILED:\n\t\t\t\tif (mVideoView != null) {\n\t\t\t\t\tmVideoView.setVisibility(View.GONE);\n\t\t\t\t\tmVideoView.setVisibility(View.VISIBLE);\n\t\t\t\t\tmVideoView.initialize(BiliVideoViewActivity.this,\n\t\t\t\t\t\t\tBiliVideoViewActivity.this, false);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase LOAD_PREFS:\n\t\t\t\tloadVPlayerPrefs();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate void setVideoLoadingLayoutVisibility(int visibility) {\n\t\tif (mVideoLoadingLayout != null) {\n\t\t\t// if (visibility == View.VISIBLE)\n\t\t\t// mLoadingProgressView.startAnimation(mLoadingAnimation);\n\t\t\tmVideoLoadingLayout.setVisibility(visibility);\n\t\t}\n\t}\n\n\tprivate PlayerService.VPlayerListener vPlayerListener = new PlayerService.VPlayerListener() {\n\t\t@Override\n\t\tpublic void onHWRenderFailed() {\n\t\t\tif (Build.VERSION.SDK_INT < 11 && mIsHWCodec) {\n\t\t\t\tvPlayerHandler.sendEmptyMessage(HW_FAILED);\n\t\t\t\tvPlayerHandler.sendEmptyMessageDelayed(HW_FAILED, 200);\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void onSubChanged(String sub) {\n\t\t\tMessage msg = new Message();\n\t\t\tBundle b = new Bundle();\n\t\t\tb.putString(VP.SUB_TEXT_KEY, sub);\n\t\t\tmsg.setData(b);\n\t\t\tmsg.what = SUBTITLE_TEXT;\n\t\t\tmSubHandler.sendMessage(msg);\n\t\t}\n\n\t\t@Override\n\t\tpublic void onSubChanged(byte[] pixels, int width, int height) {\n\t\t\tMessage msg = new Message();\n\t\t\tBundle b = new Bundle();\n\t\t\tb.putByteArray(VP.SUB_PIXELS_KEY, pixels);\n\t\t\tb.putInt(VP.SUB_WIDTH_KEY, width);\n\t\t\tb.putInt(VP.SUB_HEIGHT_KEY, height);\n\t\t\tmsg.setData(b);\n\t\t\tmsg.what = SUBTITLE_BITMAP;\n\t\t\tmSubHandler.sendMessage(msg);\n\t\t}\n\n\t\t@Override\n\t\tpublic void onOpenStart() {\n\t\t\tvPlayerHandler.sendEmptyMessage(OPEN_START);\n\t\t}\n\n\t\t@Override\n\t\tpublic void onOpenSuccess() {\n\t\t\tvPlayerHandler.sendEmptyMessage(OPEN_SUCCESS);\n\t\t}\n\n\t\t@Override\n\t\tpublic void onOpenFailed() {\n\t\t\tvPlayerHandler.sendEmptyMessage(OPEN_FAILED);\n\t\t}\n\n\t\t@Override\n\t\tpublic void onBufferStart() {\n\t\t\t//if(isfirst){}\n\t\t\tvPlayerHandler.sendEmptyMessage(BUFFER_START);\n\t\t\tstopPlayer();\n\t\t}\n\n\t\t@Override\n\t\tpublic void onBufferComplete() {\n\t\t\tLog.i(\"VideoActivity#onBufferComplete \" + vPlayer.needResume());\n\t\t\tif(isfirst){\n\t\t\t\tstartVideo.setVisibility(View.GONE);\n\t\t\t\tanim.stop();\n\t\t\t\tisfirst = false;\n\t\t\t}\n\t\t\tvPlayerHandler.sendEmptyMessage(BUFFER_COMPLETE);\n\t\t\tif (vPlayer != null && !vPlayer.needResume())\n\t\t\t\tstartPlayer();\n\t\t}\n\n\t\t@Override\n\t\tpublic void onPlaybackComplete() {\n\t\t\tmEnd = true;\n\t\t\tif (mLoopCount == 0 || mLoopCount-- > 1) {\n\t\t\t\tvPlayer.start();\n\t\t\t\tif(mDanmakuView.isPaused())\n\t\t\t\t\tmDanmakuView.resume();\n\t\t\t\telse\n\t\t\t\t\tmDanmakuView.start();\n\t\t\t\tvPlayer.seekTo(0);\n\t\t\t} else {\n\t\t\t\tresultFinish(RESULT_OK);\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void onCloseStart() {\n\t\t\tvPlayerHandler.sendEmptyMessage(CLOSE_START);\n\t\t}\n\n\t\t@Override\n\t\tpublic void onCloseComplete() {\n\t\t\tvPlayerHandler.sendEmptyMessage(CLOSE_COMPLETE);\n\t\t}\n\n\t\t@Override\n\t\tpublic void onVideoSizeChanged(int width, int height) {\n\t\t\tif (mVideoView != null) {\n\t\t\t\tsetVideoLayout();\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void onDownloadRateChanged(int kbPerSec) {\n\t\t\tif (!MediaUtils.isNative(mUri.toString())\n\t\t\t\t\t&& mMediaController != null) {\n\t\t\t\tmMediaController.setDownloadRate(String.format(\"%dKB/s\",\n\t\t\t\t\t\tkbPerSec));\n\t\t\t}\n\t\t}\n\n\t};\n\n\tprivate int mVideoMode = VideoView.VIDEO_LAYOUT_SCALE;\n\n\tprivate void setVideoLayout() {\n\t\tmVideoView.setVideoLayout(mVideoMode, VP.DEFAULT_ASPECT_RATIO,\n\t\t\t\tvPlayer.getVideoWidth(), vPlayer.getVideoHeight(),\n\t\t\t\tvPlayer.getVideoAspectRatio());\n\t}\n\n\tprivate void savePosition() {\n\t\tif (vPlayer != null && mUri != null) {\n\t\t\tPreferenceUtils.put(\n\t\t\t\t\tmUri.toString(),\n\t\t\t\t\tStringUtils.generateTime((int) (0.5 + vPlayer\n                            .getCurrentPosition()))\n\t\t\t\t\t\t\t+ \" / \"\n\t\t\t\t\t\t\t+ StringUtils.generateTime(vPlayer.getDuration()));\n\t\t\tif (mEnd)\n\t\t\t\tPreferenceUtils\n\t\t\t\t\t\t.put(mUri + VP.SESSION_LAST_POSITION_SUFIX, 1.0f);\n\t\t\telse\n\t\t\t\tPreferenceUtils\n\t\t\t\t\t\t.put(mUri + VP.SESSION_LAST_POSITION_SUFIX,\n\t\t\t\t\t\t\t\t(float) (vPlayer.getCurrentPosition() / (double) vPlayer\n\t\t\t\t\t\t\t\t\t\t.getDuration()));\n\t\t}\n\t}\n\n\tprivate float getStartPosition() {\n\t\tif (mFromStart)\n\t\t\treturn 1.1f;\n\t\tif (mStartPos <= 0.0f || mStartPos >= 1.0f)\n\t\t\treturn PreferenceUtils.getFloat(mUri\n\t\t\t\t\t+ VP.SESSION_LAST_POSITION_SUFIX, 7.7f);\n\t\treturn mStartPos;\n\t}\n\n\t@Override\n\tpublic int getBufferPercentage() {\n\t\tif (isInitialized())\n\t\t\treturn (int) (vPlayer.getBufferProgress() * 100);\n\t\treturn 0;\n\t}\n\n\t@Override\n\tpublic long getCurrentPosition() {\n\t\tif (isInitialized())\n\t\t\treturn vPlayer.getCurrentPosition();\n\t\treturn (long) (getStartPosition() * vPlayer.getDuration());\n\t}\n\n\t@Override\n\tpublic long getDuration() {\n\t\tif (isInitialized())\n\t\t\treturn vPlayer.getDuration();\n\t\treturn 0;\n\t}\n\n\t@Override\n\tpublic boolean isPlaying() {\n\t\tif (isInitialized())\n\t\t\treturn vPlayer.isPlaying();\n\t\treturn false;\n\t}\n\n\t@Override\n\tpublic void pause() {\n\t\tif (isInitialized())\n\t\t\tvPlayer.stop();\n\t\tmDanmakuView.pause();\n\t}\n\n\t@Override\n\tpublic void seekTo(long arg0) {\n\t\tif (isInitialized())\n\t\t\tvPlayer.seekTo((float) ((double) arg0 / vPlayer.getDuration()));\n\t\tmDanmakuView.seekTo(arg0);\n\t\tmDanmakuView.pause();\n\t}\n\n\t@Override\n\tpublic void start() {\n\t\tif (isInitialized())\n\t\t\tvPlayer.start();\n\t\tif(mDanmakuView.isPaused())\n\t\tmDanmakuView.resume();\n\t\telse\n\t\tmDanmakuView.start();\n\t}\n\n\t@Override\n\tpublic void previous() {\n\t}\n\n\t@Override\n\tpublic void next() {\n\t}\n\n\tprivate static final int VIDEO_MAXIMUM_HEIGHT = 2048;\n\tprivate static final int VIDEO_MAXIMUM_WIDTH = 2048;\n\n\t@Override\n\tpublic float scale(float scaleFactor) {\n\t\tfloat userRatio = VP.DEFAULT_ASPECT_RATIO;\n\t\tint videoWidth = vPlayer.getVideoWidth();\n\t\tint videoHeight = vPlayer.getVideoHeight();\n\t\tfloat videoRatio = vPlayer.getVideoAspectRatio();\n\t\tfloat currentRatio = mVideoView.mVideoHeight / (float) videoHeight;\n\n\t\tcurrentRatio += (scaleFactor - 1);\n\t\tif (videoWidth * currentRatio >= VIDEO_MAXIMUM_WIDTH)\n\t\t\tcurrentRatio = VIDEO_MAXIMUM_WIDTH / (float) videoWidth;\n\n\t\tif (videoHeight * currentRatio >= VIDEO_MAXIMUM_HEIGHT)\n\t\t\tcurrentRatio = VIDEO_MAXIMUM_HEIGHT / (float) videoHeight;\n\n\t\tif (currentRatio < 0.5f)\n\t\t\tcurrentRatio = 0.5f;\n\n\t\tmVideoView.mVideoHeight = (int) (videoHeight * currentRatio);\n\t\tmVideoView.setVideoLayout(mVideoMode, userRatio, videoWidth,\n\t\t\t\tvideoHeight, videoRatio);\n\t\treturn currentRatio;\n\t}\n\n\t@SuppressLint(\"SimpleDateFormat\")\n\t@Override\n\tpublic void snapshot() {\n\t\tif (!com.cjj.bb.utils.FileUtils.sdAvailable()) {\n\t\t\tToastUtils.showToast(R.string.file_explorer_sdcard_not_available);\n\t\t} else {\n\t\t\tUri imgUri = null;\n\t\t\tBitmap bitmap = vPlayer.getCurrentFrame();\n\t\t\tif (bitmap != null) {\n\t\t\t\tFile screenshotsDirectory = new File(\n\t\t\t\t\t\tEnvironment\n\t\t\t\t\t\t\t\t.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)\n\t\t\t\t\t\t\t\t+ VP.SNAP_SHOT_PATH);\n\t\t\t\tif (!screenshotsDirectory.exists()) {\n\t\t\t\t\tscreenshotsDirectory.mkdirs();\n\t\t\t\t}\n\n\t\t\t\tFile savePath = new File(\n\t\t\t\t\t\tscreenshotsDirectory.getPath()\n\t\t\t\t\t\t\t\t+ \"/\"\n\t\t\t\t\t\t\t\t+ new SimpleDateFormat(\"yyyyMMddHHmmss\")\n\t\t\t\t\t\t\t\t\t\t.format(new Date()) + \".jpg\");\n\t\t\t\tif (ImageUtils.saveBitmap(savePath.getPath(), bitmap)) {\n\t\t\t\t\timgUri = Uri.fromFile(savePath);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (imgUri != null) {\n\t\t\t\tsendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,\n\t\t\t\t\t\timgUri));\n\t\t\t\tToastUtils.showLongToast(getString(\n\t\t\t\t\t\tR.string.video_screenshot_save_in, imgUri.getPath()));\n\t\t\t} else {\n\t\t\t\tToastUtils.showToast(R.string.video_screenshot_failed);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void toggleVideoMode(int mode) {\n\t\tmVideoMode = mode;\n\t\tsetVideoLayout();\n\t}\n\n\t@Override\n\tpublic void stop() {\n\t\tonBackPressed();\n\t}\n\n\t@Override\n\tpublic long goForward() {\n\t\treturn 0;\n\t}\n\n\t@Override\n\tpublic long goBack() {\n\t\treturn 0;\n\t}\n\n\t@Override\n\tpublic void removeLoadingView() {\n\t\tmVideoLoadingLayout.setVisibility(View.GONE);\n\t}\n\n\t@Override\n\tpublic void onSurfaceCreated(SurfaceHolder holder) {\n\t\tLog.i(\"onSurfaceCreated\");\n\t\tmSurfaceCreated = true;\n\t\tif (mServiceConnected)\n\t\t\tvPlayerHandler.sendEmptyMessage(OPEN_FILE);\n\t\tif (vPlayer != null)\n\t\t\tvPlayer.setDisplay(holder);\n\t}\n\n\t@Override\n\tpublic void onSurfaceChanged(SurfaceHolder holder, int format, int width,\n\t\t\tint height) {\n\t\tif (vPlayer != null) {\n\t\t\tsetVideoLayout();\n\t\t}\n\t}\n\n\t@Override\n\tpublic void onSurfaceDestroyed(SurfaceHolder holder) {\n\t\tLog.i(\"onSurfaceDestroyed\");\n\t\tif (vPlayer != null && vPlayer.isInitialized()) {\n\t\t\tif (vPlayer.isPlaying()) {\n\t\t\t\tvPlayer.stop();\n\t\t\t\tvPlayer.setState(PlayerService.STATE_NEED_RESUME);\n\t\t\t}\n\t\t\tvPlayer.releaseSurface();\n\t\t\tif (vPlayer.needResume()){\n\t\t\t\tvPlayer.start();\n\t\t\t\tif(mDanmakuView.isPaused())\n\t\t\t\tmDanmakuView.resume();\n\t\t\t\telse\n\t\t\t\tmDanmakuView.start();\n\t\t\t}\n\t\t\t\n\t\t}\n\t}\n\t\n\t@Override\n\tpublic void setDanmakushow(boolean isShow) {\n\t\t// TODO Auto-generated method stub\n\t\tif(mDanmakuView != null){\n\t\t\tif(isShow){\n\t\t\t\tmDanmakuView.show();\n\t\t\t}else{\n\t\t\t\tmDanmakuView.hide();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tprivate class VideoViewInitTask extends AsyncTask<String, Void, Integer> {\n\n\t\t@Override\n\t\tprotected Integer doInBackground(String... arg0) {\n\t\t\t// TODO Auto-generated method stub\n\t\t\tLog.d(\"TAG\", \"开始解析视频地址\");\n\t\t\ttry {\n\t\t\t\tJSONObject videopathjson = new JSONObject(HttpUtil.getHtmlString(\"http://www.bilibili.com/m/html5?aid=\" + av + \"&page=\" + page));\n\t\t\t\tLog.d(\"QAQ--->\",\"===>\"+videopathjson.getString(\"src\").toString());\n\t\t\t\tdanmakuPath = videopathjson.getString(\"cid\").toString();\n\t\t\t\tmUri = Uri.parse(videopathjson.getString(\"src\").toString());\n\t\t\t} catch (JSONException e) {\n\t\t\t\t// TODO Auto-generated catch block\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\t\t\tLog.d(\"TAG\", \"开始加载弹幕\");\n\t\t\tmParser = createParser(danmakuPath);\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\t@Override\n\t\tprotected void onPostExecute(Integer result) {\n\t\t\t// TODO Auto-generated method stub\n\t\t\tsuper.onPostExecute(result);\n\n\t\t\tLog.d(\"TAG\", \"加载弹幕成功\");\n//\t\t\t if (mDanmakuView != null) {\n//\t\t            mDanmakuView.prepare(mParser);\n//\t\t            mDanmakuView.showFPS(true);\n//\t\t            mDanmakuView.enableDanmakuDrawingCache(true);\n//                \tisload = true;\n//                \t//startPlayer();\n//                \t\n//\t\t    }\n\t\t\tif(mParser != null){\n\t\t\t\tmDanmakuView.prepare(mParser);\n\t\t        mDanmakuView.showFPS(false);\n\t\t        mDanmakuView.enableDanmakuDrawingCache(false);\n\t\t\t}else{\n\t\t\t\t\n\t\t\t\tstartText = startText + \"【失败】\\n视频缓冲中...\";\n\t\t\t\tstartVideoInfo.setText(startText);\n\t\t\t}\n//\t        mDanmakuView.prepare(mParser);\n//\t        mDanmakuView.showFPS(true);\n//\t        mDanmakuView.enableDanmakuDrawingCache(true);\n            isload = true;\n\t\t\tIntent serviceIntent = new Intent(getApplicationContext(), PlayerService.class);\n\t\t\tserviceIntent.putExtra(\"isHWCodec\", mIsHWCodec);\n\t\t\tbindService(serviceIntent, vPlayerServiceConnection,Context.BIND_AUTO_CREATE);\n\t\t\tstartText = startText + \"【完成】\\n视频缓冲中...\";\n\t\t\tstartVideoInfo.setText(startText);\n\t\t}\n\t}\n\t\n\t/*退出的间隔时间 */\n\tprivate static final long EXIT_INTERVAL_TIME = 2000;\n\tprivate long touchTime = 0;\n\n    public boolean onKeyUp(int keyCode, KeyEvent event) {\n\t\tif (keyCode == KeyEvent.KEYCODE_BACK\n\t\t\t) {\n\t\t\tlong currentTime = System.currentTimeMillis();\n\n\t\t\tif ((currentTime - touchTime) >= EXIT_INTERVAL_TIME) {\n\t\t\t\tToast.makeText(BiliVideoViewActivity.this, \"再按一下退出喵(｡･ω･｡)~\", Toast.LENGTH_SHORT).show();\n\t\t\t\ttouchTime = currentTime;\n\t\t\t} else {\n\t\t\t\tfinish();\n\t\t\t\tif(mDanmakuView!=null)\n\t\t\t\tmDanmakuView.release();\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/activity/BiliWebviewActivity.java",
    "content": "package com.cjj.bb.activity;\n\nimport android.app.Activity;\nimport android.os.Bundle;\nimport android.view.View;\nimport android.view.Window;\nimport android.view.View.OnClickListener;\nimport android.webkit.WebView;\nimport android.webkit.WebViewClient;\nimport android.widget.ImageView;\nimport android.widget.ProgressBar;\n\nimport com.cjj.bb.R;\n\npublic class BiliWebviewActivity extends Activity{\n\tprivate ProgressBar progressBar; // 进度条\n\tprivate ImageView reLoadImageView; // 重新加载的图片\n\tprivate WebView biliWebView;//网页控件\n\n\tprivate ImageView backBtn; // 回退按钮\n\tprivate ImageView commentBtn; // 评论按钮\n\n\tpublic static String url;\n\tprivate String filename;\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\trequestWindowFeature(Window.FEATURE_NO_TITLE);// 无标题\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.bili_webview);\n\n\t\tinit();\n\t\tinitComponent();\n\t\tbiliWebView.getSettings().setJavaScriptEnabled(true);\n\t\tbiliWebView.setWebViewClient(new WebViewClient(){\n\t\t\t@Override\n\t\t\tpublic boolean shouldOverrideUrlLoading(WebView view, String url) {\n\t\t\t\t// TODO Auto-generated method stub\n\t\t\t\tview.loadUrl(url);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t});\n\t\tbiliWebView.loadUrl(url);\n\n\n\t\t\n\t}\n\t\n\n\t// 初始化\n\tprivate void init() {\n\t\turl = getIntent().getExtras().getString(\"bannerLink\");\n\t\tfilename = url.substring(url.lastIndexOf(\"/\") + 1);\n\t\tSystem.out.println(\"filename--->\" + filename);\n\t}\n\n\t// 初始化组件\n\tprivate void initComponent() {\n\t\tbiliWebView = (WebView)findViewById(R.id.BiliWebView);\n\t\tprogressBar = (ProgressBar) findViewById(R.id.blogContentPro);\n\t\treLoadImageView = (ImageView) findViewById(R.id.reLoadImage);\n\t\treLoadImageView.setOnClickListener(new OnClickListener() {\n\n\t\t\t@Override\n\t\t\tpublic void onClick(View view) {\n\t\t\t\treLoadImageView.setVisibility(View.INVISIBLE);\n\t\t\t\tprogressBar.setVisibility(View.VISIBLE);\n\n\t\t\t}\n\t\t});\n\n\t\tbackBtn = (ImageView) findViewById(R.id.backBtn);\n\t\tbackBtn.setOnClickListener(new OnClickListener() {\n\n\t\t\t@Override\n\t\t\tpublic void onClick(View arg0) {\n\t\t\t\tfinish();\n\t\t\t}\n\t\t});\n\n\t\tcommentBtn = (ImageView) findViewById(R.id.comment);\n\t\t\n\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/activity/DonghuaActivity.java",
    "content": "package com.cjj.bb.activity;\n\n\n\nimport android.os.Bundle;\nimport android.support.v4.app.FragmentActivity;\nimport android.support.v4.app.FragmentPagerAdapter;\nimport android.support.v4.view.ViewPager;\nimport android.support.v7.app.ActionBarActivity;\nimport android.util.Log;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.view.Window;\nimport android.widget.ImageButton;\nimport android.widget.TextView;\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.adapter.BankumiTabAdapter;\nimport com.cjj.bb.adapter.DianyingTabAdapter;\nimport com.cjj.bb.adapter.DonghuaTabAdapter;\nimport com.cjj.bb.adapter.KejiTabAdapter;\nimport com.cjj.bb.adapter.MusicTabAdapter;\nimport com.cjj.bb.adapter.RankAdapter;\nimport com.cjj.bb.adapter.YouxiTabAdapter;\nimport com.cjj.bb.adapter.YuleTabAdapter;\n\nimport viewpagerindicator.PageIndicator;\n\n/**\n * 动画界面\n * \n * @author wwj_748\n * @date 2014/8/9\n */\npublic class DonghuaActivity extends ActionBarActivity {\n\tpublic int mAreaType;\n\tprivate View backButton;\n\tprivate TextView titleText;\n\t\n\n\t@Override\n\tpublic void onCreate(Bundle savedInstanceState) {\n\t\trequestWindowFeature(Window.FEATURE_NO_TITLE); // 无标题\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.donghua_tab);\n\t\tbackButton = findViewById(R.id.logobutton);\n\t\ttitleText = (TextView) findViewById(R.id.textViewTitle);\n\t\tFragmentPagerAdapter adapter = null;\n\t\tmAreaType = getIntent().getIntExtra(\"AreaType\", 1);\n\t\tLog.d(\"QAQ\",\"----->\"+mAreaType+titleText.getText());\n\t\tswitch (mAreaType){\n\t\tcase 1:\n\t\t\ttitleText.setText(\"番剧\");\n\t\t\tadapter = new BankumiTabAdapter(getSupportFragmentManager());\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\ttitleText.setText(\"动画\");\n\t\t\tadapter = new DonghuaTabAdapter(getSupportFragmentManager());\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\ttitleText.setText(\"音乐\");\n\t\t\tadapter = new MusicTabAdapter(getSupportFragmentManager());\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\ttitleText.setText(\"游戏\");\n\t\t\tadapter = new YouxiTabAdapter(getSupportFragmentManager());\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\ttitleText.setText(\"科学·技术\");\n\t\t\tadapter = new KejiTabAdapter(getSupportFragmentManager());\n\t\t\tbreak;\n\t\tcase 6:\n\t\t\ttitleText.setText(\"娱乐\");\n\t\t\tadapter = new YuleTabAdapter(getSupportFragmentManager());\n\t\t\tbreak;\n\t\tcase 7:\n\t\t\ttitleText.setText(\"电影\");\n\t\t\tadapter = new DianyingTabAdapter(getSupportFragmentManager());\n\t\t\tbreak;\n\t\tcase 8:\n\t\t\ttitleText.setText(\"排行榜\");\n\t\t\tadapter = new RankAdapter(getSupportFragmentManager());\n\t\t\tbreak;\n\t\tdefault:\n\t\t\ttitleText.setText(\"电影\");\n\t\t\tadapter = new DianyingTabAdapter(getSupportFragmentManager());\n\t\t\tbreak;\n\t\t}\n\n\t\t// 视图切换器\n\t\tViewPager pager = (ViewPager) findViewById(R.id.pager);\n\t\tpager.setOffscreenPageLimit(1);\n\t\tpager.setAdapter(adapter);\n\n\t\t// 页面指示器\n\t\tPageIndicator indicator = (PageIndicator) findViewById(R.id.indicator);\n\t\tindicator.setViewPager(pager);\n\t\t\n\t\tbackButton.setOnClickListener(new OnClickListener() {\n\t\t\t\n\t\t\t@Override\n\t\t\tpublic void onClick(View arg0) {\n\t\t\t\t// TODO Auto-generated method stub\n\t\t\t\tfinish();\n\t\t\t}\n\t\t});\n\n        getSupportActionBar().hide();\n\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/activity/MainActivity.java",
    "content": "package com.cjj.bb.activity;\n\nimport android.app.AlertDialog.Builder;\nimport android.content.DialogInterface;\nimport android.os.Bundle;\nimport android.support.v4.app.FragmentPagerAdapter;\nimport android.support.v4.view.ViewPager;\nimport android.support.v7.app.ActionBarActivity;\nimport android.util.Log;\nimport android.view.KeyEvent;\nimport android.view.Menu;\nimport android.view.Window;\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.adapter.MainTabAdapter;\n\nimport viewpagerindicator.TabPageIndicator;\nimport viewpagerindicator.TitlePageIndicator;\n\n\npublic class MainActivity extends ActionBarActivity {\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n    \trequestWindowFeature(Window.FEATURE_NO_TITLE); // 无标题\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_main);\n        FragmentPagerAdapter adapter = new MainTabAdapter(getSupportFragmentManager());\n        // 视图切换器\n     \tViewPager pager = (ViewPager) findViewById(R.id.pager);\n     \tpager.setOffscreenPageLimit(3);\n     \tpager.setAdapter(adapter);\n\n//     \t// 页面指示器\n//     \tPageIndicator indicator = (PageIndicator) findViewById(R.id.indicator);\n//     \tindicator.setViewPager(pager);\n\n        TitlePageIndicator indicator = (TitlePageIndicator)findViewById(R.id.indicator);\n        indicator.setViewPager(pager);\n        indicator.setCurrentItem(1);\n\n        \n        /*if (savedInstanceState == null) {\n            getSupportFragmentManager().beginTransaction()\n                    .add(R.id.container, new SubareaFragment())\n                    .commit();\n        }*/\n     \t\n//     \tAdManager.getInstance(this).init(\"118250e2aa39dea9\", \"bc5f4490f33da8e6\", false);\n//     \tSpotManager.getInstance(this).loadSpotAds();\n//     \tSpotManager.getInstance(this).setAnimationType(SpotManager.ANIM_ADVANCE);\n//     \tSpotManager.getInstance(this).setSpotOrientation(SpotManager.ORIENTATION_PORTRAIT);\n//     \tAdManager.getInstance(this).setUserDataCollect(true);\n        getSupportActionBar().hide();\n\n    }\n\n\n    @Override\n    public boolean onCreateOptionsMenu(Menu menu) {\n        // Inflate the menu; this adds items to the action bar if it is present.\n        getMenuInflater().inflate(R.menu.main, menu);\n        return true;\n    }\n \n    \n\n\t/**\n\t * On key up.\n\t * \n\t * @param keyCode\n\t *            the key code\n\t * @param event\n\t *            the event\n\t * @return true, if successful\n\t */\n    public boolean onKeyUp(int keyCode, KeyEvent event) {\n\t\tif (keyCode == KeyEvent.KEYCODE_BACK) {\n//\t\t\tshow_existDialog();\n            // 退出程序\n            finish();\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\t\n\t\n\t\n\n    \n//    private void show_existDialog() {\n//\t\t// 弹出退出对话框\n//\t\tBuilder dialog = new Builder(MainActivity.this)\n//\t\t\t\t.setMessage(\"您确定要退出吗？\")\n//\t\t\t\t.setPositiveButton(\"确定\", new DialogInterface.OnClickListener() {\n//\n//\t\t\t\t\t@Override\n//\t\t\t\t\tpublic void onClick(DialogInterface arg0, int arg1) {\n//\t\t\t\t\t\t// 退出程序\n//\t\t\t\t\t\tfinish();\n//\t\t\t\t\t}\n//\t\t\t\t})\n//\t\t\t\t.setNegativeButton(\"支持我\", new DialogInterface.OnClickListener() {\n//\n//\t\t\t\t\t@Override\n//\t\t\t\t\tpublic void onClick(DialogInterface arg0, int arg1) {\n//\t\t\t\t\t\tSpotManager.getInstance(MainActivity.this).showSpotAds(\n//\t\t\t\t\t\t\t\tMainActivity.this, new SpotDialogListener() {\n//\t\t\t\t\t\t\t\t\t@Override\n//\t\t\t\t\t\t\t\t\tpublic void onShowSuccess() {\n//\t\t\t\t\t\t\t\t\t\tLog.i(\"YoumiAdDemo\", \"展示成功\");\n//\t\t\t\t\t\t\t\t\t}\n//\n//\t\t\t\t\t\t\t\t\t@Override\n//\t\t\t\t\t\t\t\t\tpublic void onShowFailed() {\n//\t\t\t\t\t\t\t\t\t\tLog.i(\"YoumiAdDemo\", \"展示失败\");\n//\t\t\t\t\t\t\t\t\t}\n//\n//\t\t\t\t\t\t\t\t\t@Override\n//\t\t\t\t\t\t\t\t\tpublic void onSpotClosed() {\n//\t\t\t\t\t\t\t\t\t\tLog.i(\"YoumiAdDemo\", \"展示关闭\");\n//\t\t\t\t\t\t\t\t\t}\n//\n//\t\t\t\t\t\t\t\t});\n//\t\t\t\t\t}\n//\t\t\t\t});\n//\t\tdialog.show();\n//\t}\n//\n    public void onBackPressed() {\n//        // 如果有需要，可以点击后退关闭插播广告。\n//        if (!SpotManager.getInstance(this).disMiss()) {\n//            // 弹出退出窗口，可以使用自定义退屏弹出和回退动画,参照demo,若不使用动画，传入-1\n//            super.onBackPressed();\n//        }\n    }\n\n    @Override\n    protected void onStop() {\n        // 如果不调用此方法，则按home键的时候会出现图标无法显示的情况。\n//        SpotManager.getInstance(this).onStop();\n        super.onStop();\n    }\n\n    @Override\n\n    protected void onDestroy() {\n//        SpotManager.getInstance(this).onDestroy();\n        super.onDestroy();\n    }\n\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/activity/TVActivity.java",
    "content": "package com.cjj.bb.activity;\n\n\nimport android.os.Bundle;\nimport android.support.v7.app.ActionBarActivity;\nimport android.view.Menu;\nimport android.view.View;\nimport android.view.Window;\nimport android.view.View.OnClickListener;\nimport android.widget.TextView;\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.fragment.OnlineFragment;\n\npublic class TVActivity extends ActionBarActivity{\n\tprivate View backButton;\n\tprivate TextView titleText;\n\tprivate OnlineFragment online = new OnlineFragment();\n\t @Override\n\t    protected void onCreate(Bundle savedInstanceState) {\n\t\t requestWindowFeature(Window.FEATURE_NO_TITLE); // 无标题\n\t        super.onCreate(savedInstanceState);\n\t        setContentView(R.layout.activity_video_info);\n\t        \n\t        if (savedInstanceState == null) {\n\t            getSupportFragmentManager().beginTransaction()\n\t                    .add(R.id.container, online)\n\t                    .commit();\n\t        }\n\t        backButton = findViewById(R.id.logobutton);\n\t\t\ttitleText = (TextView) findViewById(R.id.textViewTitle);\n\t\t\ttitleText.setText(\"网络电视\");\n\t\t\tbackButton.setOnClickListener(new OnClickListener() {\n\t\t\t\t\n\t\t\t\t@Override\n\t\t\t\tpublic void onClick(View arg0) {\n\t\t\t\t\t// TODO Auto-generated method stub\n\t\t\t\t\tfinish();\n\t\t\t\t}\n\t\t\t});\n\n\n         getSupportActionBar().hide();\n\t              \n\t    }\n\n\n\t    @Override\n\t    public boolean onCreateOptionsMenu(Menu menu) {\n\t        // Inflate the menu; this adds items to the action bar if it is present.\n\t        getMenuInflater().inflate(R.menu.main, menu);\n\t        return true;\n\t    }\n\t    @Override\n\t    public void onBackPressed() {\n\t\t\tif (online.onBackPressed())\n\t\t\t\treturn;\n\t\t\telse\n\t\t\t\tsuper.onBackPressed();\n\t    }\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/activity/VideoInfoActivity.java",
    "content": "package com.cjj.bb.activity;\n\n\nimport android.os.Bundle;\nimport android.support.v7.app.ActionBarActivity;\nimport android.view.Menu;\nimport android.view.View;\nimport android.view.Window;\nimport android.view.View.OnClickListener;\nimport android.widget.LinearLayout;\nimport android.widget.TextView;\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.fragment.VideoInfoFragment;\n\npublic class VideoInfoActivity extends ActionBarActivity{\n\tprivate View backButton;\n\tprivate TextView titleText;\n\t @Override\n\t    protected void onCreate(Bundle savedInstanceState) {\n\t\t requestWindowFeature(Window.FEATURE_NO_TITLE); // 无标题\n\t        super.onCreate(savedInstanceState);\n\t        setContentView(R.layout.activity_video_info);\n \n\t        if (savedInstanceState == null) {\n\t            getSupportFragmentManager().beginTransaction()\n\t                    .add(R.id.container, new VideoInfoFragment())\n\t                    .commit();\n\t        }\n\t        backButton = findViewById(R.id.logobutton);\n\t\t\ttitleText = (TextView) findViewById(R.id.textViewTitle);\n\t\t\ttitleText.setText(\"视频详情\");\n\t\t\tbackButton.setOnClickListener(new OnClickListener() {\n\t\t\t\t\n\t\t\t\t@Override\n\t\t\t\tpublic void onClick(View arg0) {\n\t\t\t\t\t// TODO Auto-generated method stub\n\t\t\t\t\tfinish();\n\t\t\t\t}\n\t\t\t});\n\n         getSupportActionBar().hide();\n\t              \n\t    }\n\n\n\t    @Override\n\t    public boolean onCreateOptionsMenu(Menu menu) {\n\t        // Inflate the menu; this adds items to the action bar if it is present.\n\t        getMenuInflater().inflate(R.menu.main, menu);\n\t        return true;\n\t    }\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/activity/VideoViewActivity.java",
    "content": "/*\n * Copyright (C) 2012 YIXIA.COM\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage com.cjj.bb.activity;\n\nimport io.vov.vitamio.utils.FileUtils;\nimport io.vov.vitamio.utils.Log;\nimport io.vov.vitamio.widget.OutlineTextView;\n\nimport java.io.File;\nimport java.nio.ByteBuffer;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.concurrent.atomic.AtomicBoolean;\n\nimport android.annotation.SuppressLint;\nimport android.app.Activity;\nimport android.app.KeyguardManager;\nimport android.content.BroadcastReceiver;\nimport android.content.ComponentName;\nimport android.content.Context;\nimport android.content.Intent;\nimport android.content.IntentFilter;\nimport android.content.ServiceConnection;\nimport android.content.res.Configuration;\nimport android.graphics.Bitmap;\nimport android.media.AudioManager;\nimport android.net.Uri;\nimport android.os.BatteryManager;\nimport android.os.Build;\nimport android.os.Bundle;\nimport android.os.Environment;\nimport android.os.Handler;\nimport android.os.IBinder;\nimport android.os.Message;\nimport android.text.TextUtils;\nimport android.view.SurfaceHolder;\nimport android.view.View;\nimport android.view.ViewGroup.MarginLayoutParams;\nimport android.view.WindowManager;\nimport android.widget.ImageView;\nimport android.widget.TextView;\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.utils.DeviceUtils;\nimport com.cjj.bb.utils.ImageUtils;\nimport com.cjj.bb.utils.IntentHelper;\nimport com.cjj.bb.utils.MediaUtils;\nimport com.cjj.bb.utils.PreferenceUtils;\nimport com.cjj.bb.utils.StringUtils;\nimport com.cjj.bb.utils.ToastUtils;\nimport com.cjj.bb.view.ApplicationUtils;\nimport com.cjj.bb.view.MediaController;\nimport com.cjj.bb.view.PlayerService;\nimport com.cjj.bb.view.VP;\nimport com.cjj.bb.view.VideoView;\n\n\n@SuppressLint(\"HandlerLeak\")\npublic class VideoViewActivity extends Activity implements\n\t\tMediaController.MediaPlayerControl, VideoView.SurfaceCallback {\n\n\tpublic static final int RESULT_FAILED = -7;\n\n\tprivate static final IntentFilter USER_PRESENT_FILTER = new IntentFilter(\n\t\t\tIntent.ACTION_USER_PRESENT);\n\tprivate static final IntentFilter SCREEN_FILTER = new IntentFilter(\n\t\t\tIntent.ACTION_SCREEN_ON);\n\tprivate static final IntentFilter HEADSET_FILTER = new IntentFilter(\n\t\t\tIntent.ACTION_HEADSET_PLUG);\n\tprivate static final IntentFilter BATTERY_FILTER = new IntentFilter(\n\t\t\tIntent.ACTION_BATTERY_CHANGED);\n\n\tprivate boolean mCreated = false;\n\tprivate boolean mNeedLock;\n\tprivate String mDisplayName;\n\tprivate String mBatteryLevel;\n\tprivate boolean mFromStart;\n\tprivate int mLoopCount;\n\tprivate boolean mSaveUri;\n\tprivate int mParentId;\n\tprivate float mStartPos;\n\tprivate boolean mEnd = false;\n\tprivate String mSubPath;\n\tprivate boolean mSubShown;\n\tprivate View mViewRoot;\n\tprivate VideoView mVideoView;\n\tprivate View mVideoLoadingLayout;\n\tprivate TextView mVideoLoadingText;\n\tprivate View mSubtitleContainer;\n\tprivate OutlineTextView mSubtitleText;\n\tprivate ImageView mSubtitleImage;\n\tprivate Uri mUri;\n\tprivate ScreenReceiver mScreenReceiver;\n\tprivate HeadsetPlugReceiver mHeadsetPlugReceiver;\n\tprivate UserPresentReceiver mUserPresentReceiver;\n\tprivate BatteryReceiver mBatteryReceiver;\n\tprivate boolean mReceiverRegistered = false;\n\tprivate boolean mHeadsetPlaying = false;\n\tprivate boolean mCloseComplete = false;\n\tprivate boolean mIsHWCodec = false;\n\n\tprivate MediaController mMediaController;\n\tprivate PlayerService vPlayer;\n\tprivate ServiceConnection vPlayerServiceConnection;\n\t// private Animation mLoadingAnimation;\n\t// private View mLoadingProgressView;\n\n\tstatic {\n\t\tSCREEN_FILTER.addAction(Intent.ACTION_SCREEN_OFF);\n\t}\n\n\t@Override\n\tpublic void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tgetWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,\n\t\t\t\tWindowManager.LayoutParams.FLAG_FULLSCREEN);\n\t\tif (!io.vov.vitamio.LibsChecker.checkVitamioLibs(this))\n\t\t\treturn;\n\n\t\tvPlayerServiceConnection = new ServiceConnection() {\n\t\t\t@Override\n\t\t\tpublic void onServiceConnected(ComponentName name, IBinder service) {\n\t\t\t\tvPlayer = ((PlayerService.LocalBinder) service).getService();\n\t\t\t\tmServiceConnected = true;\n\t\t\t\tif (mSurfaceCreated)\n\t\t\t\t\tvPlayerHandler.sendEmptyMessage(OPEN_FILE);\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void onServiceDisconnected(ComponentName name) {\n\t\t\t\tvPlayer = null;\n\t\t\t\tmServiceConnected = false;\n\t\t\t}\n\t\t};\n\n\t\tsetVolumeControlStream(AudioManager.STREAM_MUSIC);\n\t\tparseIntent(getIntent());\n\t\tloadView(R.layout.activity_video);\n\t\tmanageReceivers();\n\n\t\tmCreated = true;\n\t}\n\n\tprivate void attachMediaController() {\n\t\tif (mMediaController != null) {\n\t\t\tmNeedLock = mMediaController.isLocked();\n\t\t\tmMediaController.release();\n\t\t}\n\t\tmMediaController = new MediaController(this, mNeedLock);\n\t\tmMediaController.setMediaPlayer(this);\n\t\tmMediaController.setAnchorView(mVideoView.getRootView());\n\t\tmMediaController.setDanmakuVisible(false);\n\t\tsetFileName();\n\t\tsetBatteryLevel();\n\t}\n\n\t@Override\n\tpublic void onStart() {\n\t\tsuper.onStart();\n\t\tif (!mCreated)\n\t\t\treturn;\n\t\tIntent serviceIntent = new Intent(this, PlayerService.class);\n\t\tserviceIntent.putExtra(\"isHWCodec\", mIsHWCodec);\n\t\tbindService(serviceIntent, vPlayerServiceConnection,\n\t\t\t\tContext.BIND_AUTO_CREATE);\n\t}\n\n\t@Override\n\tpublic void onResume() {\n\t\tsuper.onResume();\n\t\tif (!mCreated)\n\t\t\treturn;\n\t\tif (isInitialized()) {\n\t\t\tKeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);\n\t\t\tif (!keyguardManager.inKeyguardRestrictedInputMode()) {\n\t\t\t\tstartPlayer();\n\t\t\t}\n\t\t} else {\n\t\t\tif (mCloseComplete) {\n\t\t\t\treOpen();\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void onPause() {\n\t\tsuper.onPause();\n\t\tif (!mCreated)\n\t\t\treturn;\n\t\tif (isInitialized()) {\n\t\t\tsavePosition();\n\t\t\tif (vPlayer != null && vPlayer.isPlaying()) {\n\t\t\t\tstopPlayer();\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void onStop() {\n\t\tsuper.onStop();\n\t\tif (!mCreated)\n\t\t\treturn;\n\t\tif (isInitialized()) {\n\t\t\tvPlayer.releaseSurface();\n\t\t}\n\t\tif (mServiceConnected) {\n\t\t\tunbindService(vPlayerServiceConnection);\n\t\t\tmServiceConnected = false;\n\t\t}\n\n\t}\n\n\t@Override\n\tpublic void onDestroy() {\n\t\tsuper.onDestroy();\n\t\tif (!mCreated)\n\t\t\treturn;\n\t\tmanageReceivers();\n\t\tif (isInitialized() && !vPlayer.isPlaying())\n\t\t\trelease();\n\t\tif (mMediaController != null)\n\t\t\tmMediaController.release();\n\t}\n\n\t@Override\n\tpublic void onConfigurationChanged(Configuration newConfig) {\n\t\tif (isInitialized()) {\n\t\t\tsetVideoLayout();\n\t\t\tattachMediaController();\n\t\t}\n\n\t\tsuper.onConfigurationChanged(newConfig);\n\t}\n\n\t@Override\n\tpublic void onBackPressed() {\n\t\tsuper.onBackPressed();\n\t}\n\n\t@Override\n\tprotected void onSaveInstanceState(Bundle outState) {\n\t\t// http://code.google.com/p/android/issues/detail?id=19917\n\t\toutState.putString(\"WORKAROUND_FOR_BUG_19917_KEY\",\n\t\t\t\t\"WORKAROUND_FOR_BUG_19917_VALUE\");\n\t\tsuper.onSaveInstanceState(outState);\n\t}\n\n\t@Override\n\tpublic void showMenu() {\n\n\t}\n\n\tprivate void loadView(int id) {\n\t\tsetContentView(id);\n\t\tgetWindow().setBackgroundDrawable(null);\n\t\tmViewRoot = findViewById(R.id.video_root);\n\t\tmVideoView = (VideoView) findViewById(R.id.video);\n\t\tmVideoView.initialize(this, this, mIsHWCodec);\n\t\tmSubtitleContainer = findViewById(R.id.subtitle_container);\n\t\tmSubtitleText = (OutlineTextView) findViewById(R.id.subtitle_text);\n\t\tmSubtitleImage = (ImageView) findViewById(R.id.subtitle_image);\n\t\tmVideoLoadingText = (TextView) findViewById(R.id.video_loading_text);\n\t\tmVideoLoadingLayout = findViewById(R.id.video_loading);\n\t\t// mLoadingProgressView =\n\t\t// mVideoLoadingLayout.findViewById(R.id.video_loading_progress);\n\n\t\t// mLoadingAnimation = AnimationUtils.loadAnimation(VideoActivity.this,\n\t\t// R.anim.loading_rotate);\n\t\tgetWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);\n\t}\n\n\tprivate void parseIntent(Intent i) {\n\t\tUri dat = IntentHelper.getIntentUri(i);\n\t\tif (dat == null)\n\t\t\tresultFinish(RESULT_FAILED);\n\n\t\tString datString = dat.toString();\n\t\tif (!datString.equals(dat.toString()))\n\t\t\tdat = Uri.parse(datString);\n\n\t\tmUri = dat;\n\n\t\tmNeedLock = i.getBooleanExtra(\"lockScreen\", false);\n\t\tmDisplayName = i.getStringExtra(\"displayName\");\n\t\tmFromStart = i.getBooleanExtra(\"fromStart\", false);\n\t\tmSaveUri = i.getBooleanExtra(\"saveUri\", true);\n\t\tmStartPos = i.getFloatExtra(\"startPosition\", -1.0f);\n\t\tmLoopCount = i.getIntExtra(\"loopCount\", 1);\n\t\tmParentId = i.getIntExtra(\"parentId\", 0);\n\t\tmSubPath = i.getStringExtra(\"subPath\");\n\t\tmSubShown = i.getBooleanExtra(\"subShown\", true);\n\t\tmIsHWCodec = i.getBooleanExtra(\"hwCodec\", false);\n\t\tLog.i(\"L: %b, N: %s, S: %b, P: %f, LP: %d\", mNeedLock, mDisplayName,\n                mFromStart, mStartPos, mLoopCount);\n\t}\n\n\tprivate void manageReceivers() {\n\t\tif (!mReceiverRegistered) {\n\t\t\tmScreenReceiver = new ScreenReceiver();\n\t\t\tregisterReceiver(mScreenReceiver, SCREEN_FILTER);\n\t\t\tmUserPresentReceiver = new UserPresentReceiver();\n\t\t\tregisterReceiver(mUserPresentReceiver, USER_PRESENT_FILTER);\n\t\t\tmBatteryReceiver = new BatteryReceiver();\n\t\t\tregisterReceiver(mBatteryReceiver, BATTERY_FILTER);\n\t\t\tmHeadsetPlugReceiver = new HeadsetPlugReceiver();\n\t\t\tregisterReceiver(mHeadsetPlugReceiver, HEADSET_FILTER);\n\t\t\tmReceiverRegistered = true;\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tif (mScreenReceiver != null)\n\t\t\t\t\tunregisterReceiver(mScreenReceiver);\n\t\t\t\tif (mUserPresentReceiver != null)\n\t\t\t\t\tunregisterReceiver(mUserPresentReceiver);\n\t\t\t\tif (mHeadsetPlugReceiver != null)\n\t\t\t\t\tunregisterReceiver(mHeadsetPlugReceiver);\n\t\t\t\tif (mBatteryReceiver != null)\n\t\t\t\t\tunregisterReceiver(mBatteryReceiver);\n\t\t\t} catch (IllegalArgumentException e) {\n\t\t\t}\n\t\t\tmReceiverRegistered = false;\n\t\t}\n\t}\n\n\tprivate void setFileName() {\n\t\tif (mUri != null) {\n\t\t\tString name = null;\n\t\t\tif (mUri.getScheme() == null || mUri.getScheme().equals(\"file\"))\n\t\t\t\tname = FileUtils.getName(mUri.toString());\n\t\t\telse\n\t\t\t\tname = mUri.getLastPathSegment();\n\t\t\tif (name == null)\n\t\t\t\tname = \"null\";\n\t\t\tif (mDisplayName == null)\n\t\t\t\tmDisplayName = name;\n\t\t\tmMediaController.setFileName(mDisplayName);\n\t\t}\n\t}\n\n\tprivate void applyResult(int resultCode) {\n\t\tvPlayerHandler.removeMessages(BUFFER_PROGRESS);\n\t\tIntent i = new Intent();\n\t\ti.putExtra(\"filePath\", mUri.toString());\n\t\tif (isInitialized()) {\n\t\t\ti.putExtra(\"position\", (double) vPlayer.getCurrentPosition()\n\t\t\t\t\t/ vPlayer.getDuration());\n\t\t\ti.putExtra(\"duration\", vPlayer.getDuration());\n\t\t\tsavePosition();\n\t\t}\n\t\tswitch (resultCode) {\n\t\tcase RESULT_FAILED:\n\t\t\tToastUtils.showLongToast(R.string.video_cannot_play);\n\t\t\tbreak;\n\t\tcase RESULT_CANCELED:\n\t\tcase RESULT_OK:\n\t\t\tbreak;\n\t\t}\n\t\tsetResult(resultCode, i);\n\t}\n\n\tprivate void resultFinish(int resultCode) {\n\t\tapplyResult(resultCode);\n\t\tif (DeviceUtils.hasICS() && resultCode != RESULT_FAILED) {\n\t\t\tandroid.os.Process.killProcess(android.os.Process.myPid());\n\t\t} else {\n\t\t\tfinish();\n\t\t}\n\t}\n\n\tprivate void release() {\n\t\tif (vPlayer != null) {\n\t\t\tif (DeviceUtils.hasICS()) {\n\t\t\t\tandroid.os.Process.killProcess(android.os.Process.myPid());\n\t\t\t} else {\n\t\t\t\tvPlayer.release();\n\t\t\t\tvPlayer.releaseContext();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void reOpen(Uri path, String name, boolean fromStart) {\n\t\tif (isInitialized()) {\n\t\t\tsavePosition();\n\t\t\tvPlayer.release();\n\t\t\tvPlayer.releaseContext();\n\t\t}\n\t\tIntent i = getIntent();\n\t\tif (mMediaController != null)\n\t\t\ti.putExtra(\"lockScreen\", mMediaController.isLocked());\n\t\ti.putExtra(\"startPosition\", PreferenceUtils.getFloat(mUri\n                + VP.SESSION_LAST_POSITION_SUFIX, 7.7f));\n\t\ti.putExtra(\"fromStart\", fromStart);\n\t\ti.putExtra(\"displayName\", name);\n\t\ti.setData(path);\n\t\tparseIntent(i);\n\t\tmUri = path;\n\t\tif (mViewRoot != null)\n\t\t\tmViewRoot.invalidate();\n\t\tif (mOpened != null)\n\t\t\tmOpened.set(false);\n\t}\n\n\tpublic void reOpen() {\n\t\treOpen(mUri, mDisplayName, false);\n\t}\n\n\tprotected void startPlayer() {\n\t\tif (isInitialized() && mScreenReceiver.screenOn\n\t\t\t\t&& !vPlayer.isBuffering()) {\n\t\t\tLog.i(\"VideoActivity#startPlayer\");\n\t\t\tif (!vPlayer.isPlaying()) {\n\t\t\t\tvPlayer.start();\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected void stopPlayer() {\n\t\tif (isInitialized()) {\n\t\t\tvPlayer.stop();\n\t\t}\n\t}\n\n\tprivate void setBatteryLevel() {\n\t\tif (mMediaController != null)\n\t\t\tmMediaController.setBatteryLevel(mBatteryLevel);\n\t}\n\n\tprivate class BatteryReceiver extends BroadcastReceiver {\n\t\t@Override\n\t\tpublic void onReceive(Context context, Intent intent) {\n\t\t\tint level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);\n\t\t\tint scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);\n\t\t\tint percent = scale > 0 ? level * 100 / scale : 0;\n\t\t\tif (percent > 100)\n\t\t\t\tpercent = 100;\n\t\t\tmBatteryLevel = String.valueOf(percent) + \"%\";\n\t\t\tsetBatteryLevel();\n\t\t}\n\t}\n\n\tprivate class UserPresentReceiver extends BroadcastReceiver {\n\t\t@Override\n\t\tpublic void onReceive(Context context, Intent intent) {\n\t\t\tif (isRootActivity()) {\n\t\t\t\tstartPlayer();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate boolean isRootActivity() {\n\t\treturn ApplicationUtils.isTopActivity(getApplicationContext(),\n                getClass().getName());\n\t\t// ActivityManager activity = (ActivityManager)\n\t\t// getSystemService(Context.ACTIVITY_SERVICE);\n\t\t// return\n\t\t// activity.getRunningTasks(1).get(0).topActivity.flattenToString().endsWith(\"io.vov.vitamio.activity.VideoActivity\");\n\t}\n\n\tpublic class HeadsetPlugReceiver extends BroadcastReceiver {\n\t\t@Override\n\t\tpublic void onReceive(Context context, Intent intent) {\n\t\t\tif (intent != null && intent.hasExtra(\"state\")) {\n\t\t\t\tint state = intent.getIntExtra(\"state\", -1);\n\t\t\t\tif (state == 0) {\n\t\t\t\t\tmHeadsetPlaying = isPlaying();\n\t\t\t\t\tstopPlayer();\n\t\t\t\t} else if (state == 1) {\n\t\t\t\t\tif (mHeadsetPlaying)\n\t\t\t\t\t\tstartPlayer();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tprivate class ScreenReceiver extends BroadcastReceiver {\n\t\tprivate boolean screenOn = true;\n\n\t\t@Override\n\t\tpublic void onReceive(Context context, Intent intent) {\n\t\t\tif (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {\n\t\t\t\tscreenOn = false;\n\t\t\t\tstopPlayer();\n\t\t\t} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {\n\t\t\t\tscreenOn = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void loadVPlayerPrefs() {\n\t\tif (!isInitialized())\n\t\t\treturn;\n\t\tvPlayer.setBuffer(VP.DEFAULT_BUF_SIZE);\n\t\tvPlayer.setVideoQuality(VP.DEFAULT_VIDEO_QUALITY);\n\t\tvPlayer.setDeinterlace(VP.DEFAULT_DEINTERLACE);\n\t\tvPlayer.setVolume(VP.DEFAULT_STEREO_VOLUME, VP.DEFAULT_STEREO_VOLUME);\n\t\tvPlayer.setSubEncoding(VP.DEFAULT_SUB_ENCODING);\n\t\tMarginLayoutParams lp = (MarginLayoutParams) mSubtitleContainer\n\t\t\t\t.getLayoutParams();\n\t\tlp.bottomMargin = (int) VP.DEFAULT_SUB_POS;\n\t\tmSubtitleContainer.setLayoutParams(lp);\n\t\tvPlayer.setSubShown(mSubShown);\n\t\tsetTextViewStyle(mSubtitleText);\n\t\tif (!TextUtils.isEmpty(mSubPath))\n\t\t\tvPlayer.setSubPath(mSubPath);\n\t\tif (mVideoView != null && isInitialized())\n\t\t\tsetVideoLayout();\n\t}\n\n\tprivate void setTextViewStyle(OutlineTextView v) {\n\t\tv.setTextColor(VP.DEFAULT_SUB_COLOR);\n\t\tv.setTypeface(VP.getTypeface(VP.DEFAULT_TYPEFACE_INT),\n\t\t\t\tVP.DEFAULT_SUB_STYLE);\n\t\tv.setShadowLayer(VP.DEFAULT_SUB_SHADOWRADIUS, 0, 0,\n\t\t\t\tVP.DEFAULT_SUB_SHADOWCOLOR);\n\t}\n\n\tprivate boolean isInitialized() {\n\t\treturn (mCreated && vPlayer != null && vPlayer.isInitialized());\n\t}\n\n\tprivate Handler mSubHandler = new Handler() {\n\t\tBundle data;\n\t\tString text;\n\t\tbyte[] pixels;\n\t\tint width = 0, height = 0;\n\t\tBitmap bm = null;\n\t\tint oldType = SUBTITLE_TEXT;\n\n\t\t@Override\n\t\tpublic void handleMessage(Message msg) {\n\t\t\tdata = msg.getData();\n\t\t\tswitch (msg.what) {\n\t\t\tcase SUBTITLE_TEXT:\n\t\t\t\tif (oldType != SUBTITLE_TEXT) {\n\t\t\t\t\tmSubtitleImage.setVisibility(View.GONE);\n\t\t\t\t\tmSubtitleText.setVisibility(View.VISIBLE);\n\t\t\t\t\toldType = SUBTITLE_TEXT;\n\t\t\t\t}\n\t\t\t\ttext = data.getString(VP.SUB_TEXT_KEY);\n\t\t\t\tmSubtitleText.setText(text == null ? \"\" : text.trim());\n\t\t\t\tbreak;\n\t\t\tcase SUBTITLE_BITMAP:\n\t\t\t\tif (oldType != SUBTITLE_BITMAP) {\n\t\t\t\t\tmSubtitleText.setVisibility(View.GONE);\n\t\t\t\t\tmSubtitleImage.setVisibility(View.VISIBLE);\n\t\t\t\t\toldType = SUBTITLE_BITMAP;\n\t\t\t\t}\n\t\t\t\tpixels = data.getByteArray(VP.SUB_PIXELS_KEY);\n\t\t\t\tif (bm == null || width != data.getInt(VP.SUB_WIDTH_KEY)\n\t\t\t\t\t\t|| height != data.getInt(VP.SUB_HEIGHT_KEY)) {\n\t\t\t\t\twidth = data.getInt(VP.SUB_WIDTH_KEY);\n\t\t\t\t\theight = data.getInt(VP.SUB_HEIGHT_KEY);\n\t\t\t\t\tbm = Bitmap.createBitmap(width, height,\n\t\t\t\t\t\t\tBitmap.Config.ARGB_8888);\n\t\t\t\t}\n\t\t\t\tif (pixels != null)\n\t\t\t\t\tbm.copyPixelsFromBuffer(ByteBuffer.wrap(pixels));\n\t\t\t\tmSubtitleImage.setImageBitmap(bm);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate AtomicBoolean mOpened = new AtomicBoolean(Boolean.FALSE);\n\tprivate boolean mSurfaceCreated = false;\n\tprivate boolean mServiceConnected = false;\n\tprivate Object mOpenLock = new Object();\n\tprivate static final int OPEN_FILE = 0;\n\tprivate static final int OPEN_START = 1;\n\tprivate static final int OPEN_SUCCESS = 2;\n\tprivate static final int OPEN_FAILED = 3;\n\tprivate static final int HW_FAILED = 4;\n\tprivate static final int LOAD_PREFS = 5;\n\tprivate static final int BUFFER_START = 11;\n\tprivate static final int BUFFER_PROGRESS = 12;\n\tprivate static final int BUFFER_COMPLETE = 13;\n\tprivate static final int CLOSE_START = 21;\n\tprivate static final int CLOSE_COMPLETE = 22;\n\tprivate static final int SUBTITLE_TEXT = 0;\n\tprivate static final int SUBTITLE_BITMAP = 1;\n\tprivate Handler vPlayerHandler = new Handler() {\n\t\t@Override\n\t\tpublic void handleMessage(Message msg) {\n\t\t\tswitch (msg.what) {\n\t\t\tcase OPEN_FILE:\n\t\t\t\tsynchronized (mOpenLock) {\n\t\t\t\t\tif (!mOpened.get() && vPlayer != null) {\n\t\t\t\t\t\tmOpened.set(true);\n\t\t\t\t\t\tvPlayer.setVPlayerListener(vPlayerListener);\n\t\t\t\t\t\tif (vPlayer.isInitialized())\n\t\t\t\t\t\t\tmUri = vPlayer.getUri();\n\n\t\t\t\t\t\tif (mVideoView != null)\n\t\t\t\t\t\t\tvPlayer.setDisplay(mVideoView.getHolder());\n\t\t\t\t\t\tif (mUri != null)\n\t\t\t\t\t\t\tvPlayer.initialize(mUri, mDisplayName, mSaveUri,\n\t\t\t\t\t\t\t\t\tgetStartPosition(), vPlayerListener,\n\t\t\t\t\t\t\t\t\tmParentId, mIsHWCodec);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase OPEN_START:\n\t\t\t\tmVideoLoadingText.setText(R.string.video_layout_loading);\n\t\t\t\tsetVideoLoadingLayoutVisibility(View.VISIBLE);\n\t\t\t\tbreak;\n\t\t\tcase OPEN_SUCCESS:\n\t\t\t\tloadVPlayerPrefs();\n\t\t\t\tsetVideoLoadingLayoutVisibility(View.GONE);\n\t\t\t\tsetVideoLayout();\n\t\t\t\tvPlayer.start();\n\t\t\t\tattachMediaController();\n\t\t\t\tbreak;\n\t\t\tcase OPEN_FAILED:\n\t\t\t\tresultFinish(RESULT_FAILED);\n\t\t\t\tbreak;\n\t\t\tcase BUFFER_START:\n\t\t\t\tsetVideoLoadingLayoutVisibility(View.VISIBLE);\n\t\t\t\tvPlayerHandler.sendEmptyMessageDelayed(BUFFER_PROGRESS, 1000);\n\t\t\t\tbreak;\n\t\t\tcase BUFFER_PROGRESS:\n\t\t\t\tif (vPlayer.getBufferProgress() >= 100) {\n\t\t\t\t\tsetVideoLoadingLayoutVisibility(View.GONE);\n\t\t\t\t} else {\n\t\t\t\t\tmVideoLoadingText.setText(getString(\n\t\t\t\t\t\t\tR.string.video_layout_buffering_progress,\n\t\t\t\t\t\t\tvPlayer.getBufferProgress()));\n\t\t\t\t\tvPlayerHandler.sendEmptyMessageDelayed(BUFFER_PROGRESS,\n\t\t\t\t\t\t\t1000);\n\t\t\t\t\tstopPlayer();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase BUFFER_COMPLETE:\n\t\t\t\tsetVideoLoadingLayoutVisibility(View.GONE);\n\t\t\t\tvPlayerHandler.removeMessages(BUFFER_PROGRESS);\n\t\t\t\tbreak;\n\t\t\tcase CLOSE_START:\n\t\t\t\tmVideoLoadingText.setText(R.string.closing_file);\n\t\t\t\tsetVideoLoadingLayoutVisibility(View.VISIBLE);\n\t\t\t\tbreak;\n\t\t\tcase CLOSE_COMPLETE:\n\t\t\t\tmCloseComplete = true;\n\t\t\t\tbreak;\n\t\t\tcase HW_FAILED:\n\t\t\t\tif (mVideoView != null) {\n\t\t\t\t\tmVideoView.setVisibility(View.GONE);\n\t\t\t\t\tmVideoView.setVisibility(View.VISIBLE);\n\t\t\t\t\tmVideoView.initialize(VideoViewActivity.this,\n\t\t\t\t\t\t\tVideoViewActivity.this, false);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase LOAD_PREFS:\n\t\t\t\tloadVPlayerPrefs();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate void setVideoLoadingLayoutVisibility(int visibility) {\n\t\tif (mVideoLoadingLayout != null) {\n\t\t\t// if (visibility == View.VISIBLE)\n\t\t\t// mLoadingProgressView.startAnimation(mLoadingAnimation);\n\t\t\tmVideoLoadingLayout.setVisibility(visibility);\n\t\t}\n\t}\n\n\tprivate PlayerService.VPlayerListener vPlayerListener = new PlayerService.VPlayerListener() {\n\t\t@Override\n\t\tpublic void onHWRenderFailed() {\n\t\t\tif (Build.VERSION.SDK_INT < 11 && mIsHWCodec) {\n\t\t\t\tvPlayerHandler.sendEmptyMessage(HW_FAILED);\n\t\t\t\tvPlayerHandler.sendEmptyMessageDelayed(HW_FAILED, 200);\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void onSubChanged(String sub) {\n\t\t\tMessage msg = new Message();\n\t\t\tBundle b = new Bundle();\n\t\t\tb.putString(VP.SUB_TEXT_KEY, sub);\n\t\t\tmsg.setData(b);\n\t\t\tmsg.what = SUBTITLE_TEXT;\n\t\t\tmSubHandler.sendMessage(msg);\n\t\t}\n\n\t\t@Override\n\t\tpublic void onSubChanged(byte[] pixels, int width, int height) {\n\t\t\tMessage msg = new Message();\n\t\t\tBundle b = new Bundle();\n\t\t\tb.putByteArray(VP.SUB_PIXELS_KEY, pixels);\n\t\t\tb.putInt(VP.SUB_WIDTH_KEY, width);\n\t\t\tb.putInt(VP.SUB_HEIGHT_KEY, height);\n\t\t\tmsg.setData(b);\n\t\t\tmsg.what = SUBTITLE_BITMAP;\n\t\t\tmSubHandler.sendMessage(msg);\n\t\t}\n\n\t\t@Override\n\t\tpublic void onOpenStart() {\n\t\t\tvPlayerHandler.sendEmptyMessage(OPEN_START);\n\t\t}\n\n\t\t@Override\n\t\tpublic void onOpenSuccess() {\n\t\t\tvPlayerHandler.sendEmptyMessage(OPEN_SUCCESS);\n\t\t}\n\n\t\t@Override\n\t\tpublic void onOpenFailed() {\n\t\t\tvPlayerHandler.sendEmptyMessage(OPEN_FAILED);\n\t\t}\n\n\t\t@Override\n\t\tpublic void onBufferStart() {\n\t\t\tvPlayerHandler.sendEmptyMessage(BUFFER_START);\n\t\t\tstopPlayer();\n\t\t}\n\n\t\t@Override\n\t\tpublic void onBufferComplete() {\n\t\t\tLog.i(\"VideoActivity#onBufferComplete \" + vPlayer.needResume());\n\t\t\tvPlayerHandler.sendEmptyMessage(BUFFER_COMPLETE);\n\t\t\tif (vPlayer != null && !vPlayer.needResume())\n\t\t\t\tstartPlayer();\n\t\t}\n\n\t\t@Override\n\t\tpublic void onPlaybackComplete() {\n\t\t\tmEnd = true;\n\t\t\tif (mLoopCount == 0 || mLoopCount-- > 1) {\n\t\t\t\tvPlayer.start();\n\t\t\t\tvPlayer.seekTo(0);\n\t\t\t} else {\n\t\t\t\tresultFinish(RESULT_OK);\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void onCloseStart() {\n\t\t\tvPlayerHandler.sendEmptyMessage(CLOSE_START);\n\t\t}\n\n\t\t@Override\n\t\tpublic void onCloseComplete() {\n\t\t\tvPlayerHandler.sendEmptyMessage(CLOSE_COMPLETE);\n\t\t}\n\n\t\t@Override\n\t\tpublic void onVideoSizeChanged(int width, int height) {\n\t\t\tif (mVideoView != null) {\n\t\t\t\tsetVideoLayout();\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void onDownloadRateChanged(int kbPerSec) {\n\t\t\tif (!MediaUtils.isNative(mUri.toString())\n\t\t\t\t\t&& mMediaController != null) {\n\t\t\t\tmMediaController.setDownloadRate(String.format(\"%dKB/s\",\n\t\t\t\t\t\tkbPerSec));\n\t\t\t}\n\t\t}\n\n\t};\n\n\tprivate int mVideoMode = VideoView.VIDEO_LAYOUT_SCALE;\n\n\tprivate void setVideoLayout() {\n\t\tmVideoView.setVideoLayout(mVideoMode, VP.DEFAULT_ASPECT_RATIO,\n\t\t\t\tvPlayer.getVideoWidth(), vPlayer.getVideoHeight(),\n\t\t\t\tvPlayer.getVideoAspectRatio());\n\t}\n\n\tprivate void savePosition() {\n\t\tif (vPlayer != null && mUri != null) {\n\t\t\tPreferenceUtils.put(\n\t\t\t\t\tmUri.toString(),\n\t\t\t\t\tStringUtils.generateTime((int) (0.5 + vPlayer\n                            .getCurrentPosition()))\n\t\t\t\t\t\t\t+ \" / \"\n\t\t\t\t\t\t\t+ StringUtils.generateTime(vPlayer.getDuration()));\n\t\t\tif (mEnd)\n\t\t\t\tPreferenceUtils\n\t\t\t\t\t\t.put(mUri + VP.SESSION_LAST_POSITION_SUFIX, 1.0f);\n\t\t\telse\n\t\t\t\tPreferenceUtils\n\t\t\t\t\t\t.put(mUri + VP.SESSION_LAST_POSITION_SUFIX,\n\t\t\t\t\t\t\t\t(float) (vPlayer.getCurrentPosition() / (double) vPlayer\n\t\t\t\t\t\t\t\t\t\t.getDuration()));\n\t\t}\n\t}\n\n\tprivate float getStartPosition() {\n\t\tif (mFromStart)\n\t\t\treturn 1.1f;\n\t\tif (mStartPos <= 0.0f || mStartPos >= 1.0f)\n\t\t\treturn PreferenceUtils.getFloat(mUri\n\t\t\t\t\t+ VP.SESSION_LAST_POSITION_SUFIX, 7.7f);\n\t\treturn mStartPos;\n\t}\n\n\t@Override\n\tpublic int getBufferPercentage() {\n\t\tif (isInitialized())\n\t\t\treturn (int) (vPlayer.getBufferProgress() * 100);\n\t\treturn 0;\n\t}\n\n\t@Override\n\tpublic long getCurrentPosition() {\n\t\tif (isInitialized())\n\t\t\treturn vPlayer.getCurrentPosition();\n\t\treturn (long) (getStartPosition() * vPlayer.getDuration());\n\t}\n\n\t@Override\n\tpublic long getDuration() {\n\t\tif (isInitialized())\n\t\t\treturn vPlayer.getDuration();\n\t\treturn 0;\n\t}\n\n\t@Override\n\tpublic boolean isPlaying() {\n\t\tif (isInitialized())\n\t\t\treturn vPlayer.isPlaying();\n\t\treturn false;\n\t}\n\n\t@Override\n\tpublic void pause() {\n\t\tif (isInitialized())\n\t\t\tvPlayer.stop();\n\t}\n\n\t@Override\n\tpublic void seekTo(long arg0) {\n\t\tif (isInitialized())\n\t\t\tvPlayer.seekTo((float) ((double) arg0 / vPlayer.getDuration()));\n\t}\n\n\t@Override\n\tpublic void start() {\n\t\tif (isInitialized())\n\t\t\tvPlayer.start();\n\t}\n\n\t@Override\n\tpublic void previous() {\n\t}\n\n\t@Override\n\tpublic void next() {\n\t}\n\n\tprivate static final int VIDEO_MAXIMUM_HEIGHT = 2048;\n\tprivate static final int VIDEO_MAXIMUM_WIDTH = 2048;\n\n\t@Override\n\tpublic float scale(float scaleFactor) {\n\t\tfloat userRatio = VP.DEFAULT_ASPECT_RATIO;\n\t\tint videoWidth = vPlayer.getVideoWidth();\n\t\tint videoHeight = vPlayer.getVideoHeight();\n\t\tfloat videoRatio = vPlayer.getVideoAspectRatio();\n\t\tfloat currentRatio = mVideoView.mVideoHeight / (float) videoHeight;\n\n\t\tcurrentRatio += (scaleFactor - 1);\n\t\tif (videoWidth * currentRatio >= VIDEO_MAXIMUM_WIDTH)\n\t\t\tcurrentRatio = VIDEO_MAXIMUM_WIDTH / (float) videoWidth;\n\n\t\tif (videoHeight * currentRatio >= VIDEO_MAXIMUM_HEIGHT)\n\t\t\tcurrentRatio = VIDEO_MAXIMUM_HEIGHT / (float) videoHeight;\n\n\t\tif (currentRatio < 0.5f)\n\t\t\tcurrentRatio = 0.5f;\n\n\t\tmVideoView.mVideoHeight = (int) (videoHeight * currentRatio);\n\t\tmVideoView.setVideoLayout(mVideoMode, userRatio, videoWidth,\n\t\t\t\tvideoHeight, videoRatio);\n\t\treturn currentRatio;\n\t}\n\n\t@SuppressLint(\"SimpleDateFormat\")\n\t@Override\n\tpublic void snapshot() {\n\t\tif (!com.cjj.bb.utils.FileUtils.sdAvailable()) {\n\t\t\tToastUtils.showToast(R.string.file_explorer_sdcard_not_available);\n\t\t} else {\n\t\t\tUri imgUri = null;\n\t\t\tBitmap bitmap = vPlayer.getCurrentFrame();\n\t\t\tif (bitmap != null) {\n\t\t\t\tFile screenshotsDirectory = new File(\n\t\t\t\t\t\tEnvironment\n\t\t\t\t\t\t\t\t.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)\n\t\t\t\t\t\t\t\t+ VP.SNAP_SHOT_PATH);\n\t\t\t\tif (!screenshotsDirectory.exists()) {\n\t\t\t\t\tscreenshotsDirectory.mkdirs();\n\t\t\t\t}\n\n\t\t\t\tFile savePath = new File(\n\t\t\t\t\t\tscreenshotsDirectory.getPath()\n\t\t\t\t\t\t\t\t+ \"/\"\n\t\t\t\t\t\t\t\t+ new SimpleDateFormat(\"yyyyMMddHHmmss\")\n\t\t\t\t\t\t\t\t\t\t.format(new Date()) + \".jpg\");\n\t\t\t\tif (ImageUtils.saveBitmap(savePath.getPath(), bitmap)) {\n\t\t\t\t\timgUri = Uri.fromFile(savePath);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (imgUri != null) {\n\t\t\t\tsendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,\n\t\t\t\t\t\timgUri));\n\t\t\t\tToastUtils.showLongToast(getString(\n\t\t\t\t\t\tR.string.video_screenshot_save_in, imgUri.getPath()));\n\t\t\t} else {\n\t\t\t\tToastUtils.showToast(R.string.video_screenshot_failed);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void toggleVideoMode(int mode) {\n\t\tmVideoMode = mode;\n\t\tsetVideoLayout();\n\t}\n\n\t@Override\n\tpublic void stop() {\n\t\tonBackPressed();\n\t}\n\n\t@Override\n\tpublic long goForward() {\n\t\treturn 0;\n\t}\n\n\t@Override\n\tpublic long goBack() {\n\t\treturn 0;\n\t}\n\n\t@Override\n\tpublic void removeLoadingView() {\n\t\tmVideoLoadingLayout.setVisibility(View.GONE);\n\t}\n\n\t@Override\n\tpublic void onSurfaceCreated(SurfaceHolder holder) {\n\t\tLog.i(\"onSurfaceCreated\");\n\t\tmSurfaceCreated = true;\n\t\tif (mServiceConnected)\n\t\t\tvPlayerHandler.sendEmptyMessage(OPEN_FILE);\n\t\tif (vPlayer != null)\n\t\t\tvPlayer.setDisplay(holder);\n\t}\n\n\t@Override\n\tpublic void onSurfaceChanged(SurfaceHolder holder, int format, int width,\n\t\t\tint height) {\n\t\tif (vPlayer != null) {\n\t\t\tsetVideoLayout();\n\t\t}\n\t}\n\n\t@Override\n\tpublic void onSurfaceDestroyed(SurfaceHolder holder) {\n\t\tLog.i(\"onSurfaceDestroyed\");\n\t\tif (vPlayer != null && vPlayer.isInitialized()) {\n\t\t\tif (vPlayer.isPlaying()) {\n\t\t\t\tvPlayer.stop();\n\t\t\t\tvPlayer.setState(PlayerService.STATE_NEED_RESUME);\n\t\t\t}\n\t\t\tvPlayer.releaseSurface();\n\t\t\tif (vPlayer.needResume())\n\t\t\t\tvPlayer.start();\n\t\t}\n\t}\n\n\t@Override\n\tpublic void setDanmakushow(boolean isShow) {\n\t\t// TODO Auto-generated method stub\n\t\t\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/adapter/AreaGridAdapter.java",
    "content": "package com.cjj.bb.adapter;\n\nimport java.util.List;\n\n\n\nimport android.app.Activity;\nimport android.content.Context;\nimport android.content.Intent;\nimport android.os.Bundle;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.view.ViewGroup;\nimport android.widget.BaseAdapter;\nimport android.widget.ImageView;\nimport android.widget.TextView;\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.activity.DonghuaActivity;\nimport com.cjj.bb.activity.TVActivity;\nimport com.cjj.bb.model.AreaItem;\n\npublic class AreaGridAdapter extends BaseAdapter{\n\tprivate Context mContext;\n\tprivate List<AreaItem> mList;\n\tpublic AreaGridAdapter(Context mContext,List<AreaItem> mList){\n\t\tthis.mContext = mContext;\n\t\tthis.mList = mList;\t\n\t}\n\t\n\n\t@Override\n\tpublic int getCount() {\n\t\treturn mList.size();\n\t}\n\n\t@Override\n\tpublic AreaItem getItem(int position) {\n\t\treturn mList == null ? null : mList.get(position);\n\t}\n\n\t@Override\n\tpublic long getItemId(int position) {\n\t\treturn position;\n\t}\n\n\t@Override\n\tpublic View getView(final int position, View convertView, ViewGroup parent) {\n\t\tAreaItem areaItem = getItem(position);\n\t\tconvertView = LayoutInflater.from(mContext).inflate(R.layout.area_item, null);\n\t\tImageView areaImageView = (ImageView) convertView.findViewById(R.id.areaImageView);\n\t\tTextView areaTextView = (TextView) convertView.findViewById(R.id.areaTextView);\n\t\tareaImageView.setImageResource(areaItem.getImg());\n\t\tareaTextView.setText(areaItem.getText());\n\t\tconvertView.setOnClickListener(new OnClickListener() {\n\n\t\t\t@Override\n\t\t\tpublic void onClick(View v) {\n\t\t\t\t// 处理跳转逻辑\n\t\t\t\tIntent i = new Intent();\n\t\t\t\ti.putExtra(\"AreaType\",position+1);\n\t\t\t\tif(position == 7){\n\t\t\t\t\ti.setClass(mContext, TVActivity.class);\n\t\t\t\t}else{\n\t\t\t\t\ti.setClass(mContext, DonghuaActivity.class);\n\t\t\t\t}\n\t\t\t\tmContext.startActivity(i);\n\t\t\t\t// 动画过渡\n\t\t\t\t((Activity) mContext).overridePendingTransition(R.anim.push_left_in,\n\t\t\t\t\t\tR.anim.push_no);\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\treturn convertView;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/adapter/ArrayAdapter.java",
    "content": "package com.cjj.bb.adapter;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Collection;\nimport java.util.List;\n\nimport android.content.Context;\nimport android.view.LayoutInflater;\nimport android.widget.BaseAdapter;\n\npublic abstract class ArrayAdapter<T> extends BaseAdapter {\n\n\t// 数据\n\tprotected ArrayList<T> mObjects;\n\tprotected LayoutInflater mInflater;\n\tprotected final Object mLock = new Object();\n\n\tpublic ArrayAdapter(final Context ctx, final ArrayList<T> l) {\n\t\tmObjects = l == null ? new ArrayList<T>() : l;\n\t\tmInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);\n\t}\n\n\tpublic ArrayAdapter(final Context ctx, final T... l) {\n\t\tmObjects = new ArrayList<T>();\n\t\tmObjects.addAll(Arrays.asList(l));\n\t\tmInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);\n\t}\n\n\tpublic ArrayAdapter(final Context ctx, final List<T> l) {\n\t\tmObjects = new ArrayList<T>();\n\t\tif (l != null)\n\t\t\tmObjects.addAll(l);\n\t\tmInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);\n\t}\n\n\tpublic ArrayAdapter(final Context ctx, final Collection<T> l) {\n\t\tmObjects = new ArrayList<T>();\n\t\tif (l != null)\n\t\t\tmObjects.addAll(l);\n\t\tmInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);\n\t}\n\n\t@Override\n\tpublic int getCount() {\n\t\treturn mObjects.size();\n\t}\n\n\t@Override\n\tpublic T getItem(int position) {\n\t\treturn mObjects.get(position);\n\t}\n\n\t@Override\n\tpublic long getItemId(int position) {\n\t\treturn 0;\n\t}\n\n\tpublic void add(T item) {\n\t\tthis.mObjects.add(item);\n\t}\n\n\tpublic void replace(ArrayList<T> newObjects) {\n\t\tif (newObjects == null)\n\t\t\tnewObjects = new ArrayList<T>();\n\t\tthis.mObjects = newObjects;\n\t}\n\n\t/**\n\t * Adds the specified items at the end of the array.\n\t * \n\t * @param items The items to add at the end of the array.\n\t */\n\tpublic void addAll(T... items) {\n\t\tArrayList<T> values = this.mObjects;\n\t\tfor (T item : items) {\n\t\t\tvalues.add(item);\n\t\t}\n\t\tthis.mObjects = values;\n\t}\n\n\t/**\n\t * \n\t * @param collection\n\t */\n\tpublic void addAll(Collection<? extends T> collection) {\n\t\tmObjects.addAll(collection);\n\t}\n\n\t/**\n\t * Remove all elements from the list.\n\t */\n\tpublic void clear() {\n\t\tmObjects.clear();\n\t}\n\n\t/**\n\t * 获取所有数据\n\t * \n\t * @return\n\t */\n\tpublic final ArrayList<T> getAll() {\n\t\treturn mObjects;\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/adapter/BankumiTabAdapter.java",
    "content": "package com.cjj.bb.adapter;\n\n\nimport android.support.v4.app.Fragment;\nimport android.support.v4.app.FragmentManager;\nimport android.support.v4.app.FragmentPagerAdapter;\n\nimport com.cjj.bb.fragment.DonghuaFragment;\n\n/**\n * FragmentPager适配器\n * \n * @author wwj_748\n * @2014/8/9\n */\npublic class BankumiTabAdapter extends FragmentPagerAdapter {\n\t// 内容标题\n\tpublic static final String[] DONG_HUA_TITLE = new String[] { \"连载动画\", \"完结动画\",\n\t\t\t\"动画资讯\", \"官方延伸\", \"国产动画\" };\n\t\n\tpublic BankumiTabAdapter(FragmentManager fm) {\n\t\tsuper(fm);\n\t\t// TODO Auto-generated constructor stub\n\t}\n\n\n\t// 获取项\n\t@Override\n\tpublic Fragment getItem(int position) {\n\t\tSystem.out.println(\"Fragment position:\" + position);\n\t\t\n\t\tswitch (position) {\n\t\tcase 0:\n\t\t\treturn new DonghuaFragment(33);\n\t\tcase 1:\n\t\t\treturn new DonghuaFragment(32);\n\t\tcase 2:\n\t\t\treturn new DonghuaFragment(51);\n\t\tcase 3:\n\t\t\treturn new DonghuaFragment(152);\n\t\tcase 4:\n\t\t\treturn new DonghuaFragment(153);\n\t\tdefault:\n\t\t\treturn new DonghuaFragment(33);\n\t\t}\n\n\t\t// MainFragment fragment = new MainFragment(position);\n\t\t// return fragment;\n\t}\n\n\t@Override\n\tpublic CharSequence getPageTitle(int position) {\n\t\t// 返回页面标题\n\t\treturn DONG_HUA_TITLE[position % DONG_HUA_TITLE.length].toUpperCase();\n\t}\n\n\t@Override\n\tpublic int getCount() {\n\t\t// 页面个数\n\t\treturn DONG_HUA_TITLE.length;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/adapter/DianyingTabAdapter.java",
    "content": "package com.cjj.bb.adapter;\n\n\nimport android.support.v4.app.Fragment;\nimport android.support.v4.app.FragmentManager;\nimport android.support.v4.app.FragmentPagerAdapter;\n\nimport com.cjj.bb.fragment.DonghuaFragment;\n\n/**\n * FragmentPager适配器\n * \n * @author wwj_748\n * @2014/8/9\n */\npublic class DianyingTabAdapter extends FragmentPagerAdapter {\n\t// 内容标题\n\tpublic static final String[] DONG_HUA_TITLE = new String[] { \"全区动态\", \"欧美电影\",\n\t\t\t\"日本电影\", \"国产电影\", \"电影相关\" };\n\t\n\tpublic DianyingTabAdapter(FragmentManager fm) {\n\t\tsuper(fm);\n\t\t// TODO Auto-generated constructor stub\n\t}\n\n\n\t// 获取项\n\t@Override\n\tpublic Fragment getItem(int position) {\n\t\tSystem.out.println(\"Fragment position:\" + position);\n\t\t\n\t\tswitch (position) {\n\t\tcase 0:\n\t\t\treturn new DonghuaFragment(23);\n\t\tcase 1:\n\t\t\treturn new DonghuaFragment(145);\n\t\tcase 2:\n\t\t\treturn new DonghuaFragment(146);\n\t\tcase 3:\n\t\t\treturn new DonghuaFragment(147);\n\t\tcase 4:\n\t\t\treturn new DonghuaFragment(82);\n\t\tdefault:\n\t\t\treturn new DonghuaFragment(23);\n\t\t}\n\t\t\n\t\t// MainFragment fragment = new MainFragment(position);\n\t\t// return fragment;\n\t}\n\n\t@Override\n\tpublic CharSequence getPageTitle(int position) {\n\t\t// 返回页面标题\n\t\treturn DONG_HUA_TITLE[position % DONG_HUA_TITLE.length].toUpperCase();\n\t}\n\n\t@Override\n\tpublic int getCount() {\n\t\t// 页面个数\n\t\treturn DONG_HUA_TITLE.length;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/adapter/DonghuaTabAdapter.java",
    "content": "package com.cjj.bb.adapter;\n\n\n\nimport android.support.v4.app.Fragment;\nimport android.support.v4.app.FragmentManager;\nimport android.support.v4.app.FragmentPagerAdapter;\n\nimport com.cjj.bb.fragment.DonghuaFragment;\n\n/**\n * FragmentPager适配器\n * \n * @author wwj_748\n * @2014/8/9\n */\npublic class DonghuaTabAdapter extends FragmentPagerAdapter {\n\t// 内容标题\n\tpublic static final String[] DONG_HUA_TITLE = new String[] { \"全区动态\", \"MAD·AMV\",\n\t\t\t\"MMD·3D\", \"动画短片\", \"综合\" };\n\t\n\tpublic DonghuaTabAdapter(FragmentManager fm) {\n\t\tsuper(fm);\n\t\t// TODO Auto-generated constructor stub\n\t}\n\n\n\t// 获取项\n\t@Override\n\tpublic Fragment getItem(int position) {\n\t\tSystem.out.println(\"Fragment position:\" + position);\n\t\t\n\t\tswitch (position) {\n\t\tcase 0:\n\t\t\treturn new DonghuaFragment(1);\n\t\tcase 1:\n\t\t\treturn new DonghuaFragment(24);\n\t\tcase 2:\n\t\t\treturn new DonghuaFragment(25);\n\t\tcase 3:\n\t\t\treturn new DonghuaFragment(47);\n\t\tcase 4:\n\t\t\treturn new DonghuaFragment(27);\n\t\tdefault:\n\t\t\treturn new DonghuaFragment(1);\n\t\t}\n\n\t\t// MainFragment fragment = new MainFragment(position);\n\t\t// return fragment;\n\t}\n\n\t@Override\n\tpublic CharSequence getPageTitle(int position) {\n\t\t// 返回页面标题\n\t\treturn DONG_HUA_TITLE[position % DONG_HUA_TITLE.length].toUpperCase();\n\t}\n\n\t@Override\n\tpublic int getCount() {\n\t\t// 页面个数\n\t\treturn DONG_HUA_TITLE.length;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/adapter/GameListAdapter.java",
    "content": "package com.cjj.bb.adapter;\n\nimport java.util.List;\n\n\nimport android.app.Activity;\nimport android.content.Context;\nimport android.content.Intent;\nimport android.net.Uri;\nimport android.os.Bundle;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.view.ViewGroup;\nimport android.widget.BaseAdapter;\nimport android.widget.Button;\nimport android.widget.ImageView;\nimport android.widget.TextView;\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.model.GameItem;\nimport com.cjj.bb.utils.ToastUtils;\n\npublic class GameListAdapter extends BaseAdapter{\n\tprivate Context mContext;\n\tprivate List<GameItem> mList;\n\tGameItem gameItem;\n\tpublic GameListAdapter(Context mContext,List<GameItem> mList){\n\t\tthis.mContext = mContext;\n\t\tthis.mList = mList;\t\n\t}\n\t\n\n\t@Override\n\tpublic int getCount() {\n\t\treturn mList.size();\n\t}\n\n\t@Override\n\tpublic GameItem getItem(int position) {\n\t\treturn mList == null ? null : mList.get(position);\n\t}\n\n\t@Override\n\tpublic long getItemId(int position) {\n\t\treturn position;\n\t}\n\n\t@Override\n\tpublic View getView(final int position, View convertView, ViewGroup parent) {\n\t\tgameItem = getItem(position);\n\t\tconvertView = LayoutInflater.from(mContext).inflate(R.layout.game_list_item, null);\n\t\tImageView gameImageView = (ImageView) convertView.findViewById(R.id.game_item_image);\n\t\tTextView gameTextView = (TextView) convertView.findViewById(R.id.game_item_title);\n\t\tButton gameButton = (Button) convertView.findViewById(R.id.GameButton);\n\t\tgameImageView.setImageResource(gameItem.getImg());\n\t\tgameTextView.setText(gameItem.getText());\n\t\tgameButton.setOnClickListener(new OnClickListener() {\n\t\t\t@Override\n\t\t\tpublic void onClick(View v) {\n\t\t\t\t// 处理跳转逻辑\n\t\t\t\tIntent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(mList.get(position).getPath()));\n\t\t\t\tToastUtils.showToast(\"(｀・ω・´)转跳到\" + mList.get(position).getText() + \"官网\");\n\t\t\t\t//i.setClass(mContext, DonghuaActivity.class);\n\t\t\t\tmContext.startActivity(intent);\n\t\t\t\t// 动画过渡\n\t\t\t\t((Activity) mContext).overridePendingTransition(R.anim.push_left_in,R.anim.push_no);\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\treturn convertView;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/adapter/GridAdapter.java",
    "content": "package com.cjj.bb.adapter;\n\nimport java.util.List;\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.activity.VideoInfoActivity;\nimport com.cjj.bb.model.VideoItem;\nimport com.nostra13.universalimageloader.core.ImageLoader;\n\n\nimport android.app.Activity;\nimport android.content.Context;\nimport android.content.Intent;\nimport android.os.Bundle;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.view.ViewGroup;\nimport android.widget.BaseAdapter;\nimport android.widget.ImageView;\nimport android.widget.TextView;\n\npublic class GridAdapter extends BaseAdapter{\n\tprivate Context mContext;\n\tprivate List<VideoItem> mList;\n\tprivate ImageLoader mImageLoader;\n\t\n\tpublic GridAdapter(Context mContext,List<VideoItem> mList,ImageLoader mImageLoader){\n\t\tthis.mContext = mContext;\n\t\tthis.mList = mList;\n\t\tthis.mImageLoader = mImageLoader;\n\t\t\n\t}\n\t\n\n\t@Override\n\tpublic int getCount() {\n\t\treturn mList.size();\n\t}\n\n\t@Override\n\tpublic VideoItem getItem(int position) {\n\t\treturn mList == null ? null : mList.get(position);\n\t}\n\n\t@Override\n\tpublic long getItemId(int position) {\n\t\treturn position;\n\t}\n\n\t@Override\n\tpublic View getView(final int position, View convertView, ViewGroup parent) {\n\t\tViewHolder mHolder;\n\t\tVideoItem videoitem = getItem(position);\n\t\tif(convertView == null){\n\t\t\tconvertView = LayoutInflater.from(mContext).inflate(R.layout.homepage_item, null);\n\t\t\tmHolder = new ViewHolder();\n\t\t\tmHolder.icon = (ImageView) convertView.findViewById(R.id.list_item_image);\n\t\t\tmHolder.msg = (TextView) convertView.findViewById(R.id.list_item_title);\n\t\t\tmHolder.bofang = (TextView) convertView.findViewById(R.id.BangumiImageView_baofang);\n\t\t\tmHolder.danmagu = (TextView) convertView.findViewById(R.id.BangumiImageView_danmugu);\n\t\t\t\n\t\t\tconvertView.setTag(mHolder);\n\t\t}else{\n\t\t\tmHolder = (ViewHolder) convertView.getTag();\n\t\t}\n\t\t\n\t\tmImageLoader.displayImage(videoitem.getPic(), mHolder.icon);\n\t\tmHolder.msg.setText(videoitem.getTitle());\n\t\tmHolder.bofang.setText(videoitem.getPlay());\n\t\tmHolder.danmagu.setText(videoitem.getVideo_review());\n\t\t\n\t\tconvertView.setOnClickListener(new OnClickListener() {\n\n\t\t\t@Override\n\t\t\tpublic void onClick(View v) {\n\t\t\t\t// 处理跳转逻辑\n\t\t\t\tVideoItem item = (VideoItem) mList.get(position);\n\t\t\t\tIntent i = new Intent();\n\t\t\t\tBundle bundle = new Bundle();\n\t\t\t\tbundle.putSerializable(\"videoItemdata\", item);\n\t\t\t\ti.setClass(mContext, VideoInfoActivity.class);\n\t\t\t\ti.putExtras(bundle);\n\t\t\t\tmContext.startActivity(i);\n\t\t\t\t// 动画过渡\n\t\t\t\t((Activity) mContext).overridePendingTransition(R.anim.push_left_in,\n\t\t\t\t\t\tR.anim.push_no);\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\treturn convertView;\n\t}\n\t\n\tprivate class ViewHolder{\n\t\tprivate ImageView icon;\n\t\tprivate TextView msg;\n\t\tprivate TextView bofang;\n\t\tprivate TextView danmagu;\n\t\t\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/adapter/ItemsAdapter.java",
    "content": "package com.cjj.bb.adapter;\n\n\nimport android.app.Activity;\nimport android.content.Context;\nimport android.content.res.Resources;\nimport android.graphics.Bitmap;\nimport android.graphics.BitmapFactory;\nimport android.util.DisplayMetrics;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport android.widget.ArrayAdapter;\nimport android.widget.FrameLayout;\nimport android.widget.ImageView;\nimport android.widget.LinearLayout;\nimport android.widget.TextView;\n\nimport com.cjj.bb.R;\n\npublic class ItemsAdapter extends ArrayAdapter<Integer>{\n\n    Context context; \n    LayoutInflater inflater;\n    String[] texts;\n    int layoutResourceId;\n    float imageWidth;\n    \n    public ItemsAdapter(Context context, int layoutResourceId, Integer[] items,String[] texts) {\n        super(context, layoutResourceId, items);\n        this.context = context;\n        this.layoutResourceId = layoutResourceId;\n        this.texts = texts;\n        \n        float width = ((Activity)context).getWindowManager().getDefaultDisplay().getWidth();\n        float margin = (int)convertDpToPixel(10f, (Activity)context);\n        // two images, three margins of 10dips\n\t\timageWidth = ((width - (3 * margin)) / 2);\n    }\n\n\t@Override\n    public View getView(int position, View convertView, ViewGroup parent) {\n        LinearLayout row = (LinearLayout) convertView;\n        ItemHolder holder;\n        Integer item = getItem(position);\n        \n\t\tif (row == null) {\n\t\t\tholder = new ItemHolder();\n            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);\n            row = (LinearLayout) inflater.inflate(layoutResourceId, parent, false);\n            ImageView itemImage = (ImageView)row.findViewById(R.id.item_image);\n            TextView itemText = (TextView)row.findViewById(R.id.bankumi_item_title);\n\t\t\tholder.itemImage = itemImage;\n\t\t\tholder.itemText = itemText;\n\t\t} else {\n\t\t\tholder = (ItemHolder) row.getTag();\n\t\t}\n\t\t\n\t\trow.setTag(holder);\n\t\tsetImageBitmap(item, holder.itemImage);\n\t\tholder.itemText.setText(texts[position]);\n        return row;\n    }\n\n    public static class ItemHolder\n    {\n    \tImageView itemImage;\n    \tTextView itemText;\n    }\n\t\n    // resize the image proportionately so it fits the entire space\n\tprivate void setImageBitmap(Integer item, ImageView imageView){\n\t\tBitmap bitmap = BitmapFactory.decodeResource(getContext().getResources(), item);\n\t\tfloat i = ((float) imageWidth) / ((float) bitmap.getWidth());\n\t\tfloat imageHeight = i * (bitmap.getHeight());\n\t\tLinearLayout.LayoutParams params = (LinearLayout.LayoutParams) imageView.getLayoutParams();\n\t\tparams.height = (int) imageHeight;\n\t\tparams.width = (int) imageWidth;\n\t\timageView.setLayoutParams(params);\n\t\timageView.setImageResource(item);\n\t}\n\t\n\tpublic static float convertDpToPixel(float dp, Context context){\n\t    Resources resources = context.getResources();\n\t    DisplayMetrics metrics = resources.getDisplayMetrics();\n\t    float px = dp * (metrics.densityDpi/160f);\n\t    return px;\n\t}\n\n}"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/adapter/KejiTabAdapter.java",
    "content": "package com.cjj.bb.adapter;\n\n\nimport android.support.v4.app.Fragment;\nimport android.support.v4.app.FragmentManager;\nimport android.support.v4.app.FragmentPagerAdapter;\n\nimport com.cjj.bb.fragment.DonghuaFragment;\n\n/**\n * FragmentPager适配器\n * \n * @author wwj_748\n * @2014/8/9\n */\npublic class KejiTabAdapter extends FragmentPagerAdapter {\n\t// 内容标题\n\tpublic static final String[] DONG_HUA_TITLE = new String[] { \"全区动态\", \"纪录片\",\n\t\t\"科普人文\", \"野生技术\", \"公开课\" , \"军事\", \"数码\"};\n\t\n\tpublic KejiTabAdapter(FragmentManager fm) {\n\t\tsuper(fm);\n\t\t// TODO Auto-generated constructor stub\n\t}\n\n\n\t// 获取项\n\t@Override\n\tpublic Fragment getItem(int position) {\n\t\tSystem.out.println(\"Fragment position:\" + position);\n\t\t\n\t\tswitch (position) {\n\t\tcase 0:\n\t\t\treturn new DonghuaFragment(36);\n\t\tcase 1:\n\t\t\treturn new DonghuaFragment(37);\n\t\tcase 2:\n\t\t\treturn new DonghuaFragment(124);\n\t\tcase 3:\n\t\t\treturn new DonghuaFragment(122);\n\t\tcase 4:\n\t\t\treturn new DonghuaFragment(39);\n\t\tcase 5:\n\t\t\treturn new DonghuaFragment(96);\n\t\tcase 6:\n\t\t\treturn new DonghuaFragment(95);\n\t\tdefault:\n\t\t\treturn new DonghuaFragment(36);\n\t\t}\n\t\t\n\t\t// MainFragment fragment = new MainFragment(position);\n\t\t// return fragment;\n\t}\n\n\t@Override\n\tpublic CharSequence getPageTitle(int position) {\n\t\t// 返回页面标题\n\t\treturn DONG_HUA_TITLE[position % DONG_HUA_TITLE.length].toUpperCase();\n\t}\n\n\t@Override\n\tpublic int getCount() {\n\t\t// 页面个数\n\t\treturn DONG_HUA_TITLE.length;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/adapter/MainTabAdapter.java",
    "content": "package com.cjj.bb.adapter;\n\n\nimport android.support.v4.app.Fragment;\nimport android.support.v4.app.FragmentManager;\nimport android.support.v4.app.FragmentPagerAdapter;\n\nimport com.cjj.bb.fragment.BangumiFragment;\nimport com.cjj.bb.fragment.DonghuaFragment;\nimport com.cjj.bb.fragment.FragmentLogin;\nimport com.cjj.bb.fragment.FramentTime;\nimport com.cjj.bb.fragment.GamesCenterFragment;\nimport com.cjj.bb.fragment.HomePageFragment2;\nimport com.cjj.bb.fragment.SubareaFragment;\n\n/**\n * FragmentPager适配器\n * \n * @author wwj_748\n * @2014/8/9\n */\npublic class MainTabAdapter extends FragmentPagerAdapter {\n\t// 内容标题\n\tpublic static final String[] DONG_HUA_TITLE = new String[] { \"个人中心\",\"首页\",\n\t\t\t\"分区导航\", \"新番专题\", \"游戏中心\",\"放松时间表\" };\n\tpublic HomePageFragment2 homepage = new HomePageFragment2();\n\tpublic SubareaFragment subarea = new SubareaFragment();\n\t\n\tpublic MainTabAdapter(FragmentManager fm) {\n\t\tsuper(fm);\n\t\t// TODO Auto-generated constructor stub\n\t}\n\n\n\t// 获取项\n\t@Override\n\tpublic Fragment getItem(int position) {\n\t\tSystem.out.println(\"Fragment position:\" + position);\n\t\t\n\t\tswitch (position) {\n            case 0:\n                return new FragmentLogin();\n\t\tcase 1:\n\t\t\treturn homepage;\n\t\tcase 2:\n\t\t\treturn subarea;\n\t\tcase 3:\n\t\t\treturn new BangumiFragment();\n\t\tcase 4:\n\t\t\treturn new GamesCenterFragment();\n            case 5:\n                return new FramentTime();\n\t\tdefault:\n\t\t\treturn new DonghuaFragment(33);\n\t\t}\n\t\t\n\t\t// MainFragment fragment = new MainFragment(position);\n\t\t// return fragment;\n\t}\n\n\t@Override\n\tpublic CharSequence getPageTitle(int position) {\n\t\t// 返回页面标题\n\t\treturn DONG_HUA_TITLE[position % DONG_HUA_TITLE.length].toUpperCase();\n\t}\n\n\t@Override\n\tpublic int getCount() {\n\t\t// 页面个数\n\t\treturn DONG_HUA_TITLE.length;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/adapter/MusicTabAdapter.java",
    "content": "package com.cjj.bb.adapter;\n\n\nimport android.support.v4.app.Fragment;\nimport android.support.v4.app.FragmentManager;\nimport android.support.v4.app.FragmentPagerAdapter;\n\nimport com.cjj.bb.fragment.DonghuaFragment;\n\n/**\n * FragmentPager适配器\n * \n * @author wwj_748\n * @2014/8/9\n */\npublic class MusicTabAdapter extends FragmentPagerAdapter {\n\t// 内容标题\n\tpublic static final String[] DONG_HUA_TITLE = new String[] { \"全区动态\", \"翻唱\",\n\t\t\t\"VOCALOID\", \"演奏\", \"音乐选集\"};\n\t\n\tpublic MusicTabAdapter(FragmentManager fm) {\n\t\tsuper(fm);\n\t\t// TODO Auto-generated constructor stub\n\t}\n\n\n\t// 获取项\n\t@Override\n\tpublic Fragment getItem(int position) {\n\t\tSystem.out.println(\"Fragment position:\" + position);\n\t\t\n\t\tswitch (position) {\n\t\tcase 0:\n\t\t\treturn new DonghuaFragment(3);\n\t\tcase 1:\n\t\t\treturn new DonghuaFragment(31);\n\t\tcase 2:\n\t\t\treturn new DonghuaFragment(30);\n\t\tcase 3:\n\t\t\treturn new DonghuaFragment(59);\n\t\tcase 4:\n\t\t\treturn new DonghuaFragment(130);\n\t\tdefault:\n\t\t\treturn new DonghuaFragment(3);\n\t\t}\n\n\t\t// MainFragment fragment = new MainFragment(position);\n\t\t// return fragment;\n\t}\n\n\t@Override\n\tpublic CharSequence getPageTitle(int position) {\n\t\t// 返回页面标题\n\t\treturn DONG_HUA_TITLE[position % DONG_HUA_TITLE.length].toUpperCase();\n\t}\n\n\t@Override\n\tpublic int getCount() {\n\t\t// 页面个数\n\t\treturn DONG_HUA_TITLE.length;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/adapter/RankAdapter.java",
    "content": "package com.cjj.bb.adapter;\n\n\nimport android.support.v4.app.Fragment;\nimport android.support.v4.app.FragmentManager;\nimport android.support.v4.app.FragmentPagerAdapter;\n\nimport com.cjj.bb.fragment.RankFragment;\n\n/**\n * FragmentPager适配器\n * \n * @author wwj_748\n * @2014/8/9\n */\npublic class RankAdapter extends FragmentPagerAdapter {\n\t// 内容标题\n\tpublic static final String[] DONG_HUA_TITLE = new String[] { \"全区\", \"新番\",\n\t\t\t\"动画\", \"音乐\", \"游戏\", \"科学\", \"娱乐\", \"电影\" };\n\t\n\tpublic RankAdapter(FragmentManager fm) {\n\t\tsuper(fm);\n\t\t// TODO Auto-generated constructor stub\n\t}\n\n\n\t// 获取项\n\t@Override\n\tpublic Fragment getItem(int position) {\n\t\tSystem.out.println(\"Fragment position:\" + position);\n\t\t\n\t\tswitch (position) {\n\t\tcase 0:\n\t\t\treturn new RankFragment(10070);\n\t\tcase 1:\n\t\t\treturn new RankFragment(100733);\n\t\tcase 2:\n\t\t\treturn new RankFragment(10071);\n\t\tcase 3:\n\t\t\treturn new RankFragment(10073);\n\t\tcase 4:\n\t\t\treturn new RankFragment(10074);\n\t\tcase 5:\n\t\t\treturn new RankFragment(100736);\n\t\tcase 6:\n\t\t\treturn new RankFragment(10075);\n\t\tcase 7:\n\t\t\treturn new RankFragment(100723);\n\t\tdefault:\n\t\t\treturn new RankFragment(1);\n\t\t}\n\t\t\n\t\t// MainFragment fragment = new MainFragment(position);\n\t\t// return fragment;\n\t}\n\n\t@Override\n\tpublic CharSequence getPageTitle(int position) {\n\t\t// 返回页面标题\n\t\treturn DONG_HUA_TITLE[position % DONG_HUA_TITLE.length].toUpperCase();\n\t}\n\n\t@Override\n\tpublic int getCount() {\n\t\t// 页面个数\n\t\treturn DONG_HUA_TITLE.length;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/adapter/VideoInfoListAdapter.java",
    "content": "package com.cjj.bb.adapter;\n\nimport java.util.List;\n\n\n\nimport android.app.Activity;\nimport android.content.Context;\nimport android.content.Intent;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.view.ViewGroup;\nimport android.widget.BaseAdapter;\nimport android.widget.TextView;\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.activity.BiliVideoViewActivity;\n\npublic class VideoInfoListAdapter extends BaseAdapter{\n\tprivate Context mContext;\n\tprivate List<String> mList;\n\tString videoItem;\n\tString av;\n\tString page;\n\tpublic VideoInfoListAdapter(Context mContext,List<String> mList,String av){\n\t\tthis.mContext = mContext;\n\t\tthis.mList = mList;\n\t\tthis.av = av;\n\t}\n\t\n\n\t@Override\n\tpublic int getCount() {\n\t\treturn mList.size();\n\t}\n\n\t@Override\n\tpublic String getItem(int position) {\n\t\treturn mList == null ? null : mList.get(position);\n\t}\n\n\t@Override\n\tpublic long getItemId(int position) {\n\t\treturn position;\n\t}\n\n\t@Override\n\tpublic View getView(final int position, View convertView, ViewGroup parent) {\n\t\tvideoItem = getItem(position);\n\t\tconvertView = LayoutInflater.from(mContext).inflate(R.layout.video_info_list_item, null);\n\t\tTextView titleTextView = (TextView) convertView.findViewById(R.id.title);\n\t\tView itemView = convertView.findViewById(R.id.linearlayout_row);\n\t\ttitleTextView.setText(mList.get(position));\n\n\t\titemView.setOnClickListener(new OnClickListener() {\n\t\t\t@Override\n\t\t\tpublic void onClick(View v) {\n\t\t\t\t// 处理跳转逻辑\n\t\t\t\t//ToastUtils.showToast(\"(｀・ω・´) \"+mList.get(position));\n\t\t\t\tpage = String.valueOf(position+1);\n\t\t\t\t//i.setClass(mContext, DonghuaActivity.class);\n\t\t\t\t//mContext.startActivity(intent);\n\t\t\t\t// 动画过渡\n\t\t\t\t//((Activity) mContext).overridePendingTransition(R.anim.push_left_in,R.anim.push_no);\n\t\t\t\tIntent intent = new Intent(mContext, BiliVideoViewActivity.class);\n\t\t\t\tintent.putExtra(\"displayName\",mList.get(position));\n\t\t\t\tintent.putExtra(\"av\",av);\n\t\t\t\tintent.putExtra(\"page\",page);\n\t\t\t\tmContext.startActivity(intent);\n\t\t\t\t((Activity) mContext).overridePendingTransition(R.anim.push_left_in,R.anim.push_no);\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\treturn convertView;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/adapter/VideoListAdapter.java",
    "content": "package com.cjj.bb.adapter;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport android.content.Context;\nimport android.util.Log;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport android.widget.BaseAdapter;\nimport android.widget.ImageView;\nimport android.widget.TextView;\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.model.VideoItem;\nimport com.nostra13.universalimageloader.core.DisplayImageOptions;\nimport com.nostra13.universalimageloader.core.ImageLoader;\nimport com.nostra13.universalimageloader.core.ImageLoaderConfiguration;\nimport com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;\n\n\n/**\n * 视频列表适配器\n * \n * @author wwj_748\n * @date 2012/8/9\n */\npublic class VideoListAdapter extends BaseAdapter {\n\tprivate ViewHolder holder; // 视图容器\n\tprivate LayoutInflater layoutInflater; // 布局加载器\n\tprivate Context context; // 上下文对象\n\tprivate List<VideoItem> list; // 博客列表\n\n\tprivate ImageLoader imageLoader = ImageLoader.getInstance();// 得到图片加载器\n\tprivate DisplayImageOptions options; // 显示图像设置\n\n\tpublic VideoListAdapter(Context context) {\n\t\tsuper();\n\t\tthis.context = context;\n\t\tlayoutInflater = LayoutInflater.from(context);\n\t\tlist = new ArrayList<VideoItem>();\n\n\t\t// 图片加载器初始化\n\t\timageLoader.init(ImageLoaderConfiguration.createDefault(context));\n\t\t// 使用DisplayImageOptions.Builder()创建DisplayImageOptions\n\t\toptions = new DisplayImageOptions.Builder()\n\t\t\t\t.showStubImage(R.drawable.bili_default_image_tv_with_bg) // 设置图片下载期间显示的图片\n\t\t\t\t.showImageForEmptyUri(R.drawable.bili_default_image_tv_with_bg) // 设置图片Uri为空或是错误的时候显示的图片\n\t\t\t\t.showImageOnFail(R.drawable.bili_default_image_tv_with_bg) // 设置图片加载或解码过程中发生错误显示的图片\n\t\t\t\t.cacheInMemory() // 设置下载的图片是否缓存在内存中\n\t\t\t\t.cacheOnDisc() // 设置下载的图片是否缓存在SD卡中\n\t\t\t\t.displayer(new RoundedBitmapDisplayer(1)) // 设置成圆角图片\n\t\t\t\t.build(); // 创建配置过得DisplayImageOption对象\n\t}\n\n\tpublic void setList(List<VideoItem> list) {\n\t\tthis.list = list;\n\t}\n\n\tpublic void addList(List<VideoItem> list) {\n\t\tthis.list.addAll(list);\n\t}\n\n\tpublic void clearList() {\n\t\tthis.list.clear();\n\t}\n\n\tpublic List<VideoItem> getList() {\n\t\treturn list;\n\t}\n\n\tpublic void removeItem(int position) {\n\t\tif (list.size() > 0) {\n\t\t\tlist.remove(position);\n\t\t}\n\t}\n\n\t@Override\n\tpublic int getCount() {\n\t\treturn list.size();\n\t}\n\n\t@Override\n\tpublic Object getItem(int position) {\n\t\treturn list.get(position);\n\t}\n\n\t@Override\n\tpublic long getItemId(int position) {\n\t\treturn position;\n\t}\n\n\t@Override\n\tpublic View getView(int position, View convertView, ViewGroup parent) {\n\t\tif (convertView == null ) {\n\t\t\t// 装载布局文件blog_list_item.xml\n\t\t\tconvertView = layoutInflater.inflate(R.layout.video_list_item, null);\n\t\t\tholder = new ViewHolder();\n\t\t\t// holder.id = (TextView) convertView.findViewById(R.id.id);\n\t\t\tholder.title = (TextView) convertView.findViewById(R.id.list_item_title);\n\t\t\tholder.uptext = (TextView) convertView.findViewById(R.id.TextView_up);\n\t\t\tholder.bofangtext = (TextView) convertView.findViewById(R.id.TextView_bofang);\n\t\t\tholder.img = (ImageView) convertView.findViewById(R.id.list_item_image);\n\t\t\tconvertView.setTag(holder); // 表示给View添加一个格外的数据，\n\t\t} else {\n\t\t\tholder = (ViewHolder) convertView.getTag();// 通过getTag的方法将数据取出来\n\t\t}\n\t\tVideoItem item = list.get(position); // 获取当前数据\n\t\tif (item != null) {\n\t\t\t// 显示标题内容\n\t\t\tholder.title.setText(item.getTitle());\n\t\t\tholder.uptext.setText(\"UP主：\"+item.getAuthor());\n\t\t\tholder.bofangtext.setText(\"播放：\"+item.getPlay());\n\t\t\tif (item.getPic() != null) {\n\t\t\t\tholder.img.setVisibility(View.VISIBLE);\n\t\t\t\t// 异步加载图片\n\t\t\t\timageLoader\n\t\t\t\t\t\t.displayImage(item.getPic(), holder.img, options);\n\t\t\t} else {\n\t\t\t\t// \n\t\t\t\tholder.img.setVisibility(View.VISIBLE); \n\t\t\t}\n\t\t}\n\n\t\treturn convertView;\n\t}\n\n\tprivate class ViewHolder {\n\t\tTextView title;\n\t\tImageView img;\n\t\tTextView uptext;\n\t\tTextView bofangtext;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/adapter/YouxiTabAdapter.java",
    "content": "package com.cjj.bb.adapter;\n\n\nimport android.support.v4.app.Fragment;\nimport android.support.v4.app.FragmentManager;\nimport android.support.v4.app.FragmentPagerAdapter;\n\nimport com.cjj.bb.fragment.DonghuaFragment;\n\n/**\n * FragmentPager适配器\n * \n * @author wwj_748\n * @2014/8/9\n */\npublic class YouxiTabAdapter extends FragmentPagerAdapter {\n\t// 内容标题\n\tpublic static final String[] DONG_HUA_TITLE = new String[] { \"全区动态\", \"单机联机\",\n\t\t\t\"网络游戏\", \"电子竞技\" };\n\t\n\tpublic YouxiTabAdapter(FragmentManager fm) {\n\t\tsuper(fm);\n\t\t// TODO Auto-generated constructor stub\n\t}\n\n\n\t// 获取项\n\t@Override\n\tpublic Fragment getItem(int position) {\n\t\tSystem.out.println(\"Fragment position:\" + position);\n\t\t\n\t\tswitch (position) {\n\t\tcase 0:\n\t\t\treturn new DonghuaFragment(4);\n\t\tcase 1:\n\t\t\treturn new DonghuaFragment(17);\n\t\tcase 2:\n\t\t\treturn new DonghuaFragment(65);\n\t\tcase 3:\n\t\t\treturn new DonghuaFragment(60);\n\t\tdefault:\n\t\t\treturn new DonghuaFragment(4);\n\t\t}\n\t\t\n\t\t// MainFragment fragment = new MainFragment(position);\n\t\t// return fragment;\n\t}\n\n\t@Override\n\tpublic CharSequence getPageTitle(int position) {\n\t\t// 返回页面标题\n\t\treturn DONG_HUA_TITLE[position % DONG_HUA_TITLE.length].toUpperCase();\n\t}\n\n\t@Override\n\tpublic int getCount() {\n\t\t// 页面个数\n\t\treturn DONG_HUA_TITLE.length;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/adapter/YuleTabAdapter.java",
    "content": "package com.cjj.bb.adapter;\n\n\nimport android.support.v4.app.Fragment;\nimport android.support.v4.app.FragmentManager;\nimport android.support.v4.app.FragmentPagerAdapter;\n\nimport com.cjj.bb.fragment.DonghuaFragment;\n\n/**\n * FragmentPager适配器\n * \n * @author wwj_748\n * @2014/8/9\n */\npublic class YuleTabAdapter extends FragmentPagerAdapter {\n\t// 内容标题\n\tpublic static final String[] DONG_HUA_TITLE = new String[] { \"全区动态\", \"搞笑\",\n\t\t\t\"生活\", \"综艺\"};\n\t\n\tpublic YuleTabAdapter(FragmentManager fm) {\n\t\tsuper(fm);\n\t\t// TODO Auto-generated constructor stub\n\t}\n\n\n\t// 获取项\n\t@Override\n\tpublic Fragment getItem(int position) {\n\t\tSystem.out.println(\"Fragment position:\" + position);\n\t\t\n\t\tswitch (position) {\n\t\tcase 0:\n\t\t\treturn new DonghuaFragment(5);\n\t\tcase 1:\n\t\t\treturn new DonghuaFragment(138);\n\t\tcase 2:\n\t\t\treturn new DonghuaFragment(21);\n\t\tcase 3:\n\t\t\treturn new DonghuaFragment(71);\n\t\tdefault:\n\t\t\treturn new DonghuaFragment(5);\n\t\t}\n\t\t\n\t\t// MainFragment fragment = new MainFragment(position);\n\t\t// return fragment;\n\t}\n\n\t@Override\n\tpublic CharSequence getPageTitle(int position) {\n\t\t// 返回页面标题\n\t\treturn DONG_HUA_TITLE[position % DONG_HUA_TITLE.length].toUpperCase();\n\t}\n\n\t@Override\n\tpublic int getCount() {\n\t\t// 页面个数\n\t\treturn DONG_HUA_TITLE.length;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/fragment/BangumiFragment.java",
    "content": "package com.cjj.bb.fragment;\n\n\n\nimport android.os.Bundle;\nimport android.support.annotation.Nullable;\nimport android.support.v4.app.Fragment;\nimport android.view.LayoutInflater;\nimport android.view.MotionEvent;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport android.view.View.OnTouchListener;\nimport android.widget.AbsListView;\nimport android.widget.ListView;\nimport android.widget.AbsListView.OnScrollListener;\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.adapter.ItemsAdapter;\n\npublic class BangumiFragment extends Fragment{\n\tprivate ListView listViewLeft;\n\tprivate ListView listViewRight;\n\tprivate ItemsAdapter leftAdapter;\n\tprivate ItemsAdapter rightAdapter;\n\n\tint[] leftViewsHeights;\n\tint[] rightViewsHeights;\n\t@Override\n\tpublic void onCreate(Bundle savedInstanceState) {\n\t\t// TODO Auto-generated method stub\n\t\tsuper.onCreate(savedInstanceState);\n\t}\n\t\n    @Override\n    public View onCreateView(LayoutInflater inflater, ViewGroup container,\n            Bundle savedInstanceState) {\n    \t View rootView = inflater.inflate(R.layout.items_list, container, false);\n \t\tlistViewLeft = (ListView) rootView.findViewById(R.id.list_view_left);\n \t\tlistViewRight = (ListView)  rootView.findViewById(R.id.list_view_right);\n \t\t\n \t\tloadItems();\n \t\t\n \t\tlistViewLeft.setOnTouchListener(touchListener);\n \t\tlistViewRight.setOnTouchListener(touchListener);\t\t\n \t\tlistViewLeft.setOnScrollListener(scrollListener);\n \t\tlistViewRight.setOnScrollListener(scrollListener);\n    \t \n         return rootView;\n    \t\n    }\n    \n\t// Passing the touch event to the opposite list\n\tOnTouchListener touchListener = new OnTouchListener() {\t\t\t\t\t\n\t\tboolean dispatched = false;\n\t\t\n\t\t@Override\n\t\tpublic boolean onTouch(View v, MotionEvent event) {\n\t\t\tif (v.equals(listViewLeft) && !dispatched) {\n\t\t\t\tdispatched = true;\n\t\t\t\tlistViewRight.dispatchTouchEvent(event);\n\t\t\t} else if (v.equals(listViewRight) && !dispatched) {\n\t\t\t\tdispatched = true;\n\t\t\t\tlistViewLeft.dispatchTouchEvent(event);\n\t\t\t}\n\t\t\t\n\t\t\tdispatched = false;\n\t\t\treturn false;\n\t\t}\n\t};\n\t\n\t/**\n\t * Synchronizing scrolling \n\t * Distance from the top of the first visible element opposite list:\n\t * sum_heights(opposite invisible screens) - sum_heights(invisible screens) + distance from top of the first visible child\n\t */\n\tOnScrollListener scrollListener = new OnScrollListener() {\n\t\t\n\t\t@Override\n\t\tpublic void onScrollStateChanged(AbsListView v, int scrollState) {\t\n\t\t}\n\t\t\n\t\t@Override\n\t\tpublic void onScroll(AbsListView view, int firstVisibleItem,\n\t\t\t\tint visibleItemCount, int totalItemCount) {\n\t\t\t\n\t\t\tif (view.getChildAt(0) != null) {\n\t\t\t\tif (view.equals(listViewLeft) ){\n\t\t\t\t\tleftViewsHeights[view.getFirstVisiblePosition()] = view.getChildAt(0).getHeight();\n\t\t\t\t\t\n\t\t\t\t\tint h = 0;\n\t\t\t\t\tfor (int i = 0; i < listViewRight.getFirstVisiblePosition(); i++) {\n\t\t\t\t\t\th += rightViewsHeights[i];\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tint hi = 0;\n\t\t\t\t\tfor (int i = 0; i < listViewLeft.getFirstVisiblePosition(); i++) {\n\t\t\t\t\t\thi += leftViewsHeights[i];\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tint top = h - hi + view.getChildAt(0).getTop();\n\t\t\t\t\tlistViewRight.setSelectionFromTop(listViewRight.getFirstVisiblePosition(), top);\n\t\t\t\t} else if (view.equals(listViewRight)) {\n\t\t\t\t\trightViewsHeights[view.getFirstVisiblePosition()] = view.getChildAt(0).getHeight();\n\t\t\t\t\t\n\t\t\t\t\tint h = 0;\n\t\t\t\t\tfor (int i = 0; i < listViewLeft.getFirstVisiblePosition(); i++) {\n\t\t\t\t\t\th += leftViewsHeights[i];\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tint hi = 0;\n\t\t\t\t\tfor (int i = 0; i < listViewRight.getFirstVisiblePosition(); i++) {\n\t\t\t\t\t\thi += rightViewsHeights[i];\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tint top = h - hi + view.getChildAt(0).getTop();\n\t\t\t\t\tlistViewLeft.setSelectionFromTop(listViewLeft.getFirstVisiblePosition(), top);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\t};\n\t\n\tprivate void loadItems(){\n\t\tInteger[] leftItems = new Integer[]{R.drawable.c1, R.drawable.c2, R.drawable.c3, R.drawable.c4, R.drawable.c5};\n\t\tInteger[] rightItems = new Integer[]{R.drawable.c6, R.drawable.c7, R.drawable.c8, R.drawable.c9, R.drawable.c10};\n\t\tString[] lefttexts = new String[]{\"御神乐学园组曲\",\"摸索吧！部活剧 第三季\",\"怪盗JOKER 第二季\",\"SHOW BY ROCK!!\",\"雨色可可\"};\n\t\tString[] righttexts = new String[]{\"攻壳机动队ARISE ALTERNATIVE ARCHITECTURE\",\"亚尔斯兰战记\",\"JOJO的奇妙冒险\",\n\t\t\t\t\"黑子的篮球 第三季\",\"可塑性记忆\"};\n\t\tleftAdapter = new ItemsAdapter(getActivity(), R.layout.item, leftItems,lefttexts);\n\t\trightAdapter = new ItemsAdapter(getActivity(), R.layout.item, rightItems,righttexts);\n\t\tlistViewLeft.setAdapter(leftAdapter);\n\t\tlistViewRight.setAdapter(rightAdapter);\n\t\t\n\t\tleftViewsHeights = new int[leftItems.length];\n\t\trightViewsHeights = new int[rightItems.length];\t\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/fragment/BroadcastTimetableFragment.java",
    "content": "package com.cjj.bb.fragment;\n\nimport android.support.v4.app.Fragment;\n\npublic class BroadcastTimetableFragment extends Fragment{\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/fragment/DonghuaFragment.java",
    "content": "package com.cjj.bb.fragment;\n\nimport java.text.SimpleDateFormat;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Locale;\n\nimport org.json.JSONArray;\nimport org.json.JSONException;\nimport org.json.JSONObject;\n\n\nimport android.content.Intent;\nimport android.os.AsyncTask;\nimport android.os.Bundle;\nimport android.support.v4.app.Fragment;\nimport android.util.Log;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport android.widget.AbsListView;\nimport android.widget.AdapterView;\nimport android.widget.AdapterView.OnItemClickListener;\nimport android.widget.LinearLayout;\nimport android.widget.ListView;\nimport android.widget.Toast;\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.activity.VideoInfoActivity;\nimport com.cjj.bb.adapter.VideoListAdapter;\nimport com.cjj.bb.model.Page;\nimport com.cjj.bb.model.VideoItem;\nimport com.cjj.bb.utils.Constants;\nimport com.cjj.bb.utils.HttpUtil;\nimport com.cjj.bb.utils.URLUtil;\n\n/**\n * Fragment页面\n * \n * @author wwj_748\n * @date 2014/8/9\n */\npublic class DonghuaFragment extends Fragment implements AbsListView.OnScrollListener\n\t\t {\n\tprivate ListView videoListView;// 视频列表\n\tprivate View noBlogView; // 无数据时显示\n\tprivate VideoListAdapter adapter;// 列表适配器\n\tprivate List<VideoItem> templist;\n\n\tprivate boolean isLoad = false; // 是否加载\n\tprivate int videoType = 1; // 视频类别\n\tprivate Page page; // 页面引用\n    private LinearLayout ll_loading;\n\n\tprivate String refreshDate = \"\"; // 刷新日期\n\tpublic DonghuaFragment(int videoType) {\n\t\tthis.videoType = videoType;\n\t}\n\n\t@Override\n\tpublic void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tinit();\n\t}\n//\n\t@Override\n\tpublic void onActivityCreated(Bundle savedInstanceState) {\n\t\ttemplist = new ArrayList<VideoItem>();\n\t\tVideoItem tempItem = new VideoItem();\n//\t\ttempItem.setAid(\"7\");\n//\t\ttempItem.setTitle(\"[示例数据]童年动画主题曲\");\n//\t\ttempItem.setPic(\"http://i0.hdslb.com/320_180/u_user/53cb3e2f7f3efd6464b82c91ea9a1236.jpg\");\n//\t\ttempItem.setAuthor(\"根号⑨\");\n//\t\ttempItem.setPlay(\"23333\");\n//\t\ttemplist.add(tempItem);\n\t\tinitComponent();\n\t\tif (isLoad == false) {\n\t\t\tisLoad = true;\n\t\t\t// 加载数据库中的数据\n\t\t\tList<VideoItem> list = templist;\n\t\t\tadapter.setList(list);\n\t\t\tadapter.notifyDataSetChanged();\n\n//\t\t\tvideoListView.startRefresh(); // 开始刷新\n\t\tnew MainTask().execute(URLUtil.getRefreshBlogListURL(videoType),\n\t\t\t\t\"refresh\");\n\t\t} else {\n//\t\t\tvideoListView.NotRefreshAtBegin(); // 不开始刷新\n\t\t}\n\t\tsuper.onActivityCreated(savedInstanceState);\n\t}\n\n\t@Override\n\tpublic View onCreateView(LayoutInflater inflater, ViewGroup container,\n\t\t\tBundle savedInstanceState) {\n\t\tLog.e(\"NewsFrag\", \"onCreateView\");\n\t\treturn inflater.inflate(R.layout.fragment_donghua, null);\n\t}\n\n\t// 初始化\n\tprivate void init() {\n\n\t\tadapter = new VideoListAdapter(getActivity());\n\t\tpage = new Page();\n\t\tpage.setPageStart();\n\t}\n\n\t// 初始化组件\n\tprivate void initComponent() {\n        ll_loading = (LinearLayout) getView().findViewById(R.id.ll_loading);\n        videoListView = (ListView) getView().findViewById(R.id.videoListView);\n\t\tvideoListView.setAdapter(adapter);// 设置适配器\n        videoListView.setOnScrollListener(this);\n//\t\tvideoListView.setPullRefreshEnable(this);// 设置可下拉刷新\n//\t\tvideoListView.setPullLoadEnable(this);// 设置可上拉加载\n\t\t// 设置列表项点击事件\n\t\tvideoListView.setOnItemClickListener(new OnItemClickListener() {\n\n\t\t\t@Override\n\t\t\tpublic void onItemClick(AdapterView<?> parent, View view,\n\t\t\t\t\tint position, long id) {\n\t\t\t\t// 获得博客列表项\n\t\t\t\tVideoItem item = (VideoItem) adapter.getItem(position - 1);\n\t\t\t\tIntent i = new Intent();\n\t\t\t\tBundle bundle = new Bundle();\n\t\t\t\tbundle.putSerializable(\"videoItemdata\", item);\n\t\t\t\ti.setClass(getActivity(), VideoInfoActivity.class);\n\t\t\t\ti.putExtras(bundle);\n\t\t\t\tstartActivity(i);\n\t\t\t\t// 动画过渡\n\t\t\t\tgetActivity().overridePendingTransition(R.anim.push_left_in,\n\t\t\t\t\t\tR.anim.push_no);\n\t\t\t}\n\t\t});\n\n\t\tnoBlogView = getView().findViewById(R.id.noBlogLayout);\n\t}\n\n             @Override\n             public void onScrollStateChanged(AbsListView view, int scrollState) {\n\n             }\n\n             /**\n              * 处理listView加载更多\n              * @param view\n              * @param firstVisibleItem\n              * @param visibleItemCount\n              * @param totalItemCount\n              */\n             private int mListViewPreLast = 0;\n             @Override\n             public void onScroll(AbsListView view, int firstVisibleItem,\n                                  int visibleItemCount, int totalItemCount) {\n                 final int lastItem = firstVisibleItem + visibleItemCount;\n\n                 if (lastItem == totalItemCount) {\n                     if (mListViewPreLast != lastItem) { /**防止多次调用*/\n\n\n                         new MainTask()\n\t\t\t\t.execute(\n\t\t\t\t\t\tURLUtil.getVideoListURL(videoType),\n\t\t\t\t\t\t\"load\");\n\n                         mListViewPreLast = lastItem;\n\n                     }\n                 }\n             }\n\n             private class MainTask extends AsyncTask<String, Void, Integer> {\n\n\t\t@Override\n\t\tprotected Integer doInBackground(String... params) {\n\t\t\tList<VideoItem> list=new ArrayList<VideoItem>();\n\t\t\ttry {\n\t\t\tJSONObject donghuajson = new JSONObject(HttpUtil.getHtmlString(params[0]));\n\t\t\t//动画数据解析\n\t\t\tJSONArray dougaarray=donghuajson.getJSONArray(\"list\");\n\t\t\tfor (int i=0;i<dougaarray.length();i++) {\n\t\t\t\tVideoItem item = new VideoItem();\n\t\t\t\titem.setAid(dougaarray.getJSONObject(i).getString(\"aid\").toString());\n\t\t\t\titem.setTypeid(dougaarray.getJSONObject(i).getString(\"typeid\").toString());\n\t\t\t\titem.setTitle(dougaarray.getJSONObject(i).getString(\"title\").toString());\n\t\t\t\titem.setSbutitle(dougaarray.getJSONObject(i).optString(\"sbutitle\").toString());\n\t\t\t\titem.setPlay(dougaarray.getJSONObject(i).getString(\"play\").toString());\n\t\t\t\titem.setReview(dougaarray.getJSONObject(i).getString(\"review\").toString());\n\t\t\t\titem.setVideo_review(dougaarray.getJSONObject(i).getString(\"video_review\").toString());\n\t\t\t\titem.setFavorites(dougaarray.getJSONObject(i).getString(\"favorites\").toString());\n\t\t\t\titem.setMid(dougaarray.getJSONObject(i).getString(\"mid\").toString());\n\t\t\t\titem.setAuthor(dougaarray.getJSONObject(i).getString(\"author\").toString());\n\t\t\t\titem.setDescription(dougaarray.getJSONObject(i).getString(\"description\").toString());\n\t\t\t\titem.setCreate(dougaarray.getJSONObject(i).getString(\"create\").toString());\n\t\t\t\titem.setPic(dougaarray.getJSONObject(i).getString(\"pic\").toString());\n\t\t\t\titem.setCredit(dougaarray.getJSONObject(i).getString(\"credit\").toString());\n\t\t\t\titem.setCoins(dougaarray.getJSONObject(i).getString(\"coins\").toString());\n\t\t\t\titem.setDuration(dougaarray.getJSONObject(i).getString(\"duration\").toString());\n\t\t\t\tlist.add(item);\n\t\t\t\t//Log.d(\"TAG--->\", \"--->\"+item.getTitle());\n\t\t\t}\n\n\t\t\t} catch (JSONException e) {\n\t\t\t\t// TODO Auto-generated catch block\n\t\t\t\te.printStackTrace();\n\t\t\t\treturn Constants.DEF_RESULT_CODE.ERROR;\n\t\t\t}\n//\t\t\t// 获取网页json数据\n//\t\t\tString temp = HttpUtil.httpGet(params[0]);\n//\t\t\tif (temp == null) {\n//\t\t\t\treturn Constants.DEF_RESULT_CODE.ERROR;\n//\t\t\t}\n//\t\t\t// 解析json获取列表\n//\t\t\tList<VideoItem> list = JsoupUtil.getBlogItemList(blogType, temp);\n\n\t\t\tif (list.size() == 0) {\n\t\t\t\treturn Constants.DEF_RESULT_CODE.NO_DATA;\n\t\t\t}\n\t\t\t// 刷新动作\n\t\t\tif (params[1].equals(\"refresh\")) {\n\t\t\t\tadapter.setList(list);\n\t\t\t\treturn Constants.DEF_RESULT_CODE.REFRESH;\n\t\t\t} else {// 加载更多\n\t\t\t\tadapter.addList(list);\n\t\t\t\treturn Constants.DEF_RESULT_CODE.LOAD;\n\t\t\t}\n\n\t\t}\n\n\t\t@Override\n\t\tprotected void onPostExecute(Integer result) {\n\t\t\t// 通知列表数据更新\n\t\t\tadapter.notifyDataSetChanged();\n\t\t\tswitch (result) {\n\t\t\tcase Constants.DEF_RESULT_CODE.ERROR: // 错误\n\t\t\t\tToast.makeText(getActivity(), \"网络信号不佳\", Toast.LENGTH_LONG).show();\n//\t\t\t\tvideoListView.stopRefresh(getDate());\n//\t\t\t\tvideoListView.stopLoadMore();\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_RESULT_CODE.NO_DATA: // 无数据\n\t\t\t\t// Toast.makeText(getActivity(), \"无更多加载内容\", Toast.LENGTH_LONG)\n\t\t\t\t// .show();\n//\t\t\t\tvideoListView.stopLoadMore();\n\t\t\t\t// noBlogView.setVisibility(View.VISIBLE); // 显示无博客\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_RESULT_CODE.REFRESH: // 刷新\n//\t\t\t\tvideoListView.stopRefresh(getDate());\n\n                ll_loading.setVisibility(View.GONE);\n\t\t\t\tif (adapter.getCount() == 0) {\n\t\t\t\t\tnoBlogView.setVisibility(View.VISIBLE); // 显示无博客\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_RESULT_CODE.LOAD:\n//\t\t\t\tvideoListView.stopLoadMore();\n\t\t\t\tpage.addPage();\n\t\t\t\tif (adapter.getCount() == 0) {\n\t\t\t\t\tnoBlogView.setVisibility(View.VISIBLE); // 显示无博客\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tsuper.onPostExecute(result);\n\t\t}\n\n\t}\n\n//\t// 加载更多时调用\n//\t@Override\n//\tpublic void onLoadMore() {\n//\t\tSystem.out.println(\"loadmore\");\n//\t\tnew MainTask()\n//\t\t\t\t.execute(\n//\t\t\t\t\t\tURLUtil.getVideoListURL(videoType),\n//\t\t\t\t\t\t\"load\");\n//\t}\n//\n//\t@Override\n//\tpublic void onRefresh() {\n//\t\tSystem.out.println(\"refresh\");\n//\t\tpage.setPageStart();\n//\t\tnew MainTask().execute(URLUtil.getRefreshBlogListURL(videoType),\n//\t\t\t\t\"refresh\");\n//\t}\n\n\tpublic String getDate() {\n\t\tSimpleDateFormat sdf = new SimpleDateFormat(\"MM月dd日 HH:mm\",\n\t\t\t\tLocale.CHINA);\n\t\treturn sdf.format(new java.util.Date());\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/fragment/FragmentLogin.java",
    "content": "package com.cjj.bb.fragment;\n\nimport android.os.Bundle;\nimport android.support.annotation.Nullable;\nimport android.support.v4.app.Fragment;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport android.widget.ImageView;\n\nimport com.cjj.bb.R;\n\n/**\n * Created by Administrator on 2015/5/26.\n */\npublic class FragmentLogin extends Fragment {\n\n    @Nullable\n    @Override\n    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {\n\n        ImageView iv = new ImageView(getActivity());\n        iv.setImageResource(R.drawable.login);\n        return  iv;\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/fragment/FramentTime.java",
    "content": "package com.cjj.bb.fragment;\n\nimport android.os.Bundle;\nimport android.support.annotation.Nullable;\nimport android.support.v4.app.Fragment;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport android.widget.ImageView;\n\nimport com.cjj.bb.R;\n\n/**\n * Created by Administrator on 2015/5/26.\n */\npublic class FramentTime extends Fragment {\n\n    @Nullable\n    @Override\n    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {\n        ImageView iv = new ImageView(getActivity());\n        iv.setImageResource(R.drawable.time);\n        return  iv;\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/fragment/GamesCenterFragment.java",
    "content": "package com.cjj.bb.fragment;\n\n\n\nimport android.os.Bundle;\nimport android.support.v4.app.Fragment;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport android.widget.GridView;\nimport android.widget.ListView;\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.adapter.GameListAdapter;\nimport com.cjj.bb.model.GameItem;\n\nimport java.util.ArrayList;\n\npublic class GamesCenterFragment extends Fragment{\n\tprivate ListView gameListView;\n\tprivate ArrayList<GameItem> gameList = new ArrayList<GameItem>();\n\tprivate int[] gameimages = new int[]{R.drawable.hxzj_gamecenter_smallbanner,R.drawable.wcat_list,\n\t\t\tR.drawable.xwy_list,R.drawable.mlk,R.drawable.img_bh2,\n\t\t\tR.drawable.w};\n\tprivate String[] gametexts = new String[]{\"幻想战姬\",\"白猫计划\",\"侠物语\",\"梅露可物语\",\"崩坏学院2\",\"世界2\"};\n\tprivate String[] gamepaths = new String[]{\"http://hxzj.biligame.com/\",\"http://bmjh.biligame.com/\",\n\t\t\t\"http://xwy.biligame.com/\",\"http://mlk.biligame.com/\",\"http://teos2.biligame.com/\",\n\t\t\t\"http://sj2.biligame.com/\"};\n\t@Override\n\tpublic void onCreate(Bundle savedInstanceState) {\n\t\t// TODO Auto-generated method stub\n\t\tsuper.onCreate(savedInstanceState);\n\t   \t for (int i = 0; i < gameimages.length; i++) {\n\t   \t\t    GameItem item = new GameItem();\n\t\t\t\titem.setImg(gameimages[i]);\n\t\t\t\titem.setText(gametexts[i]);\n\t\t\t\titem.setPath(gamepaths[i]);\n\t\t\t\tgameList.add(item);\n\t\t\t}\n\t}\n\n     @Override\n     public View onCreateView(LayoutInflater inflater, ViewGroup container,\n             Bundle savedInstanceState) {\n         View rootView = inflater.inflate(R.layout.fragment_gamecenter, container, false);\n         gameListView = (ListView)rootView.findViewById(R.id.GameListView);\n         gameListView.setAdapter(new GameListAdapter(getActivity(), gameList));\n         return rootView;\n     }\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/fragment/HomePageFragment.java",
    "content": "package com.cjj.bb.fragment;\n\nimport java.io.File;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.Executors;\nimport java.util.concurrent.ScheduledExecutorService;\nimport java.util.concurrent.TimeUnit;\n\nimport org.json.JSONArray;\nimport org.json.JSONException;\nimport org.json.JSONObject;\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.activity.BiliWebviewActivity;\nimport com.cjj.bb.model.BannerItem;\nimport com.cjj.bb.model.VideoItem;\nimport com.cjj.bb.utils.HttpUtil;\nimport com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;\nimport com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;\nimport com.nostra13.universalimageloader.core.DisplayImageOptions;\nimport com.nostra13.universalimageloader.core.ImageLoader;\nimport com.nostra13.universalimageloader.core.ImageLoaderConfiguration;\nimport com.nostra13.universalimageloader.core.assist.ImageScaleType;\nimport com.nostra13.universalimageloader.core.assist.QueueProcessingType;\n\nimport android.content.Intent;\nimport android.graphics.Bitmap;\nimport android.os.AsyncTask;\nimport android.os.Bundle;\nimport android.os.Handler;\nimport android.os.Parcelable;\nimport android.support.v4.app.Fragment;\nimport android.support.v4.view.PagerAdapter;\nimport android.support.v4.view.ViewPager;\nimport android.support.v4.view.ViewPager.OnPageChangeListener;\nimport android.util.Log;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport android.view.View.OnClickListener;\nimport android.widget.ImageView;\nimport android.widget.TextView;\nimport android.widget.ImageView.ScaleType;\n\npublic class HomePageFragment extends Fragment{\n\tpublic static String IMAGE_CACHE_PATH = \"imageloader/Cache\"; // 图片缓存路径\n\tpublic View rootView;\n\tprivate ViewPager adViewPager;\n\tprivate List<ImageView> imageViews;// 滑动的图片集合\n\n\tprivate List<View> dots; // 图片标题正文的那些点\n\tprivate List<View> dotList;\n\t\n\tprivate int currentItem = 0; // 当前图片的索引号\n\t// 定义的五个指示点\n\tprivate View dot0;\n\tprivate View dot1;\n\tprivate View dot2;\n\tprivate View dot3;\n\tprivate View dot4;\n\tprivate View dot5;\n\t//新番区控件\n\tImageView bangumiImageView01;\n\tTextView bagumiTextView_title01;\n\tTextView bagumiTextView01_baofang;\n\tTextView bagumiTextView01_danmugu;\n\t\n\tImageView bangumiImageView02;\n\tTextView bagumiTextView_title02;\n\tTextView bagumiTextView02_baofang;\n\tTextView bagumiTextView02_danmugu;\n\t\n\tImageView bangumiImageView03;\n\tTextView bagumiTextView_title03;\n\tTextView bagumiTextView03_baofang;\n\tTextView bagumiTextView03_danmugu;\n\t\n\tImageView bangumiImageView04;\n\tTextView bagumiTextView_title04;\n\tTextView bagumiTextView04_baofang;\n\tTextView bagumiTextView04_danmugu;\n\t\n\tprivate List<VideoItem> videoItemList;\n\n\tprivate ScheduledExecutorService scheduledExecutorService;\n\n\t// 异步加载图片\n\tprivate ImageLoader mImageLoader;\n\tprivate DisplayImageOptions options;\n\n\t// 轮播banner的数据\n\tprivate List<BannerItem> adList;\n\n\tprivate Handler handler = new Handler() {\n\t\tpublic void handleMessage(android.os.Message msg) {\n\t\t\tadViewPager.setCurrentItem(currentItem);\n\t\t};\n\t};\n\t\n\t\n    public HomePageFragment() {\n    \t\n    }\n    \n\t@Override\n\tpublic void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\t\n\t\tinitImageLoader();\n\t\t// 获取图片加载实例\n\t\tmImageLoader = ImageLoader.getInstance();\n\t\toptions = new DisplayImageOptions.Builder()\n\t\t\t\t.showStubImage(R.drawable.top_banner_android)\n\t\t\t\t.showImageForEmptyUri(R.drawable.top_banner_android)\n\t\t\t\t.showImageOnFail(R.drawable.top_banner_android)\n\t\t\t\t.cacheInMemory(true).cacheOnDisc(true)\n\t\t\t\t.bitmapConfig(Bitmap.Config.RGB_565)\n\t\t\t\t.imageScaleType(ImageScaleType.EXACTLY).build();\n\n\n\t}\n\n\tprivate void initImageLoader() {\n\t\tFile cacheDir = com.nostra13.universalimageloader.utils.StorageUtils\n\t\t\t\t.getOwnCacheDirectory(this.getActivity().getApplicationContext(),\n\t\t\t\t\t\tIMAGE_CACHE_PATH);\n\n\t\tDisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()\n\t\t\t\t.cacheInMemory(true).cacheOnDisc(true).build();\n\n\t\tImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(\n\t\t\t\tthis.getActivity()).defaultDisplayImageOptions(defaultOptions)\n\t\t\t\t.memoryCache(new LruMemoryCache(12 * 1024 * 1024))\n\t\t\t\t.memoryCacheSize(12 * 1024 * 1024)\n\t\t\t\t.discCacheSize(32 * 1024 * 1024).discCacheFileCount(100)\n\t\t\t\t.discCache(new UnlimitedDiscCache(cacheDir))\n\t\t\t\t.threadPriority(Thread.NORM_PRIORITY - 2)\n\t\t\t\t.tasksProcessingOrder(QueueProcessingType.LIFO).build();\n\n\t\tImageLoader.getInstance().init(config);\n\t}\n\t\n\tprivate void initAdData() {\n\t\t// 广告数据\n\t\t//adList = getBannerAd();\n\n\t\timageViews = new ArrayList<ImageView>();\n\t\t\n\n\t\t// 点\n\t\tdots = new ArrayList<View>();\n\t\tdotList = new ArrayList<View>();\n\t\tdot0 = rootView.findViewById(R.id.v_dot0);\n\t\tdot1 = rootView.findViewById(R.id.v_dot1);\n\t\tdot2 = rootView.findViewById(R.id.v_dot2);\n\t\tdot3 = rootView.findViewById(R.id.v_dot3);\n\t\tdot4 = rootView.findViewById(R.id.v_dot4);\t\t\n\t\tdot5 = rootView.findViewById(R.id.v_dot5);\t\t\n\t\tdots.add(dot0);\n\t\tdots.add(dot1);\n\t\tdots.add(dot2);\n\t\tdots.add(dot3);\n\t\tdots.add(dot4);\n\t\tdots.add(dot5);\n\t\taddDynamicView();\n\n\t\tadViewPager = (ViewPager) rootView.findViewById(R.id.vp);\n\t\tadViewPager.setAdapter(new HomePageADAdapter());// 设置填充ViewPager页面的适配器\n\t\t// 设置一个监听器，当ViewPager中的页面改变时调用\n\t\tadViewPager.setOnPageChangeListener(new HomePageADChangeListener());\n\t\t\n\t}\n\t\n\tprivate void initBangumiData() {\n\t\tbangumiImageView01 = (ImageView) rootView.findViewById(R.id.BangumiImageView01);\n\t\tbagumiTextView_title01 = (TextView) rootView.findViewById(R.id.BangumiTextView01);\n\t\tbagumiTextView01_baofang = (TextView) rootView.findViewById(R.id.BangumiImageView01_baofang);\n\t\tbagumiTextView01_danmugu = (TextView) rootView.findViewById(R.id.BangumiImageView01_danmugu);\n\t\t\n\t\tbangumiImageView02 = (ImageView) rootView.findViewById(R.id.BangumiImageView02);\n\t\tbagumiTextView_title02 = (TextView) rootView.findViewById(R.id.BangumiTextView02);\n\t\tbagumiTextView02_baofang = (TextView) rootView.findViewById(R.id.BangumiImageView02_baofang);\n\t\tbagumiTextView02_danmugu = (TextView) rootView.findViewById(R.id.BangumiImageView02_danmugu);\n\t\t\n\t\tbangumiImageView03 = (ImageView) rootView.findViewById(R.id.BangumiImageView03);\n\t\tbagumiTextView_title03 = (TextView) rootView.findViewById(R.id.BangumiTextView03);\n\t\tbagumiTextView03_baofang = (TextView) rootView.findViewById(R.id.BangumiImageView03_baofang);\n\t\tbagumiTextView03_danmugu = (TextView) rootView.findViewById(R.id.BangumiImageView03_danmugu);\n\t\t\n\t\tbangumiImageView04 = (ImageView) rootView.findViewById(R.id.BangumiImageView04);\n\t\tbagumiTextView_title04 = (TextView) rootView.findViewById(R.id.BangumiTextView04);\n\t\tbagumiTextView04_baofang = (TextView) rootView.findViewById(R.id.BangumiImageView04_baofang);\n\t\tbagumiTextView04_danmugu = (TextView) rootView.findViewById(R.id.BangumiImageView04_danmugu);\n\t\t\n\t\tmImageLoader.displayImage(videoItemList.get(0).getPic(), bangumiImageView01,options);\n\t\tbagumiTextView_title01.setText(videoItemList.get(0).getTitle().toString());\n\t\tbagumiTextView01_baofang.setText(videoItemList.get(0).getPlay().toString());\n\t\tbagumiTextView01_danmugu.setText(videoItemList.get(0).getVideo_review().toString());\n\t\t\n\t\tmImageLoader.displayImage(videoItemList.get(1).getPic(), bangumiImageView02,options);\n\t\tbagumiTextView_title02.setText(videoItemList.get(1).getTitle().toString());\n\t\tbagumiTextView02_baofang.setText(videoItemList.get(1).getPlay().toString());\n\t\tbagumiTextView02_danmugu.setText(videoItemList.get(1).getVideo_review().toString());\n\t\t\n\t\tmImageLoader.displayImage(videoItemList.get(2).getPic(), bangumiImageView03,options);\n\t\tbagumiTextView_title03.setText(videoItemList.get(2).getTitle().toString());\n\t\tbagumiTextView03_baofang.setText(videoItemList.get(2).getPlay().toString());\n\t\tbagumiTextView03_danmugu.setText(videoItemList.get(2).getVideo_review().toString());\n\t\t\n\t\tmImageLoader.displayImage(videoItemList.get(3).getPic(), bangumiImageView04,options);\n\t\tbagumiTextView_title04.setText(videoItemList.get(3).getTitle().toString());\n\t\tbagumiTextView04_baofang.setText(videoItemList.get(3).getPlay().toString());\n\t\tbagumiTextView04_danmugu.setText(videoItemList.get(3).getVideo_review().toString());\n\t\t\n\t}\n\n\tprivate void addDynamicView() {\n\t\t// 动态添加图片和下面指示的圆点\n\t\t// 初始化图片资源\n\t\tfor (int i = 0; i < adList.size(); i++) {\n\t\t\tImageView imageView = new ImageView(this.getActivity());\n\t\t\t// 异步加载图片\n\t\t\tmImageLoader.displayImage(adList.get(i).getImg(), imageView,\n\t\t\t\t\toptions);\n\t\t\timageView.setScaleType(ScaleType.CENTER_CROP);\n\t\t\timageViews.add(imageView);\n\t\t\tdots.get(i).setVisibility(View.VISIBLE);\n\t\t\tdotList.add(dots.get(i));\n\t\t}\n\t}\n\n\n\tprivate void startAd() {\n\t\tscheduledExecutorService = Executors.newSingleThreadScheduledExecutor();\n\t\t// 当Activity显示出来后，每两秒切换一次图片显示\n\t\tscheduledExecutorService.scheduleAtFixedRate(new ScrollTask(), 1, 2,\n\t\t\t\tTimeUnit.SECONDS);\n\t}\n\n\tprivate class ScrollTask implements Runnable {\n\n\t\t@Override\n\t\tpublic void run() {\n\t\t\tsynchronized (adViewPager) {\n\t\t\t\tcurrentItem = (currentItem + 1) % imageViews.size();\n\t\t\t\thandler.obtainMessage().sendToTarget();\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void onStop() {\n\t\tsuper.onStop();\n\t\t// 当Activity不可见的时候停止切换\n\t\tscheduledExecutorService.shutdown();\n\t}\n\n\n\n    @Override\n    public View onCreateView(LayoutInflater inflater, ViewGroup container,\n            Bundle savedInstanceState) {\n        rootView = inflater.inflate(R.layout.fragment_main, container, false);\n\t\tLog.d(\"win\",\"hhhhhhhhhhhh\");\t\t\n\t\tnew MainTask().execute(\"0\");\n\t\t\n        return rootView;\n    }\n    \n   \n\t\n\tprivate class HomePageADAdapter extends PagerAdapter{\n\n\t\t@Override\n\t\tpublic int getCount() {\n\t\t\treturn adList.size();\n\t\t}\n\n\t\t@Override\n\t\tpublic Object instantiateItem(ViewGroup container, final int position) {\n\t\t\tImageView iv = imageViews.get(position);\n\t\t\t((ViewPager) container).addView(iv);\n\t\t\t// 在这个方法里面设置图片的点击事件\n\t\t\tiv.setOnClickListener(new OnClickListener() {\n\n\t\t\t\t@Override\n\t\t\t\tpublic void onClick(View v) {\n\t\t\t\t\t// 处理跳转逻辑\n\t\t\t\t\tBannerItem item = (BannerItem) adList.get(position);\n\t\t\t\t\tIntent i = new Intent();\n\t\t\t\t\ti.setClass(getActivity(), BiliWebviewActivity.class);\n\t\t\t\t\ti.putExtra(\"bannerLink\", item.getLink());\n\t\t\t\t\tstartActivity(i);\n\t\t\t\t\t// 动画过渡\n\t\t\t\t\tgetActivity().overridePendingTransition(R.anim.push_left_in,\n\t\t\t\t\t\t\tR.anim.push_no);\n\t\t\t\t\tLog.e(\"position\", \"\" + position);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn iv;\n\t\t}\n\n\t\t@Override\n\t\tpublic void destroyItem(View arg0, int arg1, Object arg2) {\n\t\t\t((ViewPager) arg0).removeView((View) arg2);\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean isViewFromObject(View arg0, Object arg1) {\n\t\t\treturn arg0 == arg1;\n\t\t}\n\n\t\t@Override\n\t\tpublic void restoreState(Parcelable arg0, ClassLoader arg1) {\n\n\t\t}\n\n\t\t@Override\n\t\tpublic Parcelable saveState() {\n\t\t\treturn null;\n\t\t}\n\n\t\t@Override\n\t\tpublic void startUpdate(View arg0) {\n\n\t\t}\n\n\t\t@Override\n\t\tpublic void finishUpdate(View arg0) {\n\n\t\t}\n\t}\n\t\n\tprivate class HomePageADChangeListener implements OnPageChangeListener {\n\n\t\tprivate int oldPosition = 0;\n\n\t\t@Override\n\t\tpublic void onPageScrollStateChanged(int arg0) {\n\n\t\t}\n\n\t\t@Override\n\t\tpublic void onPageScrolled(int arg0, float arg1, int arg2) {\n\n\t\t}\n\n\t\t@Override\n\t\tpublic void onPageSelected(int position) {\n\t\t\tcurrentItem = position;\n\t\t\tdots.get(oldPosition).setBackgroundResource(R.drawable.dot_normal);\n\t\t\tdots.get(position).setBackgroundResource(R.drawable.dot_focused);\n\t\t\toldPosition = position;\n\t\t}\n\t}\n\tprivate class MainTask extends AsyncTask<String, Void, Integer> {\n\t\tArrayList<BannerItem> Listtemp = new ArrayList<BannerItem>();\n\t\tArrayList<VideoItem> bangumiListtemp = new ArrayList<VideoItem>();\n\n\t\t@Override\n\t\tprotected Integer doInBackground(String... params) {\n\t\t\t\n\t\t\tJSONObject bannerjson;\n\t\t\tJSONObject bangumijson;\n\t\t\t\n\t\t\ttry {\n\t\t\t\tbannerjson = new JSONObject(HttpUtil.getHtmlString(\"http://www.bilibili.com/index/slideshow.json\"));\n\t\t\t\tJSONArray array=bannerjson.getJSONArray(\"list\");\n\t\t\t\tfor (int i=0;i<array.length();i++) {\n\t\t\t\t\t\n\t\t\t\t\tBannerItem item = new BannerItem();\t\t\n\t\t\t\t\titem.setImg(array.getJSONObject(i).getString(\"img\").toString());\n\t\t\t\t\titem.setTitle(array.getJSONObject(i).getString(\"title\").toString());\n\t\t\t\t\titem.setLink(array.getJSONObject(i).getString(\"link\").toString());\n\t\t\t\t\titem.setAd(false);\n\t\t\t\t\tListtemp.add(item);\n\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tbangumijson = new JSONObject(HttpUtil.getHtmlString(\"http://www.bilibili.com/index/ding.json\"));\n\t\t\t\t//Log.i(\"gg\",bangumijson.toString());\n\t\t\t\tJSONObject bangumiarray=bangumijson.getJSONObject(\"bangumi\");\n\t\t\t\tfor (int i=0;i<bangumiarray.length();i++) {\t\t\t\n\t\t\t\t\tVideoItem item = new VideoItem();\t\t\n\t\t\t\t\titem.setAid(bangumiarray.getJSONObject(i+\"\").getString(\"aid\").toString());\n\t\t\t\t\titem.setTypeid(bangumiarray.getJSONObject(i+\"\").getString(\"typeid\").toString());\n\t\t\t\t\titem.setTitle(bangumiarray.getJSONObject(i+\"\").getString(\"title\").toString());\n\t\t\t\t\titem.setSbutitle(bangumiarray.getJSONObject(i+\"\").optString(\"sbutitle\").toString());\n\t\t\t\t\titem.setPlay(bangumiarray.getJSONObject(i+\"\").getString(\"play\").toString());\n\t\t\t\t\titem.setReview(bangumiarray.getJSONObject(i+\"\").getString(\"review\").toString());\n\t\t\t\t\titem.setVideo_review(bangumiarray.getJSONObject(i+\"\").getString(\"video_review\").toString());\n\t\t\t\t\titem.setFavorites(bangumiarray.getJSONObject(i+\"\").getString(\"favorites\").toString());\n\t\t\t\t\titem.setMid(bangumiarray.getJSONObject(i+\"\").getString(\"mid\").toString());\n\t\t\t\t\titem.setAuthor(bangumiarray.getJSONObject(i+\"\").getString(\"author\").toString());\n\t\t\t\t\titem.setDescription(bangumiarray.getJSONObject(i+\"\").getString(\"description\").toString());\n\t\t\t\t\titem.setCreate(bangumiarray.getJSONObject(i+\"\").getString(\"create\").toString());\n\t\t\t\t\titem.setPic(bangumiarray.getJSONObject(i+\"\").getString(\"pic\").toString());\n\t\t\t\t\titem.setCredit(bangumiarray.getJSONObject(i+\"\").getString(\"credit\").toString());\n\t\t\t\t\titem.setCoins(bangumiarray.getJSONObject(i+\"\").getString(\"coins\").toString());\n\t\t\t\t\titem.setDuration(bangumiarray.getJSONObject(i+\"\").getString(\"duration\").toString());\t\n\t\t\t\t\tbangumiListtemp.add(item);\n\t\t\t\t\tLog.i(\"tag\", bangumiarray.getJSONObject(i+\"\").getString(\"pic\").toString());\n\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} catch (JSONException e) {\n\t\t\t\t// TODO Auto-generated catch block\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\t\t\t\n\t\t\tListtemp.get(Listtemp.size()-1).setAd(true);\n\t\t\treturn null;\n\t\t\t\n\n\t\t}\n\n\t\t@Override\n\t\tprotected void onPostExecute(Integer result) {\n\t\t\tsuper.onPostExecute(result);\n\t\t\tadList = Listtemp;\n\t\t\tvideoItemList = bangumiListtemp;\n\t\t\tinitAdData();\n\t\t\tinitBangumiData();\n\t\t\tstartAd();\n\n//\t\t\tadViewPager.notifyAll();\n\n\t\t}\n\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/fragment/HomePageFragment2.java",
    "content": "package com.cjj.bb.fragment;\n\nimport java.io.File;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.Executors;\nimport java.util.concurrent.ScheduledExecutorService;\nimport java.util.concurrent.TimeUnit;\n\nimport org.json.JSONArray;\nimport org.json.JSONException;\nimport org.json.JSONObject;\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.activity.BiliWebviewActivity;\nimport com.cjj.bb.activity.DonghuaActivity;\nimport com.cjj.bb.adapter.GridAdapter;\nimport com.cjj.bb.model.BannerItem;\nimport com.cjj.bb.model.VideoItem;\nimport com.cjj.bb.utils.HttpUtil;\nimport com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;\nimport com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;\nimport com.nostra13.universalimageloader.core.DisplayImageOptions;\nimport com.nostra13.universalimageloader.core.ImageLoader;\nimport com.nostra13.universalimageloader.core.ImageLoaderConfiguration;\nimport com.nostra13.universalimageloader.core.assist.ImageScaleType;\nimport com.nostra13.universalimageloader.core.assist.QueueProcessingType;\n\n\nimport android.content.Intent;\nimport android.graphics.Bitmap;\nimport android.os.AsyncTask;\nimport android.os.Bundle;\nimport android.os.Handler;\nimport android.os.Parcelable;\nimport android.support.v4.app.Fragment;\nimport android.support.v4.view.PagerAdapter;\nimport android.support.v4.view.ViewPager;\nimport android.support.v4.view.ViewPager.OnPageChangeListener;\nimport android.util.Log;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport android.view.View.OnClickListener;\nimport android.widget.GridView;\nimport android.widget.ImageView;\nimport android.widget.ImageView.ScaleType;\n\npublic class HomePageFragment2 extends Fragment {\n\tpublic static String IMAGE_CACHE_PATH = \"imageloader/Cache\"; // 图片缓存路径\n\tprivate boolean isLoad = false;\n\tpublic View rootView;\n\tprivate ViewPager adViewPager;\n\tprivate GridView bangumiGridView;\n\tprivate GridView dougaGridView;\n\tprivate GridView musicGridView;\n\tprivate GridView danceGridView;\n\tprivate GridView entGridView;\n\tprivate GridView movieGridView;\n\tprivate GridView kejiGridView;\n\t\n\tprivate View donghuaView;\n\tprivate View bankumiView;\n\tprivate View musicView;\n\tprivate View kejiView;\n\tprivate View yuleView;\n\tprivate View dianyingView;\n\tprivate View gameView;\n\t\n\tprivate List<ImageView> imageViews;// 滑动的图片集合\n\n\tprivate List<View> dots; // 图片标题正文的那些点\n\tprivate List<View> dotList;\n\t\n\tprivate int currentItem = 0; // 当前图片的索引号\n\t// 定义的六个指示点\n\tprivate View dot0;\n\tprivate View dot1;\n\tprivate View dot2;\n\tprivate View dot3;\n\tprivate View dot4;\n\tprivate View dot5;\n\t\n\tprivate List<VideoItem> videoItemList;\n\tprivate List<VideoItem> dougaItemList;\n\tprivate List<VideoItem> musicItemList;\n\tprivate List<VideoItem> danceItemList;\n\tprivate List<VideoItem> entItemList;\n\tprivate List<VideoItem> movieItemList;\n\tprivate List<VideoItem> kejiItemList;\n\n\tprivate ScheduledExecutorService scheduledExecutorService;\n\n\t// 异步加载图片\n\tprivate ImageLoader mImageLoader;\n\tprivate DisplayImageOptions options;\n\n\t// 轮播banner的数据\n\tprivate List<BannerItem> adList;\n\n\tprivate Handler handler = new Handler() {\n\t\tpublic void handleMessage(android.os.Message msg) {\n\t\t\tadViewPager.setCurrentItem(currentItem);\n\t\t};\n\t};\n\t\n    \n\t@Override\n\tpublic void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\t\n\t\tinitImageLoader();\n\t\t// 获取图片加载实例\n\t\tmImageLoader = ImageLoader.getInstance();\n\t\toptions = new DisplayImageOptions.Builder()\n\t\t\t\t.showStubImage(R.drawable.top_banner_android)\n\t\t\t\t.showImageForEmptyUri(R.drawable.top_banner_android)\n\t\t\t\t.showImageOnFail(R.drawable.top_banner_android)\n\t\t\t\t.cacheInMemory(true).cacheOnDisc(true)\n\t\t\t\t.bitmapConfig(Bitmap.Config.ARGB_8888)\n\t\t\t\t.imageScaleType(ImageScaleType.EXACTLY).build();\n\t\tinitTestData();\n\t\tMainTask homePageTask = new MainTask();\n\t\thomePageTask.execute(\"0\");\n\t}\n\t\n\tprivate void initTestData() {\n\t\tvideoItemList = new ArrayList<VideoItem>();\n\t\tfor (int i = 0; i < 4; i++) {\n\t\t\tVideoItem tempItem = new VideoItem();\n\t\t\ttempItem.setAid(\"7\");\n\t\t\ttempItem.setTitle(\"[示例数据]童年动画主题曲\");\n\t\t\ttempItem.setPic(\"http://i0.hdslb.com/320_180/u_user/53cb3e2f7f3efd6464b82c91ea9a1236.jpg\");\n\t\t\ttempItem.setAuthor(\"根号⑨\");\n\t\t\ttempItem.setPlay(\"23333\");\n\t\t\ttempItem.setVideo_review(\"23333\");\n\t\t\tvideoItemList.add(tempItem);\n\t\t}\n\t\tdougaItemList = videoItemList;\n\t\tmusicItemList = videoItemList;\n\t\tdanceItemList = videoItemList;\n\t\tentItemList = videoItemList;\n\t\tmovieItemList = videoItemList;\n\t\tkejiItemList = videoItemList;\n\t\t\n\t\tArrayList<BannerItem> Listtemp = new ArrayList<BannerItem>();\n\t\tfor (int i = 0; i < 6; i++) {\n\t\t\tBannerItem tempItem = new BannerItem();\n\t\t\ttempItem.setAd(false);\n\t\t\ttempItem.setImg(\"http://i0.hdslb.com/promote/1f451b6b07a1984be5619f865edd5449.jpg\");\n\t\t\ttempItem.setLink(\"http://www.bilibili.com\");\n\t\t\ttempItem.setTitle(\"[示例数据]\");\n\t\t\tListtemp.add(tempItem);\n\t\t}\n\t\tListtemp.get(0).setAd(true);\n\t\tadList = Listtemp;\n\t\t\n\n\t}\n\n\tprivate void initImageLoader() {\n\t\tFile cacheDir = com.nostra13.universalimageloader.utils.StorageUtils\n\t\t\t\t.getOwnCacheDirectory(this.getActivity().getApplicationContext(),\n\t\t\t\t\t\tIMAGE_CACHE_PATH);\n\n\t\tDisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()\n\t\t\t\t.cacheInMemory(true).cacheOnDisc(true).build();\n\n\t\tImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(\n\t\t\t\tthis.getActivity()).defaultDisplayImageOptions(defaultOptions)\n\t\t\t\t.memoryCache(new LruMemoryCache(12 * 1024 * 1024))\n\t\t\t\t.memoryCacheSize(12 * 1024 * 1024)\n\t\t\t\t.discCacheSize(32 * 1024 * 1024).discCacheFileCount(100)\n\t\t\t\t.discCache(new UnlimitedDiscCache(cacheDir))\n\t\t\t\t.threadPriority(Thread.NORM_PRIORITY - 2)\n\t\t\t\t.tasksProcessingOrder(QueueProcessingType.LIFO).build();\n\n\t\tImageLoader.getInstance().init(config);\n\t}\n\t\n\tprivate void initAdData() {\n\t\t// 广告数据\n\t\t//adList = getBannerAd();\n\n\t\timageViews = new ArrayList<ImageView>();\n\t\t\n\n\t\t// 点\n\t\tdots = new ArrayList<View>();\n\t\tdotList = new ArrayList<View>();\n\t\tdot0 = rootView.findViewById(R.id.v_dot0);\n\t\tdot1 = rootView.findViewById(R.id.v_dot1);\n\t\tdot2 = rootView.findViewById(R.id.v_dot2);\n\t\tdot3 = rootView.findViewById(R.id.v_dot3);\n\t\tdot4 = rootView.findViewById(R.id.v_dot4);\t\t\n\t\tdot5 = rootView.findViewById(R.id.v_dot5);\t\t\n\t\tdots.add(dot0);\n\t\tdots.add(dot1);\n\t\tdots.add(dot2);\n\t\tdots.add(dot3);\n\t\tdots.add(dot4);\n\t\tdots.add(dot5);\n\t\t\n\n\t\tadViewPager = (ViewPager) rootView.findViewById(R.id.vp);\n\t\t\n\t\tbangumiGridView = (GridView)rootView.findViewById(R.id.BangumiGridView);\n\t\tdougaGridView = (GridView)rootView.findViewById(R.id.DonghuaGridView);\n\t\tkejiGridView = (GridView)rootView.findViewById(R.id.KejiGridView);\n\t\tmovieGridView = (GridView)rootView.findViewById(R.id.MovieGridView);\n\t\tentGridView = (GridView)rootView.findViewById(R.id.EntGridView);\n\t\tdanceGridView = (GridView)rootView.findViewById(R.id.DanceGridView);\n\t\tmusicGridView = (GridView)rootView.findViewById(R.id.MusicGridView);\n\t\t\n\t\taddDynamicView();\n\t\tadViewPager.setAdapter(new HomePageADAdapter());// 设置填充ViewPager页面的适配器\n\t\t// 设置一个监听器，当ViewPager中的页面改变时调用\n\t\tadViewPager.setOnPageChangeListener(new HomePageADChangeListener());\n\t\tGridAdapter bangumiAdapter = new GridAdapter(getActivity(), videoItemList, mImageLoader);\n\t\tbangumiGridView.setAdapter(bangumiAdapter);\n\t\tdougaGridView.setAdapter(new GridAdapter(getActivity(), dougaItemList, mImageLoader));\t\t\n\t\tmusicGridView.setAdapter(new GridAdapter(getActivity(), musicItemList, mImageLoader));\t\t\n\t\tdanceGridView.setAdapter(new GridAdapter(getActivity(), danceItemList, mImageLoader));\t\t\n\t\tentGridView.setAdapter(new GridAdapter(getActivity(), entItemList, mImageLoader));\t\t\n\t\tmovieGridView.setAdapter(new GridAdapter(getActivity(), movieItemList, mImageLoader));\t\t\n\t\tkejiGridView.setAdapter(new GridAdapter(getActivity(), kejiItemList, mImageLoader));\n\t\t\n\t\tdonghuaView = rootView.findViewById(R.id.DonghuaView);\n\t\tdonghuaView.setOnClickListener(mDonghuaViewListener);\n\t\tbankumiView = rootView.findViewById(R.id.BangumiView);\n\t\tbankumiView.setOnClickListener(mBankumiViewListener);\n\t\tmusicView = rootView.findViewById(R.id.MusicView);\n\t\tmusicView.setOnClickListener(mMusicViewListener);\n\t\tgameView = rootView.findViewById(R.id.DanceView);\n\t\tgameView.setOnClickListener(mGameViewListener);\n\t\tyuleView = rootView.findViewById(R.id.EntView);\n\t\tyuleView.setOnClickListener(mYuleViewListener);\n\t\tdianyingView = rootView.findViewById(R.id.MovieView);\n\t\tdianyingView.setOnClickListener(mDianyingViewListener);\n\t\tkejiView = rootView.findViewById(R.id.KejiView);\n\t\tkejiView.setOnClickListener(mKejiViewListener);\n\t\t\n\t}\n\t\n\n\n\tprivate void addDynamicView() {\n\t\t// 动态添加图片和下面指示的圆点\n\t\t// 初始化图片资源\n\t\tfor (int i = 0; i < adList.size(); i++) {\n\t\t\tImageView imageView = new ImageView(this.getActivity());\n\t\t\t// 异步加载图片\n\t\t\tmImageLoader.displayImage(adList.get(i).getImg(), imageView,\n\t\t\t\t\toptions);\n\t\t\timageView.setScaleType(ScaleType.CENTER_CROP);\n\t\t\timageViews.add(imageView);\n\t\t\tdots.get(i).setVisibility(View.VISIBLE);\n\t\t\tdotList.add(dots.get(i));\n\t\t}\n\t}\n\n\n\tprivate void startAd() {\n\t\tscheduledExecutorService = Executors.newSingleThreadScheduledExecutor();\n\t\t// 当Activity显示出来后，每两秒切换一次图片显示\n\t\tscheduledExecutorService.scheduleAtFixedRate(new ScrollTask(), 1, 2,\n\t\t\t\tTimeUnit.SECONDS);\n\t}\n\n\tprivate class ScrollTask implements Runnable {\n\n\t\t@Override\n\t\tpublic void run() {\n\t\t\tsynchronized (adViewPager) {\n\t\t\t\tcurrentItem = (currentItem + 1) % imageViews.size();\n\t\t\t\thandler.obtainMessage().sendToTarget();\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void onStop() {\n\t\tsuper.onStop();\n\t\t// 当Activity不可见的时候停止切换\n\t\t//scheduledExecutorService.shutdown();\n\t}\n\n\n\n    @Override\n    public View onCreateView(LayoutInflater inflater, ViewGroup container,\n            Bundle savedInstanceState) {\n        rootView = inflater.inflate(R.layout.fragment_homepage, container, false);\n\t\tLog.d(\"win\",\"hhhhhhhhhhhh\");\n\t\tinitAdData();\n        return rootView;\n    }\n    \n   \n\t\n\tprivate class HomePageADAdapter extends PagerAdapter{\n\n\t\t@Override\n\t\tpublic int getCount() {\n\t\t\treturn adList.size();\n\t\t}\n\n\t\t@Override\n\t\tpublic Object instantiateItem(ViewGroup container, final int position) {\n\t\t\tImageView iv = imageViews.get(position);\n\t\t\t((ViewPager) container).addView(iv);\n\t\t\t// 在这个方法里面设置图片的点击事件\n\t\t\tiv.setOnClickListener(new OnClickListener() {\n\n\t\t\t\t@Override\n\t\t\t\tpublic void onClick(View v) {\n\t\t\t\t\t// 处理跳转逻辑\n\t\t\t\t\tBannerItem item = (BannerItem) adList.get(position);\n\t\t\t\t\tIntent i = new Intent();\n\t\t\t\t\ti.setClass(getActivity(), BiliWebviewActivity.class);\n\t\t\t\t\ti.putExtra(\"bannerLink\", item.getLink());\n\t\t\t\t\tstartActivity(i);\n\t\t\t\t\t// 动画过渡\n\t\t\t\t\tgetActivity().overridePendingTransition(R.anim.push_left_in,\n\t\t\t\t\t\t\tR.anim.push_no);\n\t\t\t\t\tLog.e(\"position\", \"\" + position);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn iv;\n\t\t}\n\n\t\t@Override\n\t\tpublic void destroyItem(View arg0, int arg1, Object arg2) {\n\t\t\t((ViewPager) arg0).removeView((View) arg2);\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean isViewFromObject(View arg0, Object arg1) {\n\t\t\treturn arg0 == arg1;\n\t\t}\n\n\t\t@Override\n\t\tpublic void restoreState(Parcelable arg0, ClassLoader arg1) {\n\n\t\t}\n\n\t\t@Override\n\t\tpublic Parcelable saveState() {\n\t\t\treturn null;\n\t\t}\n\n\t\t@Override\n\t\tpublic void startUpdate(View arg0) {\n\n\t\t}\n\n\t\t@Override\n\t\tpublic void finishUpdate(View arg0) {\n\n\t\t}\n\t}\n\t\n\tprivate class HomePageADChangeListener implements OnPageChangeListener {\n\n\t\tprivate int oldPosition = 0;\n\n\t\t@Override\n\t\tpublic void onPageScrollStateChanged(int arg0) {\n\n\t\t}\n\n\t\t@Override\n\t\tpublic void onPageScrolled(int arg0, float arg1, int arg2) {\n\n\t\t}\n\n\t\t@Override\n\t\tpublic void onPageSelected(int position) {\n\t\t\tcurrentItem = position;\n\t\t\tdots.get(oldPosition).setBackgroundResource(R.drawable.dot_normal);\n\t\t\tdots.get(position).setBackgroundResource(R.drawable.dot_focused);\n\t\t\toldPosition = position;\n\t\t}\n\t}\n\tprivate class MainTask extends AsyncTask<String, Void, Integer> {\n\t\tArrayList<BannerItem> Listtemp = new ArrayList<BannerItem>();\n\t\tArrayList<VideoItem> bangumiListtemp = new ArrayList<VideoItem>();\n\t\tArrayList<VideoItem> dougaListtemp = new ArrayList<VideoItem>();\n\t\tArrayList<VideoItem> musicListtemp = new ArrayList<VideoItem>();\n\t\tArrayList<VideoItem> danceListtemp = new ArrayList<VideoItem>();\n\t\tArrayList<VideoItem> entListtemp = new ArrayList<VideoItem>();\n\t\tArrayList<VideoItem> movieListtemp = new ArrayList<VideoItem>();\n\t\tArrayList<VideoItem> kejiListtemp = new ArrayList<VideoItem>();\n\t\t\n\t\tpublic MainTask() {\n\t\t\t// TODO Auto-generated constructor stub\n\t\t\tLog.d(\"T^T\",\"----->MainTask\");\t\n\t\t}\n\n\t\t@Override\n\t\tprotected Integer doInBackground(String... params) {\n\t\t\tLog.d(\"T^T\",\"----->doinbackgroud\");\t\n\t\t\tJSONObject bannerjson;\n\t\t\tJSONObject bangumijson;\n\t\t\t\n\t\t\ttry {\n\t\t\t\tbannerjson = new JSONObject(HttpUtil.getHtmlString(\"http://www.bilibili.com/index/slideshow.json\"));\n\t\t\t\tJSONArray array=bannerjson.getJSONArray(\"list\");\n\t\t\t\tfor (int i=0;i<array.length();i++) {\n\t\t\t\t\t\n\t\t\t\t\tBannerItem item = new BannerItem();\t\t\n\t\t\t\t\titem.setImg(array.getJSONObject(i).getString(\"img\").toString());\n\t\t\t\t\titem.setTitle(array.getJSONObject(i).getString(\"title\").toString());\n\t\t\t\t\titem.setLink(array.getJSONObject(i).getString(\"link\").toString());\n\t\t\t\t\titem.setAd(false);\n\t\t\t\t\tListtemp.add(item);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tbangumijson = new JSONObject(HttpUtil.getHtmlString(\"http://www.bilibili.com/index/ding.json\"));\n\t\t\t\t//Log.i(\"gg\",bangumijson.toString());\n\t\t\t\tJSONObject bangumiarray=bangumijson.getJSONObject(\"bangumi\");\n\t\t\t\tfor (int i=0;i<4;i++) {\t\t\t\n\t\t\t\t\tVideoItem item = new VideoItem();\t\t\n\t\t\t\t\titem.setAid(bangumiarray.getJSONObject(i+\"\").getString(\"aid\").toString());\n\t\t\t\t\titem.setTypeid(bangumiarray.getJSONObject(i+\"\").getString(\"typeid\").toString());\n\t\t\t\t\titem.setTitle(bangumiarray.getJSONObject(i+\"\").getString(\"title\").toString());\n\t\t\t\t\titem.setSbutitle(bangumiarray.getJSONObject(i+\"\").optString(\"sbutitle\").toString());\n\t\t\t\t\titem.setPlay(bangumiarray.getJSONObject(i+\"\").getString(\"play\").toString());\n\t\t\t\t\titem.setReview(bangumiarray.getJSONObject(i+\"\").getString(\"review\").toString());\n\t\t\t\t\titem.setVideo_review(bangumiarray.getJSONObject(i+\"\").getString(\"video_review\").toString());\n\t\t\t\t\titem.setFavorites(bangumiarray.getJSONObject(i+\"\").getString(\"favorites\").toString());\n\t\t\t\t\titem.setMid(bangumiarray.getJSONObject(i+\"\").getString(\"mid\").toString());\n\t\t\t\t\titem.setAuthor(bangumiarray.getJSONObject(i+\"\").getString(\"author\").toString());\n\t\t\t\t\titem.setDescription(bangumiarray.getJSONObject(i+\"\").getString(\"description\").toString());\n\t\t\t\t\titem.setCreate(bangumiarray.getJSONObject(i+\"\").getString(\"create\").toString());\n\t\t\t\t\titem.setPic(bangumiarray.getJSONObject(i+\"\").getString(\"pic\").toString());\n\t\t\t\t\titem.setCredit(bangumiarray.getJSONObject(i+\"\").getString(\"credit\").toString());\n\t\t\t\t\titem.setCoins(bangumiarray.getJSONObject(i+\"\").getString(\"coins\").toString());\n\t\t\t\t\titem.setDuration(bangumiarray.getJSONObject(i+\"\").getString(\"duration\").toString());\t\n\t\t\t\t\tbangumiListtemp.add(item);\n\t\t\t\t}\n\t\t\t\t//动画数据解析\n\t\t\t\tJSONObject dougaarray=bangumijson.getJSONObject(\"douga\");\n\t\t\t\tfor (int i=0;i<4;i++) {\t\t\t\n\t\t\t\t\tVideoItem item = new VideoItem();\t\t\n\t\t\t\t\titem.setAid(dougaarray.getJSONObject(i+\"\").getString(\"aid\").toString());\n\t\t\t\t\titem.setTypeid(dougaarray.getJSONObject(i+\"\").getString(\"typeid\").toString());\n\t\t\t\t\titem.setTitle(dougaarray.getJSONObject(i+\"\").getString(\"title\").toString());\n\t\t\t\t\titem.setSbutitle(dougaarray.getJSONObject(i+\"\").optString(\"sbutitle\").toString());\n\t\t\t\t\titem.setPlay(dougaarray.getJSONObject(i+\"\").getString(\"play\").toString());\n\t\t\t\t\titem.setReview(dougaarray.getJSONObject(i+\"\").getString(\"review\").toString());\n\t\t\t\t\titem.setVideo_review(dougaarray.getJSONObject(i+\"\").getString(\"video_review\").toString());\n\t\t\t\t\titem.setFavorites(dougaarray.getJSONObject(i+\"\").getString(\"favorites\").toString());\n\t\t\t\t\titem.setMid(dougaarray.getJSONObject(i+\"\").getString(\"mid\").toString());\n\t\t\t\t\titem.setAuthor(dougaarray.getJSONObject(i+\"\").getString(\"author\").toString());\n\t\t\t\t\titem.setDescription(dougaarray.getJSONObject(i+\"\").getString(\"description\").toString());\n\t\t\t\t\titem.setCreate(dougaarray.getJSONObject(i+\"\").getString(\"create\").toString());\n\t\t\t\t\titem.setPic(dougaarray.getJSONObject(i+\"\").getString(\"pic\").toString());\n\t\t\t\t\titem.setCredit(dougaarray.getJSONObject(i+\"\").getString(\"credit\").toString());\n\t\t\t\t\titem.setCoins(dougaarray.getJSONObject(i+\"\").getString(\"coins\").toString());\n\t\t\t\t\titem.setDuration(dougaarray.getJSONObject(i+\"\").getString(\"duration\").toString());\t\n\t\t\t\t\tdougaListtemp.add(item);\n\t\t\t\t}\n\t\t\t\t//音乐数据解析\n\t\t\t\tJSONObject musicarray=bangumijson.getJSONObject(\"music\");\n\t\t\t\tfor (int i=0;i<4;i++) {\t\t\t\n\t\t\t\t\tVideoItem item = new VideoItem();\t\t\n\t\t\t\t\titem.setAid(musicarray.getJSONObject(i+\"\").getString(\"aid\").toString());\n\t\t\t\t\titem.setTypeid(musicarray.getJSONObject(i+\"\").getString(\"typeid\").toString());\n\t\t\t\t\titem.setTitle(musicarray.getJSONObject(i+\"\").getString(\"title\").toString());\n\t\t\t\t\titem.setSbutitle(musicarray.getJSONObject(i+\"\").optString(\"sbutitle\").toString());\n\t\t\t\t\titem.setPlay(musicarray.getJSONObject(i+\"\").getString(\"play\").toString());\n\t\t\t\t\titem.setReview(musicarray.getJSONObject(i+\"\").getString(\"review\").toString());\n\t\t\t\t\titem.setVideo_review(musicarray.getJSONObject(i+\"\").getString(\"video_review\").toString());\n\t\t\t\t\titem.setFavorites(musicarray.getJSONObject(i+\"\").getString(\"favorites\").toString());\n\t\t\t\t\titem.setMid(musicarray.getJSONObject(i+\"\").getString(\"mid\").toString());\n\t\t\t\t\titem.setAuthor(musicarray.getJSONObject(i+\"\").getString(\"author\").toString());\n\t\t\t\t\titem.setDescription(musicarray.getJSONObject(i+\"\").getString(\"description\").toString());\n\t\t\t\t\titem.setCreate(musicarray.getJSONObject(i+\"\").getString(\"create\").toString());\n\t\t\t\t\titem.setPic(musicarray.getJSONObject(i+\"\").getString(\"pic\").toString());\n\t\t\t\t\titem.setCredit(musicarray.getJSONObject(i+\"\").getString(\"credit\").toString());\n\t\t\t\t\titem.setCoins(musicarray.getJSONObject(i+\"\").getString(\"coins\").toString());\n\t\t\t\t\titem.setDuration(musicarray.getJSONObject(i+\"\").getString(\"duration\").toString());\t\n\t\t\t\t\tmusicListtemp.add(item);\n\t\t\t\t}\n\t\t\t\t//舞蹈数据解析\n\t\t\t\tJSONObject dancearray=bangumijson.getJSONObject(\"game\");\n\t\t\t\tfor (int i=0;i<4;i++) {\t\t\t\n\t\t\t\t\tVideoItem item = new VideoItem();\t\t\n\t\t\t\t\titem.setAid(dancearray.getJSONObject(i+\"\").getString(\"aid\").toString());\n\t\t\t\t\titem.setTypeid(dancearray.getJSONObject(i+\"\").getString(\"typeid\").toString());\n\t\t\t\t\titem.setTitle(dancearray.getJSONObject(i+\"\").getString(\"title\").toString());\n\t\t\t\t\titem.setSbutitle(dancearray.getJSONObject(i+\"\").optString(\"sbutitle\").toString());\n\t\t\t\t\titem.setPlay(dancearray.getJSONObject(i+\"\").getString(\"play\").toString());\n\t\t\t\t\titem.setReview(dancearray.getJSONObject(i+\"\").getString(\"review\").toString());\n\t\t\t\t\titem.setVideo_review(dancearray.getJSONObject(i+\"\").getString(\"video_review\").toString());\n\t\t\t\t\titem.setFavorites(dancearray.getJSONObject(i+\"\").getString(\"favorites\").toString());\n\t\t\t\t\titem.setMid(dancearray.getJSONObject(i+\"\").getString(\"mid\").toString());\n\t\t\t\t\titem.setAuthor(dancearray.getJSONObject(i+\"\").getString(\"author\").toString());\n\t\t\t\t\titem.setDescription(dancearray.getJSONObject(i+\"\").getString(\"description\").toString());\n\t\t\t\t\titem.setCreate(dancearray.getJSONObject(i+\"\").getString(\"create\").toString());\n\t\t\t\t\titem.setPic(dancearray.getJSONObject(i+\"\").getString(\"pic\").toString());\n\t\t\t\t\titem.setCredit(dancearray.getJSONObject(i+\"\").getString(\"credit\").toString());\n\t\t\t\t\titem.setCoins(dancearray.getJSONObject(i+\"\").getString(\"coins\").toString());\n\t\t\t\t\titem.setDuration(dancearray.getJSONObject(i+\"\").getString(\"duration\").toString());\t\n\t\t\t\t\tdanceListtemp.add(item);\n\t\t\t\t}\n\t\t\t\t//娱乐数据解析\n\t\t\t\tJSONObject entarray=bangumijson.getJSONObject(\"ent\");\n\t\t\t\tfor (int i=0;i<4;i++) {\t\t\t\n\t\t\t\t\tVideoItem item = new VideoItem();\t\t\n\t\t\t\t\titem.setAid(entarray.getJSONObject(i+\"\").getString(\"aid\").toString());\n\t\t\t\t\titem.setTypeid(entarray.getJSONObject(i+\"\").getString(\"typeid\").toString());\n\t\t\t\t\titem.setTitle(entarray.getJSONObject(i+\"\").getString(\"title\").toString());\n\t\t\t\t\titem.setSbutitle(entarray.getJSONObject(i+\"\").optString(\"sbutitle\").toString());\n\t\t\t\t\titem.setPlay(entarray.getJSONObject(i+\"\").getString(\"play\").toString());\n\t\t\t\t\titem.setReview(entarray.getJSONObject(i+\"\").getString(\"review\").toString());\n\t\t\t\t\titem.setVideo_review(entarray.getJSONObject(i+\"\").getString(\"video_review\").toString());\n\t\t\t\t\titem.setFavorites(entarray.getJSONObject(i+\"\").getString(\"favorites\").toString());\n\t\t\t\t\titem.setMid(entarray.getJSONObject(i+\"\").getString(\"mid\").toString());\n\t\t\t\t\titem.setAuthor(entarray.getJSONObject(i+\"\").getString(\"author\").toString());\n\t\t\t\t\titem.setDescription(entarray.getJSONObject(i+\"\").getString(\"description\").toString());\n\t\t\t\t\titem.setCreate(entarray.getJSONObject(i+\"\").getString(\"create\").toString());\n\t\t\t\t\titem.setPic(entarray.getJSONObject(i+\"\").getString(\"pic\").toString());\n\t\t\t\t\titem.setCredit(entarray.getJSONObject(i+\"\").getString(\"credit\").toString());\n\t\t\t\t\titem.setCoins(entarray.getJSONObject(i+\"\").getString(\"coins\").toString());\n\t\t\t\t\titem.setDuration(entarray.getJSONObject(i+\"\").getString(\"duration\").toString());\t\n\t\t\t\t\tentListtemp.add(item);\n\t\t\t\t}\n\t\t\t\t//电影数据解析\n\t\t\t\tJSONObject moviearray=bangumijson.getJSONObject(\"movie\");\n\t\t\t\tfor (int i=0;i<4;i++) {\t\t\t\n\t\t\t\t\tVideoItem item = new VideoItem();\t\t\n\t\t\t\t\titem.setAid(moviearray.getJSONObject(i+\"\").getString(\"aid\").toString());\n\t\t\t\t\titem.setTypeid(moviearray.getJSONObject(i+\"\").getString(\"typeid\").toString());\n\t\t\t\t\titem.setTitle(moviearray.getJSONObject(i+\"\").getString(\"title\").toString());\n\t\t\t\t\titem.setSbutitle(moviearray.getJSONObject(i+\"\").optString(\"sbutitle\").toString());\n\t\t\t\t\titem.setPlay(moviearray.getJSONObject(i+\"\").getString(\"play\").toString());\n\t\t\t\t\titem.setReview(moviearray.getJSONObject(i+\"\").getString(\"review\").toString());\n\t\t\t\t\titem.setVideo_review(moviearray.getJSONObject(i+\"\").getString(\"video_review\").toString());\n\t\t\t\t\titem.setFavorites(moviearray.getJSONObject(i+\"\").getString(\"favorites\").toString());\n\t\t\t\t\titem.setMid(moviearray.getJSONObject(i+\"\").getString(\"mid\").toString());\n\t\t\t\t\titem.setAuthor(moviearray.getJSONObject(i+\"\").getString(\"author\").toString());\n\t\t\t\t\titem.setDescription(moviearray.getJSONObject(i+\"\").getString(\"description\").toString());\n\t\t\t\t\titem.setCreate(moviearray.getJSONObject(i+\"\").getString(\"create\").toString());\n\t\t\t\t\titem.setPic(moviearray.getJSONObject(i+\"\").getString(\"pic\").toString());\n\t\t\t\t\titem.setCredit(moviearray.getJSONObject(i+\"\").getString(\"credit\").toString());\n\t\t\t\t\titem.setCoins(moviearray.getJSONObject(i+\"\").getString(\"coins\").toString());\n\t\t\t\t\titem.setDuration(moviearray.getJSONObject(i+\"\").getString(\"duration\").toString());\t\n\t\t\t\t\tmovieListtemp.add(item);\n\t\t\t\t}\n\t\t\t\t//科技数据解析\n\t\t\t\tJSONObject kejiarray=bangumijson.getJSONObject(\"technology\");\n\t\t\t\tfor (int i=0;i<4;i++) {\t\t\t\n\t\t\t\t\tVideoItem item = new VideoItem();\t\t\n\t\t\t\t\titem.setAid(kejiarray.getJSONObject(i+\"\").getString(\"aid\").toString());\n\t\t\t\t\titem.setTypeid(kejiarray.getJSONObject(i+\"\").getString(\"typeid\").toString());\n\t\t\t\t\titem.setTitle(kejiarray.getJSONObject(i+\"\").getString(\"title\").toString());\n\t\t\t\t\titem.setSbutitle(kejiarray.getJSONObject(i+\"\").optString(\"sbutitle\").toString());\n\t\t\t\t\titem.setPlay(kejiarray.getJSONObject(i+\"\").getString(\"play\").toString());\n\t\t\t\t\titem.setReview(kejiarray.getJSONObject(i+\"\").getString(\"review\").toString());\n\t\t\t\t\titem.setVideo_review(kejiarray.getJSONObject(i+\"\").getString(\"video_review\").toString());\n\t\t\t\t\titem.setFavorites(kejiarray.getJSONObject(i+\"\").getString(\"favorites\").toString());\n\t\t\t\t\titem.setMid(kejiarray.getJSONObject(i+\"\").getString(\"mid\").toString());\n\t\t\t\t\titem.setAuthor(kejiarray.getJSONObject(i+\"\").getString(\"author\").toString());\n\t\t\t\t\titem.setDescription(kejiarray.getJSONObject(i+\"\").getString(\"description\").toString());\n\t\t\t\t\titem.setCreate(kejiarray.getJSONObject(i+\"\").getString(\"create\").toString());\n\t\t\t\t\titem.setPic(kejiarray.getJSONObject(i+\"\").getString(\"pic\").toString());\n\t\t\t\t\titem.setCredit(kejiarray.getJSONObject(i+\"\").getString(\"credit\").toString());\n\t\t\t\t\titem.setCoins(kejiarray.getJSONObject(i+\"\").getString(\"coins\").toString());\n\t\t\t\t\titem.setDuration(kejiarray.getJSONObject(i+\"\").getString(\"duration\").toString());\t\n\t\t\t\t\tkejiListtemp.add(item);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} catch (JSONException e) {\n\t\t\t\t// TODO Auto-generated catch block\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\t\t\t\n\t\t\tListtemp.get(Listtemp.size()-1).setAd(true);\n\t\t\treturn null;\n\t\t\t\n\n\t\t}\n\n\t\t@Override\n\t\tprotected void onPostExecute(Integer result) {\n\t\t\tsuper.onPostExecute(result);\n\t\t\tLog.d(\"T^T\",\"----->onpostexcute\");\t\n\t\t\tadList = Listtemp;\n\t\t\tvideoItemList = bangumiListtemp;\n\t\t\tdougaItemList = dougaListtemp;\n\t\t\tmusicItemList = musicListtemp;\n\t\t\tdanceItemList = danceListtemp;\n\t\t\tentItemList = entListtemp;\n\t\t\tmovieItemList = movieListtemp;\n\t\t\tkejiItemList = kejiListtemp;\n\t\t\tinitAdData();\n//\t\t\tinitBangumiData();\n\t\t\tstartAd();\n\n//\t\t\tadViewPager.notifyAll();\n\n\t\t}\n\n\t}\n\t@Override\n\tpublic void onDestroy() {\n\t\t// TODO Auto-generated method stub\n\t\tmImageLoader.destroy();\n\t\tsuper.onDestroy();\n\t}\n\t\n\tprivate OnClickListener mDonghuaViewListener = new OnClickListener() {\n\t\t@Override\n\t\tpublic void onClick(View v) {\n\t\t\t// 处理跳转逻辑\n\t\t\tIntent i = new Intent();\n\t\t\ti.putExtra(\"AreaType\",2);\n\t\t\ti.setClass(getActivity(), DonghuaActivity.class);\n\t\t\tstartActivity(i);\n\t\t\t// 动画过渡\n\t\t\tgetActivity().overridePendingTransition(R.anim.push_left_in,\n\t\t\t\t\tR.anim.push_no);\n\n\t\t}\n\t};\n\tprivate OnClickListener mBankumiViewListener = new OnClickListener() {\n\t\t@Override\n\t\tpublic void onClick(View v) {\n\t\t\t// 处理跳转逻辑\n\t\t\tIntent i = new Intent();\n\t\t\ti.putExtra(\"AreaType\",1);\n\t\t\ti.setClass(getActivity(), DonghuaActivity.class);\n\t\t\tstartActivity(i);\n\t\t\t// 动画过渡\n\t\t\tgetActivity().overridePendingTransition(R.anim.push_left_in,\n\t\t\t\t\tR.anim.push_no);\n\t\t\t\n\t\t}\n\t};\n\tprivate OnClickListener mMusicViewListener = new OnClickListener() {\n\t\t@Override\n\t\tpublic void onClick(View v) {\n\t\t\t// 处理跳转逻辑\n\t\t\tIntent i = new Intent();\n\t\t\ti.putExtra(\"AreaType\",3);\n\t\t\ti.setClass(getActivity(), DonghuaActivity.class);\n\t\t\tstartActivity(i);\n\t\t\t// 动画过渡\n\t\t\tgetActivity().overridePendingTransition(R.anim.push_left_in,\n\t\t\t\t\tR.anim.push_no);\n\t\t\t\n\t\t}\n\t};\n\tprivate OnClickListener mKejiViewListener = new OnClickListener() {\n\t\t@Override\n\t\tpublic void onClick(View v) {\n\t\t\t// 处理跳转逻辑\n\t\t\tIntent i = new Intent();\n\t\t\ti.putExtra(\"AreaType\",5);\n\t\t\ti.setClass(getActivity(), DonghuaActivity.class);\n\t\t\tstartActivity(i);\n\t\t\t// 动画过渡\n\t\t\tgetActivity().overridePendingTransition(R.anim.push_left_in,\n\t\t\t\t\tR.anim.push_no);\n\t\t\t\n\t\t}\n\t};\n\tprivate OnClickListener mYuleViewListener = new OnClickListener() {\n\t\t@Override\n\t\tpublic void onClick(View v) {\n\t\t\t// 处理跳转逻辑\n\t\t\tIntent i = new Intent();\n\t\t\ti.putExtra(\"AreaType\",6);\n\t\t\ti.setClass(getActivity(), DonghuaActivity.class);\n\t\t\tstartActivity(i);\n\t\t\t// 动画过渡\n\t\t\tgetActivity().overridePendingTransition(R.anim.push_left_in,\n\t\t\t\t\tR.anim.push_no);\n\t\t\t\n\t\t}\n\t};\n\tprivate OnClickListener mDianyingViewListener = new OnClickListener() {\n\t\t@Override\n\t\tpublic void onClick(View v) {\n\t\t\t// 处理跳转逻辑\n\t\t\tIntent i = new Intent();\n\t\t\ti.putExtra(\"AreaType\",7);\n\t\t\ti.setClass(getActivity(), DonghuaActivity.class);\n\t\t\tstartActivity(i);\n\t\t\t// 动画过渡\n\t\t\tgetActivity().overridePendingTransition(R.anim.push_left_in,\n\t\t\t\t\tR.anim.push_no);\n\t\t\t\n\t\t}\n\t};\n\tprivate OnClickListener mGameViewListener = new OnClickListener() {\n\t\t@Override\n\t\tpublic void onClick(View v) {\n\t\t\t// 处理跳转逻辑\n\t\t\tIntent i = new Intent();\n\t\t\ti.putExtra(\"AreaType\",4);\n\t\t\ti.setClass(getActivity(), DonghuaActivity.class);\n\t\t\tstartActivity(i);\n\t\t\t// 动画过渡\n\t\t\tgetActivity().overridePendingTransition(R.anim.push_left_in,\n\t\t\t\t\tR.anim.push_no);\n\t\t\t\n\t\t}\n\t};\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/fragment/OnlineFragment.java",
    "content": "package com.cjj.bb.fragment;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.activity.VideoViewActivity;\nimport com.cjj.bb.adapter.ArrayAdapter;\nimport com.cjj.bb.model.OnlineVideo;\nimport com.cjj.bb.utils.XmlReaderHelper;\nimport com.nostra13.universalimageloader.core.DisplayImageOptions;\nimport com.nostra13.universalimageloader.core.ImageLoader;\nimport com.nostra13.universalimageloader.core.ImageLoaderConfiguration;\n\nimport android.content.Context;\nimport android.content.Intent;\nimport android.net.Uri;\nimport android.os.Bundle;\nimport android.support.v4.app.Fragment;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport android.widget.AdapterView;\nimport android.widget.AdapterView.OnItemClickListener;\nimport android.widget.ImageView;\nimport android.widget.ListView;\nimport android.widget.TextView;\n\npublic class OnlineFragment extends Fragment implements OnItemClickListener {\n\n\t/** 缓存视频列表 */\n\tprivate static ArrayList<String[]> mOnlineList = new ArrayList<String[]>();\n\t/** 缓存视频LOGO列表 */\n\tprivate static ArrayList<Integer> mOnlineLogoList = new ArrayList<Integer>();\n\t\n\tprivate ListView mListView;\n\t/** 历史记录 */\n\tprivate List<String> mHistory = new ArrayList<String>();\n\t/** 显示当前正在加载的url */\n\tprivate TextView mUrl;\n\tprivate String mTitle;\n\tprivate ArrayList<OnlineVideo> tvs;\n\tprivate int level = 1;\n\tprivate DataAdapter mAdapter;\n\t\n\t@Override\n\tpublic void onCreate(Bundle savedInstanceState) {\n\t\t// TODO Auto-generated method stub\n\t\tsuper.onCreate(savedInstanceState);\n\t\ttvs = XmlReaderHelper.getAllCategory(getActivity());\n\t}\n\n\t@Override\n\tpublic View onCreateView(LayoutInflater inflater, ViewGroup container,\n\t\t\tBundle savedInstanceState)  {\n\t\tView mView = inflater.inflate(R.layout.fragment_online, container,false);\n\n\t\tmListView = (ListView) mView.findViewById(android.R.id.list);\n\t\tmListView.setOnItemClickListener(this);\n\t\tmAdapter = new DataAdapter(getActivity(),tvs);\n\t\tmListView.setAdapter(mAdapter);\n\t\treturn mView;\n\t}\n\n\t@Override\n\tpublic void onItemClick(AdapterView<?> parent, View view, int position,\n\t\t\tlong id) {\n\t\tfinal OnlineVideo item = mAdapter.getItem(position);\n\t\tswitch (level) {\n\t\tcase 1:// 顶级\n\t\t\tlevel = 2;\n\t\t\tmAdapter.replace(XmlReaderHelper.getVideos(getActivity(),item.id));\n\t\t\tmListView.setAdapter(mAdapter);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t// clearAndLoad(item.url);\n\t\t\tIntent intent = new Intent(getActivity(), VideoViewActivity.class);\n\t\t\tintent.setData(Uri.parse(item.url));\n\t\t    //intent.putExtra(\"path\", item.url);\n\t\t\tintent.putExtra(\"displayName\",item.title);\n\t\t\tstartActivity(intent);\n\t\t\tbreak;\n\t\t}\n\t}\n\t\n\tpublic boolean onBackPressed() {\n\t\tswitch (level) {\n\t\tcase 1:\n\t\t\treturn false;\n\t\tcase 2://\n\t\t\tlevel = 1;\n\t\t\tmAdapter.replace(tvs);\n\t\t\tbreak;\n\t\t}\n\t\tmListView.setAdapter(mAdapter);\n\t\treturn true;\n\t}\n\n\t/** 数据适配 */\n\tprivate class DataAdapter extends ArrayAdapter<OnlineVideo> {\n\t\tprivate ImageLoader imageLoader = ImageLoader.getInstance();// 得到图片加载器\n\t\tprivate DisplayImageOptions options; // 显示图像设置\n\n\t\tpublic DataAdapter(Context ctx,ArrayList<OnlineVideo> root) {\n\t\t\tsuper(ctx, root);\n\t\t\t// 图片加载器初始化\n\t\t\timageLoader.init(ImageLoaderConfiguration.createDefault(getActivity()));\n\t\t\t// 使用DisplayImageOptions.Builder()创建DisplayImageOptions\n\t\t\toptions = new DisplayImageOptions.Builder()\n\t\t\t\t\t.showStubImage(R.drawable.ica_light_ic_action_important) // 设置图片下载期间显示的图片\n\t\t\t\t\t.showImageForEmptyUri(R.drawable.ica_light_ic_action_important) // 设置图片Uri为空或是错误的时候显示的图片\n\t\t\t\t\t.showImageOnFail(R.drawable.ica_light_ic_action_important) // 设置图片加载或解码过程中发生错误显示的图片\n\t\t\t\t\t.cacheInMemory() // 设置下载的图片是否缓存在内存中\n\t\t\t\t\t.cacheOnDisc() // 设置下载的图片是否缓存在SD卡中\n\t\t\t\t\t.build(); // 创建配置过得DisplayImageOption对象\n\t\t}\n\n\t\t@Override\n\t\tpublic View getView(int position, View convertView, ViewGroup parent) {\n\t\t\tfinal OnlineVideo item = getItem(position);\n\t\t\tif (convertView == null) {\n\t\t\t\tfinal LayoutInflater mInflater = getActivity()\n\t\t\t\t\t\t.getLayoutInflater();\n\t\t\t\tconvertView = mInflater.inflate(R.layout.fragment_online_item,\n\t\t\t\t\t\tnull);\n\t\t\t}\n\t\t\tImageView thumbnail = (ImageView) convertView.findViewById(R.id.thumbnail);\n\t\t\tif (item.iconId > 0)\n\t\t\t\tthumbnail.setImageResource(item.iconId);\n\t\t\telse\n\t\t\t{\n\t\t\t\tthumbnail.setImageDrawable(null);\n\t\t\t\t// 异步加载图片\n\t\t\t\timageLoader.displayImage(item.icon_url, thumbnail, options);\n\t\t\t}\t\n\t\t\t((TextView) convertView.findViewById(R.id.title))\n\t\t\t\t\t.setText(item.title);\n\n\t\t\treturn convertView;\n\t\t}\n\n\t}\n\n\n\t@Override\n\tpublic void onPause() {\n\t\tsuper.onPause();\n\t}\n\n\t@Override\n\tpublic void onResume() {\n\t\tsuper.onResume();\n\t\t}\n}\n\n/*\n * private boolean loadVideo(final String url) { if (StringUtils.isEmpty(url))\n * return false;\n * \n * mCurrentUrl = url;\n * \n * new AsyncTask<Void, Void, OnlineVideo>() {\n * \n * @Override protected OnlineVideo doInBackground(Void... params) {\n * Log.d(\"Youku\", url); if (url.startsWith(\"http://m.youku.com\")) { return\n * VideoHelper.getYoukuVideo(url); } return null; }\n * \n * @Override protected void onPostExecute(OnlineVideo result) {\n * super.onPostExecute(result); if (result != null) { Intent intent = new\n * Intent(getActivity(), VideoPlayerActivity.class); intent.putExtra(\"path\",\n * result.url); intent.putExtra(\"title\", result.title); startActivity(intent); }\n * else { mWebView.loadUrl(url); } } }.execute(); return true; }\n */\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/fragment/PersonCenterFragment.java",
    "content": "package com.cjj.bb.fragment;\n\nimport android.support.v4.app.Fragment;\n\npublic class PersonCenterFragment extends Fragment{\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/fragment/RankFragment.java",
    "content": "package com.cjj.bb.fragment;\n\nimport java.text.SimpleDateFormat;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Locale;\n\nimport org.json.JSONArray;\nimport org.json.JSONException;\nimport org.json.JSONObject;\n\n\n\n\nimport android.content.Intent;\nimport android.os.AsyncTask;\nimport android.os.Bundle;\nimport android.support.v4.app.Fragment;\nimport android.util.Log;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport android.widget.AdapterView;\nimport android.widget.AdapterView.OnItemClickListener;\nimport android.widget.Toast;\n\n/**\n * Fragment页面\n * \n * @author wwj_748\n * @date 2014/8/9\n */\npublic class RankFragment extends Fragment  {\n//\tprivate XListView videoListView;// 视频列表\n//\tprivate View noBlogView; // 无数据时显示\n//\tprivate VideoListAdapter adapter;// 列表适配器\n//\tprivate List<VideoItem> templist;\n//\n//\tprivate boolean isLoad = false; // 是否加载\n\tprivate int videoType = 1; // 视频类别\n//\tprivate Page page; // 页面引用\n//\n//\tprivate String refreshDate = \"\"; // 刷新日期\n//\n\tpublic RankFragment(int videoType) {\n\t\tthis.videoType = videoType;\n\t}\n\n\t@Override\n\tpublic void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n//\t\tinit();\n\t}\n\n//\t@Override\n//\tpublic void onActivityCreated(Bundle savedInstanceState) {\n//\t\ttemplist = new ArrayList<VideoItem>();\n//\t\tVideoItem tempItem = new VideoItem();\n//\t\ttempItem.setAid(\"7\");\n//\t\ttempItem.setTitle(\"[示例数据]童年动画主题曲\");\n//\t\ttempItem.setPic(\"http://i0.hdslb.com/320_180/u_user/53cb3e2f7f3efd6464b82c91ea9a1236.jpg\");\n//\t\ttempItem.setAuthor(\"根号⑨\");\n//\t\ttempItem.setPlay(\"23333\");\n//\t\ttemplist.add(tempItem);\n//\t\tinitComponent();\n//\t\tif (isLoad == false) {\n//\t\t\tisLoad = true;\n//\t\t\t// 加载数据库中的数据\n//\t\t\tList<VideoItem> list = templist;\n//\t\t\tadapter.setList(list);\n//\t\t\tadapter.notifyDataSetChanged();\n//\n//\t\t\tvideoListView.startRefresh(); // 开始刷新\n//\n//\t\t} else {\n//\t\t\tvideoListView.NotRefreshAtBegin(); // 不开始刷新\n//\t\t}\n//\t\tsuper.onActivityCreated(savedInstanceState);\n//\t}\n//\n//\t@Override\n//\tpublic View onCreateView(LayoutInflater inflater, ViewGroup container,\n//\t\t\tBundle savedInstanceState) {\n//\t\tLog.e(\"NewsFrag\", \"onCreateView\");\n//\t\treturn inflater.inflate(R.layout.fragment_donghua, null);\n//\t}\n//\n//\t// 初始化\n//\tprivate void init() {\n//\n//\t\tadapter = new VideoListAdapter(getActivity());\n//\t\tpage = new Page();\n//\t\tpage.setPageStart();\n//\t}\n//\n//\t// 初始化组件\n//\tprivate void initComponent() {\n//\t\tvideoListView = (XListView) getView().findViewById(R.id.videoListView);\n//\t\tvideoListView.setAdapter(adapter);// 设置适配器\n//\t\tvideoListView.setPullRefreshEnable(this);// 设置可下拉刷新\n//\t\t//videoListView.setPullLoadEnable(this);// 设置可上拉加载\n//\t\t// 设置列表项点击事件\n//\t\tvideoListView.setOnItemClickListener(new OnItemClickListener() {\n//\n//\t\t\t@Override\n//\t\t\tpublic void onItemClick(AdapterView<?> parent, View view,\n//\t\t\t\t\tint position, long id) {\n//\t\t\t\t// 获得博客列表项\n//\t\t\t\tVideoItem item = (VideoItem) adapter.getItem(position - 1);\n//\t\t\t\tIntent i = new Intent();\n//\t\t\t\tBundle bundle = new Bundle();\n//\t\t\t\tbundle.putSerializable(\"videoItemdata\", item);\n//\t\t\t\ti.setClass(getActivity(), VideoInfoActivity.class);\n//\t\t\t\ti.putExtras(bundle);\n//\t\t\t\tstartActivity(i);\n//\t\t\t\t// 动画过渡\n//\t\t\t\tgetActivity().overridePendingTransition(R.anim.push_left_in,\n//\t\t\t\t\t\tR.anim.push_no);\n//\t\t\t}\n//\t\t});\n//\n//\t\tnoBlogView = getView().findViewById(R.id.noBlogLayout);\n//\t}\n//\n//\tprivate class MainTask extends AsyncTask<String, Void, Integer> {\n//\n//\t\t@Override\n//\t\tprotected Integer doInBackground(String... params) {\n//\t\t\tList<VideoItem> list=new ArrayList<VideoItem>();\n//\t\t\ttry {\n//\t\t\tJSONObject donghuajson = new JSONObject(HttpUtil.getHtmlString(params[0]));\n//\t\t\t//动画数据解析\n//\t\t\tdonghuajson =donghuajson.getJSONObject(\"rank\");\n//\t\t\tJSONArray dougaarray=donghuajson.getJSONArray(\"list\");\n//\t\t\tfor (int i=0;i<20;i++) {\n//\t\t\t\tVideoItem item = new VideoItem();\n//\t\t\t\titem.setAid(dougaarray.getJSONObject(i).getString(\"aid\").toString());\n//\t\t\t\titem.setTitle(dougaarray.getJSONObject(i).getString(\"title\").toString());\n//\t\t\t\titem.setPlay(dougaarray.getJSONObject(i).getString(\"play\").toString());\n//\t\t\t\titem.setVideo_review(dougaarray.getJSONObject(i).getString(\"video_review\").toString());\n//\t\t\t\titem.setMid(dougaarray.getJSONObject(i).getString(\"mid\").toString());\n//\t\t\t\titem.setAuthor(dougaarray.getJSONObject(i).getString(\"author\").toString());\n//\t\t\t\titem.setDescription(dougaarray.getJSONObject(i).getString(\"description\").toString());\n//\t\t\t\titem.setCreate(dougaarray.getJSONObject(i).getString(\"create\").toString());\n//\t\t\t\titem.setPic(dougaarray.getJSONObject(i).getString(\"pic\").toString());\n//\t\t\t\titem.setCoins(dougaarray.getJSONObject(i).getString(\"coins\").toString());\n//\t\t\t\tlist.add(item);\n//\t\t\t\t//Log.d(\"TAG--->\", \"--->\"+item.getTitle());\n//\t\t\t}\n//\n//\t\t\t} catch (JSONException e) {\n//\t\t\t\t// TODO Auto-generated catch block\n//\t\t\t\te.printStackTrace();\n//\t\t\t\treturn Constants.DEF_RESULT_CODE.ERROR;\n//\t\t\t}\n////\t\t\t// 获取网页json数据\n////\t\t\tString temp = HttpUtil.httpGet(params[0]);\n////\t\t\tif (temp == null) {\n////\t\t\t\treturn Constants.DEF_RESULT_CODE.ERROR;\n////\t\t\t}\n////\t\t\t// 解析json获取列表\n////\t\t\tList<VideoItem> list = JsoupUtil.getBlogItemList(blogType, temp);\n//\n//\t\t\tif (list.size() == 0) {\n//\t\t\t\treturn Constants.DEF_RESULT_CODE.NO_DATA;\n//\t\t\t}\n//\t\t\t// 刷新动作\n//\t\t\tif (params[1].equals(\"refresh\")) {\n//\t\t\t\tadapter.setList(list);\n//\t\t\t\treturn Constants.DEF_RESULT_CODE.REFRESH;\n//\t\t\t} else {// 加载更多\n//\t\t\t\tadapter.addList(list);\n//\t\t\t\treturn Constants.DEF_RESULT_CODE.LOAD;\n//\t\t\t}\n//\n//\t\t}\n//\n//\t\t@Override\n//\t\tprotected void onPostExecute(Integer result) {\n//\t\t\t// 通知列表数据更新\n//\t\t\tadapter.notifyDataSetChanged();\n//\t\t\tswitch (result) {\n//\t\t\tcase Constants.DEF_RESULT_CODE.ERROR: // 错误\n//\t\t\t\tToast.makeText(getActivity(), \"网络信号不佳\", Toast.LENGTH_LONG).show();\n//\t\t\t\tvideoListView.stopRefresh(getDate());\n//\t\t\t\tvideoListView.stopLoadMore();\n//\t\t\t\tbreak;\n//\t\t\tcase Constants.DEF_RESULT_CODE.NO_DATA: // 无数据\n//\t\t\t\t// Toast.makeText(getActivity(), \"无更多加载内容\", Toast.LENGTH_LONG)\n//\t\t\t\t// .show();\n//\t\t\t\tvideoListView.stopLoadMore();\n//\t\t\t\t// noBlogView.setVisibility(View.VISIBLE); // 显示无博客\n//\t\t\t\tbreak;\n//\t\t\tcase Constants.DEF_RESULT_CODE.REFRESH: // 刷新\n//\t\t\t\tvideoListView.stopRefresh(getDate());\n//\t\t\t\tif (adapter.getCount() == 0) {\n//\t\t\t\t\tnoBlogView.setVisibility(View.VISIBLE); // 显示无博客\n//\t\t\t\t}\n//\t\t\t\tbreak;\n//\t\t\tcase Constants.DEF_RESULT_CODE.LOAD:\n//\t\t\t\tvideoListView.stopLoadMore();\n//\t\t\t\tpage.addPage();\n//\t\t\t\tif (adapter.getCount() == 0) {\n//\t\t\t\t\tnoBlogView.setVisibility(View.VISIBLE); // 显示无博客\n//\t\t\t\t}\n//\t\t\t\tbreak;\n//\t\t\tdefault:\n//\t\t\t\tbreak;\n//\t\t\t}\n//\t\t\tsuper.onPostExecute(result);\n//\t\t}\n//\n//\t}\n//\n//\t// 加载更多时调用\n//\t@Override\n//\tpublic void onLoadMore() {\n//\t\tSystem.out.println(\"loadmore\");\n//\n//\t}\n//\n//\t@Override\n//\tpublic void onRefresh() {\n//\t\tSystem.out.println(\"refresh\");\n//\t\tpage.setPageStart();\n//\t\tnew MainTask().execute(URLUtil.getRefreshBlogListURL(videoType),\n//\t\t\t\t\"refresh\");\n//\t}\n//\n//\tpublic String getDate() {\n//\t\tSimpleDateFormat sdf = new SimpleDateFormat(\"MM月dd日 HH:mm\",\n//\t\t\t\tLocale.CHINA);\n//\t\treturn sdf.format(new java.util.Date());\n//\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/fragment/RelevantVideoFragment.java",
    "content": "package com.cjj.bb.fragment;\n\nimport android.support.v4.app.Fragment;\n\npublic class RelevantVideoFragment extends Fragment{\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/fragment/SubareaFragment.java",
    "content": "package com.cjj.bb.fragment;\n\n\nimport android.content.Intent;\nimport android.os.Bundle;\nimport android.support.v4.app.Fragment;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.view.ViewGroup;\nimport android.widget.GridView;\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.activity.DonghuaActivity;\nimport com.cjj.bb.adapter.AreaGridAdapter;\nimport com.cjj.bb.model.AreaItem;\n\nimport java.util.ArrayList;\n\npublic class SubareaFragment extends Fragment{\n\tprivate GridView areaGridView;\n\tprivate View rankView;\n\tprivate ArrayList<AreaItem> areaList = new ArrayList<AreaItem>();\n\tprivate int[] areaimages = new int[]{R.drawable.ic_cate_bangumi,R.drawable.ic_cate_animation,\n\t\t\tR.drawable.ic_cate_music,R.drawable.ic_cate_game,R.drawable.ic_cate_science,\n\t\t\tR.drawable.ic_cate_entertainment,R.drawable.ic_cate_movie,R.drawable.ic_cate_tv};\n\tprivate String[] areatexts = new String[]{\"番剧\",\"动画\",\"音乐\",\"游戏\",\"科学\",\"娱乐\",\"电影\",\"电视\"};\n\t@Override\n\tpublic void onCreate(Bundle savedInstanceState) {\n\t\t// TODO Auto-generated method stub\n\t\tsuper.onCreate(savedInstanceState);\n\t   \t for (int i = 0; i < areaimages.length; i++) {\n\t\t\t\tAreaItem item = new AreaItem();\n\t\t\t\titem.setImg(areaimages[i]);\n\t\t\t\titem.setText(areatexts[i]);\n\t\t\t\tareaList.add(item);\n\t\t\t}\n\t}\n\n     @Override\n     public View onCreateView(LayoutInflater inflater, ViewGroup container,\n             Bundle savedInstanceState) {\n         View rootView = inflater.inflate(R.layout.fragment_subarea, container, false);\n         areaGridView = (GridView)rootView.findViewById(R.id.AreaGridView);\n         areaGridView.setAdapter(new AreaGridAdapter(getActivity(), areaList));\n         rankView = rootView.findViewById(R.id.RankView);\n         rankView.setOnClickListener(new OnClickListener() {\n\t\t\t\n\t\t\t@Override\n\t\t\tpublic void onClick(View arg0) {\n\t\t\t\t// TODO Auto-generated method stub\n\t\t\t\t// 处理跳转逻辑\n\t\t\t\tIntent i = new Intent();\n\t\t\t\ti.putExtra(\"AreaType\",8);\n\t\t\t\ti.setClass(getActivity(), DonghuaActivity.class);\n\t\t\t\tgetActivity().startActivity(i);\n\t\t\t\t// 动画过渡\n\t\t\t\tgetActivity().overridePendingTransition(R.anim.push_left_in,R.anim.push_no);\n\t\t\t}\n\t\t});\n         return rootView;\n     }\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/fragment/VideoInfoFragment.java",
    "content": "package com.cjj.bb.fragment;\n\nimport java.io.File;\nimport java.util.ArrayList;\nimport java.util.Iterator;\n\n\n\nimport org.json.JSONException;\nimport org.json.JSONObject;\nimport org.jsoup.Jsoup;\nimport org.jsoup.nodes.Document;\nimport org.jsoup.nodes.Element;\nimport org.jsoup.select.Elements;\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.activity.BiliVideoViewActivity;\nimport com.cjj.bb.adapter.VideoInfoListAdapter;\nimport com.cjj.bb.model.VideoItem;\nimport com.cjj.bb.utils.HttpUtil;\nimport com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;\nimport com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;\nimport com.nostra13.universalimageloader.core.DisplayImageOptions;\nimport com.nostra13.universalimageloader.core.ImageLoader;\nimport com.nostra13.universalimageloader.core.ImageLoaderConfiguration;\nimport com.nostra13.universalimageloader.core.assist.ImageScaleType;\nimport com.nostra13.universalimageloader.core.assist.QueueProcessingType;\n\n\nimport android.content.Intent;\nimport android.graphics.Bitmap;\nimport android.net.Uri;\nimport android.os.AsyncTask;\nimport android.os.Bundle;\nimport android.support.v4.app.Fragment;\nimport android.util.Log;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.view.ViewGroup;\nimport android.widget.Button;\nimport android.widget.ImageView;\nimport android.widget.LinearLayout;\nimport android.widget.ListView;\nimport android.widget.TextView;\n\npublic class VideoInfoFragment extends Fragment{\n\tpublic static String IMAGE_CACHE_PATH = \"imageloader/Cache\"; // 图片缓存路径\t\n\tprivate String page = \"1\";\n\tboolean isClickable = true;\n \n\tprivate View rootView;\n\tprivate VideoItem videoinfo;\n\t\n    private ImageView videoImgaeView;\n    private TextView titleTextView;\n    private TextView upTextView;\n    private TextView bofangTextView;\n    private TextView danmaguTextView;\n    private Button bofangButton;\n    private TextView labelTextView;\n    private TextView durationTextView;\n    private ListView videoInfoListView;\n    private ImageView arrowButton;\n    private TextView videoNum;\n    private ArrayList<String> videoInfoList = new ArrayList<String>();\n    \n\tprivate ImageLoader mImageLoader;\n\tprivate DisplayImageOptions options;\n\t\n\n\t@Override\n\tpublic void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tvideoinfo = (VideoItem) getActivity().getIntent().getSerializableExtra(\"videoItemdata\");\n\t\tinitImageLoader();\n\t\t// 获取图片加载实例\n\t\tmImageLoader = ImageLoader.getInstance();\n\t\toptions = new DisplayImageOptions.Builder()\n\t\t\t\t.showStubImage(R.drawable.top_banner_android)\n\t\t\t\t.showImageForEmptyUri(R.drawable.top_banner_android)\n\t\t\t\t.showImageOnFail(R.drawable.top_banner_android)\n\t\t\t\t.cacheInMemory(true).cacheOnDisc(true)\n\t\t\t\t.bitmapConfig(Bitmap.Config.RGB_565)\n\t\t\t\t.imageScaleType(ImageScaleType.EXACTLY).build();\n\t}\n\t\n\tprivate void initImageLoader() {\n\t\tFile cacheDir = com.nostra13.universalimageloader.utils.StorageUtils\n\t\t\t\t.getOwnCacheDirectory(this.getActivity().getApplicationContext(),\n\t\t\t\t\t\tIMAGE_CACHE_PATH);\n\n\t\tDisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()\n\t\t\t\t.cacheInMemory(true).cacheOnDisc(true).build();\n\n\t\tImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(\n\t\t\t\tthis.getActivity()).defaultDisplayImageOptions(defaultOptions)\n\t\t\t\t.memoryCache(new LruMemoryCache(12 * 1024 * 1024))\n\t\t\t\t.memoryCacheSize(12 * 1024 * 1024)\n\t\t\t\t.discCacheSize(32 * 1024 * 1024).discCacheFileCount(100)\n\t\t\t\t.discCache(new UnlimitedDiscCache(cacheDir))\n\t\t\t\t.threadPriority(Thread.NORM_PRIORITY - 2)\n\t\t\t\t.tasksProcessingOrder(QueueProcessingType.LIFO).build();\n\n\t\tImageLoader.getInstance().init(config);\n\t}\n\t\n\tfinal class InJavaScriptLocalObj {  \n        public void showSource(String html) {  \n            System.out.println(\"====>html=\"+html);  \n        }  \n    }  \n\n\t@Override\n\tpublic View onCreateView(LayoutInflater inflater, ViewGroup container,\n         Bundle savedInstanceState) {\n\t\t rootView = inflater.inflate(R.layout.fragment_videoinfo, container, false);\n\t\t initData();\n\t\t Log.d(\"T^T\",\"----->onCreateView\");\t\n\t\t new VideoInfoTask().execute();\n\t     return rootView;\n\t}\n\n\tprivate void initData() {\n\t\tvideoImgaeView = (ImageView) rootView.findViewById(R.id.imageView);\n\t\ttitleTextView = (TextView) rootView.findViewById(R.id.titleTextView);\n\t\tupTextView= (TextView) rootView.findViewById(R.id.authorTextView);\n\t\tbofangTextView= (TextView) rootView.findViewById(R.id.playTextView);\n\t\tdanmaguTextView= (TextView) rootView.findViewById(R.id.video_reviewTextView);\n\t\tbofangButton = (Button) rootView.findViewById(R.id.playButton);\n\t\tlabelTextView= (TextView) rootView.findViewById(R.id.labelTextView);\n\t\tdurationTextView = (TextView) rootView.findViewById(R.id.durationTextView);\n\t\tvideoInfoListView = (ListView) rootView.findViewById(R.id.video_info_list);\n\t\tarrowButton = (ImageView) rootView.findViewById(R.id.arrowButton);\n\t\tvideoNum = (TextView) rootView.findViewById(R.id.videoNumTextView);\n\t\t\n\t\tmImageLoader.displayImage(videoinfo.getPic(), videoImgaeView,options);\n\t\ttitleTextView.setText(videoinfo.getTitle());\n\t\tupTextView.setText(\"Up主：\"+videoinfo.getAuthor());\n\t\tbofangTextView.setText(\"播放：\"+videoinfo.getPlay());\n\t\tdanmaguTextView.setText(\"弹幕：\"+videoinfo.getVideo_review());\n\t\t//labelTextView.setText(videoinfo.getVideo_review());\n\t\tdurationTextView.setText(\"  \"+videoinfo.getDescription());\n\t\t\n        \n\n       \n\t\t\n\t\tbofangButton.setOnClickListener(new OnClickListener() {\n\t\t\t\n\t\t\t@Override\n\t\t\tpublic void onClick(View arg0) {\n\t\t\t\t// TODO Auto-generated method stub\n\t\t\t\tif(bofangButton.getText().equals(\"点击播放\")){\n\t\t\t\t\tLog.d(\"T^T\",\"----->点击播放\");\n\t\t\t\t\t// 处理跳转逻辑\n//\t\t\t\t\tIntent i = new Intent();\n//\t\t\t\t\ti.setClass(getActivity(), VideoViewActivity.class);\n//\t\t\t\t\ti.putExtra(\"videoPath\", videopath);\n//\t\t\t\t\ti.putExtra(\"title\", videoinfo.getTitle());\n//\t\t\t\t\tstartActivity(i);\n\t\t\t\t\tIntent intent = new Intent(getActivity(), BiliVideoViewActivity.class);\n\t\t\t\t\t// intent.putExtra(\"path\", item.url);\n\t\t\t\t\tintent.putExtra(\"displayName\",videoinfo.getTitle());\n\t\t\t\t\tintent.putExtra(\"av\",videoinfo.getAid());\n\t\t\t\t\tpage = \"1\";\n\t\t\t\t\tintent.putExtra(\"page\",page);\n\t\t\t\t\tstartActivity(intent);\n\t\t\t\t\t// 动画过渡\n\t\t\t\t\tgetActivity().overridePendingTransition(R.anim.push_left_in,R.anim.push_no);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tarrowButton.setOnClickListener(new OnClickListener() {\n\t\t\t\n\t\t\t@Override\n\t\t\tpublic void onClick(View arg0) {\n\t\t\t\t// TODO Auto-generated method stub\n\t\t\t\tif (isClickable) {\n\t\t\t\t\tdurationTextView.setMaxLines(durationTextView.getLineCount());\n\t\t\t\t\tisClickable = false;\n\t\t\t\t\tarrowButton.setImageResource(R.drawable.abcp__expander_close_holo_light);\n\t\t\t\t} else {\n\t\t\t\t\tdurationTextView.setMaxLines(2);\n\t\t\t\t\tisClickable = true;\n\t\t\t\t\tarrowButton.setImageResource(R.drawable.abcp__expander_open_holo_light);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t}\n\n\n\t@Override\n\tpublic void onStop() {\n\t\t// TODO Auto-generated method stub\n\t\tsuper.onStop();\n\t}\n\t\n\tprivate class VideoInfoTask extends AsyncTask<String, Void, Integer> {\n\t\tString label;\n\n\t\t@Override\n\t\tprotected Integer doInBackground(String... arg0) {\n//\t\t\tString videoHTML = HttpUtil.sendPost(\"http://www.iippcc.com/bilibili/\", \"text=av\"+videoinfo.getAid()+\"&submit=搜索菌\");\n//\t\t\t\n//\t\t\tDocument doc = Jsoup.parse(videoHTML);\n//\t\t\tElements links = doc.select(\"a[href]\");\n//\t\t\tfor (Element link : links) {\n//\t\t\t\tif(link.text().equals(\"分段1\")){\n//\t\t\t\t\tvideopath = link.attr(\"href\");\n//\t\t\t\t}\n//\t\t\t}\n//\t\t\t\n//\t\t\tElements labels = doc.getElementsByClass(\"col-md-7\");\n//\t\t\tlabels = labels.select(\"button\");\n//\t\t\t//label = labels.get(3).text();\n//\t\t\tcID =  labels.get(6).text().substring(4);\n//\t\t\t\n//\t\t\t\n\t\t\tString listHTML = HttpUtil.getHtmlString(\"http://www.bilibili.com/mobile/video/av\" + videoinfo.getAid() + \".html\");\n\t\t\tLog.d(\"QAQ--->\",\"===>列表加载中\");\n\t\t\tDocument listDoc = Jsoup.parse(listHTML);\n\t\t\tElements listElements = listDoc.getElementsByClass(\"li-wrap-content\");\n\t\t\tfor (int i = 0; i < listElements.size(); i++) {\n\t\t\t\tLog.d(\"QAQ--->\",\"===>\"+listElements.get(i).text());\n\t\t\t\tvideoInfoList.add(listElements.get(i).text());\n\t\t\t}\n\t\t\t\n\t\t\tElements labelElements = listDoc.select(\"[name=keywords]\");\n\t\t\tLog.d(\"QAQ--->\",\"===>\"+labelElements.attr(\"content\"));\n\t\t\tlabel = labelElements.attr(\"content\");\n\n\t\t\t\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\t@Override\n\t\tprotected void onPostExecute(Integer result) {\n\t\t\t// TODO Auto-generated method stubs\n\t\t\tsuper.onPostExecute(result);\n\t\t\tif(label != null){\n\t\t\t\tbofangButton.setText(\"点击播放\");\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tbofangButton.setText(\"加载失败\");\n\t\t\t}\n\t\t\tif(label != null){\n\t\t\t\tlabel = label.substring(20);\n\t\t\t\tlabelTextView.setText(\"标签：\"+label);\n\t\t\t\tif(videoInfoList != null){\n\t\t\t\t\tvideoInfoListView.setAdapter(new VideoInfoListAdapter(getActivity(),videoInfoList,videoinfo.getAid()));\n\t\t\t\t\tvideoNum.setText(\"共有\"+videoInfoList.size()+\"段视频\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(durationTextView.getLineCount() > 2){\n\t\t\t\tarrowButton.setVisibility(View.VISIBLE);\n\t\t\t}\n\t\t}\n\t}\n\t\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/model/AreaItem.java",
    "content": "package com.cjj.bb.model;\n\npublic class AreaItem {\n\tprivate int img;                    //图标\n\tprivate String text;                //文字\n\tpublic int getImg() {\n\t\treturn img;\n\t}\n\tpublic void setImg(int img) {\n\t\tthis.img = img;\n\t}\n\tpublic String getText() {\n\t\treturn text;\n\t}\n\tpublic void setText(String text) {\n\t\tthis.text = text;\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/model/BannerItem.java",
    "content": "package com.cjj.bb.model;\n\npublic class BannerItem {\n\tprivate String title;                    //广告条标题\n\tprivate String link;                     //广告条链接\n\tprivate String img;                      //广告条封面地址\n\tprivate boolean isAd;\n\tpublic String getTitle() {\n\t\treturn title;\n\t}\n\tpublic void setTitle(String title) {\n\t\tthis.title = title;\n\t}\n\tpublic String getLink() {\n\t\treturn link;\n\t}\n\tpublic void setLink(String link) {\n\t\tthis.link = link;\n\t}\n\tpublic String getImg() {\n\t\treturn img;\n\t}\n\tpublic void setImg(String img) {\n\t\tthis.img = img;\n\t}\n\tpublic boolean isAd() {\n\t\treturn isAd;\n\t}\n\tpublic void setAd(boolean isAd) {\n\t\tthis.isAd = isAd;\n\t}                    \n\t\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/model/GameItem.java",
    "content": "package com.cjj.bb.model;\n\npublic class GameItem {\n\tprivate int img;                    //图标\n\tprivate String text;                //文字\n\tprivate String path;                //网址\n\tpublic int getImg() {\n\t\treturn img;\n\t}\n\tpublic void setImg(int img) {\n\t\tthis.img = img;\n\t}\n\tpublic String getText() {\n\t\treturn text;\n\t}\n\tpublic void setText(String text) {\n\t\tthis.text = text;\n\t}\n\tpublic String getPath() {\n\t\treturn path;\n\t}\n\tpublic void setPath(String path) {\n\t\tthis.path = path;\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/model/OnlineVideo.java",
    "content": "package com.cjj.bb.model;\n\nimport java.util.ArrayList;\n\npublic class OnlineVideo {\n\tpublic String id;\n\t/** 标题 */\n\tpublic String title;\n\tpublic String desc;\n\t/** LOGO */\n\tpublic int iconId = 0;\n\tpublic String icon_url;\n\t/** 播放地址 */\n\tpublic String url;\n\t/** 备用链接 */\n\tpublic ArrayList<String> backup_url;\n\t/** 是否目录 */\n\tpublic boolean is_category = false;\n\t/** 0视频 1电视 */\n\tpublic int category;\n\t/** */\n\tpublic int level = 1;\n\n\tpublic OnlineVideo() {\n\n\t}\n\n\tpublic OnlineVideo(String title, int iconId, int category) {\n\t\tthis.title = title;\n\t\tthis.iconId = iconId;\n\t\tthis.category = category;\n\t}\n\n\tpublic OnlineVideo(String title, int iconId, int category, String url) {\n\t\tthis.title = title;\n\t\tthis.iconId = iconId;\n\t\tthis.category = category;\n\t\tthis.url = url;\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/model/Page.java",
    "content": "package com.cjj.bb.model;\n\n/**\n * 页面实体类\n * \n * @author wwj_748\n * @date 2014/8/9\n */\npublic class Page {\n\tprivate int page = 1; // 记录页面数\n\tpublic boolean contentFirstPage = true; // 内容第一页\n\n\t// 设置开始页面\n\tpublic void setPageStart() {\n\t\tpage = 2;\n\t}\n\n\t// 设置页\n\tpublic void setPage(int num) {\n\t\tpage = num;\n\t}\n\n\t// 获取当前页\n\tpublic String getCurrentPage() {\n\t\treturn page + \"\";\n\t}\n\n\t// 添加页面\n\tpublic void addPage() {\n\t\tpage++;\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/model/User.java",
    "content": "package com.cjj.bb.model;\n\npublic class User {\n\tprivate String mid;\n\tprivate String name;\n\tprivate Boolean isApprove = false; //是否是认证账号\n\tprivate String spaceName;\n\tprivate String sex;\n\tprivate String rank;\n\tprivate String avatar;\n\tprivate String follow ;            //关注好友数目\n\tprivate String fans;               //粉丝数目\n\tprivate String article;            //投稿数\n\tprivate String place;              //所在地\n\tprivate String description;        //认证用户为认证信息 普通用户为交友宣言\n\tprivate String followlist;         //关注的好友列表\n\tpublic String getMid() {\n\t\treturn mid;\n\t}\n\tpublic void setMid(String mid) {\n\t\tthis.mid = mid;\n\t}\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\tpublic Boolean getIsApprove() {\n\t\treturn isApprove;\n\t}\n\tpublic void setIsApprove(Boolean isApprove) {\n\t\tthis.isApprove = isApprove;\n\t}\n\tpublic String getSpaceName() {\n\t\treturn spaceName;\n\t}\n\tpublic void setSpaceName(String spaceName) {\n\t\tthis.spaceName = spaceName;\n\t}\n\t/**\n\t * @return the sex\n\t */\n\tpublic String getSex() {\n\t\treturn sex;\n\t}\n\t/**\n\t * @param sex the sex to set\n\t */\n\tpublic void setSex(String sex) {\n\t\tthis.sex = sex;\n\t}\n\tpublic String getRank() {\n\t\treturn rank;\n\t}\n\tpublic void setRank(String rank) {\n\t\tthis.rank = rank;\n\t}\n\tpublic String getAvatar() {\n\t\treturn avatar;\n\t}\n\tpublic void setAvatar(String avatar) {\n\t\tthis.avatar = avatar;\n\t}\n\tpublic String getFollow() {\n\t\treturn follow;\n\t}\n\tpublic void setFollow(String follow) {\n\t\tthis.follow = follow;\n\t}\n\tpublic String getArticle() {\n\t\treturn article;\n\t}\n\tpublic void setArticle(String article) {\n\t\tthis.article = article;\n\t}\n\tpublic String getFans() {\n\t\treturn fans;\n\t}\n\tpublic void setFans(String fans) {\n\t\tthis.fans = fans;\n\t}\n\tpublic String getPlace() {\n\t\treturn place;\n\t}\n\tpublic void setPlace(String place) {\n\t\tthis.place = place;\n\t}\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\tpublic String getFollowlist() {\n\t\treturn followlist;\n\t}\n\tpublic void setFollowlist(String followlist) {\n\t\tthis.followlist = followlist;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/model/Video.java",
    "content": "package com.cjj.bb.model;\n\npublic class Video {\n\tprivate String aid;                    //视频av号\n\tprivate String title;                  //视频标题\n\tprivate String bofang;                 //视频播放数\n\tprivate String shoucang;               //视频收藏数\n\tprivate String danmu;                  //视频弹幕数\n\tprivate String date;                   //发布时间\n\tprivate String cover;                  //视频封面地址\n\tprivate String commentNumber;          //视频评论数\n\tprivate String description;            //视频描述\n\tprivate String tag;                    //视频TAG\n\tprivate String author;                 //up主                 \n\tprivate String credit;                 //视频评分\n\tprivate String coin;                   //视频硬币数\n\tprivate String spid;                   //专题ID\n\tprivate String cid;                    //视频内部ID\n    private String offsite;                //Flash播放调用地址\n    private String duration;               //视频长度\n    private String episode;                //视频分段数\n    private String arcurl;                 //网页地址\n    private String src;                    //视频播放地址\n\tpublic String getAid() {\n\t\treturn aid;\n\t}\n\tpublic void setAid(String aid) {\n\t\tthis.aid = aid;\n\t}\n\tpublic String getTitle() {\n\t\treturn title;\n\t}\n\tpublic void setTitle(String title) {\n\t\tthis.title = title;\n\t}\n\tpublic String getBofang() {\n\t\treturn bofang;\n\t}\n\tpublic void setBofang(String bofang) {\n\t\tthis.bofang = bofang;\n\t}\n\tpublic String getShoucang() {\n\t\treturn shoucang;\n\t}\n\tpublic void setShoucang(String shoucang) {\n\t\tthis.shoucang = shoucang;\n\t}\n\tpublic String getDanmu() {\n\t\treturn danmu;\n\t}\n\tpublic void setDanmu(String danmu) {\n\t\tthis.danmu = danmu;\n\t}\n\tpublic String getDate() {\n\t\treturn date;\n\t}\n\tpublic void setDate(String date) {\n\t\tthis.date = date;\n\t}\n\tpublic String getCover() {\n\t\treturn cover;\n\t}\n\tpublic void setCover(String cover) {\n\t\tthis.cover = cover;\n\t}\n\tpublic String getCommentNumber() {\n\t\treturn commentNumber;\n\t}\n\tpublic void setCommentNumber(String commentNumber) {\n\t\tthis.commentNumber = commentNumber;\n\t}\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\tpublic String getTag() {\n\t\treturn tag;\n\t}\n\tpublic void setTag(String tag) {\n\t\tthis.tag = tag;\n\t}\n\tpublic String getAuthor() {\n\t\treturn author;\n\t}\n\tpublic void setAuthor(String author) {\n\t\tthis.author = author;\n\t}\n\tpublic String getCredit() {\n\t\treturn credit;\n\t}\n\tpublic void setCredit(String credit) {\n\t\tthis.credit = credit;\n\t}\n\tpublic String getCoin() {\n\t\treturn coin;\n\t}\n\tpublic void setCoin(String coin) {\n\t\tthis.coin = coin;\n\t}\n\tpublic String getSpid() {\n\t\treturn spid;\n\t}\n\tpublic void setSpid(String spid) {\n\t\tthis.spid = spid;\n\t}\n\tpublic String getCid() {\n\t\treturn cid;\n\t}\n\tpublic void setCid(String cid) {\n\t\tthis.cid = cid;\n\t}\n\tpublic String getOffsite() {\n\t\treturn offsite;\n\t}\n\tpublic void setOffsite(String offsite) {\n\t\tthis.offsite = offsite;\n\t}\n\tpublic String getDuration() {\n\t\treturn duration;\n\t}\n\tpublic void setDuration(String duration) {\n\t\tthis.duration = duration;\n\t}\n\tpublic String getEpisode() {\n\t\treturn episode;\n\t}\n\tpublic void setEpisode(String episode) {\n\t\tthis.episode = episode;\n\t}\n\tpublic String getArcurl() {\n\t\treturn arcurl;\n\t}\n\tpublic void setArcurl(String arcurl) {\n\t\tthis.arcurl = arcurl;\n\t}\n\tpublic String getSrc() {\n\t\treturn src;\n\t}\n\tpublic void setSrc(String src) {\n\t\tthis.src = src;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/model/VideoItem.java",
    "content": "package com.cjj.bb.model;\n\nimport java.io.Serializable;\n\npublic class VideoItem implements Serializable{\n\tprivate String aid;//视频av号\n\tprivate String typeid;//视频类型\n\tprivate String title;//视频标题\n\tprivate String sbutitle;\n\tprivate String play;//视频播放数\n\tprivate String review;//评论数\n\tprivate String video_review;//视频弹幕数\n\tprivate String favorites;//视频收藏数\n\tprivate String mid;\n\tprivate String author;//Up主\n\tprivate String description;//视频简介\n\tprivate String create;//视频发布时间\n\tprivate String pic;//视频封面地址\n\tprivate String credit;\n\tprivate String coins;//视频硬币数\n\tprivate String duration;//视频长度\n\t\n\tpublic String getAid() {\n\t\treturn aid;\n\t}\n\tpublic void setAid(String aid) {\n\t\tthis.aid = aid;\n\t}\n\tpublic String getTitle() {\n\t\treturn title;\n\t}\n\tpublic void setTitle(String title) {\n\t\tthis.title = title;\n\t}\n\tpublic String getTypeid() {\n\t\treturn typeid;\n\t}\n\tpublic void setTypeid(String typeid) {\n\t\tthis.typeid = typeid;\n\t}\n\tpublic String getPlay() {\n\t\treturn play;\n\t}\n\tpublic void setPlay(String play) {\n\t\tthis.play = play;\n\t}\n\tpublic String getSbutitle() {\n\t\treturn sbutitle;\n\t}\n\tpublic void setSbutitle(String sbutitle) {\n\t\tthis.sbutitle = sbutitle;\n\t}\n\tpublic String getReview() {\n\t\treturn review;\n\t}\n\tpublic void setReview(String review) {\n\t\tthis.review = review;\n\t}\n\tpublic String getVideo_review() {\n\t\treturn video_review;\n\t}\n\tpublic void setVideo_review(String video_review) {\n\t\tthis.video_review = video_review;\n\t}\n\tpublic String getFavorites() {\n\t\treturn favorites;\n\t}\n\tpublic void setFavorites(String favorites) {\n\t\tthis.favorites = favorites;\n\t}\n\tpublic String getMid() {\n\t\treturn mid;\n\t}\n\tpublic void setMid(String mid) {\n\t\tthis.mid = mid;\n\t}\n\tpublic String getAuthor() {\n\t\treturn author;\n\t}\n\tpublic void setAuthor(String author) {\n\t\tthis.author = author;\n\t}\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\tpublic String getCreate() {\n\t\treturn create;\n\t}\n\tpublic void setCreate(String create) {\n\t\tthis.create = create;\n\t}\n\tpublic String getPic() {\n\t\treturn pic;\n\t}\n\tpublic void setPic(String pic) {\n\t\tthis.pic = pic;\n\t}\n\tpublic String getCredit() {\n\t\treturn credit;\n\t}\n\tpublic void setCredit(String credit) {\n\t\tthis.credit = credit;\n\t}\n\tpublic String getCoins() {\n\t\treturn coins;\n\t}\n\tpublic void setCoins(String coins) {\n\t\tthis.coins = coins;\n\t}\n\tpublic String getDuration() {\n\t\treturn duration;\n\t}\n\tpublic void setDuration(String duration) {\n\t\tthis.duration = duration;\n\t}\n\n\t\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/ArrayUtils.java",
    "content": "/*\n * Copyright (C) 2012 YIXIA.COM\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.cjj.bb.utils;\n\nimport java.lang.reflect.Array;\n\npublic class ArrayUtils {\n\tpublic static <T> T[] concat(T[] A, T[] B) {\n\t\tfinal Class<?> typeofA = A.getClass().getComponentType();\n\t\t@SuppressWarnings(\"unchecked\")\n\t\tT[] C = (T[]) Array.newInstance(typeofA, A.length + B.length);\n\t\tSystem.arraycopy(A, 0, C, 0, A.length);\n\t\tSystem.arraycopy(B, 0, C, A.length, B.length);\n\n\t\treturn C;\n\t}\n\t\n\tpublic static <T> int indexOf(T[] array, T s) {\n\t\tfor (int i = 0; i < array.length; i++) {\n\t\t\tif (array[i].equals(s)) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/CompressionTools.java",
    "content": "package com.cjj.bb.utils;\n\nimport java.util.zip.Deflater;\nimport java.util.zip.Inflater;\nimport java.util.zip.DataFormatException;\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\n\npublic class CompressionTools {\n\n  // Export only static methods\n  private CompressionTools() {}\n\n  public static byte[] compress(byte[] value, int offset, int length, int compressionLevel) {  \n    ByteArrayOutputStream bos = new ByteArrayOutputStream(length);\n\n    Deflater compressor = new Deflater();\n\n    try {\n      compressor.setLevel(compressionLevel);  //将当前压缩级别设置为指定值。\n      compressor.setInput(value, offset, length);\n      compressor.finish(); //调用时，指示压缩应当以输入缓冲区的当前内容结尾。\n\n      // Compress the data\n      final byte[] buf = new byte[1024];\n      while (!compressor.finished()) { \n    //如果已到达压缩数据输出流的结尾，则返回 true。\n        int count = compressor.deflate(buf);\n         // 使用压缩数据填充指定缓冲区。\n        bos.write(buf, 0, count);\n      }\n    } finally {\n      compressor.end(); //关闭解压缩器并放弃所有未处理的输入。\n    }\n\n    return bos.toByteArray();\n  }\n  \n  public static byte[] compress(byte[] value, int offset, int length) {\n    return compress(value, offset, length, Deflater.BEST_COMPRESSION);\n  // 最佳压缩的压缩级别\n  }\n  \n   public static byte[] compress(byte[] value) {\n    return compress(value, 0, value.length, Deflater.BEST_COMPRESSION);\n  }\n\n   public static byte[] decompress(byte[] value) throws DataFormatException {\n    ByteArrayOutputStream bos = new ByteArrayOutputStream(value.length);\n\n    Inflater decompressor = new Inflater();\n\n    try {\n      decompressor.setInput(value);\n   \n      final byte[] buf = new byte[1024];\n      while (!decompressor.finished()) {\n        int count = decompressor.inflate(buf);\n        bos.write(buf, 0, count);\n      }\n    } finally {  \n      decompressor.end();\n    }\n    \n    return bos.toByteArray();\n  }\n   \n   public static byte[] decompressXML(byte[] data) throws DataFormatException\n   {\n    byte[] dest = new byte[data.length+2];\n    System.arraycopy(data, 0, dest, 2, data.length);\n    dest[0] = 0x78;\n    dest[1] = 0x01;\n    data = dest;\n    Inflater decompresser = new Inflater();\n    decompresser.setInput(data);\n    \n    byte[] bufferArray = new byte[1024];\n    ByteArrayOutputStream baos = new ByteArrayOutputStream(1024);\n    try\n    {\n     int i = 1;\n     while (i != 0)\n     {\n      i = decompresser.inflate(bufferArray);\n      baos.write(bufferArray, 0, i);\n     }\n     data = baos.toByteArray();\n    }\n    catch (Exception e)\n    {\n     e.printStackTrace();\n    }\n    finally\n    {\n     try\n     {\n      baos.flush();\n      baos.close();\n     }\n     catch (IOException e)\n     {\n      e.printStackTrace();\n     }\n    }\n    \n    decompresser.end();\n    return data;\n   }\n\n}\n\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/Constants.java",
    "content": "package com.cjj.bb.utils;\n\n/**\n * 常量类\n * \n * @author wwj_748\n * \n */\npublic class Constants {\n\t// 博客每一项的类型\n\tpublic class DEF_BLOG_ITEM_TYPE {\n\t\tpublic static final int TITLE = 1; // 标题\n\t\tpublic static final int SUMMARY = 2; // 摘要\n\t\tpublic static final int CONTENT = 3; // 内容\n\t\tpublic static final int IMG = 4; // 图片\n\t\tpublic static final int BOLD_TITLE = 5; // 加粗标题\n\t\tpublic static final int CODE = 6; // 代码\n\t}\n\n\tpublic class DEF_NEWS_TYPE {\n\t\tpublic static final int YEJIE = 1;\n\t\tpublic static final int YIDONG = 2;\n\t\tpublic static final int YANFA = 3;\n\t\tpublic static final int ZAZHI = 4;\n\t\tpublic static final int YUNJISUAN = 5;\n\t}\n\n\t// 评论类型\n\tpublic class DEF_COMMENT_TYPE {\n\t\tpublic static final int PARENT = 1;\n\t\tpublic static final int CHILD = 2;\n\t}\n\n\t// 操作结果类型\n\tpublic class DEF_RESULT_CODE {\n\t\tpublic static final int ERROR = 1; // 错误\n\t\tpublic static final int NO_DATA = 2;// 无数据\n\t\tpublic static final int REFRESH = 3;// 刷新\n\t\tpublic static final int LOAD = 4; // 加载\n\t\tpublic static final int FIRST = 5;// 第一次加载\n\t}\n\n\t// 任务类型\n\tpublic class DEF_TASK_TYPE {\n\t\tpublic static final String FIRST = \"first\";\n\t\tpublic static final String NOR_FIRST = \"not_first\";\n\t\tpublic static final String REFRESH = \"REFRESH\";\n\t\tpublic static final String LOAD = \"LOAD\";\n\t}\n\n\t/**\n\t * 视频类型\n\t */\n\tpublic class DEF_VIDEO_TYPE {\n\t\tpublic static final int DONG_HUA = 1;\t\t// 动画区\n\t\tpublic static final int MAD_AMV = 24;\t// MAD.AMV\n\t\tpublic static final int MMD_3D = 25;\t// MMD.3D\n\t\tpublic static final int DONG_HUA_DUAN_PIAN = 47;\t// 动画短片\n\t\tpublic static final int DONG_HUA_ZONG_HE = 27;\t\t// 动画综合\n\t\t\n\t\tpublic static final int LIAN_ZAI_DONG_HUA = 33; // 连载动画\n\t\tpublic static final int WAN_JIE_DONG_HUA = 32;\t// 完结动画\n\t\tpublic static final int ZHI_XUN = 51;\t// 资讯\n\t\tpublic static final int GUAN_FANG_YAN_SHEN = 152;\t// 官方延伸\n\t\tpublic static final int GUO_CHAN_DONG_HUA = 153;\t// 国产动画\n\t\t\n\t\tpublic static final int YIN_YUE = 3;\t// 音乐区\n\t\tpublic static final int FAN_CHANG = 31;\t// 翻唱\n\t\tpublic static final int VOCALOID_UTAU = 30;\t// VOCALOID-UTAU\n\t\tpublic static final int YAN_ZOU = 59;\t// 演奏\n\t\tpublic static final int YIN_YUE_XUAN_JI = 130;\t//音乐选集\n\t\t\n\t\tpublic static final int KE_JI = 36;\t//科技-全区\n\t\tpublic static final int JI_LU_PIAN = 37;\t//纪录片\n\t\tpublic static final int KE_PU_REN_WEN = 124;\t//科普人文\n\t\tpublic static final int YE_SHENG_JI_SHU = 122;\t//野生技术\n\t\tpublic static final int YAN_JIANG = 39;\t//演讲·公开课\n\t\tpublic static final int JUN_SHI = 96;\t//军事\n\t\tpublic static final int SHU_MA = 95;\t//数码\n\t\t\n\t\tpublic static final int YU_LE = 5;\t//娱乐\n\t\tpublic static final int GAO_XIAO = 138;\t//搞笑\n\t\tpublic static final int SHENG_HUO = 21;\t//生活\n\t\tpublic static final int ZONG_YI = 71;\t//综艺\n\t\t\n\t\tpublic static final int DIAN_YIN = 23;\t//电影\n\t\tpublic static final int OU_MEI_DIAN_YIN = 145;\t//欧美电影\n\t\tpublic static final int RI_BEN_DIAN_YIN = 146;\t//日本电影\n\t\tpublic static final int GUO_CHAN_DIAN_YIN = 147;\t//国产电影\n\t\tpublic static final int DIAN_YIN_XIANG_GUAN = 82;\t//电影相关\n\t\t\n\t\tpublic static final int YOU_XI = 4;\t//游戏\n\t\tpublic static final int DIAN_JI = 17;\t//单机联机\n\t\tpublic static final int WANG_LUO_DIAN_YIN = 65;\t//网络游戏\n\t\tpublic static final int DIAN_ZI_JING_JI = 60;\t//电子竞技\n\t\t\n\t}\n\t/**\n\t * 分区类型\n\t */\n\tpublic class DEF_AREA_TYPE {\n\t\tpublic static final int DONG_HUA_QU = 1;    // 动画区\n\t\tpublic static final int FAN_JU_QU = 2;\t\t// 番剧区\n\t\tpublic static final int YIN_YUE_QU = 3;\t\t// 音乐区\n\t\tpublic static final int KE_JI_QU = 4;\t\t// 科技区\n\t\tpublic static final int YU_LE_QU = 5;\t\t// 娱乐区\n\t\tpublic static final int YOU_XI_QU = 6;\t\t// 游戏区\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/DeviceUtils.java",
    "content": "package com.cjj.bb.utils;\n\nimport java.io.BufferedReader;\nimport java.io.File;\nimport java.io.FileReader;\nimport java.io.IOException;\nimport java.util.List;\n\nimport android.app.Activity;\nimport android.content.ComponentName;\nimport android.content.Context;\nimport android.content.Intent;\nimport android.content.pm.PackageInfo;\nimport android.content.pm.PackageManager;\nimport android.content.pm.PackageManager.NameNotFoundException;\nimport android.content.pm.ResolveInfo;\nimport android.content.res.Configuration;\nimport android.os.Build;\nimport android.os.Environment;\nimport android.os.StatFs;\nimport android.util.DisplayMetrics;\nimport android.view.Display;\nimport android.view.View;\nimport android.view.WindowManager;\nimport android.view.inputmethod.InputMethodManager;\n\n\n/**\n * 系统版本信息类\n * \n * @author tangjun\n * \n */\npublic class DeviceUtils {\n\n\t/** >=2.2 */\n\tpublic static boolean hasFroyo() {\n\t\treturn Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO;\n\t}\n\n\t/** >=2.3 */\n\tpublic static boolean hasGingerbread() {\n\t\treturn Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD;\n\t}\n\n\t/** >=3.0 LEVEL:11 */\n\tpublic static boolean hasHoneycomb() {\n\t\treturn Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB;\n\t}\n\n\t/** >=3.1 */\n\tpublic static boolean hasHoneycombMR1() {\n\t\treturn Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1;\n\t}\n\n\t/** >=4.0 14 */\n\tpublic static boolean hasICS() {\n\t\treturn Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH;\n\t}\n\n\tpublic static int getSDKVersionInt() {\n\t\treturn Build.VERSION.SDK_INT;\n\t}\n\n\t@SuppressWarnings(\"deprecation\")\n\tpublic static String getSDKVersion() {\n\t\treturn Build.VERSION.SDK;\n\t}\n\n\t/**\n\t * 判断是否是平板电脑\n\t * \n\t * @param context\n\t * @return\n\t */\n\tpublic static boolean isTablet(Context context) {\n\t\treturn (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;\n\t}\n\n\tpublic static boolean isHoneycombTablet(Context context) {\n\t\treturn hasHoneycomb() && isTablet(context);\n\t}\n\n\t/**\n\t * 获得设备型号\n\t * \n\t * @return\n\t */\n\tpublic static String getDeviceModel() {\n\t\treturn StringUtils.trim(Build.MODEL);\n\t}\n\n\t/** 检测是否魅族手机 */\n\tpublic static boolean isMeizu() {\n\t\treturn getDeviceModel().toLowerCase().indexOf(\"meizu\") != -1;\n\t}\n\n\t/** 检测是否HTC手机 */\n\tpublic static boolean isHTC() {\n\t\treturn getDeviceModel().toLowerCase().indexOf(\"htc\") != -1;\n\t}\n\t\n\tpublic static boolean isXiaomi() {\n\t\treturn getDeviceModel().toLowerCase().indexOf(\"xiaomi\") != -1;\n\t}\n\n\t/**\n\t * 获得设备制造商\n\t * \n\t * @return\n\t */\n\tpublic static String getManufacturer() {\n\t\treturn StringUtils.trim(Build.MANUFACTURER);\n\t}\n\n\t@SuppressWarnings(\"deprecation\")\n\tpublic static int getScreenHeight(Context context) {\n\t\tDisplay display = ((WindowManager) context\n\t\t\t\t.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();\n\t\treturn display.getHeight();\n\t}\n\n\t/** 获取屏幕宽度 */\n\t@SuppressWarnings(\"deprecation\")\n\tpublic static int getScreenWidth(Context context) {\n\t\tDisplay display = ((WindowManager) context\n\t\t\t\t.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();\n\t\treturn display.getWidth();\n\t}\n\n\t/**\n\t * 获得设备屏幕密度\n\t */\n\tpublic static float getScreenDensity(Context context) {\n\t\tDisplayMetrics metrics = context.getApplicationContext().getResources()\n\t\t\t\t.getDisplayMetrics();\n\t\treturn metrics.density;\n\t}\n\n\tpublic static int[] getScreenSize(int w, int h, Context context) {\n\t\tint phoneW = getScreenWidth(context);\n\t\tint phoneH = getScreenHeight(context);\n\n\t\tif (w * phoneH > phoneW * h) {\n\t\t\tphoneH = phoneW * h / w;\n\t\t} else if (w * phoneH < phoneW * h) {\n\t\t\tphoneW = phoneH * w / h;\n\t\t}\n\n\t\treturn new int[] { phoneW, phoneH };\n\t}\n\n\tpublic static int[] getScreenSize(int w, int h, int phoneW, int phoneH) {\n\t\tif (w * phoneH > phoneW * h) {\n\t\t\tphoneH = phoneW * h / w;\n\t\t} else if (w * phoneH < phoneW * h) {\n\t\t\tphoneW = phoneH * w / h;\n\t\t}\n\t\treturn new int[] { phoneW, phoneH };\n\t}\n\n\t/** 设置屏幕亮度 */\n\tpublic static void setBrightness(final Activity context, float f) {\n\t\tWindowManager.LayoutParams lp = context.getWindow().getAttributes();\n\t\tlp.screenBrightness = f;\n\t\tif (lp.screenBrightness > 1.0f)\n\t\t\tlp.screenBrightness = 1.0f;\n\t\telse if (lp.screenBrightness < 0.01f)\n\t\t\tlp.screenBrightness = 0.01f;\n\t\tcontext.getWindow().setAttributes(lp);\n\t}\n\n\t// private static final long NO_STORAGE_ERROR = -1L;\n\tprivate static final long CANNOT_STAT_ERROR = -2L;\n\n\t/** 检测磁盘状态 */\n\t// public static int getStorageStatus(boolean mayHaveSd) {\n\t// long remaining = mayHaveSd ? getAvailableStorage() : NO_STORAGE_ERROR;\n\t// if (remaining == NO_STORAGE_ERROR) {\n\t// return CommonStatus.STORAGE_STATUS_NONE;\n\t// }\n\t// return remaining < CommonConstants.LOW_STORAGE_THRESHOLD ?\n\t// CommonStatus.STORAGE_STATUS_LOW : CommonStatus.STORAGE_STATUS_OK;\n\t// }\n\n\tpublic static long getAvailableStorage() {\n\t\ttry {\n\t\t\tString storageDirectory = Environment.getExternalStorageDirectory()\n\t\t\t\t\t.toString();\n\t\t\tStatFs stat = new StatFs(storageDirectory);\n\t\t\treturn (long) stat.getAvailableBlocks()\n\t\t\t\t\t* (long) stat.getBlockSize();\n\t\t} catch (RuntimeException ex) {\n\t\t\t// if we can't stat the filesystem then we don't know how many\n\t\t\t// free bytes exist. It might be zero but just leave it\n\t\t\t// blank since we really don't know.\n\t\t\treturn CANNOT_STAT_ERROR;\n\t\t}\n\t}\n\n\t/** 隐藏软键盘 */\n\tpublic static void hideSoftInput(Context ctx, View v) {\n\t\tInputMethodManager imm = (InputMethodManager) ctx\n\t\t\t\t.getSystemService(Context.INPUT_METHOD_SERVICE);\n\t\t// 这个方法可以实现输入法在窗口上切换显示，如果输入法在窗口上已经显示，则隐藏，如果隐藏，则显示输入法到窗口上\n\t\timm.hideSoftInputFromWindow(v.getApplicationWindowToken(),\n\t\t\t\tInputMethodManager.HIDE_NOT_ALWAYS);\n\t}\n\n\t/** 显示软键盘 */\n\tpublic static void showSoftInput(Context ctx) {\n\t\tInputMethodManager imm = (InputMethodManager) ctx\n\t\t\t\t.getSystemService(Context.INPUT_METHOD_SERVICE);\n\t\timm.toggleSoftInput(0, InputMethodManager.SHOW_FORCED);// (v,\n\t\t// InputMethodManager.SHOW_FORCED);\n\t}\n\n\t/**\n\t * 软键盘是否已经打开\n\t * \n\t * @return\n\t */\n\tprotected boolean isHardKeyboardOpen(Context ctx) {\n\t\treturn ctx.getResources().getConfiguration().hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO;\n\t}\n\n\tpublic static String getCpuInfo() {\n\t\tString cpuInfo = \"\";\n\t\ttry {\n\t\t\tif (new File(\"/proc/cpuinfo\").exists()) {\n\t\t\t\tFileReader fr = new FileReader(\"/proc/cpuinfo\");\n\t\t\t\tBufferedReader localBufferedReader = new BufferedReader(fr,\n\t\t\t\t\t\t8192);\n\t\t\t\tcpuInfo = localBufferedReader.readLine();\n\t\t\t\tlocalBufferedReader.close();\n\n\t\t\t\tif (cpuInfo != null) {\n\t\t\t\t\tcpuInfo = cpuInfo.split(\":\")[1].trim().split(\" \")[0];\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (IOException e) {\n\t\t} catch (Exception e) {\n\t\t}\n\t\treturn cpuInfo;\n\t}\n\n\tpublic static void startApkActivity(final Context ctx, String packageName) {\n\t\tPackageManager pm = ctx.getPackageManager();\n\t\tPackageInfo pi;\n\t\ttry {\n\t\t\tpi = pm.getPackageInfo(packageName, 0);\n\t\t\tIntent intent = new Intent(Intent.ACTION_MAIN, null);\n\t\t\tintent.addCategory(Intent.CATEGORY_LAUNCHER);\n\t\t\tintent.setPackage(pi.packageName);\n\n\t\t\tList<ResolveInfo> apps = pm.queryIntentActivities(intent, 0);\n\n\t\t\tResolveInfo ri = apps.iterator().next();\n\t\t\tif (ri != null) {\n\t\t\t\tString className = ri.activityInfo.name;\n\t\t\t\tintent.setComponent(new ComponentName(packageName, className));\n\t\t\t\tctx.startActivity(intent);\n\t\t\t}\n\t\t} catch (NameNotFoundException e) {\n\t\t\tLogger.e(e);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/DownUtil.java",
    "content": "/**\n *\n */\npackage com.cjj.bb.utils;\n\nimport java.io.InputStream;\nimport java.io.RandomAccessFile;\nimport java.net.HttpURLConnection;\nimport java.net.URL;\n\n/**\n * Description:\n * <br/>网站: <a href=\"http://www.crazyit.org\">疯狂Java联盟</a>\n * <br/>Copyright (C), 2001-2014, Yeeku.H.Lee\n * <br/>This program is protected by copyright laws.\n * <br/>Program Name:\n * <br/>Date:\n * @author  Yeeku.H.Lee kongyeeku@163.com\n * @version  1.0\n */\npublic class DownUtil\n{\n\t// 定义下载资源的路径\n\tprivate String path;\n\t// 指定所下载的文件的保存位置\n\tprivate String targetFile;\n\t// 定义需要使用多少线程下载资源\n\tprivate int threadNum;\n\t// 定义下载的线程对象\n\tprivate DownThread[] threads;\n\t// 定义下载的文件的总大小\n\tprivate int fileSize;\n\n\tpublic DownUtil(String path, String targetFile, int threadNum)\n\t{\n\t\tthis.path = path;\n\t\tthis.threadNum = threadNum;\n\t\t// 初始化threads数组\n\t\tthreads = new DownThread[threadNum];\n\t\tthis.targetFile = targetFile;\n\t}\n\n\tpublic void download() throws Exception\n\t{\n\t\tURL url = new URL(path);\n\t\tHttpURLConnection conn = (HttpURLConnection) url.openConnection();\n\t\tconn.setConnectTimeout(5 * 1000);\n\t\tconn.setRequestMethod(\"GET\");\n\t\tconn.setRequestProperty(\n\t\t\t\"Accept\",\n\t\t\t\"image/gif, image/jpeg, image/pjpeg, image/pjpeg, \"\n\t\t\t+ \"application/x-shockwave-flash, application/xaml+xml, \"\n\t\t\t+ \"application/vnd.ms-xpsdocument, application/x-ms-xbap, \"\n\t\t\t+ \"application/x-ms-application, application/vnd.ms-excel, \"\n\t\t\t+ \"application/vnd.ms-powerpoint, application/msword, */*\");\n\t\tconn.setRequestProperty(\"Accept-Language\", \"zh-CN\");\n\t\tconn.setRequestProperty(\"Charset\", \"UTF-8\");\n\t\tconn.setRequestProperty(\"Connection\", \"Keep-Alive\");\n\t\t// 得到文件大小\n\t\tfileSize = conn.getContentLength();\n\t\tconn.disconnect();\n\t\tint currentPartSize = fileSize / threadNum + 1;\n\t\tRandomAccessFile file = new RandomAccessFile(targetFile, \"rw\");\n\t\t// 设置本地文件的大小\n\t\tfile.setLength(fileSize);\n\t\tfile.close();\n\t\tfor (int i = 0; i < threadNum; i++)\n\t\t{\n\t\t\t// 计算每条线程的下载的开始位置\n\t\t\tint startPos = i * currentPartSize;\n\t\t\t// 每个线程使用一个RandomAccessFile进行下载\n\t\t\tRandomAccessFile currentPart = new RandomAccessFile(targetFile,\n\t\t\t\t\"rw\");\n\t\t\t// 定位该线程的下载位置\n\t\t\tcurrentPart.seek(startPos);\n\t\t\t// 创建下载线程\n\t\t\tthreads[i] = new DownThread(startPos, currentPartSize,\n\t\t\t\tcurrentPart);\n\t\t\t// 启动下载线程\n\t\t\tthreads[i].start();\n\t\t}\n\t}\n\n\t// 获取下载的完成百分比\n\tpublic double getCompleteRate()\n\t{\n\t\t// 统计多条线程已经下载的总大小\n\t\tint sumSize = 0;\n\t\tfor (int i = 0; i < threadNum; i++)\n\t\t{\n\t\t\tsumSize += threads[i].length;\n\t\t}\n\t\t// 返回已经完成的百分比\n\t\treturn sumSize * 1.0 / fileSize;\n\t}\n\n\tprivate class DownThread extends Thread\n\t{\n\t\t// 当前线程的下载位置\n\t\tprivate int startPos;\n\t\t// 定义当前线程负责下载的文件大小\n\t\tprivate int currentPartSize;\n\t\t// 当前线程需要下载的文件块\n\t\tprivate RandomAccessFile currentPart;\n\t\t// 定义已经该线程已下载的字节数\n\t\tpublic int length;\n\n\t\tpublic DownThread(int startPos, int currentPartSize,\n\t\t\tRandomAccessFile currentPart)\n\t\t{\n\t\t\tthis.startPos = startPos;\n\t\t\tthis.currentPartSize = currentPartSize;\n\t\t\tthis.currentPart = currentPart;\n\t\t}\n\n\t\t@Override\n\t\tpublic void run()\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tURL url = new URL(path);\n\t\t\t\tHttpURLConnection conn = (HttpURLConnection)url\n\t\t\t\t\t.openConnection();\n\t\t\t\tconn.setConnectTimeout(5 * 1000);\n\t\t\t\tconn.setRequestMethod(\"GET\");\n\t\t\t\tconn.setRequestProperty(\n\t\t\t\t\t\"Accept\",\n\t\t\t\t\t\"image/gif, image/jpeg, image/pjpeg, image/pjpeg, \"\n\t\t\t\t\t+ \"application/x-shockwave-flash, application/xaml+xml, \"\n\t\t\t\t\t+ \"application/vnd.ms-xpsdocument, application/x-ms-xbap, \"\n\t\t\t\t\t+ \"application/x-ms-application, application/vnd.ms-excel, \"\n\t\t\t\t\t+ \"application/vnd.ms-powerpoint, application/msword, */*\");\n\t\t\t\tconn.setRequestProperty(\"Accept-Language\", \"zh-CN\");\n\t\t\t\tconn.setRequestProperty(\"Charset\", \"UTF-8\");\n\t\t\t\tInputStream inStream = conn.getInputStream();\n\t\t\t\t// 跳过startPos个字节，表明该线程只下载自己负责哪部分文件。\n\t\t\t\tinStream.skip(this.startPos);\n\t\t\t\tbyte[] buffer = new byte[1024];\n\t\t\t\tint hasRead = 0;\n\t\t\t\t// 读取网络数据，并写入本地文件\n\t\t\t\twhile (length < currentPartSize\n\t\t\t\t\t&& (hasRead = inStream.read(buffer)) > 0)\n\t\t\t\t{\n\t\t\t\t\tcurrentPart.write(buffer, 0, hasRead);\n\t\t\t\t\t// 累计该线程下载的总大小\n\t\t\t\t\tlength += hasRead;\n\t\t\t\t}\n\t\t\t\tcurrentPart.close();\n\t\t\t\tinStream.close();\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/FileUitl.java",
    "content": "package com.cjj.bb.utils;\n\nimport java.io.BufferedReader;\nimport java.io.BufferedWriter;\nimport java.io.File;\nimport java.io.FileOutputStream;\nimport java.io.FileWriter;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.OutputStream;\n\nimport android.os.Environment;\n\n/**\n * 文件管理类    在以后的开发中也可以使用这个工具类，提高代码的利用性\n * 只要是对SD卡的操作\n * 1、获取SD卡路径   getSDPATH\n * 2、在SD卡上根据传入的目录名创建目录  createSDDir\n * 3、在创建上目录后可以在该目录上创建文件    createSDFile\n * 4、检测文件是否存在  isFileExist\n * 5、将一个InputStream写入到SD卡中   write2SDFromInput\n * 6、将一个字符流写入到SD卡 write2SDFromWrite\n * 注：如果要写入SD卡，只要调用write2SDFromInput函数即可\n * @author Administrator\n *\n */\npublic class FileUitl {\n\tprivate static String SDPATH;\n\t\n\tpublic FileUitl(){\n\t\t//得到当前设备外部存储设备的目录\n\t\tSDPATH = Environment.getExternalStorageDirectory() + File.separator;\n\t}\n\t/**\n\t * 获取当前SD卡的根目录\n\t * @return\n\t */\n\tpublic String getSDPATH(){\n\t\treturn SDPATH;\n\t}\n\t/**\n\t * SD卡上创建目录\n\t */\n\tpublic File createSDDir(String dirName){\n\t\tFile dir = new File(SDPATH + dirName);\n\t\tSystem.out.println(\"createSDDir \" + SDPATH + dirName);\n\t\tdir.mkdir();\n\t\treturn dir;\n\t}\n\t/**\n\t * SD卡上创建文件\n\t */\n\tpublic File createSDFile(String fileName)throws IOException{\n\t\tFile file = new File(SDPATH + fileName);\n\t\tSystem.out.println(\"createSDFile \" + SDPATH + fileName);\n\t\tfile.createNewFile();\n\t\treturn file;\n\t}\n\t\n\t\n\t/**\n\t * 判断SD卡上的文件是否存在\n\t */\n\tpublic boolean isFileExist(String fileName){\n\t\tFile file = new File(SDPATH + fileName);\n\t\treturn file.exists();\n\t}\n\t/**\n\t * 将一个InputStream字节流写入到SD卡中\n\t */\n\tpublic File write2SDFromInput(String Path, String FileName, InputStream input){\n\t\tFile file = null;\n\t\tOutputStream output = null;   //创建一个写入字节流对象\n\t\ttry{\n\t\t\tcreateSDDir(Path);    //根据传入的路径创建目录\n\t\t\tfile = createSDFile(Path + FileName); //根据传入的文件名创建\n\t\t\toutput = new FileOutputStream(file);\n\t\t\tbyte buffer[] = new byte[4 * 1024];   //每次读取4K\n\t\t\tint num = 0;      //需要根据读取的字节大小写入文件\n\t\t\twhile((num = (input.read(buffer))) != -1){\n\t\t\t\toutput.write(buffer, 0, num);\n\t\t\t}\n\t\t\toutput.flush();  //清空缓存\n\t\t}catch (Exception e) {\n\t\t\t// TODO: handle exception\n\t\t\te.printStackTrace();\n\t\t}\n\t\tfinally{\n\t\t\ttry{\n\t\t\t\toutput.close();\n\t\t\t}\n\t\t\tcatch (Exception e) {\n\t\t\t\t// TODO: handle exception\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\t\t}\n\t\treturn file;\n\t}\n\t\n\t/**\n\t * 把传入的字符流写入到SD卡中\n\t * @param Path\n\t * @param FileName\n\t * @param input\n\t * @return\n\t */\n\tpublic File write2SDFromWrite(String Path, String FileName, BufferedReader input){\n\t\tFile file = null;\n\t\tFileWriter output = null;   //创建一个写入字符流对象\n\t\tBufferedWriter bufw = null;\n\t\ttry{\n\t\t\tcreateSDDir(Path);    //根据传入的路径创建目录\n\t\t\tfile = createSDFile(Path + FileName); //根据传入的文件名创建\n\t\t\toutput = new FileWriter(file);\n\t\t\tbufw = new BufferedWriter(output);\n\t\t\tString line = null;\n\t\t\twhile((line = (input.readLine())) != null){\n\t\t\t\tSystem.out.println(\"line = \" + line);\n\t\t\t\tbufw.write(line);\n\t\t\t\tbufw.newLine();\n\t\t\t}\n\t\t\tbufw.flush();  //清空缓存\n\t\t}catch (Exception e) {\n\t\t\t// TODO: handle exception\n\t\t\te.printStackTrace();\n\t\t}\n\t\tfinally{\n\t\t\ttry{\n\t\t\t\tbufw.close();\n\t\t\t}\n\t\t\tcatch (Exception e) {\n\t\t\t\t// TODO: handle exception\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\t\t}\n\t\treturn file;\n\t}\n}\n\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/FileUtils.java",
    "content": "package com.cjj.bb.utils;\n\nimport java.io.File;\nimport java.io.IOException;\nimport java.util.Arrays;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.Map;\n\nimport android.os.Environment;\nimport android.os.StatFs;\nimport android.util.Log;\n\npublic class FileUtils {\n\t// http://www.fileinfo.com/filetypes/video , \"dat\" , \"bin\" , \"rms\"\n\tpublic static final String[] VIDEO_EXTENSIONS = { \"264\", \"3g2\", \"3gp\",\n\t\t\t\"3gp2\", \"3gpp\", \"3gpp2\", \"3mm\", \"3p2\", \"60d\", \"aep\", \"ajp\", \"amv\",\n\t\t\t\"amx\", \"arf\", \"asf\", \"asx\", \"avb\", \"avd\", \"avi\", \"avs\", \"avs\",\n\t\t\t\"axm\", \"bdm\", \"bdmv\", \"bik\", \"bix\", \"bmk\", \"box\", \"bs4\", \"bsf\",\n\t\t\t\"byu\", \"camre\", \"clpi\", \"cpi\", \"cvc\", \"d2v\", \"d3v\", \"dav\", \"dce\",\n\t\t\t\"dck\", \"ddat\", \"dif\", \"dir\", \"divx\", \"dlx\", \"dmb\", \"dmsm\", \"dmss\",\n\t\t\t\"dnc\", \"dpg\", \"dream\", \"dsy\", \"dv\", \"dv-avi\", \"dv4\", \"dvdmedia\",\n\t\t\t\"dvr-ms\", \"dvx\", \"dxr\", \"dzm\", \"dzp\", \"dzt\", \"evo\", \"eye\", \"f4p\",\n\t\t\t\"f4v\", \"fbr\", \"fbr\", \"fbz\", \"fcp\", \"flc\", \"flh\", \"fli\", \"flv\",\n\t\t\t\"flx\", \"gl\", \"grasp\", \"gts\", \"gvi\", \"gvp\", \"hdmov\", \"hkm\", \"ifo\",\n\t\t\t\"imovi\", \"imovi\", \"iva\", \"ivf\", \"ivr\", \"ivs\", \"izz\", \"izzy\", \"jts\",\n\t\t\t\"lsf\", \"lsx\", \"m15\", \"m1pg\", \"m1v\", \"m21\", \"m21\", \"m2a\", \"m2p\",\n\t\t\t\"m2t\", \"m2ts\", \"m2v\", \"m4e\", \"m4u\", \"m4v\", \"m75\", \"meta\", \"mgv\",\n\t\t\t\"mj2\", \"mjp\", \"mjpg\", \"mkv\", \"mmv\", \"mnv\", \"mod\", \"modd\", \"moff\",\n\t\t\t\"moi\", \"moov\", \"mov\", \"movie\", \"mp21\", \"mp21\", \"mp2v\", \"mp4\",\n\t\t\t\"mp4v\", \"mpe\", \"mpeg\", \"mpeg4\", \"mpf\", \"mpg\", \"mpg2\", \"mpgin\",\n\t\t\t\"mpl\", \"mpls\", \"mpv\", \"mpv2\", \"mqv\", \"msdvd\", \"msh\", \"mswmm\",\n\t\t\t\"mts\", \"mtv\", \"mvb\", \"mvc\", \"mvd\", \"mve\", \"mvp\", \"mxf\", \"mys\",\n\t\t\t\"ncor\", \"nsv\", \"nvc\", \"ogm\", \"ogv\", \"ogx\", \"osp\", \"par\", \"pds\",\n\t\t\t\"pgi\", \"piv\", \"playlist\", \"pmf\", \"prel\", \"pro\", \"prproj\", \"psh\",\n\t\t\t\"pva\", \"pvr\", \"pxv\", \"qt\", \"qtch\", \"qtl\", \"qtm\", \"qtz\",\n\t\t\t\"rcproject\", \"rdb\", \"rec\", \"rm\", \"rmd\", \"rmp\", \"rmvb\", \"roq\", \"rp\",\n\t\t\t\"rts\", \"rts\", \"rum\", \"rv\", \"sbk\", \"sbt\", \"scm\", \"scm\", \"scn\",\n\t\t\t\"sec\", \"seq\", \"sfvidcap\", \"smil\", \"smk\", \"sml\", \"smv\", \"spl\",\n\t\t\t\"ssm\", \"str\", \"stx\", \"svi\", \"swf\", \"swi\", \"swt\", \"tda3mt\", \"tivo\",\n\t\t\t\"tix\", \"tod\", \"tp\", \"tp0\", \"tpd\", \"tpr\", \"trp\", \"ts\", \"tvs\", \"vc1\",\n\t\t\t\"vcr\", \"vcv\", \"vdo\", \"vdr\", \"veg\", \"vem\", \"vf\", \"vfw\", \"vfz\",\n\t\t\t\"vgz\", \"vid\", \"viewlet\", \"viv\", \"vivo\", \"vlab\", \"vob\", \"vp3\",\n\t\t\t\"vp6\", \"vp7\", \"vpj\", \"vro\", \"vsp\", \"w32\", \"wcp\", \"webm\", \"wm\",\n\t\t\t\"wmd\", \"wmmp\", \"wmv\", \"wmx\", \"wp3\", \"wpl\", \"wtv\", \"wvx\", \"xfl\",\n\t\t\t\"xvid\", \"yuv\", \"zm1\", \"zm2\", \"zm3\", \"zmv\" };\n\t// http://www.fileinfo.com/filetypes/audio , \"spx\" , \"mid\" , \"sf\"\n\tpublic static final String[] AUDIO_EXTENSIONS = { \"4mp\", \"669\", \"6cm\",\n\t\t\t\"8cm\", \"8med\", \"8svx\", \"a2m\", \"aa\", \"aa3\", \"aac\", \"aax\", \"abc\",\n\t\t\t\"abm\", \"ac3\", \"acd\", \"acd-bak\", \"acd-zip\", \"acm\", \"act\", \"adg\",\n\t\t\t\"afc\", \"agm\", \"ahx\", \"aif\", \"aifc\", \"aiff\", \"ais\", \"akp\", \"al\",\n\t\t\t\"alaw\", \"all\", \"amf\", \"amr\", \"ams\", \"ams\", \"aob\", \"ape\", \"apf\",\n\t\t\t\"apl\", \"ase\", \"at3\", \"atrac\", \"au\", \"aud\", \"aup\", \"avr\", \"awb\",\n\t\t\t\"band\", \"bap\", \"bdd\", \"box\", \"bun\", \"bwf\", \"c01\", \"caf\", \"cda\",\n\t\t\t\"cdda\", \"cdr\", \"cel\", \"cfa\", \"cidb\", \"cmf\", \"copy\", \"cpr\", \"cpt\",\n\t\t\t\"csh\", \"cwp\", \"d00\", \"d01\", \"dcf\", \"dcm\", \"dct\", \"ddt\", \"dewf\",\n\t\t\t\"df2\", \"dfc\", \"dig\", \"dig\", \"dls\", \"dm\", \"dmf\", \"dmsa\", \"dmse\",\n\t\t\t\"drg\", \"dsf\", \"dsm\", \"dsp\", \"dss\", \"dtm\", \"dts\", \"dtshd\", \"dvf\",\n\t\t\t\"dwd\", \"ear\", \"efa\", \"efe\", \"efk\", \"efq\", \"efs\", \"efv\", \"emd\",\n\t\t\t\"emp\", \"emx\", \"esps\", \"f2r\", \"f32\", \"f3r\", \"f4a\", \"f64\", \"far\",\n\t\t\t\"fff\", \"flac\", \"flp\", \"fls\", \"frg\", \"fsm\", \"fzb\", \"fzf\", \"fzv\",\n\t\t\t\"g721\", \"g723\", \"g726\", \"gig\", \"gp5\", \"gpk\", \"gsm\", \"gsm\", \"h0\",\n\t\t\t\"hdp\", \"hma\", \"hsb\", \"ics\", \"iff\", \"imf\", \"imp\", \"ins\", \"ins\",\n\t\t\t\"it\", \"iti\", \"its\", \"jam\", \"k25\", \"k26\", \"kar\", \"kin\", \"kit\",\n\t\t\t\"kmp\", \"koz\", \"koz\", \"kpl\", \"krz\", \"ksc\", \"ksf\", \"kt2\", \"kt3\",\n\t\t\t\"ktp\", \"l\", \"la\", \"lqt\", \"lso\", \"lvp\", \"lwv\", \"m1a\", \"m3u\", \"m4a\",\n\t\t\t\"m4b\", \"m4p\", \"m4r\", \"ma1\", \"mdl\", \"med\", \"mgv\", \"midi\", \"miniusf\",\n\t\t\t\"mka\", \"mlp\", \"mmf\", \"mmm\", \"mmp\", \"mo3\", \"mod\", \"mp1\", \"mp2\",\n\t\t\t\"mp3\", \"mpa\", \"mpc\", \"mpga\", \"mpu\", \"mp_\", \"mscx\", \"mscz\", \"msv\",\n\t\t\t\"mt2\", \"mt9\", \"mte\", \"mti\", \"mtm\", \"mtp\", \"mts\", \"mus\", \"mws\",\n\t\t\t\"mxl\", \"mzp\", \"nap\", \"nki\", \"nra\", \"nrt\", \"nsa\", \"nsf\", \"nst\",\n\t\t\t\"ntn\", \"nvf\", \"nwc\", \"odm\", \"oga\", \"ogg\", \"okt\", \"oma\", \"omf\",\n\t\t\t\"omg\", \"omx\", \"ots\", \"ove\", \"ovw\", \"pac\", \"pat\", \"pbf\", \"pca\",\n\t\t\t\"pcast\", \"pcg\", \"pcm\", \"peak\", \"phy\", \"pk\", \"pla\", \"pls\", \"pna\",\n\t\t\t\"ppc\", \"ppcx\", \"prg\", \"prg\", \"psf\", \"psm\", \"ptf\", \"ptm\", \"pts\",\n\t\t\t\"pvc\", \"qcp\", \"r\", \"r1m\", \"ra\", \"ram\", \"raw\", \"rax\", \"rbs\", \"rcy\",\n\t\t\t\"rex\", \"rfl\", \"rmf\", \"rmi\", \"rmj\", \"rmm\", \"rmx\", \"rng\", \"rns\",\n\t\t\t\"rol\", \"rsn\", \"rso\", \"rti\", \"rtm\", \"rts\", \"rvx\", \"rx2\", \"s3i\",\n\t\t\t\"s3m\", \"s3z\", \"saf\", \"sam\", \"sb\", \"sbg\", \"sbi\", \"sbk\", \"sc2\", \"sd\",\n\t\t\t\"sd\", \"sd2\", \"sd2f\", \"sdat\", \"sdii\", \"sds\", \"sdt\", \"sdx\", \"seg\",\n\t\t\t\"seq\", \"ses\", \"sf2\", \"sfk\", \"sfl\", \"shn\", \"sib\", \"sid\", \"sid\",\n\t\t\t\"smf\", \"smp\", \"snd\", \"snd\", \"snd\", \"sng\", \"sng\", \"sou\", \"sppack\",\n\t\t\t\"sprg\", \"sseq\", \"sseq\", \"ssnd\", \"stm\", \"stx\", \"sty\", \"svx\", \"sw\",\n\t\t\t\"swa\", \"syh\", \"syw\", \"syx\", \"td0\", \"tfmx\", \"thx\", \"toc\", \"tsp\",\n\t\t\t\"txw\", \"u\", \"ub\", \"ulaw\", \"ult\", \"ulw\", \"uni\", \"usf\", \"usflib\",\n\t\t\t\"uw\", \"uwf\", \"vag\", \"val\", \"vc3\", \"vmd\", \"vmf\", \"vmf\", \"voc\",\n\t\t\t\"voi\", \"vox\", \"vpm\", \"vqf\", \"vrf\", \"vyf\", \"w01\", \"wav\", \"wav\",\n\t\t\t\"wave\", \"wax\", \"wfb\", \"wfd\", \"wfp\", \"wma\", \"wow\", \"wpk\", \"wproj\",\n\t\t\t\"wrk\", \"wus\", \"wut\", \"wv\", \"wvc\", \"wve\", \"wwu\", \"xa\", \"xa\", \"xfs\",\n\t\t\t\"xi\", \"xm\", \"xmf\", \"xmi\", \"xmz\", \"xp\", \"xrns\", \"xsb\", \"xspf\", \"xt\",\n\t\t\t\"xwb\", \"ym\", \"zvd\", \"zvr\" };\n\n\tprivate static final HashSet<String> mHashVideo;\n\tprivate static final HashSet<String> mHashAudio;\n\tprivate static final double KB = 1024.0;\n\tprivate static final double MB = KB * KB;\n\tprivate static final double GB = KB * KB * KB;\n\n\tstatic {\n\t\tmHashVideo = new HashSet<String>(Arrays.asList(VIDEO_EXTENSIONS));\n\t\tmHashAudio = new HashSet<String>(Arrays.asList(AUDIO_EXTENSIONS));\n\t}\n\n\t/** 是否是音频或者视频 */\n\tpublic static boolean isVideoOrAudio(File f) {\n\t\tfinal String ext = getFileExtension(f);\n\t\treturn mHashVideo.contains(ext) || mHashAudio.contains(ext);\n\t}\n\n\tpublic static boolean isVideoOrAudio(String f) {\n\t\tfinal String ext = getUrlExtension(f);\n\t\treturn mHashVideo.contains(ext) || mHashAudio.contains(ext);\n\t}\n\n\tpublic static boolean isVideo(File f) {\n\t\tfinal String ext = getFileExtension(f);\n\t\treturn mHashVideo.contains(ext);\n\t}\n\n\t/** 获取文件后缀 */\n\tpublic static String getFileExtension(File f) {\n\t\tif (f != null) {\n\t\t\tString filename = f.getName();\n\t\t\tint i = filename.lastIndexOf('.');\n\t\t\tif (i > 0 && i < filename.length() - 1) {\n\t\t\t\treturn filename.substring(i + 1).toLowerCase();\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static String getUrlFileName(String url) {\n\t\tint slashIndex = url.lastIndexOf('/');\n\t\tint dotIndex = url.lastIndexOf('.');\n\t\tString filenameWithoutExtension;\n\t\tif (dotIndex == -1) {\n\t\t\tfilenameWithoutExtension = url.substring(slashIndex + 1);\n\t\t} else {\n\t\t\tfilenameWithoutExtension = url.substring(slashIndex + 1, dotIndex);\n\t\t}\n\t\treturn filenameWithoutExtension;\n\t}\n\n\tpublic static String getUrlExtension(String url) {\n\t\tif (!StringUtils.isEmpty(url)) {\n\t\t\tint i = url.lastIndexOf('.');\n\t\t\tif (i > 0 && i < url.length() - 1) {\n\t\t\t\treturn url.substring(i + 1).toLowerCase();\n\t\t\t}\n\t\t}\n\t\treturn \"\";\n\t}\n\n\tpublic static String getFileNameNoEx(String filename) {\n\t\tif ((filename != null) && (filename.length() > 0)) {\n\t\t\tint dot = filename.lastIndexOf('.');\n\t\t\tif ((dot > -1) && (dot < (filename.length()))) {\n\t\t\t\treturn filename.substring(0, dot);\n\t\t\t}\n\t\t}\n\t\treturn filename;\n\t}\n\n\tpublic static String showFileSize(long size) {\n\t\tString fileSize;\n\t\tif (size < KB)\n\t\t\tfileSize = size + \"B\";\n\t\telse if (size < MB)\n\t\t\tfileSize = String.format(\"%.1f\", size / KB) + \"KB\";\n\t\telse if (size < GB)\n\t\t\tfileSize = String.format(\"%.1f\", size / MB) + \"MB\";\n\t\telse\n\t\t\tfileSize = String.format(\"%.1f\", size / GB) + \"GB\";\n\n\t\treturn fileSize;\n\t}\n\n\t/** 显示SD卡剩余空间 */\n\tpublic static String showFileAvailable() {\n\t\tString result = \"\";\n\t\tif (Environment.MEDIA_MOUNTED.equals(Environment\n\t\t\t\t.getExternalStorageState())) {\n\t\t\tStatFs sf = new StatFs(Environment.getExternalStorageDirectory()\n\t\t\t\t\t.getPath());\n\t\t\tlong blockSize = sf.getBlockSize();\n\t\t\tlong blockCount = sf.getBlockCount();\n\t\t\tlong availCount = sf.getAvailableBlocks();\n\t\t\treturn showFileSize(availCount * blockSize) + \" / \"\n\t\t\t\t\t+ showFileSize(blockSize * blockCount);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/** 如果不存在就创建 */\n\tpublic static boolean createIfNoExists(String path) {\n\t\tFile file = new File(path);\n\t\tboolean mk = false;\n\t\tif (!file.exists()) {\n\t\t\tmk = file.mkdirs();\n\t\t}\n\t\treturn mk;\n\t}\n\n\tprivate static HashMap<String, String> mMimeType = new HashMap<String, String>();\n\tstatic {\n\t\tmMimeType.put(\"M1V\", \"video/mpeg\");\n\t\tmMimeType.put(\"MP2\", \"video/mpeg\");\n\t\tmMimeType.put(\"MPE\", \"video/mpeg\");\n\t\tmMimeType.put(\"MPG\", \"video/mpeg\");\n\t\tmMimeType.put(\"MPEG\", \"video/mpeg\");\n\t\tmMimeType.put(\"MP4\", \"video/mp4\");\n\t\tmMimeType.put(\"M4V\", \"video/mp4\");\n\t\tmMimeType.put(\"3GP\", \"video/3gpp\");\n\t\tmMimeType.put(\"3GPP\", \"video/3gpp\");\n\t\tmMimeType.put(\"3G2\", \"video/3gpp2\");\n\t\tmMimeType.put(\"3GPP2\", \"video/3gpp2\");\n\t\tmMimeType.put(\"MKV\", \"video/x-matroska\");\n\t\tmMimeType.put(\"WEBM\", \"video/x-matroska\");\n\t\tmMimeType.put(\"MTS\", \"video/mp2ts\");\n\t\tmMimeType.put(\"TS\", \"video/mp2ts\");\n\t\tmMimeType.put(\"TP\", \"video/mp2ts\");\n\t\tmMimeType.put(\"WMV\", \"video/x-ms-wmv\");\n\t\tmMimeType.put(\"ASF\", \"video/x-ms-asf\");\n\t\tmMimeType.put(\"ASX\", \"video/x-ms-asf\");\n\t\tmMimeType.put(\"FLV\", \"video/x-flv\");\n\t\tmMimeType.put(\"MOV\", \"video/quicktime\");\n\t\tmMimeType.put(\"QT\", \"video/quicktime\");\n\t\tmMimeType.put(\"RM\", \"video/x-pn-realvideo\");\n\t\tmMimeType.put(\"RMVB\", \"video/x-pn-realvideo\");\n\t\tmMimeType.put(\"VOB\", \"video/dvd\");\n\t\tmMimeType.put(\"DAT\", \"video/dvd\");\n\t\tmMimeType.put(\"AVI\", \"video/x-divx\");\n\t\tmMimeType.put(\"OGV\", \"video/ogg\");\n\t\tmMimeType.put(\"OGG\", \"video/ogg\");\n\t\tmMimeType.put(\"VIV\", \"video/vnd.vivo\");\n\t\tmMimeType.put(\"VIVO\", \"video/vnd.vivo\");\n\t\tmMimeType.put(\"WTV\", \"video/wtv\");\n\t\tmMimeType.put(\"AVS\", \"video/avs-video\");\n\t\tmMimeType.put(\"SWF\", \"video/x-shockwave-flash\");\n\t\tmMimeType.put(\"YUV\", \"video/x-raw-yuv\");\n\t}\n\n\t/** 获取MIME */\n\tpublic static String getMimeType(String path) {\n\t\tint lastDot = path.lastIndexOf(\".\");\n\t\tif (lastDot < 0)\n\t\t\treturn null;\n\n\t\treturn mMimeType.get(path.substring(lastDot + 1).toUpperCase());\n\t}\n\n\t/** 多个SD卡时 取外置SD卡 */\n\tpublic static String getExternalStorageDirectory() {\n\t\t// 参考文章\n\t\t// http://blog.csdn.net/bbmiku/article/details/7937745\n\t\tMap<String, String> map = System.getenv();\n\t\tString[] values = new String[map.values().size()];\n\t\tmap.values().toArray(values);\n\t\tString path = values[values.length - 1];\n\t\tLog.e(\"nmbb\", \"FileUtils.getExternalStorageDirectory : \" + path);\n\t\tif (path.startsWith(\"/mnt/\")\n\t\t\t\t&& !Environment.getExternalStorageDirectory().getAbsolutePath()\n\t\t\t\t\t\t.equals(path))\n\t\t\treturn path;\n\t\telse\n\t\t\treturn null;\n\t}\n\n\tpublic static String getCanonical(File f) {\n\t\tif (f == null)\n\t\t\treturn null;\n\n\t\ttry {\n\t\t\treturn f.getCanonicalPath();\n\t\t} catch (IOException e) {\n\t\t\treturn f.getAbsolutePath();\n\t\t}\n\t}\n\t\n\tpublic static boolean sdAvailable() {\n\t\treturn Environment.MEDIA_MOUNTED_READ_ONLY.equals(Environment\n\t\t\t\t.getExternalStorageState())\n\t\t\t\t|| Environment.MEDIA_MOUNTED.equals(Environment\n\t\t\t\t\t\t.getExternalStorageState());\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/FractionalTouchDelegate.java",
    "content": "/*\n * Copyright (C) 2012 YIXIA.COM\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.cjj.bb.utils;\n\nimport android.graphics.Rect;\nimport android.graphics.RectF;\nimport android.view.MotionEvent;\nimport android.view.TouchDelegate;\nimport android.view.View;\n\n/**\n * {@link android.view.TouchDelegate} that gates {@link android.view.MotionEvent} instances by comparing\n * then against fractional dimensions of the source view.\n * <p>\n * This is particularly useful when you want to define a rectangle in terms of\n * the source dimensions, but when those dimensions might change due to pending\n * or future layout passes.\n * <p>\n * One example is catching touches that occur in the top-right quadrant of\n * {@code sourceParent}, and relaying them to {@code targetChild}. This could be\n * done with: <code>\n * FractionalTouchDelegate.setupDelegate(sourceParent, targetChild, new RectF(0.5f, 0f, 1f, 0.5f));\n * </code>\n */\npublic class FractionalTouchDelegate extends TouchDelegate {\n\n    private View mSource;\n    private View mTarget;\n\n    private RectF mSourceFraction;\n\n    private Rect mScrap = new Rect();\n\n    /** Cached full dimensions of {@link #mSource}. */\n    private Rect mSourceFull = new Rect();\n    /** Cached projection of {@link #mSourceFraction} onto {@link #mSource}. */\n    private Rect mSourcePartial = new Rect();\n\n    private boolean mDelegateTargeted;\n\n    public FractionalTouchDelegate(View source, View target, RectF sourceFraction) {\n        super(new Rect(0, 0, 0, 0), target);\n        mSource = source;\n        mTarget = target;\n        mSourceFraction = sourceFraction;\n    }\n\n    /**\n     * Helper to create and setup a {@link com.cjj.bb.utils.FractionalTouchDelegate} between the\n     * given {@link android.view.View}.\n     *\n     * @param source Larger source {@link android.view.View}, usually a parent, that will be\n     *            assigned {@link android.view.View#setTouchDelegate(android.view.TouchDelegate)}.\n     * @param target Smaller target {@link android.view.View} which will receive\n     *            {@link android.view.MotionEvent} that land in requested fractional area.\n     * @param sourceFraction Fractional area projected onto source {@link android.view.View}\n     *            which determines when {@link android.view.MotionEvent} will be passed to\n     *            target {@link android.view.View}.\n     */\n    public static void setupDelegate(View source, View target, RectF sourceFraction) {\n        source.setTouchDelegate(new FractionalTouchDelegate(source, target, sourceFraction));\n    }\n\n    /**\n     * Consider updating {@link #mSourcePartial} when {@link #mSource}\n     * dimensions have changed.\n     */\n    private void updateSourcePartial() {\n        mSource.getHitRect(mScrap);\n        if (!mScrap.equals(mSourceFull)) {\n            // Copy over and calculate fractional rectangle\n            mSourceFull.set(mScrap);\n\n            final int width = mSourceFull.width();\n            final int height = mSourceFull.height();\n\n            mSourcePartial.left = (int) (mSourceFraction.left * width);\n            mSourcePartial.top = (int) (mSourceFraction.top * height);\n            mSourcePartial.right = (int) (mSourceFraction.right * width);\n            mSourcePartial.bottom = (int) (mSourceFraction.bottom * height);\n        }\n    }\n\n    @Override\n    public boolean onTouchEvent(MotionEvent event) {\n        updateSourcePartial();\n\n        // The logic below is mostly copied from the parent class, since we\n        // can't update private mBounds variable.\n\n        // http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;\n        // f=core/java/android/view/TouchDelegate.java;hb=eclair#l98\n\n        final Rect sourcePartial = mSourcePartial;\n        final View target = mTarget;\n\n        int x = (int)event.getX();\n        int y = (int)event.getY();\n\n        boolean sendToDelegate = false;\n        boolean hit = true;\n        boolean handled = false;\n\n        switch (event.getAction()) {\n        case MotionEvent.ACTION_DOWN:\n            if (sourcePartial.contains(x, y)) {\n                mDelegateTargeted = true;\n                sendToDelegate = true;\n            }\n            break;\n        case MotionEvent.ACTION_UP:\n        case MotionEvent.ACTION_MOVE:\n            sendToDelegate = mDelegateTargeted;\n            if (sendToDelegate) {\n                if (!sourcePartial.contains(x, y)) {\n                    hit = false;\n                }\n            }\n            break;\n        case MotionEvent.ACTION_CANCEL:\n            sendToDelegate = mDelegateTargeted;\n            mDelegateTargeted = false;\n            break;\n        }\n\n        if (sendToDelegate) {\n            if (hit) {\n                event.setLocation(target.getWidth() / 2, target.getHeight() / 2);\n            } else {\n                event.setLocation(-1, -1);\n            }\n            handled = target.dispatchTouchEvent(event);\n        }\n        return handled;\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/HttpDownloader.java",
    "content": "package com.cjj.bb.utils;\n\nimport java.io.BufferedReader;\nimport java.io.File;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\nimport java.io.UnsupportedEncodingException;\nimport java.net.HttpURLConnection;\nimport java.net.MalformedURLException;\nimport java.net.URL;\n\nimport org.apache.http.util.EncodingUtils;\n\nimport android.util.Log;\nimport android.util.Xml.Encoding;\n\npublic class HttpDownloader {\n\tprivate URL url = null;\n\n\t/**\n\t * 根据URL下载文件，前提是这个文件当中的内容是文本，函数的返回值就是文件当中的内容 \n\t * 1.创建一个URL对象\n\t * 2.通过URL对象，创建一个HttpURLConnection对象 \n\t * 3.得到InputStram \n\t * 4.从InputStream当中读取数据\n\t * \n\t * @param urlStr\n\t * @return\n\t */\n\tpublic String download(String urlstr) {\n\t\tStringBuffer sb = new StringBuffer();\n\t\tString line = null;\n\t\tBufferedReader buffer = null;\n\t\tString xmlString = \"\";  \n\t\ttry {\n\t\t\t// 创建一个URL对象\n\t\t\turl = new URL(urlstr);\n\t\t\t// 创建一个Http连接\n\t\t\tHttpURLConnection urlConn = (HttpURLConnection) url\n\t\t\t\t\t.openConnection();\n\t\t\t// 使用IO流读取数据\n\t\t\tbuffer = new BufferedReader(new InputStreamReader(urlConn.getInputStream(),\"utf-8\")); // 防止中文出现乱码  gb2312 utf-8\n\t\t\t\n            for(String temp = buffer.readLine(); temp != null;xmlString += temp ,temp = buffer.readLine());  \n            // 去除字符串中的换行符，制表符，回车符。  \n            xmlString = xmlString.replaceAll(\"/n|/t|/r\", \"\");  \n//\t\t\twhile ((line = buffer.readLine()) != null) {\n//\t\t\t\tsb.append(line);\n//\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t} finally {\n\t\t\ttry {\n\t\t\t\tbuffer.close();\n\t\t\t} catch (Exception e) {\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn xmlString;\n\t}\n\n\t/**\n\t * 可以下载字节流文件到SD卡中\n\t * \n\t * @param urlstr  要下载文件的URI地址\n\t * @param Path  在SD卡上文件夹的路径\n\t * @param FileName  在SD卡上文件的名称\n\t * @return 该函数返回整型：-1代表下载失败，0代表下载成功，1代表文件已经存在\n\t */\n\tpublic int download(String urlstr, String Path, String FileName) {\n\t\tInputStream inputstream = null;\n\t\tBufferedReader buffer = null;\n\t\ttry {\n\t\t\tFileUitl fileUitls = new FileUitl();\n\t\t\tSystem.out.println(Path + FileName);\n\t\t\tif (fileUitls.isFileExist(Path + FileName)) {\n\t\t\t\treturn 1;\n\t\t\t} else {\n\t\t\t\t// 获取URI中的字节流\n\t\t\t\tinputstream = getInputStreamFromUrl(urlstr);\n\t\t\t\t// 把字节流转换成字符流\n\t\t\t\tbuffer = new BufferedReader(new InputStreamReader(inputstream,\n\t\t\t\t\t\t\"gb2312\")); // 防止中文出现乱码   UTF-8\n\t\t\t\tFile resultFile = fileUitls.write2SDFromWrite(Path, FileName,\n\t\t\t\t\t\tbuffer);\n\t\t\t\tif (resultFile == null) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} catch (Exception e) {\n\t\t\t// TODO: handle exception\n\t\t\te.printStackTrace();\n\t\t\treturn -1;\n\t\t} finally {\n\t\t\ttry {\n\t\t\t\tif(buffer != null)\n\t\t\t\t\tbuffer.close();\n\t\t\t} catch (Exception e) {\n\t\t\t\t// TODO: handle exception\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t}\n\n\t/**\n\t * 可以下载字符流和字节流文件到SD卡中\n\t * \n\t * @param urlstr\n\t * @param Path\n\t * @param FileName\n\t * @return 该函数返回整型：-1代表下载失败，0代表下载成功，1代表文件已经存在\n\t */\n\tpublic int downFile(String urlstr, String Path, String FileName) {\n\t\tInputStream inputstream = null;\n\t\ttry {\n\t\t\tFileUitl fileUitls = new FileUitl();\n\t\t\tif (fileUitls.isFileExist(Path + FileName)) {\n\t\t\t\treturn 1;\n\t\t\t} else {\n\t\t\t\tinputstream = getInputStreamFromUrl(urlstr);\n\t\t\t\tFile resultFile = fileUitls.write2SDFromInput(Path, FileName,\n\t\t\t\t\t\tinputstream);\n\t\t\t\tif (resultFile == null) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} catch (Exception e) {\n\t\t\t// TODO: handle exception\n\t\t\te.printStackTrace();\n\t\t\treturn -1;\n\t\t} finally {\n\t\t\ttry {\n\t\t\t\tinputstream.close();\n\t\t\t} catch (Exception e) {\n\t\t\t\t// TODO: handle exception\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t}\n\n\t/**\n\t * 根据URL得到输入流\n\t * \n\t * @param urlstr\n\t * @return\n\t * @throws java.net.MalformedURLException\n\t * @throws java.io.IOException\n\t */\n\tprivate InputStream getInputStreamFromUrl(String urlstr)\n\t\t\tthrows MalformedURLException, IOException {\n\t\t// TODO Auto-generated method stub\n\t\turl = new URL(urlstr);\n\t\tHttpURLConnection urlConn = (HttpURLConnection) url.openConnection();\n\t\tInputStream inputStream = urlConn.getInputStream();\n\t\treturn inputStream;\n\t}\n\t\n\t// 以下是测试字符编码的\n\tpublic static void testCharset(String datastr){\n\t                try {\n\t                        String temp = new String(datastr.getBytes(), \"GBK\");\n\t                        Log.v(\"TestCharset\",\"****** getBytes() -> GBK ******/n\"+temp);\n\t                        temp = new String(datastr.getBytes(\"GBK\"), \"UTF-8\");\n\t                        Log.v(\"TestCharset\",\"****** GBK -> UTF-8 *******/n\"+temp);\n\t                        temp = new String(datastr.getBytes(\"GBK\"), \"ISO-8859-1\");\n\t                        Log.v(\"TestCharset\",\"****** GBK -> ISO-8859-1 *******/n\"+temp);\n\t                        temp = new String(datastr.getBytes(\"ISO-8859-1\"), \"UTF-8\");\n\t                        Log.v(\"TestCharset\",\"****** ISO-8859-1 -> UTF-8 *******/n\"+temp);\n\t                        temp = new String(datastr.getBytes(\"ISO-8859-1\"), \"GBK\");\n\t                        Log.v(\"TestCharset\",\"****** ISO-8859-1 -> GBK *******/n\"+temp);\n\t                        temp = new String(datastr.getBytes(\"UTF-8\"), \"GBK\");\n\t                        Log.v(\"TestCharset\",\"****** UTF-8 -> GBK *******/n\"+temp);\n\t                        temp = new String(datastr.getBytes(\"UTF-8\"), \"ISO-8859-1\");\n\t                        Log.v(\"TestCharset\",\"****** UTF-8 -> ISO-8859-1 *******/n\"+temp);\n\t                } catch (UnsupportedEncodingException e) {\n\t                        e.printStackTrace();\n\t                }\n\t        }\n\n}\n\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/HttpUtil.java",
    "content": "package com.cjj.bb.utils;\n\nimport java.io.BufferedInputStream;\nimport java.io.BufferedReader;\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\nimport java.io.PrintWriter;\nimport java.net.ConnectException;\nimport java.net.HttpURLConnection;\nimport java.net.URI;\nimport java.net.URL;\nimport java.net.URLConnection;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.zip.DataFormatException;\nimport java.util.zip.GZIPInputStream;\nimport java.util.zip.ZipInputStream;\n\nimport javax.xml.parsers.SAXParser;\nimport javax.xml.parsers.SAXParserFactory;\n\nimport org.apache.http.Header;\nimport org.apache.http.HttpClientConnection;\nimport org.apache.http.HttpResponse;\nimport org.apache.http.NameValuePair;\nimport org.apache.http.ProtocolException;\nimport org.apache.http.client.ClientProtocolException;\nimport org.apache.http.client.HttpClient;\nimport org.apache.http.client.RedirectHandler;\nimport org.apache.http.client.entity.UrlEncodedFormEntity;\nimport org.apache.http.client.methods.HttpGet;\nimport org.apache.http.client.methods.HttpPost;\nimport org.apache.http.cookie.Cookie;\nimport org.apache.http.impl.client.DefaultHttpClient;\nimport org.apache.http.message.BasicNameValuePair;\nimport org.apache.http.params.BasicHttpParams;\nimport org.apache.http.params.HttpConnectionParams;\nimport org.apache.http.protocol.HTTP;\nimport org.apache.http.protocol.HttpContext;\nimport org.apache.http.util.ByteArrayBuffer;\nimport org.apache.http.util.EncodingUtils;\nimport org.apache.http.util.EntityUtils;\nimport org.jsoup.Jsoup;\nimport org.jsoup.helper.HttpConnection.Response;\n\nimport android.content.Context;\nimport android.graphics.Bitmap;\nimport android.graphics.BitmapFactory;\nimport android.util.Log;\nimport android.webkit.WebView;\nimport android.webkit.WebViewClient;\n\npublic class HttpUtil {\n\tpublic static String cookieName = \"\";\n\tpublic static String cookieValue = \"\";\n\tpublic static String hostBase = \"\";\n\t\n\tpublic static String getHtmlString(String urlString) {  \n\t    try {\n\t        URL url = new URL(urlString);  \n\t        URLConnection ucon = url.openConnection();  \n\t        InputStream instr = ucon.getInputStream();  \n\t        BufferedInputStream bis = new BufferedInputStream(instr); \n\t        ByteArrayBuffer baf = new ByteArrayBuffer(500);  \n\t        int current = 0;  \n\t        while ((current = bis.read()) != -1) {  \n\t            baf.append((byte) current);  \n\t        }  \n\t        return EncodingUtils.getString(baf.toByteArray(), \"utf-8\");  \n\t    } catch (Exception e) {\n\t    \t\n\t    \tLog.d(\"win\",\"lllll\"+e.toString());\n\t        return \"\";  \n\t    }  \n\t} \n\n\tpublic static String getXmlDecompress(String urlString) {\n\t\tResponse rsp = null;\n\t\tString temp = \"\";\n\t\ttry {\n\t\trsp = (Response) Jsoup.connect(urlString).execute();\n\t\ttemp = EncodingUtils.getString(CompressionTools.decompressXML(rsp.bodyAsBytes()), \"utf-8\");\n\t\tLog.d(\"TAG\",\"=======>Xml解压成功\");\n\t} catch (IOException e) {\n\t\t// TODO Auto-generated catch block\n\t\te.printStackTrace();\n\t\tLog.d(\"TAG\",\"=======>Xml解压失败：\"+e.toString());\n\t} catch (DataFormatException e) {\n\t\t// TODO Auto-generated catch block\n\t\te.printStackTrace();\n\t\tLog.d(\"TAG\",\"=======>Xml解压失败：\"+e.toString());\n\t}\n\t\treturn temp;\n\t}\n\tpublic static String sendPost(String url, String params)\n\t{\n\t\tPrintWriter out = null;\n\t\tBufferedReader in = null;\n\t\tString result = \"\";\n\t\ttry\n\t\t{\n\t\t\tURL realUrl = new URL(url);\n\t\t\t// 打开和URL之间的连接\n\t\t\tURLConnection conn = realUrl.openConnection();\n\t\t\t// 设置通用的请求属性\n\t\t\tconn.setRequestProperty(\"accept\", \"*/*\");\n\t\t\tconn.setRequestProperty(\"connection\", \"Keep-Alive\");\n\t\t\tconn.setRequestProperty(\"user-agent\",\n\t\t\t\t\"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\");\n\t\t\t// 发送POST请求必须设置如下两行\n\t\t\tconn.setDoOutput(true);\n\t\t\tconn.setDoInput(true);\n\t\t\t// 获取URLConnection对象对应的输出流\n\t\t\tout = new PrintWriter(conn.getOutputStream());\n\t\t\t// 发送请求参数\n\t\t\tout.print(params);  //②\n\t\t\t// flush输出流的缓冲\n\t\t\tout.flush();\n\t\t\t// 定义BufferedReader输入流来读取URL的响应\n\t\t\tin = new BufferedReader(\n\t\t\t\tnew InputStreamReader(conn.getInputStream()));\n\t\t\tString line;\n\t\t\twhile ((line = in.readLine()) != null)\n\t\t\t{\n\t\t\t\tresult += \"\\n\" + line;\n\t\t\t}\n\t\t}\n\t\tcatch (Exception e)\n\t\t{\n\t\t\tSystem.out.println(\"发送POST请求出现异常！\" + e);\n\t\t\te.printStackTrace();\n\t\t}\n\t\t// 使用finally块来关闭输出流、输入流\n\t\tfinally\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tif (out != null)\n\t\t\t\t{\n\t\t\t\t\tout.close();\n\t\t\t\t}\n\t\t\t\tif (in != null)\n\t\t\t\t{\n\t\t\t\t\tin.close();\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (IOException ex)\n\t\t\t{\n\t\t\t\tex.printStackTrace();\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tpublic static String httpGetHost(String url) {\n\t\tHttpGet httpget = new HttpGet(url);\n\t\tString strResult = \"\";\n\t\tBasicHttpParams httpParams = new BasicHttpParams();\n\t\tHttpConnectionParams.setConnectionTimeout(httpParams, 5000);\n\t\tHttpConnectionParams.setSoTimeout(httpParams, 5000);\n\t\tHttpClient httpclient;\n\t\ttry {\n\t\t\thttpclient = new DefaultHttpClient(httpParams);\n\t\t\tHttpResponse response = httpclient.execute(httpget);\n\t\t\tSystem.out.println(response.getStatusLine().getStatusCode());\n\t\t\tif (response.getStatusLine().getStatusCode() == 200) {\n\t\t\t\tstrResult = EntityUtils.toString(response.getEntity(),\n\t\t\t\t\t\tHTTP.UTF_8);\n\t\t\t}\n\t\t} catch (ConnectException e) {\n\t\t\te.printStackTrace();\n\t\t\tSystem.out.println(\"hosterror\");\n\t\t} catch (ClientProtocolException e) {\n\t\t\tSystem.out.println(\"Client\");\n\t\t\te.printStackTrace();\n\t\t} catch (IOException e) {\n\t\t\tSystem.out.println(\"IO\");\n\t\t\te.printStackTrace();\n\t\t}\n\t\treturn strResult;\n\t}\n\n\tpublic static String httpGet(String url) {\n\t\tSystem.out.println(\"httpGet\" + url);\n\t\tHttpGet httpget = new HttpGet(url);\n\t\tString strResult = null;\n\t\tBasicHttpParams httpParams = new BasicHttpParams();\n\t\tHttpConnectionParams.setConnectionTimeout(httpParams, 10000);\n\t\tHttpConnectionParams.setSoTimeout(httpParams, 10000);\n\n\t\tHttpClient httpclient;\n\t\ttry {\n\t\t\thttpclient = new DefaultHttpClient(httpParams);\n\t\t\thttpget.setHeader(\"Cookie\", cookieName + \"=\" + cookieValue);\n\t\t\tHttpResponse response = httpclient.execute(httpget);\n\t\t\tSystem.out.println(response.getStatusLine().getStatusCode());\n\t\t\tif (response.getStatusLine().getStatusCode() == 200) {\n\t\t\t\tstrResult = EntityUtils.toString(response.getEntity(),\n\t\t\t\t\t\tHTTP.UTF_8);\n\t\t\t\t// System.out.println(strResult);\n\t\t\t\tSystem.out.println(\"getFinish\");\n\t\t\t}\n\t\t} catch (ConnectException e) {\n\t\t\te.printStackTrace();\n\t\t} catch (ClientProtocolException e) {\n\t\t\tSystem.out.println(\"Client\");\n\t\t\te.printStackTrace();\n\t\t} catch (IOException e) {\n\t\t\tSystem.out.println(\"IO\");\n\t\t\te.printStackTrace();\n\t\t}\n\t\treturn strResult;\n\t}\n\n\tpublic static String httpGetNoResult(String url) {\n\t\tSystem.out.println(\"httpGetNo\" + url);\n\t\tHttpGet httpget = new HttpGet(hostBase + url);\n\t\tString strResult = \"\";\n\t\tBasicHttpParams httpParams = new BasicHttpParams();\n\t\tHttpConnectionParams.setConnectionTimeout(httpParams, 10000);\n\t\tHttpConnectionParams.setSoTimeout(httpParams, 10000);\n\n\t\tHttpClient httpclient;\n\t\ttry {\n\t\t\thttpclient = new DefaultHttpClient(httpParams);\n\t\t\thttpget.setHeader(\"Cookie\", cookieName + \"=\" + cookieValue);\n\t\t\tHttpResponse response = httpclient.execute(httpget);\n\t\t\tSystem.out.println(response.getStatusLine().getStatusCode());\n\t\t\t/*\n\t\t\t * if(response.getStatusLine().getStatusCode() == 200){ strResult =\n\t\t\t * EntityUtils.toString(response.getEntity(), HTTP.UTF_8);\n\t\t\t * System.out.println(strResult); System.out.println(\"getFinish\"); }\n\t\t\t */\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t\tstrResult = \"error\";\n\t\t}\n\t\treturn strResult;\n\t}\n\n\tpublic static Bitmap HttpGetBmp(String url) {\n\t\tHttpGet httpget = new HttpGet(url);\n\t\tBasicHttpParams httpParams = new BasicHttpParams();\n\t\tHttpConnectionParams.setConnectionTimeout(httpParams, 10000);\n\t\tHttpConnectionParams.setSoTimeout(httpParams, 10000);\n\t\tBitmap bitmap = null;\n\t\ttry {\n\t\t\tHttpClient httpclient = new DefaultHttpClient(httpParams);\n\t\t\tHttpResponse response = httpclient.execute(httpget);\n\t\t\tInputStream is = response.getEntity().getContent();\n\t\t\tbyte[] bytes = new byte[1024];\n\t\t\tByteArrayOutputStream bos = new ByteArrayOutputStream();\n\t\t\tint count = 0;\n\t\t\twhile ((count = is.read(bytes)) != -1) {\n\t\t\t\tSystem.out.println(\"readBitmap\");\n\t\t\t\tbos.write(bytes, 0, count);\n\t\t\t}\n\t\t\tbyte[] byteArray = bos.toByteArray();\n\t\t\tbitmap = BitmapFactory.decodeByteArray(byteArray, 0,\n\t\t\t\t\tbyteArray.length);\n\t\t\tis.close();\n\t\t\tbos.close();\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\treturn bitmap;\n\t}\n\n\tpublic static InputStream HttpGetBmpInputStream(String url) {\n\t\tHttpGet httpget = new HttpGet(url);\n\t\tBasicHttpParams httpParams = new BasicHttpParams();\n\t\tHttpConnectionParams.setConnectionTimeout(httpParams, 10000);\n\t\tHttpConnectionParams.setSoTimeout(httpParams, 10000);\n\t\tInputStream is = null;\n\t\ttry {\n\t\t\tHttpClient httpclient = new DefaultHttpClient(httpParams);\n\t\t\tHttpResponse response = httpclient.execute(httpget);\n\t\t\tis = response.getEntity().getContent();\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\treturn is;\n\t}\n\n\tpublic static Integer GetCookie(String url, String number, String pw,\n\t\t\tString select, String host) {\n\t\tSystem.out.println(\"GetCookie\");\n\t\tint result = 4;\n\t\tHttpPost httpPost = new HttpPost(hostBase + url);\n\t\tList<NameValuePair> nvps = new ArrayList<NameValuePair>();\n\t\tnvps.add(new BasicNameValuePair(\"number\", number));\n\t\tnvps.add(new BasicNameValuePair(\"passwd\", pw));\n\t\tnvps.add(new BasicNameValuePair(\"select\", select));\n\t\tBasicHttpParams httpParams = new BasicHttpParams();\n\t\tHttpConnectionParams.setConnectionTimeout(httpParams, 10000);\n\t\tHttpConnectionParams.setSoTimeout(httpParams, 10000);\n\t\ttry {\n\t\t\tDefaultHttpClient httpClient = new DefaultHttpClient(httpParams);\n\t\t\thttpClient.setRedirectHandler(new RedirectHandler() {\n\n\t\t\t\t@Override\n\t\t\t\tpublic boolean isRedirectRequested(HttpResponse response,\n\t\t\t\t\t\tHttpContext context) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t@Override\n\t\t\t\tpublic URI getLocationURI(HttpResponse response,\n\t\t\t\t\t\tHttpContext context) throws ProtocolException {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t});\n\t\t\thttpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));\n\t\t\tHttpResponse response = httpClient.execute(httpPost);\n\t\t\tSystem.out.println(response.getStatusLine().getStatusCode());\n\t\t\tif (response.getStatusLine().getStatusCode() == 200) {\n\t\t\t\treturn 2;\n\t\t\t} else if (response.getStatusLine().getStatusCode() == 302) {\n\t\t\t\tHeader[] headers = response.getHeaders(\"Location\");\n\t\t\t\tif (headers != null && headers.length > 0) {\n\t\t\t\t\tList<Cookie> list = httpClient.getCookieStore()\n\t\t\t\t\t\t\t.getCookies();\n\t\t\t\t\tfor (Cookie c : list) {\n\t\t\t\t\t\tcookieName = c.getName();\n\t\t\t\t\t\tcookieValue = c.getValue();\n\t\t\t\t\t}\n\t\t\t\t\tSystem.out.println(cookieName + cookieValue);\n\t\t\t\t\treturn 3;\n\t\t\t\t}\n\t\t\t} else if (response.getStatusLine().getStatusCode() == 404) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\treturn result;\n\t}\n\n\tpublic static String httpGetCookie(String url) {\n\t\tSystem.out.println(\"httpGetCookie\" + url);\n\t\tHttpGet httpget = new HttpGet(hostBase + url);\n\t\tString strResult = \"\";\n\t\tBasicHttpParams httpParams = new BasicHttpParams();\n\t\tHttpConnectionParams.setConnectionTimeout(httpParams, 15000);\n\t\tHttpConnectionParams.setSoTimeout(httpParams, 15000);\n\t\ttry {\n\t\t\tDefaultHttpClient httpClient = new DefaultHttpClient(httpParams);\n\t\t\thttpClient.setRedirectHandler(new RedirectHandler() {\n\n\t\t\t\t@Override\n\t\t\t\tpublic boolean isRedirectRequested(HttpResponse response,\n\t\t\t\t\t\tHttpContext context) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t@Override\n\t\t\t\tpublic URI getLocationURI(HttpResponse response,\n\t\t\t\t\t\tHttpContext context) throws ProtocolException {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t});\n\t\t\thttpget.setHeader(\"Cookie\", cookieName + \"=\" + cookieValue);\n\t\t\tHttpResponse response = httpClient.execute(httpget);\n\t\t\tif (response.getStatusLine().getStatusCode() == 200) {\n\t\t\t\tstrResult = EntityUtils.toString(response.getEntity(),\n\t\t\t\t\t\tHTTP.UTF_8);\n\t\t\t} else if (response.getStatusLine().getStatusCode() == 302) {\n\t\t\t\tstrResult = \"302\"; // cookieʧЧ�������ض����־�������µ�¼��ȡ\n\t\t\t} else if (response.getStatusLine().getStatusCode() == 404) {\n\t\t\t\tstrResult = \"-1\";\n\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t\tstrResult = \"4\";\n\t\t}\n\t\treturn strResult;\n\t}\n\n\tpublic static String httpPostCookie(String url, String id, String data) {\n\t\tSystem.out.println(\"httpPostCookie\" + url);\n\t\tString result = \"4\";\n\t\tHttpPost httpPost = new HttpPost(hostBase + url);\n\t\tList<NameValuePair> nvps = new ArrayList<NameValuePair>();\n\t\tnvps.add(new BasicNameValuePair(\"marc_no\", id));\n\t\tnvps.add(new BasicNameValuePair(\"r_content\", data));\n\t\tBasicHttpParams httpParams = new BasicHttpParams();\n\t\tHttpConnectionParams.setConnectionTimeout(httpParams, 10000);\n\t\tHttpConnectionParams.setSoTimeout(httpParams, 10000);\n\t\ttry {\n\t\t\tDefaultHttpClient httpClient = new DefaultHttpClient(httpParams);\n\t\t\thttpClient.setRedirectHandler(new RedirectHandler() {\n\n\t\t\t\t@Override\n\t\t\t\tpublic boolean isRedirectRequested(HttpResponse response,\n\t\t\t\t\t\tHttpContext context) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t@Override\n\t\t\t\tpublic URI getLocationURI(HttpResponse response,\n\t\t\t\t\t\tHttpContext context) throws ProtocolException {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t});\n\t\t\thttpPost.setHeader(\"Cookie\", cookieName + \"=\" + cookieValue);\n\t\t\thttpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));\n\t\t\tHttpResponse response = httpClient.execute(httpPost);\n\t\t\tSystem.out.println(response.getStatusLine().getStatusCode());\n\t\t\tSystem.out.println(EntityUtils.toString(response.getEntity(),\n\t\t\t\t\tHTTP.UTF_8) + \"add\");\n\t\t\tif (response.getStatusLine().getStatusCode() == 200) {\n\t\t\t\treturn \"2\";\n\t\t\t} else if (response.getStatusLine().getStatusCode() == 302) {\n\t\t\t\tHeader[] headers = response.getHeaders(\"Location\");\n\t\t\t\tif (headers != null && headers.length > 0) {\n\t\t\t\t\tSystem.out.println(headers[0].getValue());\n\t\t\t\t\treturn \"3\";\n\t\t\t\t}\n\t\t\t} else if (response.getStatusLine().getStatusCode() == 404) {\n\t\t\t\treturn \"-1\";\n\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\treturn result;\n\t}\n\n\tpublic static int getCookie(String url) {\n\t\tSystem.out.println(\"getCookie\" + url);\n\t\tHttpGet httpGet = new HttpGet(hostBase + url);\n\t\ttry {\n\t\t\tDefaultHttpClient httpClient = new DefaultHttpClient();\n\t\t\thttpClient.setRedirectHandler(new RedirectHandler() {\n\n\t\t\t\t@Override\n\t\t\t\tpublic boolean isRedirectRequested(HttpResponse response,\n\t\t\t\t\t\tHttpContext context) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t@Override\n\t\t\t\tpublic URI getLocationURI(HttpResponse response,\n\t\t\t\t\t\tHttpContext context) throws ProtocolException {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t});\n\t\t\tHttpResponse response = httpClient.execute(httpGet);\n\t\t\tSystem.out.println(response.getStatusLine().getStatusCode());\n\t\t\tSystem.out.println(EntityUtils.toString(response.getEntity(),\n\t\t\t\t\tHTTP.UTF_8) + \"add\");\n\t\t\tif (response.getStatusLine().getStatusCode() == 200) {\n\t\t\t\tHeader[] heads = response.getAllHeaders();\n\t\t\t\tSystem.out.println(heads.length);\n\t\t\t\tfor (Header header : heads) {\n\t\t\t\t\tSystem.out.println(header.getName() + \" = \"\n\t\t\t\t\t\t\t+ header.getValue());\n\t\t\t\t}\n\t\t\t\treturn 2;\n\t\t\t} else if (response.getStatusLine().getStatusCode() == 302) {\n\t\t\t\tHeader[] headers = response.getHeaders(\"Location\");\n\t\t\t\tif (headers != null && headers.length > 0) {\n\t\t\t\t\tSystem.out.println(headers[0].getValue());\n\t\t\t\t\treturn 3;\n\t\t\t\t}\n\t\t\t} else if (response.getStatusLine().getStatusCode() == 404) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\treturn 1;\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/ImageUtils.java",
    "content": "package com.cjj.bb.utils;\n\nimport java.io.ByteArrayOutputStream;\nimport java.io.File;\nimport java.io.FileNotFoundException;\nimport java.io.FileOutputStream;\nimport java.io.IOException;\n\nimport android.annotation.TargetApi;\nimport android.content.Context;\nimport android.graphics.Bitmap;\nimport android.graphics.Bitmap.Config;\nimport android.graphics.BitmapFactory;\nimport android.graphics.Canvas;\nimport android.graphics.Matrix;\nimport android.graphics.Paint;\nimport android.graphics.PixelFormat;\nimport android.graphics.PorterDuff.Mode;\nimport android.graphics.PorterDuffXfermode;\nimport android.graphics.Rect;\nimport android.graphics.RectF;\nimport android.graphics.drawable.Drawable;\nimport android.net.Uri;\nimport android.os.Build;\n\n\npublic class ImageUtils {\n\t// http://zhuixinjian.javaeye.com/blog/743672\n\t// 图片圆角\n\t// 图片叠加\n\t// 图片缩放\n\t// 图片旋转\n\n\t@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)\n\tpublic static int getBitmapSize(Bitmap bitmap) {\n\t\tif (DeviceUtils.hasHoneycombMR1()) {\n\t\t\treturn bitmap.getByteCount();\n\t\t}\n\t\t// Pre HC-MR1\n\t\treturn bitmap.getRowBytes() * bitmap.getHeight();\n\t}\n\n\t/** 旋转图片 */\n\tpublic static Bitmap rotate(Bitmap b, int degrees) {\n\t\tif (degrees != 0 && b != null) {\n\t\t\tMatrix m = new Matrix();\n\t\t\tm.setRotate(degrees, (float) b.getWidth() / 2,\n\t\t\t\t\t(float) b.getHeight() / 2);\n\t\t\ttry {\n\t\t\t\tBitmap b2 = Bitmap.createBitmap(b, 0, 0, b.getWidth(),\n\t\t\t\t\t\tb.getHeight(), m, true);\n\t\t\t\tif (b != b2) {\n\t\t\t\t\tb.recycle();\n\t\t\t\t\tb = b2;\n\t\t\t\t}\n\t\t\t} catch (OutOfMemoryError ex) {\n\t\t\t\tLogger.e(ex);\n\t\t\t} catch (Exception ex) {\n\t\t\t\tLogger.e(ex);\n\t\t\t}\n\t\t}\n\t\treturn b;\n\t}\n\n\t/**\n\t * Decode and sample down a bitmap from a file to the requested width and\n\t * height.\n\t * \n\t * @param filename\n\t *            The full path of the file to decode\n\t * @param reqWidth\n\t *            The requested width of the resulting bitmap\n\t * @param reqHeight\n\t *            The requested height of the resulting bitmap\n\t * @return A bitmap sampled down from the original with the same aspect\n\t *         ratio and dimensions that are equal to or greater than the\n\t *         requested width and height\n\t */\n\tpublic static synchronized Bitmap decodeSampledBitmapFromFile(\n\t\t\tString filename, int reqWidth, int reqHeight) {\n\n\t\t// First decode with inJustDecodeBounds=true to check dimensions\n\t\tfinal BitmapFactory.Options options = new BitmapFactory.Options();\n\t\toptions.inJustDecodeBounds = true;\n\t\tBitmapFactory.decodeFile(filename, options);\n\n\t\t// Calculate inSampleSize\n\t\toptions.inSampleSize = calculateInSampleSize(options, reqWidth,\n\t\t\t\treqHeight);\n\n\t\t// Decode bitmap with inSampleSize set\n\t\toptions.inJustDecodeBounds = false;\n\t\treturn BitmapFactory.decodeFile(filename, options);\n\t}\n\n\t/**\n\t * Calculate an inSampleSize for use in a\n\t * {@link android.graphics.BitmapFactory.Options} object when decoding\n\t * bitmaps using the decode* methods from {@link android.graphics.BitmapFactory}. This\n\t * implementation calculates the closest inSampleSize that will result in\n\t * the final decoded bitmap having a width and height equal to or larger\n\t * than the requested width and height. This implementation does not ensure\n\t * a power of 2 is returned for inSampleSize which can be faster when\n\t * decoding but results in a larger bitmap which isn't as useful for caching\n\t * purposes.\n\t * \n\t * @param options\n\t *            An options object with out* params already populated (run\n\t *            through a decode* method with inJustDecodeBounds==true\n\t * @param reqWidth\n\t *            The requested width of the resulting bitmap\n\t * @param reqHeight\n\t *            The requested height of the resulting bitmap\n\t * @return The value to be used for inSampleSize\n\t */\n\tpublic static int calculateInSampleSize(BitmapFactory.Options options,\n\t\t\tint reqWidth, int reqHeight) {\n\t\t// Raw height and width of image\n\t\tfinal int height = options.outHeight;\n\t\tfinal int width = options.outWidth;\n\t\tint inSampleSize = 1;\n\n\t\tif (height > reqHeight || width > reqWidth) {\n\t\t\tif (width > height) {\n\t\t\t\tinSampleSize = Math.round((float) height / (float) reqHeight);\n\t\t\t} else {\n\t\t\t\tinSampleSize = Math.round((float) width / (float) reqWidth);\n\t\t\t}\n\n\t\t\t// This offers some additional logic in case the image has a strange\n\t\t\t// aspect ratio. For example, a panorama may have a much larger\n\t\t\t// width than height. In these cases the total pixels might still\n\t\t\t// end up being too large to fit comfortably in memory, so we should\n\t\t\t// be more aggressive with sample down the image (=larger\n\t\t\t// inSampleSize).\n\n\t\t\tfinal float totalPixels = width * height;\n\n\t\t\t// Anything more than 2x the requested pixels we'll sample down\n\t\t\t// further.\n\t\t\tfinal float totalReqPixelsCap = reqWidth * reqHeight * 2;\n\n\t\t\twhile (totalPixels / (inSampleSize * inSampleSize) > totalReqPixelsCap) {\n\t\t\t\tinSampleSize++;\n\t\t\t}\n\t\t}\n\t\treturn inSampleSize;\n\t}\n\n\tpublic static boolean saveBitmap(String path, Bitmap bitmap) {\n\t\treturn saveBitmap(new File(path), bitmap);\n\t}\n\n\t/** 保存图片到文件 */\n\tpublic static boolean saveBitmap(File f, Bitmap bitmap) {\n\t\tif (bitmap == null || bitmap.isRecycled())\n\t\t\treturn false;\n\n\t\tFileOutputStream fOut = null;\n\t\ttry {\n\t\t\tif (f.exists())\n\t\t\t\tf.createNewFile();\n\n\t\t\tfOut = new FileOutputStream(f);\n\t\t\tbitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut);\n\n\t\t\tfOut.flush();\n\t\t\treturn true;\n\t\t} catch (FileNotFoundException e) {\n\t\t\tLogger.e(e);\n\t\t} catch (IOException e) {\n\t\t\tLogger.e(e);\n\t\t} catch (Exception e) {\n\t\t\tLogger.e(e);\n\t\t} finally {\n\t\t\tif (fOut != null) {\n\t\t\t\ttry {\n\t\t\t\t\tfOut.close();\n\t\t\t\t} catch (IOException e) {\n\t\t\t\t\tLogger.e(e);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static Bitmap decodeUriAsBitmap(Context ctx, Uri uri) {\n\t\tBitmap bitmap = null;\n\t\ttry {\n\t\t\tfinal BitmapFactory.Options options = new BitmapFactory.Options();\n\t\t\toptions.inJustDecodeBounds = true;\n\t\t\t// options.outWidth = reqWidth;\n\t\t\t// options.outHeight = reqHeight;\n\t\t\tBitmapFactory.decodeStream(ctx.getContentResolver()\n\t\t\t\t\t.openInputStream(uri), null, options);\n\t\t\tLogger.i(\"orgi:\" + options.outWidth + \"x\" + options.outHeight);\n\t\t\tint be = (int) (options.outHeight / (float) 350);\n\t\t\tif (be <= 0)\n\t\t\t\tbe = 1;\n\t\t\toptions.inSampleSize = be;// calculateInSampleSize(options,\n\t\t\t\t\t\t\t\t\t\t// reqWidth, reqHeight);\n\t\t\tLogger.i(\"inSampleSize:\" + options.inSampleSize);\n\t\t\toptions.inJustDecodeBounds = false;\n\t\t\tbitmap = BitmapFactory.decodeStream(ctx.getContentResolver()\n\t\t\t\t\t.openInputStream(uri), null, options);\n\t\t} catch (FileNotFoundException e) {\n\t\t\tLogger.e(e);\n\t\t} catch (OutOfMemoryError e) {\n\t\t\tLogger.e(e);\n\t\t}\n\t\treturn bitmap;\n\t}\n\n\tpublic static Bitmap zoomBitmap(Bitmap bitmap, int w, int h) {\n\t\tint width = bitmap.getWidth();\n\t\tint height = bitmap.getHeight();\n\t\tMatrix matrix = new Matrix();\n\t\tfloat scaleWidht = ((float) w / width);\n\t\tfloat scaleHeight = ((float) h / height);\n\t\tmatrix.postScale(scaleWidht, scaleHeight);\n\t\tBitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, width, height,\n\t\t\t\tmatrix, true);\n\t\treturn newbmp;\n\t}\n\n\tpublic static Bitmap drawableToBitmap(Drawable drawable) {\n\t\tint width = drawable.getIntrinsicWidth();\n\t\tint height = drawable.getIntrinsicHeight();\n\t\tBitmap bitmap = Bitmap.createBitmap(width, height, drawable\n\t\t\t\t.getOpacity() != PixelFormat.OPAQUE ? Config.ARGB_8888\n\t\t\t\t: Config.RGB_565);\n\t\tCanvas canvas = new Canvas(bitmap);\n\t\tdrawable.setBounds(0, 0, width, height);\n\t\tdrawable.draw(canvas);\n\t\treturn bitmap;\n\n\t}\n\n\t/**\n\t * 获取图片圆角\n\t * \n\t * @param bitmap\n\t * @param roundPx\n\t *            圆角度数\n\t * @return\n\t */\n\tpublic static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float roundPx) {\n\n\t\tBitmap output = Bitmap.createBitmap(bitmap.getWidth(),\n\t\t\t\tbitmap.getHeight(), Config.ARGB_8888);\n\t\tCanvas canvas = new Canvas(output);\n\n\t\tfinal int color = 0xff424242;\n\t\tfinal Paint paint = new Paint();\n\t\tfinal Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());\n\t\tfinal RectF rectF = new RectF(rect);\n\n\t\tpaint.setAntiAlias(true);\n\t\tcanvas.drawARGB(0, 0, 0, 0);\n\t\tpaint.setColor(color);\n\t\tcanvas.drawRoundRect(rectF, roundPx, roundPx, paint);\n\n\t\tpaint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));\n\t\tcanvas.drawBitmap(bitmap, rect, rect, paint);\n\t\treturn output;\n\t}\n\n\t/**\n\t * 转行Drawable为Bitmap对象\n\t * \n\t * @param drawable\n\t * @return\n\t */\n\tpublic static Bitmap toBitmap(Drawable drawable) {\n\t\tint width = drawable.getIntrinsicWidth();\n\t\tint height = drawable.getIntrinsicHeight();\n\t\tBitmap bitmap = Bitmap.createBitmap(width, height, drawable\n\t\t\t\t.getOpacity() != PixelFormat.OPAQUE ? Config.ARGB_8888\n\t\t\t\t: Config.RGB_565);\n\t\tCanvas canvas = new Canvas(bitmap);\n\t\tdrawable.setBounds(0, 0, width, height);\n\t\tdrawable.draw(canvas);\n\t\treturn bitmap;\n\t}\n\n\t/**\n\t * 缩放图片\n\t * \n\t * @param src\n\t *            缩放原图\n\t * @param dstWidth\n\t *            缩放后宽\n\t * @param dstHeight\n\t *            缩放后高\n\t * @return\n\t */\n\tpublic static Bitmap scaledBitmap(Bitmap src, int dstWidth, int dstHeight) {\n\t\t// 原图不能为空也不能已经被回收掉了\n\t\tBitmap result = null;\n\t\tif (src != null && !src.isRecycled()) {\n\t\t\tif (src.getWidth() == dstWidth && src.getHeight() == dstHeight) {\n\t\t\t\tresult = src;\n\t\t\t} else {\n\t\t\t\tresult = Bitmap.createScaledBitmap(src, dstWidth, dstHeight,\n\t\t\t\t\t\ttrue);\n\t\t\t}\n\t\t}\n\t\t// ThumbnailUtils.extractThumbnail(source, width, height)\n\t\treturn result;\n\t}\n\n\t/**\n\t * 按比例缩放图片\n\t * \n\t * @param src\n\t * @param scale\n\t *            例如2 就是二分之一\n\t * @return\n\t */\n\tpublic static Bitmap scaledBitmap(Bitmap src, int scale) {\n\t\tif (src == null || src.isRecycled()) {\n\t\t\treturn null;\n\t\t}\n\t\tint dstWidth = src.getWidth() / scale;\n\t\tint dstHeight = src.getHeight() / scale;\n\t\treturn Bitmap.createScaledBitmap(src, dstWidth, dstHeight, true);\n\t}\n\n\t/**\n\t * 将图片转换成字节数组\n\t * \n\t * @param bitmap\n\t * @return\n\t */\n\tpublic static byte[] toBytes(Bitmap bitmap) {\n\t\tByteArrayOutputStream outputStream = new ByteArrayOutputStream();\n\t\tbitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream);\n\t\treturn outputStream.toByteArray();\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/IntentHelper.java",
    "content": "/*\n * Copyright (C) 2012 YIXIA.COM\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.cjj.bb.utils;\n\nimport java.util.List;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\n\n\nimport android.content.ComponentName;\nimport android.content.Context;\nimport android.content.Intent;\nimport android.content.pm.PackageInfo;\nimport android.content.pm.PackageManager;\nimport android.content.pm.PackageManager.NameNotFoundException;\nimport android.content.pm.ResolveInfo;\nimport android.net.Uri;\nimport android.os.Parcelable;\nimport android.text.Html;\n\nimport io.vov.vitamio.utils.Log;\n\npublic final class IntentHelper {\n\n\tpublic static final String MEDIA_PATTERN = \"(http[s]?://)+([\\\\w-]+\\\\.)+[\\\\w-]+([\\\\w-./?%&=]*)?\";\n\tprivate static final Pattern mMediaPattern;\n\n\tstatic {\n\t\tmMediaPattern = Pattern.compile(MEDIA_PATTERN);\n\t}\n\n\tpublic static Uri getIntentUri(Intent intent) {\n\t\tUri result = null;\n\t\tif (intent != null) {\n\t\t\tresult = intent.getData();\n\t\t\tif (result == null) {\n\t\t\t\tfinal String type = intent.getType();\n\t\t\t\tString sharedUrl = intent.getStringExtra(Intent.EXTRA_TEXT);\n\t\t\t\tif (!StringUtils.isEmpty(sharedUrl)) {\n\t\t\t\t\tif (\"text/plain\".equals(type) && sharedUrl != null) {\n\t\t\t\t\t\tresult = getTextUri(sharedUrl);\n\t\t\t\t\t} else if (\"text/html\".equals(type) && sharedUrl != null) {\n\t\t\t\t\t\tresult = getTextUri(Html.fromHtml(sharedUrl).toString());\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tParcelable parce = intent.getParcelableExtra(Intent.EXTRA_STREAM);\n\t\t\t\t\tif (parce != null)\n\t\t\t\t\t\tresult = (Uri) parce;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate static Uri getTextUri(String sharedUrl) {\n\t\tMatcher matcher = mMediaPattern.matcher(sharedUrl);\n\t\tif (matcher.find()) {\n\t\t\tsharedUrl = matcher.group();\n\t\t\tif (!StringUtils.isEmpty(sharedUrl)) {\n\t\t\t\treturn Uri.parse(sharedUrl);\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static boolean existPackage(final Context ctx, String packageName) {\n\t\tif (!StringUtils.isEmpty(packageName)) {\n\t\t\tfor (PackageInfo p : ctx.getPackageManager().getInstalledPackages(0)) {\n\t\t\t\tif (packageName.equals(p.packageName))\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static void startApkActivity(final Context ctx, String packageName) {\n\t\tPackageManager pm = ctx.getPackageManager();\n\t\tPackageInfo pi;\n\t\ttry {\n\t\t\tpi = pm.getPackageInfo(packageName, 0);\n\t\t\tIntent intent = new Intent(Intent.ACTION_MAIN, null);\n\t\t\tintent.setPackage(pi.packageName);\n\n\t\t\tList<ResolveInfo> apps = pm.queryIntentActivities(intent, 0);\n\n\t\t\tResolveInfo ri = apps.iterator().next();\n\t\t\tif (ri != null) {\n\t\t\t\tString className = ri.activityInfo.name;\n\t\t\t\tintent.setComponent(new ComponentName(packageName, className));\n\t\t\t\tctx.startActivity(intent);\n\t\t\t}\n\t\t} catch (NameNotFoundException e) {\n\t\t\tLog.e(\"startActivity\", e);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/JsoupUtil.java",
    "content": "package com.cjj.bb.utils;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.json.JSONArray;\nimport org.json.JSONException;\nimport org.json.JSONObject;\nimport org.jsoup.Jsoup;\nimport org.jsoup.nodes.Document;\nimport org.jsoup.nodes.Element;\nimport org.jsoup.select.Elements;\n\n\n\n/**\n * \n * @author wwj_748\n * @date 2014/8/10\n */\npublic class JsoupUtil {\n\tpublic static boolean contentFirstPage = true; // 第一页\n\tpublic static boolean contentLastPage = true; // 最后一页\n\tpublic static boolean multiPages = false; // 多页\n\tprivate static final String BILIBILI_HOMEPAGE_URL = \"http://www.bilibili.com/mobile/index.html\"; // bilibili首页地址\n\tpublic static void resetPages() {\n\t\tcontentFirstPage = true;\n\t\tcontentLastPage = true;\n\t\tmultiPages = false;\n\t}\n\t\t\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/Logger.java",
    "content": "package com.cjj.bb.utils;\n\nimport android.util.Log;\n\npublic class Logger {\n\n\tprivate static boolean isLog = true;\n\tprivate static final String TAG = \"ABPlayer\";\n\n\tpublic static void setLog(boolean isLog) {\n\t\tLogger.isLog = isLog;\n\t}\n\n\tpublic static boolean getIsLog() {\n\t\treturn isLog;\n\t}\n\n\tpublic static void d(String tag, String msg) {\n\t\tif (isLog) {\n\t\t\tLog.d(tag, msg);\n\t\t}\n\t}\n\n\tpublic static void d(String msg) {\n\t\tLog.d(TAG, msg);\n\t}\n\n\t/**\n\t * Send a {@link #DEBUG} log message and log the exception.\n\t * \n\t * @param tag Used to identify the source of a log message. It usually\n\t * identifies the class or activity where the log call occurs.\n\t * @param msg The message you would like logged.\n\t * @param tr An exception to log\n\t */\n\tpublic static void d(String tag, String msg, Throwable tr) {\n\t\tif (isLog) {\n\t\t\tLog.d(tag, msg, tr);\n\t\t}\n\t}\n\n\tpublic static void e(Throwable tr) {\n\t\tif (isLog) {\n\t\t\tLog.e(TAG, \"\", tr);\n\t\t}\n\t}\n\n\tpublic static void i(String msg) {\n\t\tif (isLog) {\n\t\t\tLog.i(TAG, msg);\n\t\t}\n\t}\n\t\n\tpublic static void i(String tag, String msg) {\n\t\tif (isLog) {\n\t\t\tLog.i(tag, msg);\n\t\t}\n\t}\n\n\t/**\n\t * Send a {@link #INFO} log message and log the exception.\n\t * \n\t * @param tag Used to identify the source of a log message. It usually\n\t * identifies the class or activity where the log call occurs.\n\t * @param msg The message you would like logged.\n\t * @param tr An exception to log\n\t */\n\tpublic static void i(String tag, String msg, Throwable tr) {\n\t\tif (isLog) {\n\t\t\tLog.i(tag, msg, tr);\n\t\t}\n\n\t}\n\n\t/**\n\t * Send an {@link #ERROR} log message.\n\t * \n\t * @param tag Used to identify the source of a log message. It usually\n\t * identifies the class or activity where the log call occurs.\n\t * @param msg The message you would like logged.\n\t */\n\tpublic static void e(String tag, String msg) {\n\t\tif (isLog) {\n\t\t\tLog.e(tag, msg);\n\t\t}\n\t}\n\n\tpublic static void e(String msg) {\n\t\tif (isLog) {\n\t\t\tLog.e(TAG, msg);\n\t\t}\n\t}\n\n\t/**\n\t * Send a {@link #ERROR} log message and log the exception.\n\t * \n\t * @param tag Used to identify the source of a log message. It usually\n\t * identifies the class or activity where the log call occurs.\n\t * @param msg The message you would like logged.\n\t * @param tr An exception to log\n\t */\n\tpublic static void e(String tag, String msg, Throwable tr) {\n\t\tif (isLog) {\n\t\t\tLog.e(tag, msg, tr);\n\t\t}\n\t}\n\t\n\tpublic static void e(String msg, Throwable tr) {\n\t\tif (isLog) {\n\t\t\tLog.e(TAG, msg, tr);\n\t\t}\n\t}\n\n\tpublic static void systemErr(String msg) {\n\t\t// if (true) {\n\t\tif (isLog) {\n\t\t\tif (msg != null) {\n\t\t\t\tLog.e(TAG, msg);\n\t\t\t}\n\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/MediaUtils.java",
    "content": "/*\n * Copyright (C) 2012 YIXIA.COM\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.cjj.bb.utils;\n\nimport java.io.File;\nimport java.util.regex.Pattern;\n\nimport android.net.Uri;\n\npublic final class MediaUtils {\n\tpublic static final String[] EXTENSIONS;\n\t// http://www.fileinfo.com/filetypes/video\n\tpublic static final String[] VIDEO_EXTENSIONS = { \"\\\\.264\", \"\\\\.3g2\", \"\\\\.3gp\", \"\\\\.3gp2\", \"\\\\.3gpp\", \"\\\\.3gpp2\", \"\\\\.3mm\", \"\\\\.3p2\", \"\\\\.60d\", \"\\\\.aep\", \"\\\\.ajp\", \"\\\\.amv\", \"\\\\.amx\", \"\\\\.arf\", \"\\\\.asf\", \"\\\\.asx\", \"\\\\.avb\", \"\\\\.avd\", \"\\\\.avi\", \"\\\\.avs\", \"\\\\.avs\", \"\\\\.axm\", \"\\\\.bdm\", \"\\\\.bdmv\", \"\\\\.bik\", \"\\\\.bin\", \"\\\\.bix\", \"\\\\.bmk\", \"\\\\.box\", \"\\\\.bs4\", \"\\\\.bsf\", \"\\\\.byu\", \"\\\\.camre\", \"\\\\.clpi\", \"\\\\.cpi\", \"\\\\.cvc\", \"\\\\.d2v\", \"\\\\.d3v\", \"\\\\.dat\", \"\\\\.dav\", \"\\\\.dce\", \"\\\\.dck\", \"\\\\.ddat\", \"\\\\.dif\", \"\\\\.dir\", \"\\\\.divx\", \"\\\\.dlx\", \"\\\\.dmb\", \"\\\\.dmsm\", \"\\\\.dmss\", \"\\\\.dnc\", \"\\\\.dpg\", \"\\\\.dream\", \"\\\\.dsy\", \"\\\\.dv\", \"\\\\.dv-avi\", \"\\\\.dv4\", \"\\\\.dvdmedia\", \"\\\\.dvr-ms\", \"\\\\.dvx\", \"\\\\.dxr\", \"\\\\.dzm\", \"\\\\.dzp\", \"\\\\.dzt\", \"\\\\.evo\", \"\\\\.eye\", \"\\\\.f4p\", \"\\\\.f4v\", \"\\\\.fbr\", \"\\\\.fbr\", \"\\\\.fbz\", \"\\\\.fcp\", \"\\\\.flc\", \"\\\\.flh\", \"\\\\.fli\", \"\\\\.flv\", \"\\\\.flx\", \"\\\\.gl\", \"\\\\.grasp\", \"\\\\.gts\", \"\\\\.gvi\", \"\\\\.gvp\", \"\\\\.hdmov\", \"\\\\.hkm\", \"\\\\.ifo\", \"\\\\.imovi\", \"\\\\.imovi\", \"\\\\.iva\", \"\\\\.ivf\", \"\\\\.ivr\", \"\\\\.ivs\", \"\\\\.izz\", \"\\\\.izzy\", \"\\\\.jts\", \"\\\\.lsf\", \"\\\\.lsx\", \"\\\\.m15\", \"\\\\.m1pg\", \"\\\\.m1v\", \"\\\\.m21\", \"\\\\.m21\", \"\\\\.m2a\", \"\\\\.m2p\", \"\\\\.m2t\", \"\\\\.m2ts\", \"\\\\.m2v\", \"\\\\.m4e\", \"\\\\.m4u\", \"\\\\.m4v\", \"\\\\.m75\", \"\\\\.meta\", \"\\\\.mgv\", \"\\\\.mj2\", \"\\\\.mjp\", \"\\\\.mjpg\", \"\\\\.mkv\", \"\\\\.mmv\", \"\\\\.mnv\", \"\\\\.mod\", \"\\\\.modd\", \"\\\\.moff\", \"\\\\.moi\", \"\\\\.moov\", \"\\\\.mov\", \"\\\\.movie\", \"\\\\.mp21\", \"\\\\.mp21\", \"\\\\.mp2v\", \"\\\\.mp4\", \"\\\\.mp4v\", \"\\\\.mpe\", \"\\\\.mpeg\", \"\\\\.mpeg4\", \"\\\\.mpf\", \"\\\\.mpg\", \"\\\\.mpg2\", \"\\\\.mpgin\", \"\\\\.mpl\", \"\\\\.mpls\", \"\\\\.mpv\", \"\\\\.mpv2\", \"\\\\.mqv\", \"\\\\.msdvd\", \"\\\\.msh\", \"\\\\.mswmm\", \"\\\\.mts\", \"\\\\.mtv\", \"\\\\.mvb\", \"\\\\.mvc\", \"\\\\.mvd\", \"\\\\.mve\", \"\\\\.mvp\", \"\\\\.mxf\", \"\\\\.mys\", \"\\\\.ncor\", \"\\\\.nsv\", \"\\\\.nvc\", \"\\\\.ogm\", \"\\\\.ogv\", \"\\\\.ogx\", \"\\\\.osp\", \"\\\\.par\", \"\\\\.pds\", \"\\\\.pgi\", \"\\\\.piv\", \"\\\\.playlist\", \"\\\\.pmf\", \"\\\\.prel\", \"\\\\.pro\", \"\\\\.prproj\", \"\\\\.psh\", \"\\\\.pva\", \"\\\\.pvr\", \"\\\\.pxv\", \"\\\\.qt\", \"\\\\.qtch\", \"\\\\.qtl\", \"\\\\.qtm\", \"\\\\.qtz\", \"\\\\.rcproject\", \"\\\\.rdb\", \"\\\\.rec\", \"\\\\.rm\", \"\\\\.rmd\", \"\\\\.rmp\", \"\\\\.rms\", \"\\\\.rmvb\", \"\\\\.roq\", \"\\\\.rp\", \"\\\\.rts\", \"\\\\.rts\", \"\\\\.rum\", \"\\\\.rv\", \"\\\\.sbk\", \"\\\\.sbt\", \"\\\\.scm\", \"\\\\.scm\", \"\\\\.scn\", \"\\\\.sec\", \"\\\\.seq\", \"\\\\.sfvidcap\", \"\\\\.smil\", \"\\\\.smk\", \"\\\\.sml\", \"\\\\.smv\", \"\\\\.spl\", \"\\\\.ssm\", \"\\\\.str\", \"\\\\.stx\", \"\\\\.svi\", \"\\\\.swf\", \"\\\\.swi\", \"\\\\.swt\", \"\\\\.tda3mt\", \"\\\\.tivo\", \"\\\\.tix\", \"\\\\.tod\", \"\\\\.tp\", \"\\\\.tp0\", \"\\\\.tpd\", \"\\\\.tpr\", \"\\\\.trp\", \"\\\\.ts\", \"\\\\.tvs\", \"\\\\.vc1\", \"\\\\.vcr\", \"\\\\.vcv\", \"\\\\.vdo\", \"\\\\.vdr\", \"\\\\.veg\", \"\\\\.vem\", \"\\\\.vf\", \"\\\\.vfw\", \"\\\\.vfz\", \"\\\\.vgz\", \"\\\\.vid\", \"\\\\.viewlet\", \"\\\\.viv\", \"\\\\.vivo\", \"\\\\.vlab\", \"\\\\.vob\", \"\\\\.vp3\", \"\\\\.vp6\", \"\\\\.vp7\", \"\\\\.vpj\", \"\\\\.vro\", \"\\\\.vsp\", \"\\\\.w32\", \"\\\\.wcp\", \"\\\\.webm\", \"\\\\.wm\", \"\\\\.wmd\", \"\\\\.wmmp\", \"\\\\.wmv\", \"\\\\.wmx\", \"\\\\.wp3\", \"\\\\.wpl\", \"\\\\.wtv\", \"\\\\.wvx\", \"\\\\.xfl\", \"\\\\.xvid\", \"\\\\.yuv\", \"\\\\.zm1\", \"\\\\.zm2\", \"\\\\.zm3\", \"\\\\.zmv\" };\n\t// http://www.fileinfo.com/filetypes/audio\n\tpublic static final String[] AUDIO_EXTENSIONS = { \"\\\\.4mp\", \"\\\\.669\", \"\\\\.6cm\", \"\\\\.8cm\", \"\\\\.8med\", \"\\\\.8svx\", \"\\\\.a2m\", \"\\\\.aa\", \"\\\\.aa3\", \"\\\\.aac\", \"\\\\.aax\", \"\\\\.abc\", \"\\\\.abm\", \"\\\\.ac3\", \"\\\\.acd\", \"\\\\.acd-bak\", \"\\\\.acd-zip\", \"\\\\.acm\", \"\\\\.act\", \"\\\\.adg\", \"\\\\.afc\", \"\\\\.agm\", \"\\\\.ahx\", \"\\\\.aif\", \"\\\\.aifc\", \"\\\\.aiff\", \"\\\\.ais\", \"\\\\.akp\", \"\\\\.al\", \"\\\\.alaw\", \"\\\\.all\", \"\\\\.amf\", \"\\\\.amr\", \"\\\\.ams\", \"\\\\.ams\", \"\\\\.aob\", \"\\\\.ape\", \"\\\\.apf\", \"\\\\.apl\", \"\\\\.ase\", \"\\\\.at3\", \"\\\\.atrac\", \"\\\\.au\", \"\\\\.aud\", \"\\\\.aup\", \"\\\\.avr\", \"\\\\.awb\", \"\\\\.band\", \"\\\\.bap\", \"\\\\.bdd\", \"\\\\.box\", \"\\\\.bun\", \"\\\\.bwf\", \"\\\\.c01\", \"\\\\.caf\", \"\\\\.cda\", \"\\\\.cdda\", \"\\\\.cdr\", \"\\\\.cel\", \"\\\\.cfa\", \"\\\\.cidb\", \"\\\\.cmf\", \"\\\\.copy\", \"\\\\.cpr\", \"\\\\.cpt\", \"\\\\.csh\", \"\\\\.cwp\", \"\\\\.d00\", \"\\\\.d01\", \"\\\\.dcf\", \"\\\\.dcm\", \"\\\\.dct\", \"\\\\.ddt\", \"\\\\.dewf\", \"\\\\.df2\", \"\\\\.dfc\", \"\\\\.dig\", \"\\\\.dig\", \"\\\\.dls\", \"\\\\.dm\", \"\\\\.dmf\", \"\\\\.dmsa\", \"\\\\.dmse\", \"\\\\.drg\", \"\\\\.dsf\", \"\\\\.dsm\", \"\\\\.dsp\", \"\\\\.dss\", \"\\\\.dtm\", \"\\\\.dts\", \"\\\\.dtshd\", \"\\\\.dvf\", \"\\\\.dwd\", \"\\\\.ear\", \"\\\\.efa\", \"\\\\.efe\", \"\\\\.efk\", \"\\\\.efq\", \"\\\\.efs\", \"\\\\.efv\", \"\\\\.emd\", \"\\\\.emp\", \"\\\\.emx\", \"\\\\.esps\", \"\\\\.f2r\", \"\\\\.f32\", \"\\\\.f3r\", \"\\\\.f4a\", \"\\\\.f64\", \"\\\\.far\", \"\\\\.fff\", \"\\\\.flac\", \"\\\\.flp\", \"\\\\.fls\", \"\\\\.frg\", \"\\\\.fsm\", \"\\\\.fzb\", \"\\\\.fzf\", \"\\\\.fzv\", \"\\\\.g721\", \"\\\\.g723\", \"\\\\.g726\", \"\\\\.gig\", \"\\\\.gp5\", \"\\\\.gpk\", \"\\\\.gsm\", \"\\\\.gsm\", \"\\\\.h0\", \"\\\\.hdp\", \"\\\\.hma\", \"\\\\.hsb\", \"\\\\.ics\", \"\\\\.iff\", \"\\\\.imf\", \"\\\\.imp\", \"\\\\.ins\", \"\\\\.ins\", \"\\\\.it\", \"\\\\.iti\", \"\\\\.its\", \"\\\\.jam\", \"\\\\.k25\", \"\\\\.k26\", \"\\\\.kar\", \"\\\\.kin\", \"\\\\.kit\", \"\\\\.kmp\", \"\\\\.koz\", \"\\\\.koz\", \"\\\\.kpl\", \"\\\\.krz\", \"\\\\.ksc\", \"\\\\.ksf\", \"\\\\.kt2\", \"\\\\.kt3\", \"\\\\.ktp\", \"\\\\.l\", \"\\\\.la\", \"\\\\.lqt\", \"\\\\.lso\", \"\\\\.lvp\", \"\\\\.lwv\", \"\\\\.m1a\", \"\\\\.m3u\", \"\\\\.m4a\", \"\\\\.m4b\", \"\\\\.m4p\", \"\\\\.m4r\", \"\\\\.ma1\", \"\\\\.mdl\", \"\\\\.med\", \"\\\\.mgv\", \"\\\\.mid\", \"\\\\.midi\", \"\\\\.miniusf\", \"\\\\.mka\", \"\\\\.mlp\", \"\\\\.mmf\", \"\\\\.mmm\", \"\\\\.mmp\", \"\\\\.mo3\", \"\\\\.mod\", \"\\\\.mp1\", \"\\\\.mp2\", \"\\\\.mp3\", \"\\\\.mpa\", \"\\\\.mpc\", \"\\\\.mpga\", \"\\\\.mpu\", \"\\\\.mp_\", \"\\\\.mscx\", \"\\\\.mscz\", \"\\\\.msv\", \"\\\\.mt2\", \"\\\\.mt9\", \"\\\\.mte\", \"\\\\.mti\", \"\\\\.mtm\", \"\\\\.mtp\", \"\\\\.mts\", \"\\\\.mus\", \"\\\\.mws\", \"\\\\.mxl\", \"\\\\.mzp\", \"\\\\.nap\", \"\\\\.nki\", \"\\\\.nra\", \"\\\\.nrt\", \"\\\\.nsa\", \"\\\\.nsf\", \"\\\\.nst\", \"\\\\.ntn\", \"\\\\.nvf\", \"\\\\.nwc\", \"\\\\.odm\", \"\\\\.oga\", \"\\\\.ogg\", \"\\\\.okt\", \"\\\\.oma\", \"\\\\.omf\", \"\\\\.omg\", \"\\\\.omx\", \"\\\\.ots\", \"\\\\.ove\", \"\\\\.ovw\", \"\\\\.pac\", \"\\\\.pat\", \"\\\\.pbf\", \"\\\\.pca\", \"\\\\.pcast\", \"\\\\.pcg\", \"\\\\.pcm\", \"\\\\.peak\", \"\\\\.phy\", \"\\\\.pk\", \"\\\\.pla\", \"\\\\.pls\", \"\\\\.pna\", \"\\\\.ppc\", \"\\\\.ppcx\", \"\\\\.prg\", \"\\\\.prg\", \"\\\\.psf\", \"\\\\.psm\", \"\\\\.ptf\", \"\\\\.ptm\", \"\\\\.pts\", \"\\\\.pvc\", \"\\\\.qcp\", \"\\\\.r\", \"\\\\.r1m\", \"\\\\.ra\", \"\\\\.ram\", \"\\\\.raw\", \"\\\\.rax\", \"\\\\.rbs\", \"\\\\.rcy\", \"\\\\.rex\", \"\\\\.rfl\", \"\\\\.rmf\", \"\\\\.rmi\", \"\\\\.rmj\", \"\\\\.rmm\", \"\\\\.rmx\", \"\\\\.rng\", \"\\\\.rns\", \"\\\\.rol\", \"\\\\.rsn\", \"\\\\.rso\", \"\\\\.rti\", \"\\\\.rtm\", \"\\\\.rts\", \"\\\\.rvx\", \"\\\\.rx2\", \"\\\\.s3i\", \"\\\\.s3m\", \"\\\\.s3z\", \"\\\\.saf\", \"\\\\.sam\", \"\\\\.sb\", \"\\\\.sbg\", \"\\\\.sbi\", \"\\\\.sbk\", \"\\\\.sc2\", \"\\\\.sd\", \"\\\\.sd\", \"\\\\.sd2\", \"\\\\.sd2f\", \"\\\\.sdat\", \"\\\\.sdii\", \"\\\\.sds\", \"\\\\.sdt\", \"\\\\.sdx\", \"\\\\.seg\", \"\\\\.seq\", \"\\\\.ses\", \"\\\\.sf\", \"\\\\.sf2\", \"\\\\.sfk\", \"\\\\.sfl\", \"\\\\.shn\", \"\\\\.sib\", \"\\\\.sid\", \"\\\\.sid\", \"\\\\.smf\", \"\\\\.smp\", \"\\\\.snd\", \"\\\\.snd\", \"\\\\.snd\", \"\\\\.sng\", \"\\\\.sng\", \"\\\\.sou\", \"\\\\.sppack\", \"\\\\.sprg\", \"\\\\.spx\", \"\\\\.sseq\", \"\\\\.sseq\", \"\\\\.ssnd\", \"\\\\.stm\", \"\\\\.stx\", \"\\\\.sty\", \"\\\\.svx\", \"\\\\.sw\", \"\\\\.swa\", \"\\\\.syh\", \"\\\\.syw\", \"\\\\.syx\", \"\\\\.td0\", \"\\\\.tfmx\", \"\\\\.thx\", \"\\\\.toc\", \"\\\\.tsp\", \"\\\\.txw\", \"\\\\.u\", \"\\\\.ub\", \"\\\\.ulaw\", \"\\\\.ult\", \"\\\\.ulw\", \"\\\\.uni\", \"\\\\.usf\", \"\\\\.usflib\", \"\\\\.uw\", \"\\\\.uwf\", \"\\\\.vag\", \"\\\\.val\", \"\\\\.vc3\", \"\\\\.vmd\", \"\\\\.vmf\", \"\\\\.vmf\", \"\\\\.voc\", \"\\\\.voi\", \"\\\\.vox\", \"\\\\.vpm\", \"\\\\.vqf\", \"\\\\.vrf\", \"\\\\.vyf\", \"\\\\.w01\", \"\\\\.wav\", \"\\\\.wav\", \"\\\\.wave\", \"\\\\.wax\", \"\\\\.wfb\", \"\\\\.wfd\", \"\\\\.wfp\", \"\\\\.wma\", \"\\\\.wow\", \"\\\\.wpk\", \"\\\\.wproj\", \"\\\\.wrk\", \"\\\\.wus\", \"\\\\.wut\", \"\\\\.wv\", \"\\\\.wvc\", \"\\\\.wve\", \"\\\\.wwu\", \"\\\\.xa\", \"\\\\.xa\", \"\\\\.xfs\", \"\\\\.xi\", \"\\\\.xm\", \"\\\\.xmf\", \"\\\\.xmi\", \"\\\\.xmz\", \"\\\\.xp\", \"\\\\.xrns\", \"\\\\.xsb\", \"\\\\.xspf\", \"\\\\.xt\", \"\\\\.xwb\", \"\\\\.ym\", \"\\\\.zvd\", \"\\\\.zvr\" };\n\tpublic static final String[] SUBTRACK_EXTENSIONS = { \".srt\", \".ssa\", \".smi\", \".txt\", \".sub\", \".ass\" };\n\tpublic static final Pattern VIDEO_EXTENSIONS_PATTERN;\n\tpublic static final Pattern AUDIO_EXTENSIONS_PATTERN;\n\tpublic static final Pattern EXTENSIONS_PATTERN;\n\tpublic static final Pattern SUBTRACK_EXTENSIONS_PATTERN;\n\tstatic {\n\t\tEXTENSIONS = ArrayUtils.concat(VIDEO_EXTENSIONS, AUDIO_EXTENSIONS);\n\t\tEXTENSIONS_PATTERN = generatePattern(EXTENSIONS);\n\t\tVIDEO_EXTENSIONS_PATTERN = generatePattern(VIDEO_EXTENSIONS);\n\t\tAUDIO_EXTENSIONS_PATTERN = generatePattern(AUDIO_EXTENSIONS);\n\t\tSUBTRACK_EXTENSIONS_PATTERN = generatePattern(SUBTRACK_EXTENSIONS);\n\t}\n\n\tpublic static boolean isVideoOrAudio(String url) {\n\t\treturn EXTENSIONS_PATTERN.matcher(url.trim()).find();\n\t}\n\n\tpublic static boolean isVideoOrAudio(File file) {\n\t\treturn EXTENSIONS_PATTERN.matcher(file.getName().trim()).find();\n\t}\n\n\tpublic static boolean isVideo(String url) {\n\t\treturn VIDEO_EXTENSIONS_PATTERN.matcher(url.trim()).find();\n\t}\n\n\tpublic static boolean isVideo(File file) {\n\t\treturn VIDEO_EXTENSIONS_PATTERN.matcher(file.getName().trim()).find();\n\t}\n\n\tpublic static boolean isAudio(String url) {\n\t\treturn AUDIO_EXTENSIONS_PATTERN.matcher(url.trim()).find();\n\t}\n\n\tpublic static boolean isAudio(File file) {\n\t\treturn AUDIO_EXTENSIONS_PATTERN.matcher(file.getName().trim()).find();\n\t}\n\n\tpublic static boolean isSubTrack(File file) {\n\t\treturn SUBTRACK_EXTENSIONS_PATTERN.matcher(file.getName().trim()).find();\n\t}\n\n\tpublic static boolean isNative(String uri) {\n\t\turi = Uri.decode(uri);\n\t\treturn uri != null && (uri.startsWith(\"/\") || uri.startsWith(\"content:\") || uri.startsWith(\"file:\"));\n\t}\n\n\tprivate static Pattern generatePattern(String[] args) {\n\t\tStringBuffer sb = new StringBuffer();\n\t\tfor (String ext : args) {\n\t\t\tif (sb.length() > 0)\n\t\t\t\tsb.append(\"|\");\n\t\t\tsb.append(ext);\n\t\t}\n\t\treturn Pattern.compile(\"(\" + sb.toString() + \")$\", Pattern.CASE_INSENSITIVE);\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/MultiMemberGZIPInputStream.java",
    "content": "package com.cjj.bb.utils;\n\nimport java.io.InputStream;\nimport java.io.PushbackInputStream;\nimport java.io.IOException;\nimport java.util.zip.GZIPInputStream;\n\npublic\nclass MultiMemberGZIPInputStream extends GZIPInputStream {\n\n    public MultiMemberGZIPInputStream(InputStream in, int size) throws IOException\n    {\n        // Wrap the stream in a PushbackInputStream…\n        super(new PushbackInputStream(in, size), size);\n        this.size=size;\n    }\n\n    public MultiMemberGZIPInputStream(InputStream in) throws IOException\n    {\n        // Wrap the stream in a PushbackInputStream…\n        super(new PushbackInputStream(in, 1024));\n        this.size=-1;\n    }\n\n    private MultiMemberGZIPInputStream(MultiMemberGZIPInputStream parent) throws IOException\n    {\n        super(parent.in);\n        this.size=-1;\n        this.parent=parent.parent==null ? parent : parent.parent;\n        this.parent.child=this;\n    }\n\n    private MultiMemberGZIPInputStream(MultiMemberGZIPInputStream parent, int size) throws IOException\n    {\n        super(parent.in, size);\n        this.size=size;\n        this.parent=parent.parent==null ? parent : parent.parent;\n        this.parent.child=this;\n    }\n\n    private MultiMemberGZIPInputStream parent;\n    private MultiMemberGZIPInputStream child;\n    private int size;\n    private boolean eos;\n\n    public int read(byte[] inputBuffer, int inputBufferOffset, int inputBufferLen) throws IOException {\n\n        if (eos) { return -1;}\n        if (this.child!=null)\n            return this.child.read(inputBuffer, inputBufferOffset, inputBufferLen);\n\n        int charsRead=super.read(inputBuffer, inputBufferOffset, inputBufferLen);\n        if (charsRead==-1)\n        {\n            // Push any remaining buffered data back onto the stream\n            // If the stream is then not empty, use it to construct\n            // a new instance of this class and delegate this and any\n            // future calls to it…\n            int n = inf.getRemaining()-8;\n            if (n > 0)\n            {\n                // More than 8 bytes remaining in deflater\n                // First 8 are gzip trailer. Add the rest to\n                // any un-read data…\n                ((PushbackInputStream)this.in).unread(buf, len-n, n);\n            }\n            else\n            {\n                // Nothing in the buffer. We need to know whether or not\n                // there is unread data available in the underlying stream\n                // since the base class will not handle an empty file.\n                // Read a byte to see if there is data and if so,\n                // push it back onto the stream…\n                byte[] b=new byte[1];\n                int ret=in.read(b,0,1);\n                if (ret==-1)\n                {\n                    eos=true;\n                    return -1;\n                }\n                else\n                    ((PushbackInputStream)this.in).unread(b, 0, 1);\n            }\n\n            MultiMemberGZIPInputStream child;\n            if (this.size==-1)\n                child=new MultiMemberGZIPInputStream(this);\n            else\n                child=new MultiMemberGZIPInputStream(this, this.size);\n            return child.read(inputBuffer, inputBufferOffset, inputBufferLen);\n        }\n        else\n            return charsRead;\n    }\n\n}"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/PreferenceUtils.java",
    "content": "package com.cjj.bb.utils;\n\n\nimport android.content.Context;\nimport android.content.SharedPreferences;\nimport android.content.SharedPreferences.Editor;\nimport android.preference.PreferenceManager;\n\nimport com.cjj.bb.activity.ABPlayerApplication;\n\n\npublic final class PreferenceUtils {\n\n\t/** 清空数据 */\n\tpublic static void reset(final Context ctx) {\n\t\tEditor edit = PreferenceManager.getDefaultSharedPreferences(ctx).edit();\n\t\tedit.clear();\n\t\tedit.commit();\n\t}\n\n\tpublic static String getString(String key, String defValue) {\n\t\treturn PreferenceManager.getDefaultSharedPreferences(ABPlayerApplication.getContext()).getString(key, defValue);\n\t}\n\n\tpublic static long getLong(String key, long defValue) {\n\t\treturn PreferenceManager.getDefaultSharedPreferences(ABPlayerApplication.getContext()).getLong(key, defValue);\n\t}\n\n\tpublic static float getFloat(String key, float defValue) {\n\t\treturn PreferenceManager.getDefaultSharedPreferences(ABPlayerApplication.getContext()).getFloat(key, defValue);\n\t}\n\n\tpublic static void put(String key, String value) {\n\t\tputString(key, value);\n\t}\n\n\tpublic static void put(String key, int value) {\n\t\tputInt(key, value);\n\t}\n\n\tpublic static void put(String key, float value) {\n\t\tputFloat(key, value);\n\t}\n\n\tpublic static void put(String key, boolean value) {\n\t\tputBoolean(key, value);\n\t}\n\n\tpublic static void putFloat(String key, float value) {\n\t\tSharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ABPlayerApplication.getContext());\n\t\tEditor editor = sharedPreferences.edit();\n\t\teditor.putFloat(key, value);\n\t\teditor.commit();\n\t}\n\n\tpublic static SharedPreferences getPreferences() {\n\t\treturn PreferenceManager.getDefaultSharedPreferences(ABPlayerApplication.getContext());\n\t}\n\n\tpublic static int getInt(String key, int defValue) {\n\t\treturn PreferenceManager.getDefaultSharedPreferences(ABPlayerApplication.getContext()).getInt(key, defValue);\n\t}\n\n\tpublic static boolean getBoolean(String key, boolean defValue) {\n\t\treturn PreferenceManager.getDefaultSharedPreferences(ABPlayerApplication.getContext()).getBoolean(key, defValue);\n\t}\n\n\tpublic static void putStringProcess(String key, String value) {\n\t\tSharedPreferences sharedPreferences = ABPlayerApplication.getContext().getSharedPreferences(\"preference_mu\", Context.MODE_MULTI_PROCESS);\n\t\tEditor editor = sharedPreferences.edit();\n\t\teditor.putString(key, value);\n\t\teditor.commit();\n\t}\n\n\tpublic static String getStringProcess(String key, String defValue) {\n\t\tSharedPreferences sharedPreferences = ABPlayerApplication.getContext().getSharedPreferences(\"preference_mu\", Context.MODE_MULTI_PROCESS);\n\t\treturn sharedPreferences.getString(key, defValue);\n\t}\n\n\tpublic static boolean hasString(String key) {\n\t\tSharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ABPlayerApplication.getContext());\n\t\treturn sharedPreferences.contains(key);\n\t}\n\n\tpublic static void putString(String key, String value) {\n\t\tSharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ABPlayerApplication.getContext());\n\t\tEditor editor = sharedPreferences.edit();\n\t\teditor.putString(key, value);\n\t\teditor.commit();\n\t}\n\n\tpublic static void putLong(String key, long value) {\n\t\tSharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ABPlayerApplication.getContext());\n\t\tEditor editor = sharedPreferences.edit();\n\t\teditor.putLong(key, value);\n\t\teditor.commit();\n\t}\n\n\tpublic static void putBoolean(String key, boolean value) {\n\t\tSharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ABPlayerApplication.getContext());\n\t\tEditor editor = sharedPreferences.edit();\n\t\teditor.putBoolean(key, value);\n\t\teditor.commit();\n\t}\n\n\tpublic static void putInt(String key, int value) {\n\t\tSharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ABPlayerApplication.getContext());\n\t\tEditor editor = sharedPreferences.edit();\n\t\teditor.putInt(key, value);\n\t\teditor.commit();\n\t}\n\n\tpublic static void remove(String... keys) {\n\t\tif (keys != null) {\n\t\t\tSharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ABPlayerApplication.getContext());\n\t\t\tEditor editor = sharedPreferences.edit();\n\t\t\tfor (String key : keys) {\n\t\t\t\teditor.remove(key);\n\t\t\t}\n\t\t\teditor.commit();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/StringUtils.java",
    "content": "package com.cjj.bb.utils;\n\nimport java.io.UnsupportedEncodingException;\nimport java.net.URLEncoder;\nimport java.text.SimpleDateFormat;\nimport java.util.ArrayList;\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.Iterator;\nimport java.util.TimeZone;\n\nimport android.text.TextPaint;\n\n\n/**\n * 字符串工具类\n * \n * @author tangjun\n * \n */\npublic class StringUtils {\n\n\tpublic static final String EMPTY = \"\";\n\n\tprivate static final String DEFAULT_DATE_PATTERN = \"yyyy-MM-dd\";\n\tprivate static final String DEFAULT_DATETIME_PATTERN = \"yyyy-MM-dd hh:mm:ss\";\n\t/** 用于生成文件 */\n\tprivate static final String DEFAULT_FILE_PATTERN = \"yyyy-MM-dd-HH-mm-ss\";\n\tprivate static final double KB = 1024.0;\n\tprivate static final double MB = 1048576.0;\n\tprivate static final double GB = 1073741824.0;\n\tpublic static final SimpleDateFormat DATE_FORMAT_PART = new SimpleDateFormat(\n\t\t\t\"HH:mm\");\n\n\tpublic static String currentTimeString() {\n\t\treturn DATE_FORMAT_PART.format(Calendar.getInstance().getTime());\n\t}\n\n\tpublic static char chatAt(String pinyin, int index) {\n\t\tif (pinyin != null && pinyin.length() > 0)\n\t\t\treturn pinyin.charAt(index);\n\t\treturn ' ';\n\t}\n\n\t/** 获取字符串宽度 */\n\tpublic static float GetTextWidth(String Sentence, float Size) {\n\t\tif (isEmpty(Sentence))\n\t\t\treturn 0;\n\t\tTextPaint FontPaint = new TextPaint();\n\t\tFontPaint.setTextSize(Size);\n\t\treturn FontPaint.measureText(Sentence.trim()) + (int) (Size * 0.1); // 留点余地\n\t}\n\n\t/**\n\t * 格式化日期字符串\n\t * \n\t * @param date\n\t * @param pattern\n\t * @return\n\t */\n\tpublic static String formatDate(Date date, String pattern) {\n\t\tSimpleDateFormat format = new SimpleDateFormat(pattern);\n\t\treturn format.format(date);\n\t}\n\n\t/**\n\t * 格式化日期字符串\n\t * \n\t * @param date\n\t * @return 例如2011-3-24\n\t */\n\tpublic static String formatDate(Date date) {\n\t\treturn formatDate(date, DEFAULT_DATE_PATTERN);\n\t}\n\n\tpublic static String formatDate(long date) {\n\t\treturn formatDate(new Date(date), DEFAULT_DATE_PATTERN);\n\t}\n\n\t/**\n\t * 获取当前时间 格式为yyyy-MM-dd 例如2011-07-08\n\t * \n\t * @return\n\t */\n\tpublic static String getDate() {\n\t\treturn formatDate(new Date(), DEFAULT_DATE_PATTERN);\n\t}\n\n\t/** 生成一个文件名，不含后缀 */\n\tpublic static String createFileName() {\n\t\tDate date = new Date(System.currentTimeMillis());\n\t\tSimpleDateFormat format = new SimpleDateFormat(DEFAULT_FILE_PATTERN);\n\t\treturn format.format(date);\n\t}\n\n\t/**\n\t * 获取当前时间\n\t * \n\t * @return\n\t */\n\tpublic static String getDateTime() {\n\t\treturn formatDate(new Date(), DEFAULT_DATETIME_PATTERN);\n\t}\n\n\t/**\n\t * 格式化日期时间字符串\n\t * \n\t * @param date\n\t * @return 例如2011-11-30 16:06:54\n\t */\n\tpublic static String formatDateTime(Date date) {\n\t\treturn formatDate(date, DEFAULT_DATETIME_PATTERN);\n\t}\n\n\tpublic static String formatDateTime(long date) {\n\t\treturn formatDate(new Date(date), DEFAULT_DATETIME_PATTERN);\n\t}\n\t\n\t/**\n\t * 格林威时间转换\n\t * \n\t * @param gmt\n\t * @return\n\t */\n\tpublic static String formatGMTDate(String gmt) {\n\t\tTimeZone timeZoneLondon = TimeZone.getTimeZone(gmt);\n\t\treturn formatDate(Calendar.getInstance(timeZoneLondon)\n\t\t\t\t.getTimeInMillis());\n\t}\n\n\t/**\n\t * 拼接数组\n\t * \n\t * @param array\n\t * @param separator\n\t * @return\n\t */\n\tpublic static String join(final ArrayList<String> array,\n\t\t\tfinal String separator) {\n\t\tStringBuffer result = new StringBuffer();\n\t\tif (array != null && array.size() > 0) {\n\t\t\tfor (String str : array) {\n\t\t\t\tresult.append(str);\n\t\t\t\tresult.append(separator);\n\t\t\t}\n\t\t\tresult.delete(result.length() - 1, result.length());\n\t\t}\n\t\treturn result.toString();\n\t}\n\n\tpublic static String join(final Iterator<String> iter,\n\t\t\tfinal String separator) {\n\t\tStringBuffer result = new StringBuffer();\n\t\tif (iter != null) {\n\t\t\twhile (iter.hasNext()) {\n\t\t\t\tString key = iter.next();\n\t\t\t\tresult.append(key);\n\t\t\t\tresult.append(separator);\n\t\t\t}\n\t\t\tif (result.length() > 0)\n\t\t\t\tresult.delete(result.length() - 1, result.length());\n\t\t}\n\t\treturn result.toString();\n\t}\n\n\t/**\n\t * 判断字符串是否为空\n\t * \n\t * @param str\n\t * @return\n\t */\n\tpublic static boolean isEmpty(String str) {\n\t\treturn str == null || str.length() == 0;\n\t}\n\n\t/**\n\t * \n\t * @param str\n\t * @return\n\t */\n\tpublic static String trim(String str) {\n\t\treturn str == null ? EMPTY : str.trim();\n\t}\n\n\t/**\n\t * 转换时间显示\n\t * \n\t * @param time\n\t *            毫秒\n\t * @return\n\t */\n\tpublic static String generateTime(long time) {\n\t\tint totalSeconds = (int) (time / 1000);\n\t\tint seconds = totalSeconds % 60;\n\t\tint minutes = (totalSeconds / 60) % 60;\n\t\tint hours = totalSeconds / 3600;\n\n\t\treturn hours > 0 ? String.format(\"%02d:%02d:%02d\", hours, minutes,\n\t\t\t\tseconds) : String.format(\"%02d:%02d\", minutes, seconds);\n\t}\n\n\t/** 根据秒速获取时间格式 */\n\tpublic static String gennerTime(int totalSeconds) {\n\t\tint seconds = totalSeconds % 60;\n\t\tint minutes = (totalSeconds / 60) % 60;\n\t\treturn String.format(\"%02d:%02d\", minutes, seconds);\n\t}\n\n\t/**\n\t * 转换文件大小\n\t * \n\t * @param size\n\t * @return\n\t */\n\tpublic static String generateFileSize(long size) {\n\t\tString fileSize;\n\t\tif (size < KB)\n\t\t\tfileSize = size + \"B\";\n\t\telse if (size < MB)\n\t\t\tfileSize = String.format(\"%.1f\", size / KB) + \"KB\";\n\t\telse if (size < GB)\n\t\t\tfileSize = String.format(\"%.1f\", size / MB) + \"MB\";\n\t\telse\n\t\t\tfileSize = String.format(\"%.1f\", size / GB) + \"GB\";\n\n\t\treturn fileSize;\n\t}\n\n\tpublic static String getTimeDiff(long time) {\n\t\t// Calendar cal = Calendar.getInstance();\n\t\tlong diff = 0;\n\t\t// Date dnow = cal.getTime();\n\t\tString str = \"\";\n\t\tdiff = System.currentTimeMillis() - time;\n\n\t\tif (diff > 2592000000L) {// 30 * 24 * 60 * 60 * 1000=2592000000 毫秒\n\t\t\tstr = \"1个月前\";\n\t\t} else if (diff > 1814400000) {// 21 * 24 * 60 * 60 * 1000=1814400000 毫秒\n\t\t\tstr = \"3周前\";\n\t\t} else if (diff > 1209600000) {// 14 * 24 * 60 * 60 * 1000=1209600000 毫秒\n\t\t\tstr = \"2周前\";\n\t\t} else if (diff > 604800000) {// 7 * 24 * 60 * 60 * 1000=604800000 毫秒\n\t\t\tstr = \"1周前\";\n\t\t} else if (diff > 86400000) { // 24 * 60 * 60 * 1000=86400000 毫秒\n\t\t\t// System.out.println(\"X天前\");\n\t\t\tstr = (int) Math.floor(diff / 86400000f) + \"天前\";\n\t\t} else if (diff > 18000000) {// 5 * 60 * 60 * 1000=18000000 毫秒\n\t\t\t// System.out.println(\"X小时前\");\n\t\t\tstr = (int) Math.floor(diff / 18000000f) + \"小时前\";\n\t\t} else if (diff > 60000) {// 1 * 60 * 1000=60000 毫秒\n\t\t\t// System.out.println(\"X分钟前\");\n\t\t\tstr = (int) Math.floor(diff / 60000) + \"分钟前\";\n\t\t} else {\n\t\t\tstr = (int) Math.floor(diff / 1000) + \"秒前\";\n\t\t}\n\t\treturn str;\n\t}\n\n\t/**\n\t * 截取字符串\n\t * \n\t * @param search\n\t *            待搜索的字符串\n\t * @param start\n\t *            起始字符串 例如：<title>\n\t * @param end\n\t *            结束字符串 例如：</title>\n\t * @param defaultValue\n\t * @return\n\t */\n\tpublic static String substring(String search, String start, String end,\n\t\t\tString defaultValue) {\n\t\tint start_len = start.length();\n\t\tint start_pos = StringUtils.isEmpty(start) ? 0 : search.indexOf(start);\n\t\tif (start_pos > -1) {\n\t\t\tint end_pos = StringUtils.isEmpty(end) ? -1 : search.indexOf(end,\n\t\t\t\t\tstart_pos + start_len);\n\t\t\tif (end_pos > -1)\n\t\t\t\treturn search.substring(start_pos + start.length(), end_pos);\n\t\t\telse\n\t\t\t\treturn search.substring(start_pos + start.length());\n\t\t}\n\t\treturn defaultValue;\n\t}\n\n\t/**\n\t * 截取字符串\n\t * \n\t * @param search\n\t *            待搜索的字符串\n\t * @param start\n\t *            起始字符串 例如：<title>\n\t * @param end\n\t *            结束字符串 例如：</title>\n\t * @return\n\t */\n\tpublic static String substring(String search, String start, String end) {\n\t\treturn substring(search, start, end, \"\");\n\t}\n\n\t/**\n\t * 拼接字符串\n\t * \n\t * @param strs\n\t * @return\n\t */\n\tpublic static String concat(String... strs) {\n\t\tStringBuffer result = new StringBuffer();\n\t\tif (strs != null) {\n\t\t\tfor (String str : strs) {\n\t\t\t\tif (str != null)\n\t\t\t\t\tresult.append(str);\n\t\t\t}\n\t\t}\n\t\treturn result.toString();\n\t}\n\n\t/** 获取中文字符个数 */\n\tpublic static int getChineseCharCount(String str) {\n\t\tString tempStr;\n\t\tint count = 0;\n\t\tfor (int i = 0; i < str.length(); i++) {\n\t\t\ttempStr = String.valueOf(str.charAt(i));\n\t\t\tif (tempStr.getBytes().length == 3) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t}\n\t\treturn count;\n\t}\n\n\t/** 获取英文字符个数 */\n\tpublic static int getEnglishCount(String str) {\n\t\tString tempStr;\n\t\tint count = 0;\n\t\tfor (int i = 0; i < str.length(); i++) {\n\t\t\ttempStr = String.valueOf(str.charAt(i));\n\t\t\tif (!(tempStr.getBytes().length == 3)) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t}\n\t\treturn count;\n\t}\n\n\tpublic static String encode(String url) {\n\t\ttry {\n\t\t\treturn URLEncoder.encode(url, \"UTF-8\");\n\t\t} catch (UnsupportedEncodingException e) {\n\t\t\tLogger.e(e);\n\t\t}\n\t\treturn url;\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/ToastUtils.java",
    "content": "package com.cjj.bb.utils;\n\nimport android.app.Activity;\nimport android.content.Context;\nimport android.view.View;\nimport android.widget.Toast;\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.activity.ABPlayerApplication;\n\n\npublic class ToastUtils {\n\n\tpublic static void showToast(int resID) {\n\t\tshowToast(ABPlayerApplication.getContext(), Toast.LENGTH_SHORT, resID);\n\t}\n\n\tpublic static void showToast(String text) {\n\t\tshowToast(ABPlayerApplication.getContext(), Toast.LENGTH_SHORT, text);\n\t}\n\n\tpublic static void showToast(Context ctx, int resID) {\n\t\tshowToast(ctx, Toast.LENGTH_SHORT, resID);\n\t}\n\n\tpublic static void showToast(Context ctx, String text) {\n\t\tshowToast(ctx, Toast.LENGTH_SHORT, text);\n\t}\n\n\tpublic static void showLongToast(Context ctx, int resID) {\n\t\tshowToast(ctx, Toast.LENGTH_LONG, resID);\n\t}\n\n\tpublic static void showLongToast(int resID) {\n\t\tshowToast(ABPlayerApplication.getContext(), Toast.LENGTH_LONG, resID);\n\t}\n\n\tpublic static void showLongToast(Context ctx, String text) {\n\t\tshowToast(ctx, Toast.LENGTH_LONG, text);\n\t}\n\n\tpublic static void showLongToast(String text) {\n\t\tshowToast(ABPlayerApplication.getContext(), Toast.LENGTH_LONG, text);\n\t}\n\n\tpublic static void showToast(Context ctx, int duration, int resID) {\n\t\tshowToast(ctx, duration, ctx.getString(resID));\n\t}\n\n\tpublic static void showToast(Context ctx, int duration, String text) {\n\t\tToast toast = Toast.makeText(ctx, text, duration);\n\t\tView mNextView = toast.getView();\n\t\tif (mNextView != null)\n//\t\t\tmNextView.setBackgroundResource(R.drawable.toast_frame);\n\t\ttoast.show();\n\t\t// Toast.makeText(ctx, text, duration).show();\n\t}\n\n\t// public static void showToastOnUiThread(final String text) {\n\t// showToastOnUiThread(FSAppliction.getCurrentActivity(), text);\n\t// }\n\n\t/** 在UI线程运行弹出 */\n\tpublic static void showToastOnUiThread(final Activity ctx, final String text) {\n\t\tif (ctx != null) {\n\t\t\tctx.runOnUiThread(new Runnable() {\n\n\t\t\t\t@Override\n\t\t\t\tpublic void run() {\n\t\t\t\t\tshowToast(ctx, text);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/URLUtil.java",
    "content": "package com.cjj.bb.utils;\n\n/**\n * \n * @author wwj_748\n * @date 2014/8/10\n */\npublic class URLUtil {\n\t// BILIBILI_DATA_URL\n\tpublic static String URL_DONG_HUA = \"http://www.bilibili.com/index/ding/1.json\";\n\tpublic static String URL_MAD_MAV = \"http://www.bilibili.com/index/ding/24.json\";\n\tpublic static String URL_MAD_3D = \"http://www.bilibili.com/index/ding/25.json\";\n\tpublic static String URL_DONG_HUA_DUAN_PIAN = \"http://www.bilibili.com/index/ding/47.json\";\n\tpublic static String URL_DONG_HUA_ZONG_HE = \"http://www.bilibili.com/index/ding/27.json\";\n\t\n\tpublic static String URL_LIAN_ZAI_DONG_HUA = \"http://www.bilibili.com/index/ding/33.json\";\n\tpublic static String URL_WAN_JIE_DONG_HUA = \"http://www.bilibili.com/index/ding/32.json\";\n\tpublic static String URL_ZHI_XUN = \"http://www.bilibili.com/index/ding/51.json\";\n\tpublic static String URL_GUAN_FANG_YAN_SHEN = \"http://www.bilibili.com/index/ding/152.json\";\n\tpublic static String URL_GUO_CHAN_DONG_HUA = \"http://www.bilibili.com/index/ding/153.json\";\n\t\n\tpublic static String URL_YIN_YUE = \"http://www.bilibili.com/index/ding/3.json\";\n\tpublic static String URL_FAN_CHANG = \"http://www.bilibili.com/index/ding/31.json\";\n\tpublic static String URL_VOCALOID_UTAU = \"http://www.bilibili.com/index/ding/30.json\";\n\tpublic static String URL_YAN_ZOU= \"http://www.bilibili.com/index/ding/59.json\";\n\tpublic static String URL_YIN_YUE_XUAN_JI = \"http://www.bilibili.com/index/ding/130.json\";\n\t\n\tpublic static String URL_KE_JI = \"http://www.bilibili.com/index/ding/36.json\";\n\tpublic static String URL_JI_LU_PIAN = \"http://www.bilibili.com/index/ding/37.json\";\n\tpublic static String URL_KE_PU_REN_WEN = \"http://www.bilibili.com/index/ding/124.json\";\n\tpublic static String URL_YE_SHENG_JI_SHU= \"http://www.bilibili.com/index/ding/122.json\";\n\tpublic static String URL_YAN_JIANG = \"http://www.bilibili.com/index/ding/39.json\";\n\tpublic static String URL_JUN_SHI = \"http://www.bilibili.com/index/ding/96.json\";\n\tpublic static String URL_SHU_MA = \"http://www.bilibili.com/index/ding/95.json\";\n\t\n\tpublic static String URL_YU_LE = \"http://www.bilibili.com/index/ding/5.json\";\n\tpublic static String URL_GAO_XIAO = \"http://www.bilibili.com/index/ding/138.json\";\n\tpublic static String URL_SHENG_HUO = \"http://www.bilibili.com/index/ding/21.json\";\n\tpublic static String URL_ZONG_YI = \"http://www.bilibili.com/index/ding/71.json\";\n\t\n\tpublic static String URL_DIAN_YIN = \"http://www.bilibili.com/index/ding/23.json\";\n\tpublic static String URL_OU_MEI_DIAN_YIN = \"http://www.bilibili.com/index/ding/145.json\";\n\tpublic static String URL_RI_BEN_DIAN_YIN = \"http://www.bilibili.com/index/ding/146.json\";\n\tpublic static String URL_GUO_CHAN_DIAN_YIN = \"http://www.bilibili.com/index/ding/147.json\";\n\tpublic static String URL_DIAN_YIN_XIANG_GUAN = \"http://www.bilibili.com/index/ding/82.json\";\n\t\n\tpublic static String URL_YOU_XI = \"http://www.bilibili.com/index/ding/4.json\";\n\tpublic static String URL_DIAN_JI = \"http://www.bilibili.com/index/ding/17.json\";\n\tpublic static String URL_WANG_LUO_DIAN_YIN = \"http://www.bilibili.com/index/ding/65.json\";\n\tpublic static String URL_DIAN_ZI_JING_JI = \"http://www.bilibili.com/index/ding/60.json\";\n\t\n\tpublic static String URL_RANK_QUAN_QU = \"http://www.bilibili.com/index/rank/all-7-0.json\";//全区\n\tpublic static String URL_RANK_XIN_FAN = \"http://www.bilibili.com/index/rank/all-7-33.json\";//新番\n\tpublic static String URL_RANK_DONG_HUA = \"http://www.bilibili.com/index/rank/all-7-1.json\";//动画\n\tpublic static String URL_RANK_YIN_YUE = \"http://www.bilibili.com/index/rank/all-7-3.json\";//音乐\n\tpublic static String URL_RANK_YOU_XI = \"http://www.bilibili.com/index/rank/all-7-4.json\";//游戏\n\tpublic static String URL_RANK_KE_JI = \"http://www.bilibili.com/index/rank/all-7-36.json\";//科技\n\tpublic static String URL_RANK_YU_LE = \"http://www.bilibili.com/index/rank/all-7-5.json\";//娱乐\n\tpublic static String URL_RANK_DIAN_YING = \"http://www.bilibili.com/index/rank/all-7-23.json\";//电影\n\t\n\t\n\t/**\n\t * 获取博客列表的URL\n\t * \n\t * @param blogType\n\t *            博客类型\n\t * @param page\n\t *            页数\n\t * @return\n\t */\n\tpublic static String getVideoListURL(int videoType) {\n\t\tString url = \"\";\n\t\tswitch (videoType) {\n\t\tcase Constants.DEF_VIDEO_TYPE.DONG_HUA:\n\t\t\turl = URL_DONG_HUA;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.MAD_AMV:\n\t\t\turl = URL_MAD_MAV;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.MMD_3D:\n\t\t\turl = URL_MAD_3D;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.DONG_HUA_DUAN_PIAN:\n\t\t\turl = URL_DONG_HUA_DUAN_PIAN;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.DONG_HUA_ZONG_HE:\n\t\t\turl = URL_DONG_HUA_ZONG_HE;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.LIAN_ZAI_DONG_HUA:\n\t\t\turl = URL_LIAN_ZAI_DONG_HUA;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.WAN_JIE_DONG_HUA:\n\t\t\turl = URL_WAN_JIE_DONG_HUA;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.ZHI_XUN:\n\t\t\turl = URL_ZHI_XUN;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.GUAN_FANG_YAN_SHEN:\n\t\t\turl = URL_GUAN_FANG_YAN_SHEN;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.GUO_CHAN_DONG_HUA:\n\t\t\turl = URL_GUO_CHAN_DONG_HUA;\n\t\t\tbreak;\n\t\t//<------------音乐区------------->\t\n\t\tcase Constants.DEF_VIDEO_TYPE.YIN_YUE:\n\t\t\turl = URL_YIN_YUE;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.FAN_CHANG:\n\t\t\turl = URL_FAN_CHANG;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.VOCALOID_UTAU:\n\t\t\turl = URL_VOCALOID_UTAU;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.YAN_ZOU:\n\t\t\turl = URL_YAN_ZOU;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.YIN_YUE_XUAN_JI:\n\t\t\turl = URL_YIN_YUE_XUAN_JI;\n\t\t\tbreak;\n\t\t\t//<------------科技区------------->\t\n\t\tcase Constants.DEF_VIDEO_TYPE.KE_JI:\n\t\t\turl = URL_KE_JI;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.JI_LU_PIAN:\n\t\t\turl = URL_JI_LU_PIAN;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.KE_PU_REN_WEN:\n\t\t\turl = URL_KE_PU_REN_WEN;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.YE_SHENG_JI_SHU:\n\t\t\turl = URL_YE_SHENG_JI_SHU;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.YAN_JIANG:\n\t\t\turl = URL_YAN_JIANG;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.JUN_SHI:\n\t\t\turl = URL_JUN_SHI;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.SHU_MA:\n\t\t\turl = URL_SHU_MA;\n\t\t\tbreak;\n\t\t\t//<------------娱乐区------------->\t\n\t\tcase Constants.DEF_VIDEO_TYPE.YU_LE:\n\t\t\turl = URL_YU_LE;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.GAO_XIAO:\n\t\t\turl = URL_GAO_XIAO;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.SHENG_HUO:\n\t\t\turl = URL_SHENG_HUO;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.ZONG_YI:\n\t\t\turl = URL_ZONG_YI;\n\t\t\tbreak;\n\t\t\t//<------------电影区------------->\t\n\t\tcase Constants.DEF_VIDEO_TYPE.DIAN_YIN:\n\t\t\turl = URL_DIAN_YIN;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.OU_MEI_DIAN_YIN:\n\t\t\turl = URL_OU_MEI_DIAN_YIN;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.RI_BEN_DIAN_YIN:\n\t\t\turl = URL_RI_BEN_DIAN_YIN;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.GUO_CHAN_DIAN_YIN:\n\t\t\turl = URL_GUO_CHAN_DIAN_YIN;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.DIAN_YIN_XIANG_GUAN:\n\t\t\turl = URL_DIAN_YIN_XIANG_GUAN;\n\t\t\tbreak;\n\t\t\t//<------------游戏区------------->\t\n\t\tcase Constants.DEF_VIDEO_TYPE.YOU_XI:\n\t\t\turl = URL_YOU_XI;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.DIAN_JI:\n\t\t\turl = URL_DIAN_JI;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.WANG_LUO_DIAN_YIN:\n\t\t\turl = URL_WANG_LUO_DIAN_YIN;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.DIAN_ZI_JING_JI:\n\t\t\turl = URL_DIAN_ZI_JING_JI;\n\t\t\tbreak;\n\t\t\t//<------------排行榜------------->\t\n\t\tcase 10070:\n\t\t\turl = URL_RANK_QUAN_QU;\n\t\t\tbreak;\n\t\tcase 100733:\n\t\t\turl = URL_RANK_XIN_FAN;\n\t\t\tbreak;\n\t\tcase 10071:\n\t\t\turl = URL_RANK_DONG_HUA;\n\t\t\tbreak;\n\t\tcase 10073:\n\t\t\turl = URL_RANK_YIN_YUE;\n\t\t\tbreak;\n\t\tcase 10074:\n\t\t\turl = URL_RANK_YOU_XI;\n\t\t\tbreak;\n\t\tcase 100736:\n\t\t\turl = URL_RANK_KE_JI;\n\t\t\tbreak;\n\t\tcase 10075:\n\t\t\turl = URL_RANK_YU_LE;\n\t\t\tbreak;\n\t\tcase 100723:\n\t\t\turl = URL_RANK_DIAN_YING;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\t\treturn url;\n\t}\n\n\t/**\n\t * 获取刷新博客的URL\n\t * \n\t * @param blogType\n\t *            博客类型\n\t * @return\n\t */\n\tpublic static String getRefreshBlogListURL(int blogType) {\n\t\tString url = \"\";\n\t\tswitch (blogType) {\n\t\tcase Constants.DEF_VIDEO_TYPE.DONG_HUA:\n\t\t\turl = URL_DONG_HUA;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.MAD_AMV:\n\t\t\turl = URL_MAD_MAV;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.MMD_3D:\n\t\t\turl = URL_MAD_3D;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.DONG_HUA_DUAN_PIAN:\n\t\t\turl = URL_DONG_HUA_DUAN_PIAN;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.DONG_HUA_ZONG_HE:\n\t\t\turl = URL_DONG_HUA_ZONG_HE;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.LIAN_ZAI_DONG_HUA:\n\t\t\turl = URL_LIAN_ZAI_DONG_HUA;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.WAN_JIE_DONG_HUA:\n\t\t\turl = URL_WAN_JIE_DONG_HUA;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.ZHI_XUN:\n\t\t\turl = URL_ZHI_XUN;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.GUAN_FANG_YAN_SHEN:\n\t\t\turl = URL_GUAN_FANG_YAN_SHEN;\n\t\t\tbreak;\n\t\tcase Constants.DEF_VIDEO_TYPE.GUO_CHAN_DONG_HUA:\n\t\t\turl = URL_GUO_CHAN_DONG_HUA;\n\t\t\tbreak;\n\t\t\t//<------------音乐区------------->\t\n\t\t\tcase Constants.DEF_VIDEO_TYPE.YIN_YUE:\n\t\t\t\turl = URL_YIN_YUE;\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_VIDEO_TYPE.FAN_CHANG:\n\t\t\t\turl = URL_FAN_CHANG;\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_VIDEO_TYPE.VOCALOID_UTAU:\n\t\t\t\turl = URL_VOCALOID_UTAU;\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_VIDEO_TYPE.YAN_ZOU:\n\t\t\t\turl = URL_YAN_ZOU;\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_VIDEO_TYPE.YIN_YUE_XUAN_JI:\n\t\t\t\turl = URL_YIN_YUE_XUAN_JI;\n\t\t\t\tbreak;\n\t\t\t\t//<------------科技区------------->\t\n\t\t\tcase Constants.DEF_VIDEO_TYPE.KE_JI:\n\t\t\t\turl = URL_KE_JI;\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_VIDEO_TYPE.JI_LU_PIAN:\n\t\t\t\turl = URL_JI_LU_PIAN;\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_VIDEO_TYPE.KE_PU_REN_WEN:\n\t\t\t\turl = URL_KE_PU_REN_WEN;\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_VIDEO_TYPE.YE_SHENG_JI_SHU:\n\t\t\t\turl = URL_YE_SHENG_JI_SHU;\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_VIDEO_TYPE.YAN_JIANG:\n\t\t\t\turl = URL_YAN_JIANG;\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_VIDEO_TYPE.JUN_SHI:\n\t\t\t\turl = URL_JUN_SHI;\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_VIDEO_TYPE.SHU_MA:\n\t\t\t\turl = URL_SHU_MA;\n\t\t\t\tbreak;\n\t\t\t\t//<------------娱乐区------------->\t\n\t\t\tcase Constants.DEF_VIDEO_TYPE.YU_LE:\n\t\t\t\turl = URL_YU_LE;\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_VIDEO_TYPE.GAO_XIAO:\n\t\t\t\turl = URL_GAO_XIAO;\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_VIDEO_TYPE.SHENG_HUO:\n\t\t\t\turl = URL_SHENG_HUO;\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_VIDEO_TYPE.ZONG_YI:\n\t\t\t\turl = URL_ZONG_YI;\n\t\t\t\tbreak;\n\t\t\t\t//<------------电影区------------->\t\n\t\t\tcase Constants.DEF_VIDEO_TYPE.DIAN_YIN:\n\t\t\t\turl = URL_DIAN_YIN;\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_VIDEO_TYPE.OU_MEI_DIAN_YIN:\n\t\t\t\turl = URL_OU_MEI_DIAN_YIN;\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_VIDEO_TYPE.RI_BEN_DIAN_YIN:\n\t\t\t\turl = URL_RI_BEN_DIAN_YIN;\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_VIDEO_TYPE.GUO_CHAN_DIAN_YIN:\n\t\t\t\turl = URL_GUO_CHAN_DIAN_YIN;\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_VIDEO_TYPE.DIAN_YIN_XIANG_GUAN:\n\t\t\t\turl = URL_DIAN_YIN_XIANG_GUAN;\n\t\t\t\tbreak;\n\t\t\t\t//<------------游戏区------------->\t\n\t\t\tcase Constants.DEF_VIDEO_TYPE.YOU_XI:\n\t\t\t\turl = URL_YOU_XI;\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_VIDEO_TYPE.DIAN_JI:\n\t\t\t\turl = URL_DIAN_JI;\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_VIDEO_TYPE.WANG_LUO_DIAN_YIN:\n\t\t\t\turl = URL_WANG_LUO_DIAN_YIN;\n\t\t\t\tbreak;\n\t\t\tcase Constants.DEF_VIDEO_TYPE.DIAN_ZI_JING_JI:\n\t\t\t\turl = URL_DIAN_ZI_JING_JI;\n\t\t\t\tbreak;\n\t\t\t\t//<------------排行榜------------->\t\n\t\t\tcase 10070:\n\t\t\t\turl = URL_RANK_QUAN_QU;\n\t\t\t\tbreak;\n\t\t\tcase 100733:\n\t\t\t\turl = URL_RANK_XIN_FAN;\n\t\t\t\tbreak;\n\t\t\tcase 10071:\n\t\t\t\turl = URL_RANK_DONG_HUA;\n\t\t\t\tbreak;\n\t\t\tcase 10073:\n\t\t\t\turl = URL_RANK_YIN_YUE;\n\t\t\t\tbreak;\n\t\t\tcase 10074:\n\t\t\t\turl = URL_RANK_YOU_XI;\n\t\t\t\tbreak;\n\t\t\tcase 100736:\n\t\t\t\turl = URL_RANK_KE_JI;\n\t\t\t\tbreak;\n\t\t\tcase 10075:\n\t\t\t\turl = URL_RANK_YU_LE;\n\t\t\t\tbreak;\n\t\t\tcase 100723:\n\t\t\t\turl = URL_RANK_DIAN_YING;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\t\t\t\n\t\t}\n\t\treturn url;\n\t}\n\n\t/**\n\t * 返回博文评论列表链接\n\t * \n\t * @param filename\n\t *            文件名\n\t * @param pageIndex\n\t *            页数\n\t * @return\n\t */\n\tpublic static String getCommentListURL(String filename, String pageIndex) {\n\t\treturn \"http://blog.csdn.net/wwj_748/comment/list/\" + filename\n\t\t\t\t+ \"?page=\" + pageIndex;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/utils/XmlReaderHelper.java",
    "content": "package com.cjj.bb.utils;\n\nimport java.io.IOException;\nimport java.util.ArrayList;\n\nimport javax.xml.parsers.DocumentBuilder;\nimport javax.xml.parsers.DocumentBuilderFactory;\nimport javax.xml.parsers.ParserConfigurationException;\n\nimport org.w3c.dom.Document;\nimport org.w3c.dom.Element;\nimport org.w3c.dom.NamedNodeMap;\nimport org.w3c.dom.Node;\nimport org.w3c.dom.NodeList;\nimport org.xml.sax.SAXException;\n\n\nimport android.content.Context;\n\nimport com.cjj.bb.model.OnlineVideo;\n\n\n/** 从XML读取电视台节目 */\npublic class XmlReaderHelper {\n\n\t/** 获取所有电视分类 */\n\tpublic static ArrayList<OnlineVideo> getAllCategory(final Context context) {\n\t\tArrayList<OnlineVideo> result = new ArrayList<OnlineVideo>();\n\t\tDocumentBuilderFactory docBuilderFactory = null;\n\t\tDocumentBuilder docBuilder = null;\n\t\tDocument doc = null;\n\t\ttry {\n\t\t\tdocBuilderFactory = DocumentBuilderFactory.newInstance();\n\t\t\tdocBuilder = docBuilderFactory.newDocumentBuilder();\n\t\t\t// xml file 放到 assets目录中的\n\t\t\tdoc = docBuilder.parse(context.getResources().getAssets()\n\t\t\t\t\t.open(\"online.xml\"));\n\t\t\t// root element\n\t\t\tElement root = doc.getDocumentElement();\n\t\t\tNodeList nodeList = root.getElementsByTagName(\"category\");\n\t\t\tfor (int i = 0; i < nodeList.getLength(); i++) {\n\t\t\t\tNode node = nodeList.item(i);// category\n\t\t\t\tOnlineVideo ov = new OnlineVideo();\n\t\t\t\tNamedNodeMap attr = node.getAttributes();\n\t\t\t\tov.title = attr.getNamedItem(\"name\").getNodeValue();\n\t\t\t\tov.id = attr.getNamedItem(\"id\").getNodeValue();\n\t\t\t\tov.category = 1;\n\t\t\t\tov.level = 2;\n\t\t\t\tov.is_category = true;\n\t\t\t\tresult.add(ov);\n\t\t\t\t// Read Node\n\t\t\t}\n\t\t} catch (IOException e) {\n\t\t} catch (SAXException e) {\n\t\t} catch (ParserConfigurationException e) {\n\t\t} finally {\n\t\t\tdoc = null;\n\t\t\tdocBuilder = null;\n\t\t\tdocBuilderFactory = null;\n\t\t}\n\t\treturn result;\n\t}\n\n\t/** 读取分类下所有电视地址 */\n\tpublic static ArrayList<OnlineVideo> getVideos(final Context context,\n\t\t\tString categoryId) {\n\t\tArrayList<OnlineVideo> result = new ArrayList<OnlineVideo>();\n\t\tDocumentBuilderFactory docBuilderFactory = null;\n\t\tDocumentBuilder docBuilder = null;\n\t\tDocument doc = null;\n\t\ttry {\n\t\t\tdocBuilderFactory = DocumentBuilderFactory.newInstance();\n\t\t\tdocBuilder = docBuilderFactory.newDocumentBuilder();\n\t\t\t// xml file 放到 assets目录中的\n\t\t\tdoc = docBuilder.parse(context.getResources().getAssets()\n\t\t\t\t\t.open(\"online.xml\"));\n\t\t\t// root element\n\t\t\tElement root = doc.getElementById(categoryId);\n\t\t\tif (root != null) {\n\t\t\t\tNodeList nodeList = root.getChildNodes();\n\t\t\t\tfor (int i = 0, j = nodeList.getLength(); i < j; i++) {\n\t\t\t\t\tNode baseNode = nodeList.item(i);\n\n\t\t\t\t\tif (!\"item\".equals(baseNode.getNodeName()))\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tString id = baseNode.getFirstChild().getNodeValue();\n\t\t\t\t\tif (id == null)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tOnlineVideo ov = new OnlineVideo();\n\t\t\t\t\tov.id = id;\n\n\t\t\t\t\tElement el = doc.getElementById(ov.id);\n\t\t\t\t\tif (el != null) {\n\t\t\t\t\t\tov.title = el.getAttribute(\"title\");\n\t\t\t\t\t\tov.icon_url = el.getAttribute(\"image\");\n\t\t\t\t\t\tov.level = 3;\n\t\t\t\t\t\tov.category = 1;\n\t\t\t\t\t\tNodeList nodes = el.getChildNodes();\n\t\t\t\t\t\tfor (int m = 0, n = nodes.getLength(); m < n; m++) {\n\t\t\t\t\t\t\tNode node = nodes.item(m);\n\t\t\t\t\t\t\tif (!\"ref\".equals(node.getNodeName()))\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\tString href = node.getAttributes()\n\t\t\t\t\t\t\t\t\t.getNamedItem(\"href\").getNodeValue();\n\t\t\t\t\t\t\tif (ov.url == null) {\n\t\t\t\t\t\t\t\tov.url = href;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (ov.backup_url == null)\n\t\t\t\t\t\t\t\t\tov.backup_url = new ArrayList<String>();\n\t\t\t\t\t\t\t\tov.backup_url.add(href);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (ov.url != null)\n\t\t\t\t\t\t\tresult.add(ov);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (IOException e) {\n\t\t\te.printStackTrace();\n\t\t} catch (SAXException e) {\n\t\t\te.printStackTrace();\n\t\t} catch (ParserConfigurationException e) {\n\t\t\te.printStackTrace();\n\t\t} finally {\n\t\t\tdoc = null;\n\t\t\tdocBuilder = null;\n\t\t\tdocBuilderFactory = null;\n\t\t}\n\t\treturn result;\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/view/ApplicationUtils.java",
    "content": "package com.cjj.bb.view;\n\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.FileOutputStream;\nimport java.io.IOException;\nimport java.util.List;\n\nimport android.app.Activity;\nimport android.app.ActivityManager;\nimport android.content.Context;\nimport android.content.pm.ApplicationInfo;\nimport android.content.pm.PackageManager;\nimport android.content.pm.PackageManager.NameNotFoundException;\nimport android.os.Environment;\nimport android.widget.Toast;\n\npublic class ApplicationUtils {\n\t/**\n\t * 备份App 首先无需提升权限就就可以复制APK，查看权限你就会知道，在data/app下的APK权限如下：-rw-r--r-- system\n\t * system 5122972 2012-12-13 10:38 com.taobao.taobao-1.apk 我们是有读取权限的。\n\t * \n\t * @param packageName\n\t * @param mActivity\n\t * @throws java.io.IOException\n\t */\n\tpublic static void backupApp(String packageName, Activity mActivity)\n\t\t\tthrows IOException {\n\t\t// 存放位置\n\t\tString newFile = Environment.getExternalStorageDirectory()\n\t\t\t\t.getAbsolutePath() + File.separator;\n\t\tString oldFile = null;\n\t\ttry {\n\t\t\t// 原始位置\n\t\t\toldFile = mActivity.getPackageManager().getApplicationInfo(\n\t\t\t\t\tpackageName, 0).sourceDir;\n\t\t} catch (NameNotFoundException e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\tSystem.out.println(newFile);\n\t\tSystem.out.println(oldFile);\n\n\t\tFile in = new File(oldFile);\n\t\tFile out = new File(newFile + packageName + \".apk\");\n\t\tif (!out.exists()) {\n\t\t\tout.createNewFile();\n\t\t\tToast.makeText(mActivity, \"文件备份成功！\" + \"存放于\" + newFile + \"目录下\", 1)\n\t\t\t\t\t.show();\n\t\t} else {\n\t\t\tToast.makeText(mActivity, \"文件已经存在！\" + \"查看\" + newFile + \"目录下\", 1)\n\t\t\t\t\t.show();\n\t\t}\n\n\t\tFileInputStream fis = new FileInputStream(in);\n\t\tFileOutputStream fos = new FileOutputStream(out);\n\n\t\tint count;\n\t\t// 文件太大的话，我觉得需要修改\n\t\tbyte[] buffer = new byte[256 * 1024];\n\t\twhile ((count = fis.read(buffer)) > 0) {\n\t\t\tfos.write(buffer, 0, count);\n\t\t}\n\n\t\tfis.close();\n\t\tfos.flush();\n\t\tfos.close();\n\t}\n\n\t/**\n\t * 获取当前Apk版本号 android:versionCode\n\t * \n\t * @param context\n\t * @return\n\t */\n\tpublic static int getVerCode(Context context) {\n\t\tint verCode = -1;\n\t\ttry {\n\t\t\tverCode = context.getPackageManager().getPackageInfo(\n\t\t\t\t\tcontext.getPackageName(), 0).versionCode;\n\t\t} catch (NameNotFoundException e) {\n\t\t}\n\t\treturn verCode;\n\t}\n\n\tpublic static String getVerName(Context context) {\n\t\ttry {\n\t\t\treturn context.getPackageManager().getPackageInfo(\n\t\t\t\t\tcontext.getPackageName(), 0).versionName;\n\t\t} catch (NameNotFoundException e) {\n\t\t}\n\t\treturn \"\";\n\t}\n\n\t/**\n\t * 返回当前的应用是否处于前台显示状态 不需要android.permission.GET_TASKS权限\n\t * http://zengrong.net/post/1680.htm\n\t * \n\t * @param packageName\n\t * @return\n\t */\n\tpublic static boolean isTopActivity(Context context, String packageName) {\n\t\t// _context是一个保存的上下文\n\t\tActivityManager am = (ActivityManager) context.getApplicationContext()\n\t\t\t\t.getSystemService(Context.ACTIVITY_SERVICE);\n\t\tList<ActivityManager.RunningAppProcessInfo> list = am\n\t\t\t\t.getRunningAppProcesses();\n\t\tif (list.size() == 0)\n\t\t\treturn false;\n\t\tfor (ActivityManager.RunningAppProcessInfo process : list) {\n\t\t\t// Log.d(getTAG(), Integer.toString(__process.importance));\n\t\t\t// Log.d(getTAG(), __process.processName);\n\t\t\tif (process.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND\n\t\t\t\t\t&& process.processName.equals(packageName)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * 检测APP是否存在\n\t * @param context\n\t * @param packageName\n\t * @return\n\t */\n\tpublic static boolean checkAppExist(Context context, String packageName) {\n\t\ttry {\n\t\t\tApplicationInfo info = context.getPackageManager()\n\t\t\t\t\t.getApplicationInfo(packageName, 0);\n\t\t\treturn info != null && info.packageName.equals(packageName);\n\t\t} catch (NameNotFoundException e) {\n\n\t\t} catch (Exception e) {\n\t\t}\n\t\treturn false;\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/view/CircleImageView.java",
    "content": "package com.cjj.bb.view;\n\n\nimport android.content.Context;\nimport android.content.res.TypedArray;\nimport android.graphics.Bitmap;\nimport android.graphics.BitmapShader;\nimport android.graphics.Canvas;\nimport android.graphics.Color;\nimport android.graphics.Matrix;\nimport android.graphics.Paint;\nimport android.graphics.RectF;\nimport android.graphics.Shader;\nimport android.graphics.drawable.BitmapDrawable;\nimport android.graphics.drawable.ColorDrawable;\nimport android.graphics.drawable.Drawable;\nimport android.net.Uri;\nimport android.util.AttributeSet;\nimport android.widget.ImageView;\n\nimport com.cjj.bb.R;\n\n\npublic class CircleImageView extends ImageView {\n\n    private static final ScaleType SCALE_TYPE = ScaleType.CENTER_CROP;\n\n    private static final Bitmap.Config BITMAP_CONFIG = Bitmap.Config.ARGB_8888;\n    private static final int COLORDRAWABLE_DIMENSION = 1;\n\n    private static final int DEFAULT_BORDER_WIDTH = 0;\n    private static final int DEFAULT_BORDER_COLOR = Color.BLACK;\n\n    private final RectF mDrawableRect = new RectF();\n    private final RectF mBorderRect = new RectF();\n\n    private final Matrix mShaderMatrix = new Matrix();\n    private final Paint mBitmapPaint = new Paint();\n    private final Paint mBorderPaint = new Paint();\n\n    private int mBorderColor = DEFAULT_BORDER_COLOR;\n    private int mBorderWidth = DEFAULT_BORDER_WIDTH;\n\n    private Bitmap mBitmap;\n    private BitmapShader mBitmapShader;\n    private int mBitmapWidth;\n    private int mBitmapHeight;\n\n    private float mDrawableRadius;\n    private float mBorderRadius;\n\n    private boolean mReady;\n    private boolean mSetupPending;\n\n    public CircleImageView(Context context) {\n        super(context);\n\n        init();\n    }\n\n    public CircleImageView(Context context, AttributeSet attrs) {\n        this(context, attrs, 0);\n    }\n\n    public CircleImageView(Context context, AttributeSet attrs, int defStyle) {\n        super(context, attrs, defStyle);\n\n        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CircleImageView, defStyle, 0);\n\n        mBorderWidth = a.getDimensionPixelSize(R.styleable.CircleImageView_border_width, DEFAULT_BORDER_WIDTH);\n        mBorderColor = a.getColor(R.styleable.CircleImageView_border_color, DEFAULT_BORDER_COLOR);\n\n        a.recycle();\n\n        init();\n    }\n\n    private void init() {\n        super.setScaleType(SCALE_TYPE);\n        mReady = true;\n\n        if (mSetupPending) {\n            setup();\n            mSetupPending = false;\n        }\n    }\n\n    @Override\n    public ScaleType getScaleType() {\n        return SCALE_TYPE;\n    }\n\n    @Override\n    public void setScaleType(ScaleType scaleType) {\n        if (scaleType != SCALE_TYPE) {\n            throw new IllegalArgumentException(String.format(\"ScaleType %s not supported.\", scaleType));\n        }\n    }\n\n    @Override\n    protected void onDraw(Canvas canvas) {\n        if (getDrawable() == null) {\n            return;\n        }\n\n        canvas.drawCircle(getWidth() / 2, getHeight() / 2, mDrawableRadius, mBitmapPaint);\n        if (mBorderWidth != 0) {\n            canvas.drawCircle(getWidth() / 2, getHeight() / 2, mBorderRadius, mBorderPaint);\n        }\n    }\n\n    @Override\n    protected void onSizeChanged(int w, int h, int oldw, int oldh) {\n        super.onSizeChanged(w, h, oldw, oldh);\n        setup();\n    }\n\n    public int getBorderColor() {\n        return mBorderColor;\n    }\n\n    public void setBorderColor(int borderColor) {\n        if (borderColor == mBorderColor) {\n            return;\n        }\n\n        mBorderColor = borderColor;\n        mBorderPaint.setColor(mBorderColor);\n        invalidate();\n    }\n\n    public int getBorderWidth() {\n        return mBorderWidth;\n    }\n\n    public void setBorderWidth(int borderWidth) {\n        if (borderWidth == mBorderWidth) {\n            return;\n        }\n\n        mBorderWidth = borderWidth;\n        setup();\n    }\n\n    @Override\n    public void setImageBitmap(Bitmap bm) {\n        super.setImageBitmap(bm);\n        mBitmap = bm;\n        setup();\n    }\n\n    @Override\n    public void setImageDrawable(Drawable drawable) {\n        super.setImageDrawable(drawable);\n        mBitmap = getBitmapFromDrawable(drawable);\n        setup();\n    }\n\n    @Override\n    public void setImageResource(int resId) {\n        super.setImageResource(resId);\n        mBitmap = getBitmapFromDrawable(getDrawable());\n        setup();\n    }\n\n    @Override\n    public void setImageURI(Uri uri) {\n        super.setImageURI(uri);\n        mBitmap = getBitmapFromDrawable(getDrawable());\n        setup();\n    }\n\n    private Bitmap getBitmapFromDrawable(Drawable drawable) {\n        if (drawable == null) {\n            return null;\n        }\n\n        if (drawable instanceof BitmapDrawable) {\n            return ((BitmapDrawable) drawable).getBitmap();\n        }\n\n        try {\n            Bitmap bitmap;\n\n            if (drawable instanceof ColorDrawable) {\n                bitmap = Bitmap.createBitmap(COLORDRAWABLE_DIMENSION, COLORDRAWABLE_DIMENSION, BITMAP_CONFIG);\n            } else {\n                bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), BITMAP_CONFIG);\n            }\n\n            Canvas canvas = new Canvas(bitmap);\n            drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());\n            drawable.draw(canvas);\n            return bitmap;\n        } catch (OutOfMemoryError e) {\n            return null;\n        }\n    }\n\n    private void setup() {\n        if (!mReady) {\n            mSetupPending = true;\n            return;\n        }\n\n        if (mBitmap == null) {\n            return;\n        }\n\n        mBitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);\n\n        mBitmapPaint.setAntiAlias(true);\n        mBitmapPaint.setShader(mBitmapShader);\n\n        mBorderPaint.setStyle(Paint.Style.STROKE);\n        mBorderPaint.setAntiAlias(true);\n        mBorderPaint.setColor(mBorderColor);\n        mBorderPaint.setStrokeWidth(mBorderWidth);\n\n        mBitmapHeight = mBitmap.getHeight();\n        mBitmapWidth = mBitmap.getWidth();\n\n        mBorderRect.set(0, 0, getWidth(), getHeight());\n        mBorderRadius = Math.min((mBorderRect.height() - mBorderWidth) / 2, (mBorderRect.width() - mBorderWidth) / 2);\n\n        mDrawableRect.set(mBorderWidth, mBorderWidth, mBorderRect.width() - mBorderWidth, mBorderRect.height() - mBorderWidth);\n        mDrawableRadius = Math.min(mDrawableRect.height() / 2, mDrawableRect.width() / 2);\n\n        updateShaderMatrix();\n        invalidate();\n    }\n\n    private void updateShaderMatrix() {\n        float scale;\n        float dx = 0;\n        float dy = 0;\n\n        mShaderMatrix.set(null);\n\n        if (mBitmapWidth * mDrawableRect.height() > mDrawableRect.width() * mBitmapHeight) {\n            scale = mDrawableRect.height() / (float) mBitmapHeight;\n            dx = (mDrawableRect.width() - mBitmapWidth * scale) * 0.5f;\n        } else {\n            scale = mDrawableRect.width() / (float) mBitmapWidth;\n            dy = (mDrawableRect.height() - mBitmapHeight * scale) * 0.5f;\n        }\n\n        mShaderMatrix.setScale(scale, scale);\n        mShaderMatrix.postTranslate((int) (dx + 0.5f) + mBorderWidth, (int) (dy + 0.5f) + mBorderWidth);\n\n        mBitmapShader.setLocalMatrix(mShaderMatrix);\n    }\n\n}"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/view/CommonGestures.java",
    "content": "/*\n * Copyright (C) 2012 YIXIA.COM\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage com.cjj.bb.view;\n\n\nimport android.annotation.SuppressLint;\nimport android.app.Activity;\nimport android.support.v4.view.GestureDetectorCompat;\nimport android.view.GestureDetector.SimpleOnGestureListener;\nimport android.view.MotionEvent;\nimport android.view.ScaleGestureDetector;\n\nimport com.cjj.bb.utils.DeviceUtils;\n\n\npublic class CommonGestures {\n\tpublic static final int SCALE_STATE_BEGIN = 0;\n\tpublic static final int SCALE_STATE_SCALEING = 1;\n\tpublic static final int SCALE_STATE_END = 2;\n\n\tprivate boolean mGestureEnabled;\n\n\tprivate GestureDetectorCompat mDoubleTapGestureDetector;\n\tprivate GestureDetectorCompat mTapGestureDetector;\n\tprivate ScaleGestureDetector mScaleDetector;\n\n\tprivate Activity mContext;\n\n\tpublic CommonGestures(Activity ctx) {\n\t\tmContext = ctx;\n\t\tmDoubleTapGestureDetector = new GestureDetectorCompat(mContext, new DoubleTapGestureListener());\n\t\tmTapGestureDetector = new GestureDetectorCompat(mContext, new TapGestureListener());\n\t\tmScaleDetector = new ScaleGestureDetector(mContext, new ScaleDetectorListener());\n\t}\n\n\tpublic boolean onTouchEvent(MotionEvent event) {\n\t\tif (mListener == null)\n\t\t\treturn false;\n\n\t\tif (mTapGestureDetector.onTouchEvent(event))\n\t\t\treturn true;\n\n\t\tif (event.getPointerCount() > 1) {\n\t\t\ttry {\n\t\t\t\tif (mScaleDetector != null && mScaleDetector.onTouchEvent(event))\n\t\t\t\t\treturn true;\n\t\t\t} catch (Exception e) {\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\t\t}\n\n\t\tif (mDoubleTapGestureDetector.onTouchEvent(event))\n\t\t\treturn true;\n\n\t\tswitch (event.getAction() & MotionEvent.ACTION_MASK) {\n\t\tcase MotionEvent.ACTION_UP:\n\t\t\tmListener.onGestureEnd();\n\t\t\tbreak;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate class TapGestureListener extends SimpleOnGestureListener {\n\t\t@Override\n\t\tpublic boolean onSingleTapConfirmed(MotionEvent event) {\n\t\t\tif (mListener != null)\n\t\t\t\tmListener.onSingleTap();\n\t\t\treturn true;\n\t\t}\n\n\t\t@Override\n\t\tpublic void onLongPress(MotionEvent e) {\n\t\t\tif (mListener != null && mGestureEnabled)\n\t\t\t\tmListener.onLongPress();\n\t\t}\n\t}\n\n\t@SuppressLint(\"NewApi\")\n\tprivate class ScaleDetectorListener implements ScaleGestureDetector.OnScaleGestureListener {\n\t\t@Override\n\t\tpublic boolean onScale(ScaleGestureDetector detector) {\n\t\t\tif (mListener != null && mGestureEnabled)\n\t\t\t\tmListener.onScale(detector.getScaleFactor(), SCALE_STATE_SCALEING);\n\t\t\treturn true;\n\t\t}\n\n\t\t@Override\n\t\tpublic void onScaleEnd(ScaleGestureDetector detector) {\n\t\t\tif (mListener != null && mGestureEnabled)\n\t\t\t\tmListener.onScale(0F, SCALE_STATE_END);\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean onScaleBegin(ScaleGestureDetector detector) {\n\t\t\tif (mListener != null && mGestureEnabled)\n\t\t\t\tmListener.onScale(0F, SCALE_STATE_BEGIN);\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tprivate class DoubleTapGestureListener extends SimpleOnGestureListener {\n\t\tprivate boolean mDown = false;\n\n\t\t@Override\n\t\tpublic boolean onDown(MotionEvent event) {\n\t\t\tmDown = true;\n\t\t\treturn super.onDown(event);\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {\n\t\t\tif (mListener != null && mGestureEnabled && e1 != null && e2 != null) {\n\t\t\t\tif (mDown) {\n\t\t\t\t\tmListener.onGestureBegin();\n\t\t\t\t\tmDown = false;\n\t\t\t\t}\n\t\t\t\tfloat mOldX = e1.getX(), mOldY = e1.getY();\n\t\t\t\tint windowWidth = DeviceUtils.getScreenWidth(mContext);\n\t\t\t\tint windowHeight = DeviceUtils.getScreenHeight(mContext);\n\t\t\t\tif (Math.abs(e2.getY(0) - mOldY) * 2 > Math.abs(e2.getX(0) - mOldX)) {\n\t\t\t\t\tif (mOldX > windowWidth * 4.0 / 5) {\n\t\t\t\t\t\tmListener.onRightSlide((mOldY - e2.getY(0)) / windowHeight);\n\t\t\t\t\t} else if (mOldX < windowWidth / 5.0) {\n\t\t\t\t\t\tmListener.onLeftSlide((mOldY - e2.getY(0)) / windowHeight);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn super.onScroll(e1, e2, distanceX, distanceY);\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean onDoubleTap(MotionEvent event) {\n\t\t\tif (mListener != null && mGestureEnabled)\n\t\t\t\tmListener.onDoubleTap();\n\t\t\treturn super.onDoubleTap(event);\n\t\t}\n\t}\n\n\tpublic void setTouchListener(TouchListener l, boolean enable) {\n\t\tmListener = l;\n\t\tmGestureEnabled = enable;\n\t}\n\n\tprivate TouchListener mListener;\n\n\tpublic interface TouchListener {\n\t\tpublic void onGestureBegin();\n\n\t\tpublic void onGestureEnd();\n\n\t\tpublic void onLeftSlide(float percent);\n\n\t\tpublic void onRightSlide(float percent);\n\n\t\tpublic void onSingleTap();\n\n\t\tpublic void onDoubleTap();\n\n\t\tpublic void onScale(float scaleFactor, int state);\n\n\t\tpublic void onLongPress();\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/view/FileUtils.java",
    "content": "package com.cjj.bb.view;\n\nimport java.io.File;\nimport java.io.IOException;\nimport java.util.Arrays;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.Map;\n\n\nimport android.os.Environment;\nimport android.os.StatFs;\nimport android.util.Log;\n\nimport com.cjj.bb.utils.StringUtils;\n\npublic class FileUtils {\n\t// http://www.fileinfo.com/filetypes/video , \"dat\" , \"bin\" , \"rms\"\n\tpublic static final String[] VIDEO_EXTENSIONS = { \"264\", \"3g2\", \"3gp\",\n\t\t\t\"3gp2\", \"3gpp\", \"3gpp2\", \"3mm\", \"3p2\", \"60d\", \"aep\", \"ajp\", \"amv\",\n\t\t\t\"amx\", \"arf\", \"asf\", \"asx\", \"avb\", \"avd\", \"avi\", \"avs\", \"avs\",\n\t\t\t\"axm\", \"bdm\", \"bdmv\", \"bik\", \"bix\", \"bmk\", \"box\", \"bs4\", \"bsf\",\n\t\t\t\"byu\", \"camre\", \"clpi\", \"cpi\", \"cvc\", \"d2v\", \"d3v\", \"dav\", \"dce\",\n\t\t\t\"dck\", \"ddat\", \"dif\", \"dir\", \"divx\", \"dlx\", \"dmb\", \"dmsm\", \"dmss\",\n\t\t\t\"dnc\", \"dpg\", \"dream\", \"dsy\", \"dv\", \"dv-avi\", \"dv4\", \"dvdmedia\",\n\t\t\t\"dvr-ms\", \"dvx\", \"dxr\", \"dzm\", \"dzp\", \"dzt\", \"evo\", \"eye\", \"f4p\",\n\t\t\t\"f4v\", \"fbr\", \"fbr\", \"fbz\", \"fcp\", \"flc\", \"flh\", \"fli\", \"flv\",\n\t\t\t\"flx\", \"gl\", \"grasp\", \"gts\", \"gvi\", \"gvp\", \"hdmov\", \"hkm\", \"ifo\",\n\t\t\t\"imovi\", \"imovi\", \"iva\", \"ivf\", \"ivr\", \"ivs\", \"izz\", \"izzy\", \"jts\",\n\t\t\t\"lsf\", \"lsx\", \"m15\", \"m1pg\", \"m1v\", \"m21\", \"m21\", \"m2a\", \"m2p\",\n\t\t\t\"m2t\", \"m2ts\", \"m2v\", \"m4e\", \"m4u\", \"m4v\", \"m75\", \"meta\", \"mgv\",\n\t\t\t\"mj2\", \"mjp\", \"mjpg\", \"mkv\", \"mmv\", \"mnv\", \"mod\", \"modd\", \"moff\",\n\t\t\t\"moi\", \"moov\", \"mov\", \"movie\", \"mp21\", \"mp21\", \"mp2v\", \"mp4\",\n\t\t\t\"mp4v\", \"mpe\", \"mpeg\", \"mpeg4\", \"mpf\", \"mpg\", \"mpg2\", \"mpgin\",\n\t\t\t\"mpl\", \"mpls\", \"mpv\", \"mpv2\", \"mqv\", \"msdvd\", \"msh\", \"mswmm\",\n\t\t\t\"mts\", \"mtv\", \"mvb\", \"mvc\", \"mvd\", \"mve\", \"mvp\", \"mxf\", \"mys\",\n\t\t\t\"ncor\", \"nsv\", \"nvc\", \"ogm\", \"ogv\", \"ogx\", \"osp\", \"par\", \"pds\",\n\t\t\t\"pgi\", \"piv\", \"playlist\", \"pmf\", \"prel\", \"pro\", \"prproj\", \"psh\",\n\t\t\t\"pva\", \"pvr\", \"pxv\", \"qt\", \"qtch\", \"qtl\", \"qtm\", \"qtz\",\n\t\t\t\"rcproject\", \"rdb\", \"rec\", \"rm\", \"rmd\", \"rmp\", \"rmvb\", \"roq\", \"rp\",\n\t\t\t\"rts\", \"rts\", \"rum\", \"rv\", \"sbk\", \"sbt\", \"scm\", \"scm\", \"scn\",\n\t\t\t\"sec\", \"seq\", \"sfvidcap\", \"smil\", \"smk\", \"sml\", \"smv\", \"spl\",\n\t\t\t\"ssm\", \"str\", \"stx\", \"svi\", \"swf\", \"swi\", \"swt\", \"tda3mt\", \"tivo\",\n\t\t\t\"tix\", \"tod\", \"tp\", \"tp0\", \"tpd\", \"tpr\", \"trp\", \"ts\", \"tvs\", \"vc1\",\n\t\t\t\"vcr\", \"vcv\", \"vdo\", \"vdr\", \"veg\", \"vem\", \"vf\", \"vfw\", \"vfz\",\n\t\t\t\"vgz\", \"vid\", \"viewlet\", \"viv\", \"vivo\", \"vlab\", \"vob\", \"vp3\",\n\t\t\t\"vp6\", \"vp7\", \"vpj\", \"vro\", \"vsp\", \"w32\", \"wcp\", \"webm\", \"wm\",\n\t\t\t\"wmd\", \"wmmp\", \"wmv\", \"wmx\", \"wp3\", \"wpl\", \"wtv\", \"wvx\", \"xfl\",\n\t\t\t\"xvid\", \"yuv\", \"zm1\", \"zm2\", \"zm3\", \"zmv\" };\n\t// http://www.fileinfo.com/filetypes/audio , \"spx\" , \"mid\" , \"sf\"\n\tpublic static final String[] AUDIO_EXTENSIONS = { \"4mp\", \"669\", \"6cm\",\n\t\t\t\"8cm\", \"8med\", \"8svx\", \"a2m\", \"aa\", \"aa3\", \"aac\", \"aax\", \"abc\",\n\t\t\t\"abm\", \"ac3\", \"acd\", \"acd-bak\", \"acd-zip\", \"acm\", \"act\", \"adg\",\n\t\t\t\"afc\", \"agm\", \"ahx\", \"aif\", \"aifc\", \"aiff\", \"ais\", \"akp\", \"al\",\n\t\t\t\"alaw\", \"all\", \"amf\", \"amr\", \"ams\", \"ams\", \"aob\", \"ape\", \"apf\",\n\t\t\t\"apl\", \"ase\", \"at3\", \"atrac\", \"au\", \"aud\", \"aup\", \"avr\", \"awb\",\n\t\t\t\"band\", \"bap\", \"bdd\", \"box\", \"bun\", \"bwf\", \"c01\", \"caf\", \"cda\",\n\t\t\t\"cdda\", \"cdr\", \"cel\", \"cfa\", \"cidb\", \"cmf\", \"copy\", \"cpr\", \"cpt\",\n\t\t\t\"csh\", \"cwp\", \"d00\", \"d01\", \"dcf\", \"dcm\", \"dct\", \"ddt\", \"dewf\",\n\t\t\t\"df2\", \"dfc\", \"dig\", \"dig\", \"dls\", \"dm\", \"dmf\", \"dmsa\", \"dmse\",\n\t\t\t\"drg\", \"dsf\", \"dsm\", \"dsp\", \"dss\", \"dtm\", \"dts\", \"dtshd\", \"dvf\",\n\t\t\t\"dwd\", \"ear\", \"efa\", \"efe\", \"efk\", \"efq\", \"efs\", \"efv\", \"emd\",\n\t\t\t\"emp\", \"emx\", \"esps\", \"f2r\", \"f32\", \"f3r\", \"f4a\", \"f64\", \"far\",\n\t\t\t\"fff\", \"flac\", \"flp\", \"fls\", \"frg\", \"fsm\", \"fzb\", \"fzf\", \"fzv\",\n\t\t\t\"g721\", \"g723\", \"g726\", \"gig\", \"gp5\", \"gpk\", \"gsm\", \"gsm\", \"h0\",\n\t\t\t\"hdp\", \"hma\", \"hsb\", \"ics\", \"iff\", \"imf\", \"imp\", \"ins\", \"ins\",\n\t\t\t\"it\", \"iti\", \"its\", \"jam\", \"k25\", \"k26\", \"kar\", \"kin\", \"kit\",\n\t\t\t\"kmp\", \"koz\", \"koz\", \"kpl\", \"krz\", \"ksc\", \"ksf\", \"kt2\", \"kt3\",\n\t\t\t\"ktp\", \"l\", \"la\", \"lqt\", \"lso\", \"lvp\", \"lwv\", \"m1a\", \"m3u\", \"m4a\",\n\t\t\t\"m4b\", \"m4p\", \"m4r\", \"ma1\", \"mdl\", \"med\", \"mgv\", \"midi\", \"miniusf\",\n\t\t\t\"mka\", \"mlp\", \"mmf\", \"mmm\", \"mmp\", \"mo3\", \"mod\", \"mp1\", \"mp2\",\n\t\t\t\"mp3\", \"mpa\", \"mpc\", \"mpga\", \"mpu\", \"mp_\", \"mscx\", \"mscz\", \"msv\",\n\t\t\t\"mt2\", \"mt9\", \"mte\", \"mti\", \"mtm\", \"mtp\", \"mts\", \"mus\", \"mws\",\n\t\t\t\"mxl\", \"mzp\", \"nap\", \"nki\", \"nra\", \"nrt\", \"nsa\", \"nsf\", \"nst\",\n\t\t\t\"ntn\", \"nvf\", \"nwc\", \"odm\", \"oga\", \"ogg\", \"okt\", \"oma\", \"omf\",\n\t\t\t\"omg\", \"omx\", \"ots\", \"ove\", \"ovw\", \"pac\", \"pat\", \"pbf\", \"pca\",\n\t\t\t\"pcast\", \"pcg\", \"pcm\", \"peak\", \"phy\", \"pk\", \"pla\", \"pls\", \"pna\",\n\t\t\t\"ppc\", \"ppcx\", \"prg\", \"prg\", \"psf\", \"psm\", \"ptf\", \"ptm\", \"pts\",\n\t\t\t\"pvc\", \"qcp\", \"r\", \"r1m\", \"ra\", \"ram\", \"raw\", \"rax\", \"rbs\", \"rcy\",\n\t\t\t\"rex\", \"rfl\", \"rmf\", \"rmi\", \"rmj\", \"rmm\", \"rmx\", \"rng\", \"rns\",\n\t\t\t\"rol\", \"rsn\", \"rso\", \"rti\", \"rtm\", \"rts\", \"rvx\", \"rx2\", \"s3i\",\n\t\t\t\"s3m\", \"s3z\", \"saf\", \"sam\", \"sb\", \"sbg\", \"sbi\", \"sbk\", \"sc2\", \"sd\",\n\t\t\t\"sd\", \"sd2\", \"sd2f\", \"sdat\", \"sdii\", \"sds\", \"sdt\", \"sdx\", \"seg\",\n\t\t\t\"seq\", \"ses\", \"sf2\", \"sfk\", \"sfl\", \"shn\", \"sib\", \"sid\", \"sid\",\n\t\t\t\"smf\", \"smp\", \"snd\", \"snd\", \"snd\", \"sng\", \"sng\", \"sou\", \"sppack\",\n\t\t\t\"sprg\", \"sseq\", \"sseq\", \"ssnd\", \"stm\", \"stx\", \"sty\", \"svx\", \"sw\",\n\t\t\t\"swa\", \"syh\", \"syw\", \"syx\", \"td0\", \"tfmx\", \"thx\", \"toc\", \"tsp\",\n\t\t\t\"txw\", \"u\", \"ub\", \"ulaw\", \"ult\", \"ulw\", \"uni\", \"usf\", \"usflib\",\n\t\t\t\"uw\", \"uwf\", \"vag\", \"val\", \"vc3\", \"vmd\", \"vmf\", \"vmf\", \"voc\",\n\t\t\t\"voi\", \"vox\", \"vpm\", \"vqf\", \"vrf\", \"vyf\", \"w01\", \"wav\", \"wav\",\n\t\t\t\"wave\", \"wax\", \"wfb\", \"wfd\", \"wfp\", \"wma\", \"wow\", \"wpk\", \"wproj\",\n\t\t\t\"wrk\", \"wus\", \"wut\", \"wv\", \"wvc\", \"wve\", \"wwu\", \"xa\", \"xa\", \"xfs\",\n\t\t\t\"xi\", \"xm\", \"xmf\", \"xmi\", \"xmz\", \"xp\", \"xrns\", \"xsb\", \"xspf\", \"xt\",\n\t\t\t\"xwb\", \"ym\", \"zvd\", \"zvr\" };\n\n\tprivate static final HashSet<String> mHashVideo;\n\tprivate static final HashSet<String> mHashAudio;\n\tprivate static final double KB = 1024.0;\n\tprivate static final double MB = KB * KB;\n\tprivate static final double GB = KB * KB * KB;\n\n\tstatic {\n\t\tmHashVideo = new HashSet<String>(Arrays.asList(VIDEO_EXTENSIONS));\n\t\tmHashAudio = new HashSet<String>(Arrays.asList(AUDIO_EXTENSIONS));\n\t}\n\n\t/** 是否是音频或者视频 */\n\tpublic static boolean isVideoOrAudio(File f) {\n\t\tfinal String ext = getFileExtension(f);\n\t\treturn mHashVideo.contains(ext) || mHashAudio.contains(ext);\n\t}\n\n\tpublic static boolean isVideoOrAudio(String f) {\n\t\tfinal String ext = getUrlExtension(f);\n\t\treturn mHashVideo.contains(ext) || mHashAudio.contains(ext);\n\t}\n\n\tpublic static boolean isVideo(File f) {\n\t\tfinal String ext = getFileExtension(f);\n\t\treturn mHashVideo.contains(ext);\n\t}\n\n\t/** 获取文件后缀 */\n\tpublic static String getFileExtension(File f) {\n\t\tif (f != null) {\n\t\t\tString filename = f.getName();\n\t\t\tint i = filename.lastIndexOf('.');\n\t\t\tif (i > 0 && i < filename.length() - 1) {\n\t\t\t\treturn filename.substring(i + 1).toLowerCase();\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static String getUrlFileName(String url) {\n\t\tint slashIndex = url.lastIndexOf('/');\n\t\tint dotIndex = url.lastIndexOf('.');\n\t\tString filenameWithoutExtension;\n\t\tif (dotIndex == -1) {\n\t\t\tfilenameWithoutExtension = url.substring(slashIndex + 1);\n\t\t} else {\n\t\t\tfilenameWithoutExtension = url.substring(slashIndex + 1, dotIndex);\n\t\t}\n\t\treturn filenameWithoutExtension;\n\t}\n\n\tpublic static String getUrlExtension(String url) {\n\t\tif (!StringUtils.isEmpty(url)) {\n\t\t\tint i = url.lastIndexOf('.');\n\t\t\tif (i > 0 && i < url.length() - 1) {\n\t\t\t\treturn url.substring(i + 1).toLowerCase();\n\t\t\t}\n\t\t}\n\t\treturn \"\";\n\t}\n\n\tpublic static String getFileNameNoEx(String filename) {\n\t\tif ((filename != null) && (filename.length() > 0)) {\n\t\t\tint dot = filename.lastIndexOf('.');\n\t\t\tif ((dot > -1) && (dot < (filename.length()))) {\n\t\t\t\treturn filename.substring(0, dot);\n\t\t\t}\n\t\t}\n\t\treturn filename;\n\t}\n\n\tpublic static String showFileSize(long size) {\n\t\tString fileSize;\n\t\tif (size < KB)\n\t\t\tfileSize = size + \"B\";\n\t\telse if (size < MB)\n\t\t\tfileSize = String.format(\"%.1f\", size / KB) + \"KB\";\n\t\telse if (size < GB)\n\t\t\tfileSize = String.format(\"%.1f\", size / MB) + \"MB\";\n\t\telse\n\t\t\tfileSize = String.format(\"%.1f\", size / GB) + \"GB\";\n\n\t\treturn fileSize;\n\t}\n\n\t/** 显示SD卡剩余空间 */\n\tpublic static String showFileAvailable() {\n\t\tString result = \"\";\n\t\tif (Environment.MEDIA_MOUNTED.equals(Environment\n\t\t\t\t.getExternalStorageState())) {\n\t\t\tStatFs sf = new StatFs(Environment.getExternalStorageDirectory()\n\t\t\t\t\t.getPath());\n\t\t\tlong blockSize = sf.getBlockSize();\n\t\t\tlong blockCount = sf.getBlockCount();\n\t\t\tlong availCount = sf.getAvailableBlocks();\n\t\t\treturn showFileSize(availCount * blockSize) + \" / \"\n\t\t\t\t\t+ showFileSize(blockSize * blockCount);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/** 如果不存在就创建 */\n\tpublic static boolean createIfNoExists(String path) {\n\t\tFile file = new File(path);\n\t\tboolean mk = false;\n\t\tif (!file.exists()) {\n\t\t\tmk = file.mkdirs();\n\t\t}\n\t\treturn mk;\n\t}\n\n\tprivate static HashMap<String, String> mMimeType = new HashMap<String, String>();\n\tstatic {\n\t\tmMimeType.put(\"M1V\", \"video/mpeg\");\n\t\tmMimeType.put(\"MP2\", \"video/mpeg\");\n\t\tmMimeType.put(\"MPE\", \"video/mpeg\");\n\t\tmMimeType.put(\"MPG\", \"video/mpeg\");\n\t\tmMimeType.put(\"MPEG\", \"video/mpeg\");\n\t\tmMimeType.put(\"MP4\", \"video/mp4\");\n\t\tmMimeType.put(\"M4V\", \"video/mp4\");\n\t\tmMimeType.put(\"3GP\", \"video/3gpp\");\n\t\tmMimeType.put(\"3GPP\", \"video/3gpp\");\n\t\tmMimeType.put(\"3G2\", \"video/3gpp2\");\n\t\tmMimeType.put(\"3GPP2\", \"video/3gpp2\");\n\t\tmMimeType.put(\"MKV\", \"video/x-matroska\");\n\t\tmMimeType.put(\"WEBM\", \"video/x-matroska\");\n\t\tmMimeType.put(\"MTS\", \"video/mp2ts\");\n\t\tmMimeType.put(\"TS\", \"video/mp2ts\");\n\t\tmMimeType.put(\"TP\", \"video/mp2ts\");\n\t\tmMimeType.put(\"WMV\", \"video/x-ms-wmv\");\n\t\tmMimeType.put(\"ASF\", \"video/x-ms-asf\");\n\t\tmMimeType.put(\"ASX\", \"video/x-ms-asf\");\n\t\tmMimeType.put(\"FLV\", \"video/x-flv\");\n\t\tmMimeType.put(\"MOV\", \"video/quicktime\");\n\t\tmMimeType.put(\"QT\", \"video/quicktime\");\n\t\tmMimeType.put(\"RM\", \"video/x-pn-realvideo\");\n\t\tmMimeType.put(\"RMVB\", \"video/x-pn-realvideo\");\n\t\tmMimeType.put(\"VOB\", \"video/dvd\");\n\t\tmMimeType.put(\"DAT\", \"video/dvd\");\n\t\tmMimeType.put(\"AVI\", \"video/x-divx\");\n\t\tmMimeType.put(\"OGV\", \"video/ogg\");\n\t\tmMimeType.put(\"OGG\", \"video/ogg\");\n\t\tmMimeType.put(\"VIV\", \"video/vnd.vivo\");\n\t\tmMimeType.put(\"VIVO\", \"video/vnd.vivo\");\n\t\tmMimeType.put(\"WTV\", \"video/wtv\");\n\t\tmMimeType.put(\"AVS\", \"video/avs-video\");\n\t\tmMimeType.put(\"SWF\", \"video/x-shockwave-flash\");\n\t\tmMimeType.put(\"YUV\", \"video/x-raw-yuv\");\n\t}\n\n\t/** 获取MIME */\n\tpublic static String getMimeType(String path) {\n\t\tint lastDot = path.lastIndexOf(\".\");\n\t\tif (lastDot < 0)\n\t\t\treturn null;\n\n\t\treturn mMimeType.get(path.substring(lastDot + 1).toUpperCase());\n\t}\n\n\t/** 多个SD卡时 取外置SD卡 */\n\tpublic static String getExternalStorageDirectory() {\n\t\t// 参考文章\n\t\t// http://blog.csdn.net/bbmiku/article/details/7937745\n\t\tMap<String, String> map = System.getenv();\n\t\tString[] values = new String[map.values().size()];\n\t\tmap.values().toArray(values);\n\t\tString path = values[values.length - 1];\n\t\tLog.e(\"nmbb\", \"FileUtils.getExternalStorageDirectory : \" + path);\n\t\tif (path.startsWith(\"/mnt/\")\n\t\t\t\t&& !Environment.getExternalStorageDirectory().getAbsolutePath()\n\t\t\t\t\t\t.equals(path))\n\t\t\treturn path;\n\t\telse\n\t\t\treturn null;\n\t}\n\n\tpublic static String getCanonical(File f) {\n\t\tif (f == null)\n\t\t\treturn null;\n\n\t\ttry {\n\t\t\treturn f.getCanonicalPath();\n\t\t} catch (IOException e) {\n\t\t\treturn f.getAbsolutePath();\n\t\t}\n\t}\n\t\n\tpublic static boolean sdAvailable() {\n\t\treturn Environment.MEDIA_MOUNTED_READ_ONLY.equals(Environment\n\t\t\t\t.getExternalStorageState())\n\t\t\t\t|| Environment.MEDIA_MOUNTED.equals(Environment\n\t\t\t\t\t\t.getExternalStorageState());\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/view/LeftSliderLayout.java",
    "content": "package com.cjj.bb.view;\n\nimport android.content.Context;\nimport android.graphics.Rect;\nimport android.util.AttributeSet;\nimport android.view.MotionEvent;\nimport android.view.VelocityTracker;\nimport android.view.View;\nimport android.view.ViewConfiguration;\nimport android.view.ViewGroup;\nimport android.widget.Scroller;\n/**\n * 左边侧滑\n * @author Administrator\n *\n */\npublic class LeftSliderLayout extends ViewGroup {\n\n    private Scroller mScroller;\n    private VelocityTracker mVelocityTracker;\n\n    /**\n     * Constant value for touch state\n     * TOUCH_STATE_REST : no touch\n     * TOUCH_STATE_SCROLLING : scrolling\n     */\n    private static final int TOUCH_STATE_REST = 0;\n    private static final int TOUCH_STATE_SCROLLING = 1;\n    private int mTouchState = TOUCH_STATE_REST;\n    \n    /**\n     * Distance in pixels a touch can wander before we think the user is scrolling\n     */\n    private int mTouchSlop;\n    \n    /**\n     * Values for saving axis of the last touch event.\n     */\n    private float mLastMotionX;\n    private float mLastMotionY;\n    \n    /**\n     * Values for VelocityTracker to compute current velocity.\n     * VELOCITY_UNITS in dp\n     * mVelocityUnits in px\n     */\n    private static final int VELOCITY_UNITS = 1000;\n    private int mVelocityUnits;\t\n    \n    /**\n     * The minimum velocity for determining the direction.\n     * MINOR_VELOCITY in dp\n     * mMinorVelocity in px\n     */\n    private static final float MINOR_VELOCITY = 150.0f;\n    private int mMinorVelocity;\t\t\t\t\t\t\t\t\n    \n    /**\n     * The width of Sliding distance from left. \n     * And it should be the same with the width of the View below SliderLayout in a FrameLayout.\n     * DOCK_WIDTH in dp\n     * mDockWidth in px\n     */\n    private static final float SLIDING_WIDTH = 180.0f;\t\t\t\n    private int mSlidingWidth;\t\t\t\t\t\t\t\t\t\n    \n    /**\n     * The default values of shadow.\n     * VELOCITY_UNITS in dp\n     * mVelocityUnits in px\n     */\n    private static final float DEF_SHADOW_WIDTH = 10.0f;\t\t\n    private int mDefShadowWidth;\t\t\t\t\t\t\t\t\n\n    /**\n     * Value for checking a touch event is completed.\n     */\n    private boolean mIsTouchEventDone = false;\t\t\t\t\n    \n    /**\n     * Value for checking slider is open.\n     */\n    private boolean mIsOpen = false;\t\t\t\t\t\t\n    \n    /**\n     * Value for saving the last offset of scroller ’ x-axis.\n     */\n    private int mSaveScrollX = 0;\t\t\t\t\t\t\t\n    \n    /**\n     * Value for checking slider is allowed to slide.\n     */\n    private boolean mEnableSlide = true;\t\t\t\t\t\n    \n    private View mMainChild = null;\n    private OnLeftSliderLayoutStateListener mListener = null;\n\n\t/**\n\t * Instantiates a new LeftSliderLayout.\n\t *\n\t * @param context the associated Context\n\t * @param attrs AttributeSet\n\t */\n    public LeftSliderLayout(Context context, AttributeSet attrs) {\n    \tthis(context, attrs, 0);\n    }\n\n\t/**\n\t * Instantiates a new LeftSliderLayout.\n\t *\n\t * @param context the associated Context\n\t * @param attrs AttributeSet\n\t * @param defStyle Style\n\t */\n    public LeftSliderLayout(Context context, AttributeSet attrs, int defStyle) {\n    \tsuper(context, attrs, defStyle);\n        mScroller = new Scroller(context);\n        mTouchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop();\n        \n        /**\n         * Convert values in dp to values in px;\n         */\n        final float fDensity = getResources().getDisplayMetrics().density;\n        mVelocityUnits = (int) (VELOCITY_UNITS * fDensity + 0.5f);\n        mMinorVelocity = (int) (MINOR_VELOCITY * fDensity + 0.5f);\n        mSlidingWidth = (int) (SLIDING_WIDTH * fDensity + 0.5f);\n        mDefShadowWidth = (int) (DEF_SHADOW_WIDTH * fDensity + 0.5f);\n    }\n    \n    @Override\n\tprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {\n    \tsuper.onMeasure(widthMeasureSpec, heightMeasureSpec);\n    \t\n    \t// check Measure Mode is Exactly.\n    \tfinal int widthMode = MeasureSpec.getMode(widthMeasureSpec);\n        if (widthMode != MeasureSpec.EXACTLY) {\n            throw new IllegalStateException(\"LeftSliderLayout only canmCurScreen run at EXACTLY mode!\");\n        }\n        final int heightMode = MeasureSpec.getMode(heightMeasureSpec);\n        if (heightMode != MeasureSpec.EXACTLY) {\n        \tthrow new IllegalStateException(\"LeftSliderLayout only can run at EXACTLY mode!\");\n        }\n\n        // measure child views\n        int nCount = getChildCount();\n        for (int i = 2; i < nCount; i++) {\n        \tremoveViewAt(i);\n        }\n        nCount = getChildCount();\n        if (nCount > 0) {\n        \tif (nCount > 1) {\n        \t\tmMainChild = getChildAt(1);\n        \t\tgetChildAt(0).measure(widthMeasureSpec, heightMeasureSpec);\n\t\t\t} else {\n\t\t\t\tmMainChild = getChildAt(0);\n\t\t\t}\n        \tmMainChild.measure(widthMeasureSpec, heightMeasureSpec);\n\t\t}\n        \n        // Set the scrolled position \n        scrollTo(mSaveScrollX, 0);\n    }\n    \n\t@Override\n\tprotected void onLayout(boolean changed, int l, int t, int r, int b) {\n\t\tfinal int nCount = getChildCount();\n\t\tif (nCount <= 0) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t// Set the size and position of Main Child\n\t\tif (mMainChild != null) {\n\t\t\tmMainChild.layout(\n\t\t\t\tl,\n\t\t\t\tt,\n\t\t\t\tl + mMainChild.getMeasuredWidth(),\n\t\t\t\tt + mMainChild.getMeasuredHeight());\n\t\t}\n\t\t\n\t\t// Set the size and position of Shadow Child\n\t\tif (nCount > 1) {\n\t\t\tint nLeftChildWidth = 0;\n\t\t\tView leftChild = getChildAt(0);\n\t\t\tLayoutParams layoutParams = leftChild.getLayoutParams();\n\t\t\tif (layoutParams.width == LayoutParams.FILL_PARENT\n\t\t\t\t\t|| layoutParams.width == LayoutParams.MATCH_PARENT) {\n\t\t\t\tnLeftChildWidth = mDefShadowWidth;\n\t\t\t} else {\n\t\t\t\tnLeftChildWidth = layoutParams.width;\n\t\t\t}\n\t\t\tleftChild.layout(\n\t\t\t\t\tl - nLeftChildWidth,\n\t\t\t\t\tt,\n\t\t\t\t\tl,\n\t\t\t\t\tt + leftChild.getMeasuredHeight());\n\t\t}\n\t}\n\t\n    @Override\n\tpublic void computeScroll() {\n\t\tif (mScroller.computeScrollOffset()) {\n\t\t\tscrollTo(mScroller.getCurrX(), mScroller.getCurrY());\n\t\t\tpostInvalidate();\n\t\t}\n    }\n\n    @Override\n\tpublic boolean onTouchEvent(MotionEvent event) { \n    \t\n    \tint nCurScrollX = getScrollX();\n    \t\n    \t// check touch point is in the rectangle of Main Child\n    \tif (mMainChild != null\n    \t\t\t&& mTouchState != TOUCH_STATE_SCROLLING\n    \t\t\t&& mIsTouchEventDone) {\n\t\t\tRect rect = new Rect();\n\t\t\tmMainChild.getHitRect(rect);\n\t\t\tif (!rect.contains((int)event.getX() + nCurScrollX, (int)event.getY())) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n    \t\n    \tif (mVelocityTracker == null) {\n            mVelocityTracker = VelocityTracker.obtain();\n        }\n\n        mVelocityTracker.addMovement(event);\n        \n        final int action = event.getAction();\n        final float x = event.getX();\n        \n        switch (action) {\n        case MotionEvent.ACTION_DOWN: {\n        \tif (!mScroller.isFinished()) {\n        \t\tmScroller.abortAnimation();\n        \t}\n        \t\n        \tmIsTouchEventDone = false;\n            mLastMotionX = x;\n            break;\n        }\n\n        case MotionEvent.ACTION_MOVE: {\n        \t// check slider is allowed to slide.\n        \tif (!mEnableSlide) {\n\t\t\t\tbreak;\n\t\t\t}\n        \t\n        \t// compute the x-axis offset from last point to current point\n            int deltaX = (int) (mLastMotionX - x);\n            if (nCurScrollX + deltaX < getMinScrollX()) {\n        \t\tdeltaX = getMinScrollX() - nCurScrollX;\n        \t\tmLastMotionX = mLastMotionX - deltaX;\n\t\t\t} else if (nCurScrollX + deltaX > getMaxScrollX()) {\n        \t\tdeltaX = getMaxScrollX() - nCurScrollX;\n        \t\tmLastMotionX = mLastMotionX - deltaX;\n\t\t\t} else {\n\t\t\t\tmLastMotionX = x;\n\t\t\t}\n        \t\n            // Move view to the current point\n        \tif (deltaX != 0) {\n        \t\tscrollBy(deltaX, 0);\n\t\t\t}\n        \t\n        \t// Save the scrolled position \n        \tmSaveScrollX = getScrollX();\n        \tbreak;\n        }\n\n        case MotionEvent.ACTION_CANCEL: \n        case MotionEvent.ACTION_UP: {\n        \t\n        \t// check slider is allowed to slide.\n        \tif (!mEnableSlide) {\n\t\t\t\tbreak;\n\t\t\t}\n        \t\n        \tfinal VelocityTracker velocityTracker = mVelocityTracker;\n        \tvelocityTracker.computeCurrentVelocity(mVelocityUnits);\n        \t\n        \t// Set open or close state, when get ACTION_UP or ACTION_CANCEL event.\n        \tif (nCurScrollX < 0) {\n        \t\tint velocityX = (int) velocityTracker.getXVelocity();\n        \t\tif (velocityX > mMinorVelocity) {\n\t            \tscrollByWithAnim(getMinScrollX() - nCurScrollX);\n\t            \tsetState(true);\n\t            }\n\t            else if (velocityX < -mMinorVelocity) {\n\t            \tscrollByWithAnim(-nCurScrollX);\n\t            \tsetState(false);\n\t            } else {\n\t            \tif (nCurScrollX >= getMinScrollX() / 2) {\n\t            \t\tscrollByWithAnim(- nCurScrollX);\n\t\t\t\t\t\tsetState(false);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tscrollByWithAnim(getMinScrollX() - nCurScrollX);\n\t            \t\tsetState(true);\n\t\t\t\t\t}\n\t            }\n\t\t\t} else {\n\t\t\t\tif (nCurScrollX > 0) {\n\t\t\t\t\tscrollByWithAnim(-nCurScrollX);\n\t\t\t\t}\n\t\t\t\tsetState(false);\n\t\t\t}\n        \t\n            if (mVelocityTracker != null) {\n            \tmVelocityTracker.recycle();\n            \tmVelocityTracker = null;\n            }\n\n            mTouchState = TOUCH_STATE_REST;\n            mIsTouchEventDone = true;\n            break;\n        }\n        \n        }\n        return true;\n    }\n\n    @Override\n    public boolean onInterceptTouchEvent(MotionEvent ev) {\n    \t\n        final int action = ev.getAction();\n    \t\n\t\tif (mListener != null && !mListener.OnLeftSliderLayoutInterceptTouch(ev)) {\n\t\t\treturn false;\n\t\t}\n        \n        if ((action == MotionEvent.ACTION_MOVE)\n      \t\t  && (mTouchState != TOUCH_STATE_REST)) {\n                 return true;\n        }\n\n        final float x = ev.getX();\n        final float y = ev.getY();\n        switch (action) {\n        case MotionEvent.ACTION_DOWN:\n                 mLastMotionX = x;\n                 mLastMotionY = y;\n                 mTouchState = mScroller.isFinished() ? TOUCH_STATE_REST : TOUCH_STATE_SCROLLING; \n                 break;\n\n        case MotionEvent.ACTION_MOVE:\n                 final int xDiff = (int) Math.abs(mLastMotionX - x);\n                 if (xDiff > mTouchSlop) { \n                          if (Math.abs(mLastMotionY - y) / Math.abs(mLastMotionX - x) < 1)\n                                   mTouchState = TOUCH_STATE_SCROLLING;\n                }\n                break;\n\n        case MotionEvent.ACTION_CANCEL:\n        case MotionEvent.ACTION_UP:\n                 mTouchState = TOUCH_STATE_REST;\n                 break;\n        }\n        return mTouchState != TOUCH_STATE_REST;\n    }\n    \n    /**\n     * With the horizontal scroll of the animation\n     * \n     * @param nDx x-axis offset\n     */\n    void scrollByWithAnim(int nDx) {\n    \tif (nDx == 0) {\n\t\t\treturn;\n\t\t}\n    \t\n\t\tmScroller.startScroll(getScrollX(), 0, nDx, 0,\n\t\t\t\tMath.abs(nDx));\n\n\t\tinvalidate();\n    }\n\n    /**\n     * Get distance of the maximum horizontal scroll\n     * \n     * @return distance in px\n     */\n    private int getMaxScrollX() {\n    \treturn 0;\n    }\n    \n    /**\n     * Get distance of the minimum horizontal scroll\n     * @return distance in px\n     */\n    private int getMinScrollX() {\n    \treturn -mSlidingWidth;\n    }\n    \n    \n    /**\n     * Open LeftSlideLayout\n     */\n    public void open() {\n    \tif (mEnableSlide) {\n        \tscrollByWithAnim(getMinScrollX() - getScrollX());\n        \tsetState(true);\n\t\t}\n    }\n    \n    /**\n     * Close LeftSlideLayout\n     */\n    public void close() {\n    \tif (mEnableSlide) {\n\t    \tscrollByWithAnim((-1) * getScrollX());\n\t    \tsetState(false);\n    \t}\n    }\n    \n    /**\n     * Determine whether LeftSlideLayout is open\n     * \n     * @return true-open，false-close\n     */\n    public boolean isOpen() {\n    \treturn mIsOpen;\n    }\n    \n    /**\n     * Set state of LeftSliderLayout\n     * \n     * @param bIsOpen the new state\n     */\n    private void setState(boolean bIsOpen) {\n    \tboolean bStateChanged = false;\n    \tif (mIsOpen && !bIsOpen) {\n\t\t\tbStateChanged = true;\n\t\t} else if (!mIsOpen && bIsOpen) {\n\t\t\tbStateChanged = true;\n\t\t}\n    \t\n    \tmIsOpen = bIsOpen;\n    \t\n    \tif (bIsOpen) {\n    \t\tmSaveScrollX = getMaxScrollX();\n\t\t} else {\n\t\t\tmSaveScrollX = 0;\n\t\t}\n    \t\n    \tif (bStateChanged && mListener != null) {\n\t\t\tmListener.OnLeftSliderLayoutStateChanged(bIsOpen);\n\t\t}\n    }\n    \n    /**\n     * enable slide action of LeftSliderLayout \n     * \n     * @param bEnable\n     */\n    public void enableSlide(boolean bEnable) {\n\t\tmEnableSlide = bEnable;\n\t}\n    \n    /**\n     * Set listener to LeftSliderLayout\n     */\n    public void setOnLeftSliderLayoutListener(OnLeftSliderLayoutStateListener listener) {\n    \tmListener = listener;\n    }\n\n    /**\n     * LeftSliderLayout Listener\n     *\n     */\n    public interface OnLeftSliderLayoutStateListener { \n        \n    \t/**\n    \t * Called when LeftSliderLayout’s state has been changed.\n    \t * \n    \t * @param bIsOpen the new state\n    \t */\n    \tpublic void OnLeftSliderLayoutStateChanged(boolean bIsOpen);\n    \t\n    \t/**\n    \t * Called when LeftSliderLayout has got onInterceptTouchEvent.\n    \t * \n    \t * @param ev Touch Event\n    \t * @return true - LeftSliderLayout need to manage the InterceptTouchEvent.\n    \t *         false - LeftSliderLayout don't need to manage the InterceptTouchEvent.\n    \t */\n    \tpublic boolean OnLeftSliderLayoutInterceptTouch(MotionEvent ev);\n   }\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/view/MediaController.java",
    "content": "/*\n * Copyright (C) 2012 YIXIA.COM\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage com.cjj.bb.view;\n\nimport java.lang.ref.WeakReference;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Method;\n\n\nimport android.annotation.SuppressLint;\nimport android.annotation.TargetApi;\nimport android.app.Activity;\nimport android.content.Context;\nimport android.graphics.Rect;\nimport android.graphics.RectF;\nimport android.media.AudioManager;\nimport android.os.Handler;\nimport android.os.Message;\nimport android.view.Gravity;\nimport android.view.KeyEvent;\nimport android.view.LayoutInflater;\nimport android.view.MotionEvent;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport android.view.Window;\nimport android.view.WindowManager;\nimport android.view.animation.Animation;\nimport android.view.animation.Animation.AnimationListener;\nimport android.view.animation.AnimationUtils;\nimport android.widget.FrameLayout;\nimport android.widget.ImageButton;\nimport android.widget.ImageView;\nimport android.widget.PopupWindow;\nimport android.widget.SeekBar;\nimport android.widget.SeekBar.OnSeekBarChangeListener;\nimport android.widget.TextView;\n\nimport com.cjj.bb.R;\nimport com.cjj.bb.utils.DeviceUtils;\nimport com.cjj.bb.utils.FractionalTouchDelegate;\nimport com.cjj.bb.utils.Logger;\nimport com.cjj.bb.utils.StringUtils;\nimport com.cjj.bb.utils.ToastUtils;\n\n\npublic class MediaController extends FrameLayout {\n\tprivate MediaPlayerControl mPlayer;\n\tprivate Activity mContext;\n\tprivate PopupWindow mWindow;\n\tprivate View mAnchor;\n\tprivate View mRoot;\n\tprivate ImageButton mLock;\n\tprivate ImageButton mScreenToggle;\n\tprivate ImageButton mSnapshot;\n\tprivate SeekBar mProgress;\n\tprivate TextView mEndTime, mCurrentTime;\n\tprivate long mDuration;\n\tprivate boolean mShowing;\n\tprivate boolean mScreenLocked = false;\n\tprivate boolean mDragging;\n\tprivate boolean mInstantSeeking = true;\n\tprivate static final int DEFAULT_TIME_OUT = 3000;\n\tprivate static final int DEFAULT_LONG_TIME_SHOW = 120000;\n\tprivate static final int DEFAULT_SEEKBAR_VALUE = 1000;\n\tprivate static final int TIME_TICK_INTERVAL = 1000;\n\tprivate ImageButton mPauseButton;\n\n\tprivate View mMediaController;\n\tprivate View mControlsLayout;\n\tprivate View mSystemInfoLayout;\n\tprivate View mControlsButtons;\n\tprivate View mMenu;\n\tprivate TextView mDateTime;\n\tprivate TextView mDownloadRate;\n\tprivate TextView mFileName;\n\tprivate TextView mBatteryLevel;\n\n\tprivate TextView mOperationInfo;\n\tprivate View mOperationVolLum;\n\tprivate ImageView mVolLumNum;\n\tprivate ImageView mVolLumBg;\n\n\tprivate AudioManager mAM;\n\tprivate int mMaxVolume;\n\tprivate float mBrightness = 0.01f;\n\tprivate int mVolume = 0;\n\tprivate Handler mHandler;\n\n\tprivate Animation mAnimSlideInTop;\n\tprivate Animation mAnimSlideInBottom;\n\tprivate Animation mAnimSlideOutTop;\n\tprivate Animation mAnimSlideOutBottom;\n\n\tprivate CommonGestures mGestures;\n\tprivate int mVideoMode;\n\t\n\tprivate ImageButton mDanmakuSend;\n\tprivate ImageButton mDanmakuSwitch;\n    private boolean mDanmakuShow = true;\n\n\tpublic MediaController(Context context) {\n\t\tsuper(context);\n\t\tmContext = (Activity) context;\n\t\tinitFloatingWindow();\n\t\tinitResources();\n\t}\n\t\n\tpublic void setDanmakuVisible(boolean isVisible){\n\t\tif(isVisible){\n\t\t\tmDanmakuSend.setVisibility(View.VISIBLE);\n\t\t\tmDanmakuSwitch.setVisibility(View.VISIBLE);\n\t\t}else{\n\t\t\tmDanmakuSend.setVisibility(View.GONE);\n\t\t\tmDanmakuSwitch.setVisibility(View.GONE);\n\t\t}\n\t\t\n\t}\n\n\tpublic MediaController(Context context, boolean locked) {\n\t\tthis(context);\n\t\tmScreenLocked = locked;\n\t\tlock(mScreenLocked);\n\t}\n\n\tprivate void initFloatingWindow() {\n\t\tmWindow = new PopupWindow(mContext);\n\t\tmWindow.setFocusable(true);\n\t\tmWindow.setBackgroundDrawable(null);\n\t\tmWindow.setOutsideTouchable(true);\n\t}\n\n\t@TargetApi(11)\n\tpublic void setWindowLayoutType() {\n\t\tif (DeviceUtils.hasICS()) {\n\t\t\ttry {\n\t\t\t\tmAnchor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);\n\t\t\t\tMethod setWindowLayoutType = PopupWindow.class.getMethod(\"setWindowLayoutType\", new Class[] { int.class });\n\t\t\t\tsetWindowLayoutType.invoke(mWindow, WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG);\n\t\t\t} catch (Exception e) {\n\t\t\t\tLogger.e(e);\n\t\t\t}\n\t\t}\n\t}\n\n\t@SuppressLint(\"NewApi\")\n\tprivate void initResources() {\n\t\tmHandler = new MHandler(this);\n\t\tmAM = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);\n\t\tmMaxVolume = mAM.getStreamMaxVolume(AudioManager.STREAM_MUSIC);\n\t\tmGestures = new CommonGestures(mContext);\n\t\tmGestures.setTouchListener(mTouchListener, true);\n\n\t\tmAnimSlideOutBottom = AnimationUtils.loadAnimation(mContext, R.anim.slide_out_bottom);\n\t\tmAnimSlideOutTop = AnimationUtils.loadAnimation(mContext, R.anim.slide_out_top);\n\t\tmAnimSlideInBottom = AnimationUtils.loadAnimation(mContext, R.anim.slide_in_bottom);\n\t\tmAnimSlideInTop = AnimationUtils.loadAnimation(mContext, R.anim.slide_in_top);\n\t\tmAnimSlideOutBottom.setAnimationListener(new AnimationListener() {\n\t\t\t@Override\n\t\t\tpublic void onAnimationStart(Animation animation) {\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void onAnimationEnd(Animation animation) {\n\t\t\t\tmMediaController.setVisibility(View.GONE);\n\t\t\t\tshowButtons(false);\n\t\t\t\tmHandler.removeMessages(MSG_HIDE_SYSTEM_UI);\n\t\t\t\tmHandler.sendEmptyMessageDelayed(MSG_HIDE_SYSTEM_UI, DEFAULT_TIME_OUT);\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void onAnimationRepeat(Animation animation) {\n\t\t\t}\n\t\t});\n\n\t\tremoveAllViews();\n\n\t\tmRoot = inflateLayout();\n\t\tmWindow.setContentView(mRoot);\n\t\tmWindow.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);\n\t\tmWindow.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);\n\n\t\tfindViewItems(mRoot);\n\t\tshowSystemUi(false);\n\t\tif (DeviceUtils.hasHoneycomb()) {\n\t\t\tmRoot.setOnSystemUiVisibilityChangeListener(new OnSystemUiVisibilityChangeListener() {\n\t\t\t\t@Override\n        public void onSystemUiVisibilityChange(int visibility) {\n\t\t\t\t\tif ((visibility & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0) {\n\t\t\t\t\t\tmHandler.sendEmptyMessageDelayed(MSG_HIDE_SYSTEM_UI, DEFAULT_TIME_OUT);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate View inflateLayout() {\n\t\treturn ((LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.mediacontroller, this);\n\t}\n\n\tprivate void findViewItems(View v) {\n\t\tmMediaController = v.findViewById(R.id.mediacontroller);\n\n\t\tmSystemInfoLayout = v.findViewById(R.id.info_panel);\n\n\t\tmEndTime = (TextView) v.findViewById(R.id.mediacontroller_time_total);\n\t\tmCurrentTime = (TextView) v.findViewById(R.id.mediacontroller_time_current);\n\n\t\tmMenu = v.findViewById(R.id.video_menu);\n\t\tmMenu.setOnClickListener(mMenuListener);\n\t\tFractionalTouchDelegate.setupDelegate(mSystemInfoLayout, mMenu, new RectF(1.0f, 1f, 1.2f, 1.2f));\n\n\t\tmFileName = (TextView) v.findViewById(R.id.mediacontroller_file_name);\n\t\tmDateTime = (TextView) v.findViewById(R.id.date_time);\n\t\tmDownloadRate = (TextView) v.findViewById(R.id.download_rate);\n\t\tmBatteryLevel = (TextView) v.findViewById(R.id.battery_level);\n\n\t\tmControlsLayout = v.findViewById(R.id.mediacontroller_controls);\n\t\tmControlsButtons = v.findViewById(R.id.mediacontroller_controls_buttons);\n\n\t\tmOperationInfo = (TextView) v.findViewById(R.id.operation_info);\n\t\tmOperationVolLum = v.findViewById(R.id.operation_volume_brightness);\n\t\tmVolLumBg = (ImageView) v.findViewById(R.id.operation_bg);\n\t\tmVolLumNum = (ImageView) v.findViewById(R.id.operation_percent);\n\n\t\tmLock = (ImageButton) v.findViewById(R.id.mediacontroller_lock);\n\t\tmLock.setOnClickListener(mLockClickListener);\n\t\tFractionalTouchDelegate.setupDelegate(mSystemInfoLayout, mLock, new RectF(1.0f, 1f, 1.2f, 1.2f));\n\n\t\tmScreenToggle = (ImageButton) v.findViewById(R.id.mediacontroller_screen_size);\n\t\tmScreenToggle.setOnClickListener(mScreenToggleListener);\n\n\t\tmSnapshot = (ImageButton) v.findViewById(R.id.mediacontroller_snapshot);\n\t\tmSnapshot.setOnClickListener(mSnapshotListener);\n\n\t\tmPauseButton = (ImageButton) v.findViewById(R.id.mediacontroller_play_pause);\n\t\tmPauseButton.setOnClickListener(mPauseListener);\n\n\t\tmProgress = (SeekBar) v.findViewById(R.id.mediacontroller_seekbar);\n\t\tmProgress.setOnSeekBarChangeListener(mSeekListener);\n\t\tmProgress.setMax(DEFAULT_SEEKBAR_VALUE);\n\t\t\n\t\tmDanmakuSend = (ImageButton) v.findViewById(R.id.mediacontroller_send_danmaku);\n\t\tmDanmakuSend.setOnClickListener(mDanmakuSendListener);\n\t\t\n\t\tmDanmakuSwitch = (ImageButton) v.findViewById(R.id.mediacontroller_danmaku_switch);\n\t\tmDanmakuSwitch.setOnClickListener(mDanmakuSwitchListener);\n\t}\n\n\tpublic void setAnchorView(View view) {\n\t\tmAnchor = view;\n\t\tint[] location = new int[2];\n\t\tmAnchor.getLocationOnScreen(location);\n\t\tRect anchorRect = new Rect(location[0], location[1], location[0] + mAnchor.getWidth(), location[1] + mAnchor.getHeight());\n\t\tsetWindowLayoutType();\n\t\tmWindow.showAtLocation(mAnchor, Gravity.NO_GRAVITY, anchorRect.left, anchorRect.bottom);\n\t}\n\n\tpublic void release() {\n\t\tif (mWindow != null) {\n\t\t\tmWindow.dismiss();\n\t\t\tmWindow = null;\n\t\t}\n\t}\n\n\tprivate OnClickListener mMenuListener = new OnClickListener() {\n\t\t@Override\n\t\tpublic void onClick(View v) {\n\t\t\tmPlayer.showMenu();\n\t\t}\n\t};\n\n\tprivate void setOperationInfo(String info, long time) {\n\t\tmOperationInfo.setText(info);\n\t\tmOperationInfo.setVisibility(View.VISIBLE);\n\t\tmHandler.removeMessages(MSG_HIDE_OPERATION_INFO);\n\t\tmHandler.sendEmptyMessageDelayed(MSG_HIDE_OPERATION_INFO, time);\n\t}\n\n\tprivate void setBrightnessScale(float scale) {\n\t\tsetGraphicOperationProgress(R.drawable.video_brightness_bg, scale);\n\t}\n\n\tprivate void setVolumeScale(float scale) {\n\t\tsetGraphicOperationProgress(R.drawable.video_volumn_bg, scale);\n\t}\n\n\tprivate void setGraphicOperationProgress(int bgID, float scale) {\n\t\tmVolLumBg.setImageResource(bgID);\n\t\tmOperationInfo.setVisibility(View.GONE);\n\t\tmOperationVolLum.setVisibility(View.VISIBLE);\n\t\tViewGroup.LayoutParams lp = mVolLumNum.getLayoutParams();\n\t\tlp.width = (int) (findViewById(R.id.operation_full).getLayoutParams().width * scale);\n\t\tmVolLumNum.setLayoutParams(lp);\n\t}\n\n\tpublic void setFileName(String name) {\n\t\tmFileName.setText(name);\n\t}\n\n\tpublic void setDownloadRate(String rate) {\n\t\tmDownloadRate.setVisibility(View.VISIBLE);\n\t\tmDownloadRate.setText(rate);\n\t}\n\n\tpublic void setBatteryLevel(String level) {\n\t\tmBatteryLevel.setVisibility(View.VISIBLE);\n\t\tmBatteryLevel.setText(level);\n\t}\n\n\tpublic void setMediaPlayer(MediaPlayerControl player) {\n\t\tmPlayer = player;\n\t\tupdatePausePlay();\n\t}\n\n\tpublic void show() {\n\t\tshow(DEFAULT_TIME_OUT);\n\t}\n\n\tpublic void show(int timeout) {\n\t\tif (timeout != 0) {\n\t\t\tmHandler.removeMessages(MSG_FADE_OUT);\n\t\t\tmHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_FADE_OUT), timeout);\n\t\t}\n\t\tif (!mShowing) {\n\t\t\tshowButtons(true);\n\t\t\tmHandler.removeMessages(MSG_HIDE_SYSTEM_UI);\n\t\t\tshowSystemUi(true);\n\n\t\t\tmPauseButton.requestFocus();\n\n\t\t\tmControlsLayout.startAnimation(mAnimSlideInTop);\n\t\t\tmSystemInfoLayout.startAnimation(mAnimSlideInBottom);\n\t\t\tmMediaController.setVisibility(View.VISIBLE);\n\n\t\t\tupdatePausePlay();\n\t\t\tmHandler.sendEmptyMessage(MSG_TIME_TICK);\n\t\t\tmHandler.sendEmptyMessage(MSG_SHOW_PROGRESS);\n\n\t\t\tmShowing = true;\n\t\t}\n\t}\n\n\tpublic void hide() {\n\t\tif (mShowing) {\n\t\t\ttry {\n\t\t\t\tmHandler.removeMessages(MSG_TIME_TICK);\n\t\t\t\tmHandler.removeMessages(MSG_SHOW_PROGRESS);\n\t\t\t\tmControlsLayout.startAnimation(mAnimSlideOutTop);\n\t\t\t\tmSystemInfoLayout.startAnimation(mAnimSlideOutBottom);\n\t\t\t} catch (IllegalArgumentException ex) {\n\t\t\t\tLogger.d(\"MediaController already removed\");\n\t\t\t}\n\t\t\tmShowing = false;\n\t\t}\n\t}\n\n\tprivate void toggleVideoMode(boolean larger, boolean recycle) {\n\t\tif (larger) {\n\t\t\tif (mVideoMode < VideoView.VIDEO_LAYOUT_ZOOM)\n\t\t\t\tmVideoMode++;\n\t\t\telse if (recycle)\n\t\t\t\tmVideoMode = VideoView.VIDEO_LAYOUT_ORIGIN;\n\t\t} else {\n\t\t\tif (mVideoMode > VideoView.VIDEO_LAYOUT_ORIGIN)\n\t\t\t\tmVideoMode--;\n\t\t\telse if (recycle)\n\t\t\t\tmVideoMode = VideoView.VIDEO_LAYOUT_ZOOM;\n\t\t}\n\n\t\tswitch (mVideoMode) {\n\t\tcase VideoView.VIDEO_LAYOUT_ORIGIN:\n\t\t\tsetOperationInfo(mContext.getString(R.string.video_original), 500);\n\t\t\tmScreenToggle.setImageResource(R.drawable.mediacontroller_sreen_size_100);\n\t\t\tbreak;\n\t\tcase VideoView.VIDEO_LAYOUT_SCALE:\n\t\t\tsetOperationInfo(mContext.getString(R.string.video_fit_screen), 500);\n\t\t\tmScreenToggle.setImageResource(R.drawable.mediacontroller_screen_fit);\n\t\t\tbreak;\n\t\tcase VideoView.VIDEO_LAYOUT_STRETCH:\n\t\t\tsetOperationInfo(mContext.getString(R.string.video_stretch), 500);\n\t\t\tmScreenToggle.setImageResource(R.drawable.mediacontroller_screen_size);\n\t\t\tbreak;\n\t\tcase VideoView.VIDEO_LAYOUT_ZOOM:\n\t\t\tsetOperationInfo(mContext.getString(R.string.video_crop), 500);\n\t\t\tmScreenToggle.setImageResource(R.drawable.mediacontroller_sreen_size_crop);\n\t\t\tbreak;\n\t\t}\n\n\t\tmPlayer.toggleVideoMode(mVideoMode);\n\t}\n\n\tprivate void lock(boolean toLock) {\n\t\tif (toLock) {\n\t\t\tmLock.setImageResource(R.drawable.mediacontroller_lock);\n\t\t\tmMenu.setVisibility(View.GONE);\n\t\t\tmControlsButtons.setVisibility(View.GONE);\n\t\t\tmProgress.setEnabled(false);\n\t\t\tif (mScreenLocked != toLock)\n\t\t\t\tsetOperationInfo(mContext.getString(R.string.video_screen_locked), 1000);\n\t\t} else {\n\t\t\tmLock.setImageResource(R.drawable.mediacontroller_unlock);\n\t\t\t// If you wanna to show, set mMenu visible\n\t\t\tmMenu.setVisibility(View.GONE);\n\t\t\tmControlsButtons.setVisibility(View.VISIBLE);\n\t\t\tmProgress.setEnabled(true);\n\t\t\tif (mScreenLocked != toLock)\n\t\t\t\tsetOperationInfo(mContext.getString(R.string.video_screen_unlocked), 1000);\n\t\t}\n\t\tmScreenLocked = toLock;\n\t\tmGestures.setTouchListener(mTouchListener, !mScreenLocked);\n\t}\n\n\tpublic boolean isLocked() {\n\t\treturn mScreenLocked;\n\t}\n\n\tprivate static final int MSG_FADE_OUT = 1;\n\tprivate static final int MSG_SHOW_PROGRESS = 2;\n\tprivate static final int MSG_HIDE_SYSTEM_UI = 3;\n\tprivate static final int MSG_TIME_TICK = 4;\n\tprivate static final int MSG_HIDE_OPERATION_INFO = 5;\n\tprivate static final int MSG_HIDE_OPERATION_VOLLUM = 6;\n\n\tprivate static class MHandler extends Handler {\n\t\tprivate WeakReference<MediaController> mc;\n\n\t\tpublic MHandler(MediaController mc) {\n\t\t\tthis.mc = new WeakReference<MediaController>(mc);\n\t\t}\n\n\t\t@Override\n\t\tpublic void handleMessage(Message msg) {\n\t\t\tMediaController c = mc.get();\n\t\t\tif (c == null)\n\t\t\t\treturn;\n\n\t\t\tswitch (msg.what) {\n\t\t\tcase MSG_FADE_OUT:\n\t\t\t\tc.hide();\n\t\t\t\tbreak;\n\t\t\tcase MSG_SHOW_PROGRESS:\n\t\t\t\tlong pos = c.setProgress();\n\t\t\t\tif (!c.mDragging && c.mShowing) {\n\t\t\t\t\tmsg = obtainMessage(MSG_SHOW_PROGRESS);\n\t\t\t\t\tsendMessageDelayed(msg, 1000 - (pos % 1000));\n\t\t\t\t\tc.updatePausePlay();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase MSG_HIDE_SYSTEM_UI:\n\t\t\t\tif (!c.mShowing)\n\t\t\t\t\tc.showSystemUi(false);\n\t\t\t\tbreak;\n\t\t\tcase MSG_TIME_TICK:\n\t\t\t\tc.mDateTime.setText(StringUtils.currentTimeString());\n\t\t\t\tsendEmptyMessageDelayed(MSG_TIME_TICK, TIME_TICK_INTERVAL);\n\t\t\t\tbreak;\n\t\t\tcase MSG_HIDE_OPERATION_INFO:\n\t\t\t\tc.mOperationInfo.setVisibility(View.GONE);\n\t\t\t\tbreak;\n\t\t\tcase MSG_HIDE_OPERATION_VOLLUM:\n\t\t\t\tc.mOperationVolLum.setVisibility(View.GONE);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate long setProgress() {\n\t\tif (mPlayer == null || mDragging)\n\t\t\treturn 0;\n\n\t\tlong position = mPlayer.getCurrentPosition();\n\t\tlong duration = mPlayer.getDuration();\n\t\tif (duration > 0) {\n\t\t\tlong pos = 1000L * position / duration;\n\t\t\tmProgress.setProgress((int) pos);\n\t\t}\n\t\tint percent = mPlayer.getBufferPercentage();\n\t\tmProgress.setSecondaryProgress(percent * 10);\n\n\t\tmDuration = duration;\n\n\t\tmEndTime.setText(StringUtils.generateTime(mDuration));\n\t\tmCurrentTime.setText(StringUtils.generateTime(position));\n\n\t\treturn position;\n\t}\n\n\t@Override\n\tpublic boolean onTouchEvent(MotionEvent event) {\n\t\tmHandler.removeMessages(MSG_HIDE_SYSTEM_UI);\n\t\tmHandler.sendEmptyMessageDelayed(MSG_HIDE_SYSTEM_UI, DEFAULT_TIME_OUT);\n\t\treturn mGestures.onTouchEvent(event) || super.onTouchEvent(event);\n\t}\n\n\tprivate CommonGestures.TouchListener mTouchListener = new CommonGestures.TouchListener() {\n\t\t@Override\n\t\tpublic void onGestureBegin() {\n\t\t\tmBrightness = mContext.getWindow().getAttributes().screenBrightness;\n\t\t\tmVolume = mAM.getStreamVolume(AudioManager.STREAM_MUSIC);\n\t\t\tif (mBrightness <= 0.00f)\n\t\t\t\tmBrightness = 0.50f;\n\t\t\tif (mBrightness < 0.01f)\n\t\t\t\tmBrightness = 0.01f;\n\t\t\tif (mVolume < 0)\n\t\t\t\tmVolume = 0;\n\t\t}\n\n\t\t@Override\n\t\tpublic void onGestureEnd() {\n\t\t\tmOperationVolLum.setVisibility(View.GONE);\n\t\t}\n\n\t\t@Override\n\t\tpublic void onLeftSlide(float percent) {\n\t\t\tsetBrightness(mBrightness + percent);\n\t\t\tsetBrightnessScale(mContext.getWindow().getAttributes().screenBrightness);\n\t\t}\n\n\t\t@Override\n\t\tpublic void onRightSlide(float percent) {\n\t\t\tint v = (int) (percent * mMaxVolume) + mVolume;\n\t\t\tsetVolume(v);\n\t\t}\n\n\t\t@Override\n\t\tpublic void onSingleTap() {\n\t\t\tif (mShowing)\n\t\t\t\thide();\n\t\t\telse\n\t\t\t\tshow();\n\t\t\tif (mPlayer.getBufferPercentage() >= 100)\n\t\t\t\tmPlayer.removeLoadingView();\n\t\t}\n\n\t\t@Override\n\t\tpublic void onDoubleTap() {\n\t\t\ttoggleVideoMode(true, true);\n\t\t}\n\n\t\t@Override\n\t\tpublic void onLongPress() {\n\t\t\tdoPauseResume();\n\t\t}\n\n\t\t@Override\n\t\tpublic void onScale(float scaleFactor, int state) {\n\t\t\tswitch (state) {\n\t\t\tcase CommonGestures.SCALE_STATE_BEGIN:\n\t\t\t\tmVideoMode = VideoView.VIDEO_LAYOUT_SCALE_ZOOM;\n\t\t\t\tmScreenToggle.setImageResource(R.drawable.mediacontroller_sreen_size_100);\n\t\t\t\tmPlayer.toggleVideoMode(mVideoMode);\n\t\t\t\tbreak;\n\t\t\tcase CommonGestures.SCALE_STATE_SCALEING:\n\t\t\t\tfloat currentRatio = mPlayer.scale(scaleFactor);\n\t\t\t\tsetOperationInfo((int) (currentRatio * 100) + \"%\", 500);\n\t\t\t\tbreak;\n\t\t\tcase CommonGestures.SCALE_STATE_END:\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate void setVolume(int v) {\n\t\tif (v > mMaxVolume)\n\t\t\tv = mMaxVolume;\n\t\telse if (v < 0)\n\t\t\tv = 0;\n\t\tmAM.setStreamVolume(AudioManager.STREAM_MUSIC, v, 0);\n\t\tsetVolumeScale((float) v / mMaxVolume);\n\t}\n\n\tprivate void setBrightness(float f) {\n\t\tWindowManager.LayoutParams lp = mContext.getWindow().getAttributes();\n\t\tlp.screenBrightness = f;\n\t\tif (lp.screenBrightness > 1.0f)\n\t\t\tlp.screenBrightness = 1.0f;\n\t\telse if (lp.screenBrightness < 0.01f)\n\t\t\tlp.screenBrightness = 0.01f;\n\t\tmContext.getWindow().setAttributes(lp);\n\t}\n\n\t@Override\n\tpublic boolean onTrackballEvent(MotionEvent ev) {\n\t\tshow(DEFAULT_TIME_OUT);\n\t\treturn false;\n\t}\n\n\t@Override\n\tpublic boolean dispatchKeyEvent(KeyEvent event) {\n\t\tint keyCode = event.getKeyCode();\n\n\t\tswitch (keyCode) {\n\t\tcase KeyEvent.KEYCODE_VOLUME_MUTE:\n\t\t\treturn super.dispatchKeyEvent(event);\n\t\tcase KeyEvent.KEYCODE_VOLUME_UP:\n\t\tcase KeyEvent.KEYCODE_VOLUME_DOWN:\n\t\t\tmVolume = mAM.getStreamVolume(AudioManager.STREAM_MUSIC);\n\t\t\tint step = keyCode == KeyEvent.KEYCODE_VOLUME_UP ? 1 : -1;\n\t\t\tsetVolume(mVolume + step);\n\t\t\tmHandler.removeMessages(MSG_HIDE_OPERATION_VOLLUM);\n\t\t\tmHandler.sendEmptyMessageDelayed(MSG_HIDE_OPERATION_VOLLUM, 500);\n\t\t\treturn true;\n\t\t}\n\n\t\tif (isLocked()) {\n\t\t\tshow();\n\t\t\treturn true;\n\t\t}\n\n\t\tif (event.getRepeatCount() == 0 && (keyCode == KeyEvent.KEYCODE_HEADSETHOOK || keyCode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE || keyCode == KeyEvent.KEYCODE_SPACE)) {\n\t\t\tdoPauseResume();\n\t\t\tshow(DEFAULT_TIME_OUT);\n\t\t\treturn true;\n\t\t} else if (keyCode == KeyEvent.KEYCODE_MEDIA_STOP) {\n\t\t\tif (mPlayer.isPlaying()) {\n\t\t\t\tmPlayer.pause();\n\t\t\t\tupdatePausePlay();\n\t\t\t}\n\t\t\treturn true;\n\t\t} else if (keyCode == KeyEvent.KEYCODE_BACK) {\n\t\t\trelease();\n\t\t\tmPlayer.stop();\n\t\t\treturn true;\n\t\t} else {\n\t\t\tshow(DEFAULT_TIME_OUT);\n\t\t}\n\t\treturn super.dispatchKeyEvent(event);\n\t}\n\n\t@TargetApi(11)\n\tprivate void showSystemUi(boolean visible) {\n\t\tif (DeviceUtils.hasHoneycomb()) {\n\t\t\tint flag = visible ? 0 : View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LOW_PROFILE;\n\t\t\tmRoot.setSystemUiVisibility(flag);\n\t\t}\n\t}\n\n\tprivate void showButtons(boolean showButtons) {\n\t\tWindow window = mContext.getWindow();\n\t\tWindowManager.LayoutParams layoutParams = window.getAttributes();\n\t\tfloat val = showButtons ? -1 : 0;\n\t\ttry {\n\t\t\tField buttonBrightness = layoutParams.getClass().getField(\"buttonBrightness\");\n\t\t\tbuttonBrightness.set(layoutParams, val);\n\t\t} catch (Exception e) {\n\t\t\tLogger.e(\"dimButtons\", e);\n\t\t}\n\t\twindow.setAttributes(layoutParams);\n\t}\n\n\tprivate void updatePausePlay() {\n\t\tif (mPlayer.isPlaying())\n\t\t\tmPauseButton.setImageResource(R.drawable.mediacontroller_pause);\n\t\telse\n\t\t\tmPauseButton.setImageResource(R.drawable.mediacontroller_play);\n\t}\n\n\tprivate void doPauseResume() {\n\t\tif (mPlayer.isPlaying())\n\t\t\tmPlayer.pause();\n\t\telse\n\t\t\tmPlayer.start();\n\t\tupdatePausePlay();\n\t}\n\n\tprivate OnClickListener mPauseListener = new OnClickListener() {\n\t\t@Override\n\t\tpublic void onClick(View v) {\n\t\t\tif (mPlayer.isPlaying())\n\t\t\t\tshow(DEFAULT_LONG_TIME_SHOW);\n\t\t\telse\n\t\t\t\tshow();\n\t\t\tdoPauseResume();\n\t\t}\n\t};\n\n\tprivate OnClickListener mLockClickListener = new OnClickListener() {\n\t\t@Override\n\t\tpublic void onClick(View v) {\n\t\t\thide();\n\t\t\tlock(!mScreenLocked);\n\t\t\tshow();\n\t\t}\n\t};\n\n\tprivate OnClickListener mScreenToggleListener = new OnClickListener() {\n\t\t@Override\n\t\tpublic void onClick(View v) {\n\t\t\tshow(DEFAULT_TIME_OUT);\n\t\t\ttoggleVideoMode(true, true);\n\t\t}\n\t};\n\n\tprivate OnClickListener mSnapshotListener = new OnClickListener() {\n\t\t@Override\n\t\tpublic void onClick(View v) {\n\t\t\tshow(DEFAULT_TIME_OUT);\n\t\t\tmSnapshot.setEnabled(false);\n\t\t\tmPlayer.snapshot();\n\t\t\tmSnapshot.setEnabled(true);\n\t\t}\n\t};\n\n\tprivate OnSeekBarChangeListener mSeekListener = new OnSeekBarChangeListener() {\n\t\tprivate boolean wasStopped = false;\n\n\t\t@Override\n\t\tpublic void onStartTrackingTouch(SeekBar bar) {\n\t\t\tmDragging = true;\n\t\t\tshow(3600000);\n\t\t\tmHandler.removeMessages(MSG_SHOW_PROGRESS);\n\t\t\twasStopped = !mPlayer.isPlaying();\n\t\t\tif (mInstantSeeking) {\n\t\t\t\tmAM.setStreamMute(AudioManager.STREAM_MUSIC, true);\n\t\t\t\tif (wasStopped) {\n\t\t\t\t\tmPlayer.start();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void onProgressChanged(SeekBar bar, int progress, boolean fromuser) {\n\t\t\tif (!fromuser)\n\t\t\t\treturn;\n\n\t\t\tlong newposition = (mDuration * progress) / 1000;\n\t\t\tString time = StringUtils.generateTime(newposition);\n\t\t\tif (mInstantSeeking)\n\t\t\t\tmPlayer.seekTo(newposition);\n\t\t\tsetOperationInfo(time, 1500);\n\t\t\tmCurrentTime.setText(time);\n\t\t}\n\n\t\t@Override\n\t\tpublic void onStopTrackingTouch(SeekBar bar) {\n\t\t\tif (!mInstantSeeking) {\n\t\t\t\tmPlayer.seekTo((mDuration * bar.getProgress()) / 1000);\n\t\t\t} else if (wasStopped) {\n\t\t\t\tmPlayer.pause();\n\t\t\t}\n\t\t\tmOperationInfo.setVisibility(View.GONE);\n\t\t\tshow(DEFAULT_TIME_OUT);\n\t\t\tmHandler.removeMessages(MSG_SHOW_PROGRESS);\n\t\t\tmAM.setStreamMute(AudioManager.STREAM_MUSIC, false);\n\t\t\tmDragging = false;\n\t\t\tmHandler.sendEmptyMessageDelayed(MSG_SHOW_PROGRESS, 1000);\n\t\t}\n\t};\n\t\n\tprivate OnClickListener mDanmakuSendListener = new OnClickListener() {\n\t\t@Override\n\t\tpublic void onClick(View v) {\n\t\t\tToastUtils.showToast(\"发送弹幕（没有实现功能)\");\n\t\t}\n\t};\n\t\n\tprivate OnClickListener mDanmakuSwitchListener = new OnClickListener() {\n\t\t@Override\n\t\tpublic void onClick(View v) {\n\t\t\tif (mDanmakuShow) {\n\t\t\t\tmDanmakuSwitch.setImageResource(R.drawable.bili_player_danmaku_is_closed);\n\t\t\t\tmPlayer.setDanmakushow(false);\n\t\t\t\tmDanmakuShow = false;\n\t\t\t} else {\n\t\t\t\tmDanmakuSwitch.setImageResource(R.drawable.bili_player_danmaku_is_open);\n\t\t\t\tmPlayer.setDanmakushow(true);\n\t\t\t\tmDanmakuShow = true;\n\t\t\t}\n\t\t}\n\t};\n\n\tpublic interface MediaPlayerControl {\n\t\tvoid start();\n\n\t\tvoid pause();\n\n\t\tvoid stop();\n\n\t\tvoid seekTo(long pos);\n\n\t\tboolean isPlaying();\n\n\t\tlong getDuration();\n\n\t\tlong getCurrentPosition();\n\n\t\tint getBufferPercentage();\n\n\t\tvoid previous();\n\n\t\tvoid next();\n\n\t\tlong goForward();\n\n\t\tlong goBack();\n\n\t\tvoid toggleVideoMode(int mode);\n\n\t\tvoid showMenu();\n\n\t\tvoid removeLoadingView();\n\n\t\tfloat scale(float scale);\n\n\t\tvoid snapshot();\n\t\t\n\t\tvoid setDanmakushow(boolean isShow);\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/view/PlayerService.java",
    "content": "/*\n * Copyright (C) 2012 YIXIA.COM\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage com.cjj.bb.view;\n\nimport io.vov.vitamio.MediaPlayer;\nimport io.vov.vitamio.MediaPlayer.OnBufferingUpdateListener;\nimport io.vov.vitamio.MediaPlayer.OnCompletionListener;\nimport io.vov.vitamio.MediaPlayer.OnErrorListener;\nimport io.vov.vitamio.MediaPlayer.OnHWRenderFailedListener;\nimport io.vov.vitamio.MediaPlayer.OnInfoListener;\nimport io.vov.vitamio.MediaPlayer.OnPreparedListener;\nimport io.vov.vitamio.MediaPlayer.OnSeekCompleteListener;\nimport io.vov.vitamio.MediaPlayer.OnTimedTextListener;\nimport io.vov.vitamio.MediaPlayer.OnVideoSizeChangedListener;\nimport io.vov.vitamio.Vitamio;\nimport io.vov.vitamio.utils.Log;\n\nimport java.io.File;\nimport java.io.IOException;\nimport java.util.ArrayList;\n\nimport android.app.Service;\nimport android.content.Context;\nimport android.content.Intent;\nimport android.graphics.Bitmap;\nimport android.net.Uri;\nimport android.os.Binder;\nimport android.os.IBinder;\nimport android.telephony.PhoneStateListener;\nimport android.telephony.TelephonyManager;\nimport android.view.SurfaceHolder;\n\nimport com.cjj.bb.utils.Logger;\n\n\npublic class PlayerService extends Service implements\n\t\tOnBufferingUpdateListener, OnCompletionListener, OnPreparedListener,\n\t\tOnVideoSizeChangedListener, OnErrorListener, OnInfoListener,\n\t\tOnSeekCompleteListener, OnTimedTextListener {\n\tprivate MediaPlayer mPlayer;\n\tprivate VPlayerListener mListener;\n\tprivate Uri mUri;\n\tprivate Uri mOldUri;\n\tprivate float mSeekTo = -1f;\n\tprivate boolean mFromNotification;\n\tprivate String[] mSubPaths;\n\tprivate boolean mInitialized;\n\tprivate final IBinder mBinder = new LocalBinder();\n\tprivate TelephonyManager mTelephonyManager;\n\tprivate int mCurrentState;\n\tprivate SurfaceHolder mSurfaceHolder;\n\tpublic static final int VPLYAER_NOTIFICATION_ID = 1;\n\n\tpublic static final int STATE_PREPARED = -1;\n\tpublic static final int STATE_PLAYING = 0;\n\tpublic static final int STATE_NEED_RESUME = 1;\n\tpublic static final int STATE_STOPPED = 2;\n\tpublic static final int STATE_RINGING = 3;\n\n\tprivate int mLastAudioTrack = -1;\n\tprivate String mLastSubTrack;\n\tprivate int mLastSubTrackId = -1;\n\tprivate long mMediaId = -1l;\n\n\tpublic class LocalBinder extends Binder {\n\t\tpublic PlayerService getService() {\n\t\t\treturn PlayerService.this;\n\t\t}\n\t}\n\n\t@Override\n\tpublic void onCreate() {\n\t\tsuper.onCreate();\n\t\tmInitialized = false;\n\t\tmTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);\n\t\tmTelephonyManager.listen(mPhoneListener,\n\t\t\t\tPhoneStateListener.LISTEN_CALL_STATE);\n\n\t}\n\n\t@Override\n\tpublic int onStartCommand(Intent intent, int flags, int startId) {\n\t\tif (Vitamio.isInitialized(this)) {\n\t\t\tvplayerInit(intent.getBooleanExtra(\"isHWCodec\", false));\n\t\t} else {\n\t\t\tstopSelf();\n\t\t}\n\t\tLog.d(\"CREATE OK\");\n\t\treturn super.onStartCommand(intent, flags, startId);\n\t}\n\n\tprivate void vplayerInit(boolean isHWCodec) {\n\t\tmPlayer = new MediaPlayer(PlayerService.this.getApplicationContext(),\n\t\t\t\tisHWCodec);\n\t\tmPlayer.setOnHWRenderFailedListener(new OnHWRenderFailedListener() {\n\t\t\t@Override\n\t\t\tpublic void onFailed() {\n\t\t\t\tif (mListener != null)\n\t\t\t\t\tmListener.onHWRenderFailed();\n\t\t\t}\n\t\t});\n\t\tmPlayer.setOnBufferingUpdateListener(PlayerService.this);\n\t\tmPlayer.setOnCompletionListener(PlayerService.this);\n\t\tmPlayer.setOnPreparedListener(PlayerService.this);\n\t\tmPlayer.setOnVideoSizeChangedListener(PlayerService.this);\n\t\tmPlayer.setOnErrorListener(PlayerService.this);\n\t\tmPlayer.setOnInfoListener(PlayerService.this);\n\t}\n\n\tpublic void releaseContext() {\n\t\tif (mPlayer != null)\n\t\t\tmPlayer.release();\n\t\tmPlayer = null;\n\t}\n\n\t@Override\n\tpublic IBinder onBind(Intent intent) {\n\t\tLog.d(\"BIND OK : \" + intent.getPackage());\n\t\treturn mBinder;\n\t}\n\n\t@Override\n\tpublic void onDestroy() {\n\t\tsuper.onDestroy();\n\t\trelease(true);\n\t\treleaseContext();\n\t}\n\n\tpublic boolean isInitialized() {\n\t\treturn mInitialized;\n\t}\n\n\tprivate String mTitle;\n\n\tpublic boolean initialize(Uri filePath, String displayName,\n\t\t\tboolean saveUri, float startPos, VPlayerListener listener,\n\t\t\tint parentId, boolean isHWCodec) {\n\t\tif (mPlayer == null)\n\t\t\tvplayerInit(isHWCodec);\n\t\tmTitle = displayName;\n\t\tmListener = listener;\n\t\tmOldUri = mUri;\n\t\tmUri = filePath;\n\t\tmSeekTo = startPos;\n\t\tmMediaId = -1;\n\t\tmLastAudioTrack = -1;\n\t\tmLastSubTrackId = -1;\n\t\tmLastSubTrack = \"\";\n\t\tsetMediaTrack();\n\t\tLog.i(\"%s ==> %s, %s, %s, %s\", mOldUri, mUri, mInitialized, mPrepared,\n\t\t\t\tmVideoSizeKnown);\n\t\tmFromNotification = mInitialized && mUri != null\n\t\t\t\t&& mUri.equals(mOldUri);\n\t\tmListener.onOpenStart();\n\t\tif (!mFromNotification)\n\t\t\topenVideo();\n\t\telse\n\t\t\topenSuccess();\n\t\treturn mInitialized;\n\t}\n\n\tprivate void setMediaTrack() {\n\t}\n\n\tprivate void openVideo() {\n\t\tif (mUri == null || mPlayer == null)\n\t\t\treturn;\n\n\t\tmPlayer.reset();\n\t\tmInitialized = false;\n\t\tmPrepared = false;\n\t\tmVideoSizeKnown = false;\n\n\t\ttry {\n\t\t\tmPlayer.setScreenOnWhilePlaying(true);\n\t\t\tmPlayer.setDataSource(PlayerService.this, mUri);\n\t\t\t// if (mLastAudioTrack != -1)\n\t\t\t// mPlayer.setInitialAudioTrack(mLastAudioTrack);\n\t\t\t// if (mLastSubTrackId != -1)\n\t\t\t// mPlayer.setInitialSubTrack(mLastSubTrackId);\n\t\t\tif (mSurfaceHolder != null && mSurfaceHolder.getSurface() != null\n\t\t\t\t\t&& mSurfaceHolder.getSurface().isValid())\n\t\t\t\tmPlayer.setDisplay(mSurfaceHolder);\n\t\t\tmPlayer.prepareAsync();\n\t\t} catch (IllegalArgumentException e) {\n\t\t\tLogger.e(\"openVideo\", e);\n\t\t} catch (IllegalStateException e) {\n\t\t\tLogger.e(\"openVideo\", e);\n\t\t} catch (IOException e) {\n\t\t\tLogger.e(\"openVideo\", e);\n\t\t}\n\t}\n\n\tpublic Uri getUri() {\n\t\treturn mUri;\n\t}\n\n\tpublic long getMediaId() {\n\t\treturn mMediaId;\n\t}\n\n\tpublic int getLastAudioTrack() {\n\t\treturn mLastAudioTrack;\n\t}\n\n\tpublic String getLastSubTrack() {\n\t\treturn mLastSubTrack;\n\t}\n\n\tpublic int getLastSubTrackId() {\n\t\treturn mLastSubTrackId;\n\t}\n\n\tpublic void setVPlayerListener(VPlayerListener listener) {\n\t\tmListener = listener;\n\t}\n\n\tpublic void setState(int state) {\n\t\tmCurrentState = state;\n\t}\n\n\tpublic boolean needResume() {\n\t\treturn mInitialized\n\t\t\t\t&& (mCurrentState == STATE_NEED_RESUME || mCurrentState == STATE_PREPARED);\n\t}\n\n\tpublic boolean ringingState() {\n\t\treturn mInitialized && mCurrentState == STATE_RINGING;\n\t}\n\n\tpublic void release() {\n\t\trelease(true);\n\t}\n\n\tprivate void release(boolean all) {\n\t\tif (mPlayer != null) {\n\t\t\tif (mListener != null)\n\t\t\t\tmListener.onCloseStart();\n\t\t\tmPlayer.reset();\n\t\t\tmInitialized = false;\n\t\t\tmPrepared = false;\n\t\t\tmVideoSizeKnown = false;\n\t\t\tif (mListener != null)\n\t\t\t\tmListener.onCloseComplete();\n\t\t}\n\t\tif (all) {\n\t\t\tmListener = null;\n\t\t\tmUri = null;\n\t\t}\n\t}\n\n\tpublic void stop() {\n\t\tif (mInitialized) {\n\t\t\tmPlayer.pause();\n\t\t}\n\t}\n\n\tpublic void start() {\n\t\tif (mInitialized) {\n\t\t\tmPlayer.start();\n\t\t\tsetState(STATE_PLAYING);\n\t\t}\n\t}\n\n\tpublic void setDisplay(SurfaceHolder surface) {\n\t\tmSurfaceHolder = surface;\n\t\tif (mPlayer != null)\n\t\t\tmPlayer.setDisplay(surface);\n\t}\n\n\tpublic void releaseSurface() {\n\t\tif (mInitialized)\n\t\t\tmPlayer.releaseDisplay();\n\t}\n\n\tpublic boolean isPlaying() {\n\t\treturn (mInitialized && mPlayer.isPlaying());\n\t}\n\n\tpublic int getVideoWidth() {\n\t\tif (mInitialized)\n\t\t\treturn mPlayer.getVideoWidth();\n\t\treturn 0;\n\t}\n\n\tpublic int getVideoHeight() {\n\t\tif (mInitialized)\n\t\t\treturn mPlayer.getVideoHeight();\n\t\treturn 0;\n\t}\n\n\tpublic float getVideoAspectRatio() {\n\t\tif (mInitialized)\n\t\t\treturn mPlayer.getVideoAspectRatio();\n\t\treturn 0f;\n\t}\n\n\tpublic long getDuration() {\n\t\tif (mInitialized)\n\t\t\treturn mPlayer.getDuration();\n\t\treturn 0;\n\t}\n\n\tpublic long getCurrentPosition() {\n\t\tif (mInitialized)\n\t\t\treturn mPlayer.getCurrentPosition();\n\t\treturn 0;\n\t}\n\n\tpublic Bitmap getCurrentFrame() {\n\t\tif (mInitialized)\n\t\t\treturn mPlayer.getCurrentFrame();\n\t\treturn null;\n\t}\n\n\tpublic float getBufferProgress() {\n\t\tif (mInitialized)\n\t\t\treturn mPlayer.getBufferProgress();\n\t\treturn 0f;\n\t}\n\n\tpublic void seekTo(float percent) {\n\t\tif (mInitialized)\n\t\t\tmPlayer.seekTo((int) (percent * getDuration()));\n\t}\n\n\tpublic String getMetaEncoding() {\n\t\tif (mInitialized)\n\t\t\treturn mPlayer.getMetaEncoding();\n\t\treturn null;\n\t}\n\n\tpublic void setAudioTrack(int num) {\n\t\tif (mInitialized)\n\t\t\tmPlayer.selectTrack(num);\n\t\t// mPlayer.setAudioTrack(num);\n\t}\n\n\tpublic int getAudioTrack() {\n\t\tif (mInitialized)\n\t\t\treturn mPlayer.getAudioTrack();\n\t\treturn 0;\n\t}\n\n\t// public HashMap<String, Integer> getAudioTrackMap() {\n\t// if (!mInitialized)\n\t// return null;\n\t// String enc = VP.DEFAULT_META_ENCODING;\n\t// return mPlayer.getAudioTrackMap(enc.equals(VP.DEFAULT_META_ENCODING) ?\n\t// getMetaEncoding() : enc);\n\t// }\n\t//\n\t// public HashMap<String, Object> getSubTrackMap() {\n\t// if (!mInitialized)\n\t// return null;\n\t// String enc = VP.DEFAULT_SUB_ENCODING;\n\t// HashMap<String, Object> trackMap = new HashMap<String, Object>();\n\t// HashMap<String, Integer> m =\n\t// mPlayer.getSubTrackMap(enc.equals(VP.DEFAULT_SUB_ENCODING) ?\n\t// getMetaEncoding() : enc);\n\t// if (m != null)\n\t// for (String k : m.keySet())\n\t// trackMap.put(k, m.get(k));\n\t//\n\t// if (mSubPaths != null)\n\t// for (String s : mSubPaths)\n\t// trackMap.put(new File(s).getName(), s);\n\t//\n\t// return trackMap;\n\t// }\n\t//\n\t// public int getSubTrack() {\n\t// if (mInitialized)\n\t// return mPlayer.getSubTrack();\n\t// return 0;\n\t// }\n\t//\n\t// public void setSubTrack(int id) {\n\t// if (mInitialized)\n\t// mPlayer.setSubTrack(id);\n\t// }\n\t//\n\t// public String getSubPath() {\n\t// if (mInitialized)\n\t// return mPlayer.getSubPath();\n\t// return null;\n\t// }\n\n\tpublic void setSubShown(boolean shown) {\n\t\tif (mInitialized)\n\t\t\tmPlayer.setTimedTextShown(shown);// setSubtitleShown ->\n\t\t\t\t\t\t\t\t\t\t\t\t// setTimedTextShown 4.0\n\t}\n\n\tpublic boolean isBuffering() {\n\t\treturn (mInitialized && mPlayer.isBuffering());\n\t}\n\n\tpublic void setBuffer(int bufSize) {\n\t\tif (mInitialized)\n\t\t\tmPlayer.setBufferSize(bufSize);\n\t}\n\n\tpublic void setVolume(float left, float right) {\n\t\tif (mInitialized) {\n\t\t\tif (left <= 0f)\n\t\t\t\tleft = 0f;\n\t\t\telse if (left >= 1f)\n\t\t\t\tleft = 1f;\n\t\t\tif (right <= 0f)\n\t\t\t\tright = 0f;\n\t\t\telse if (right >= 1f)\n\t\t\t\tright = 1f;\n\t\t\tmPlayer.setVolume(left, right);\n\t\t}\n\t}\n\n\tpublic void setVideoQuality(int quality) {\n\t\tif (mInitialized)\n\t\t\tmPlayer.setVideoQuality(quality);\n\t}\n\n\tpublic void setDeinterlace(boolean deinterlace) {\n\t\tif (mInitialized)\n\t\t\tmPlayer.setDeinterlace(deinterlace);\n\t}\n\n\t// public int getSubLocation() {\n\t// if (mInitialized)\n\t// return mPlayer.getSubLocation();\n\t// return -1;\n\t// }\n\t//\n\tpublic void setSubEncoding(String encoding) {\n\t\tif (mInitialized) {\n\t\t\tString enc = encoding.equals(VP.DEFAULT_SUB_ENCODING) ? null\n\t\t\t\t\t: encoding;\n\t\t\tmPlayer.setTimedTextEncoding(enc);// setSubEncoding ->\n\t\t\t\t\t\t\t\t\t\t\t\t// setTimedTextEncoding\n\t\t}\n\t}\n\n\tpublic void setSubPath(String subPath) {\n\t\tif (mInitialized)\n\t\t\tmPlayer.addTimedTextSource(subPath);\n\t\t// mPlayer.setSubPath(subPath);\n\t}\n\n\tpublic static interface VPlayerListener {\n\t\tpublic void onHWRenderFailed();\n\n\t\tpublic void onVideoSizeChanged(int width, int height);\n\n\t\tpublic void onSubChanged(String text);\n\n\t\tpublic void onSubChanged(byte[] pixels, int width, int height);\n\n\t\tpublic void onOpenStart();\n\n\t\tpublic void onOpenSuccess();\n\n\t\tpublic void onOpenFailed();\n\n\t\tpublic void onBufferStart();\n\n\t\tpublic void onBufferComplete();\n\n\t\tpublic void onDownloadRateChanged(int kbPerSec);\n\n\t\tpublic void onPlaybackComplete();\n\n\t\tpublic void onCloseStart();\n\n\t\tpublic void onCloseComplete();\n\t}\n\n\tprivate PhoneStateListener mPhoneListener = new PhoneStateListener() {\n\t\t@Override\n\t\tpublic void onCallStateChanged(int state, String incomingNumber) {\n\t\t\tswitch (state) {\n\t\t\tcase TelephonyManager.CALL_STATE_IDLE:\n\t\t\t\tbreak;\n\t\t\tcase TelephonyManager.CALL_STATE_OFFHOOK:\n\t\t\tcase TelephonyManager.CALL_STATE_RINGING:\n\t\t\t\tif (isPlaying()) {\n\t\t\t\t\tstop();\n\t\t\t\t\tsetState(STATE_RINGING);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate boolean mVideoSizeKnown = false;\n\tprivate boolean mPrepared = false;\n\n\t@Override\n\tpublic void onVideoSizeChanged(MediaPlayer arg0, int arg1, int arg2) {\n\t\tmVideoSizeKnown = true;\n\t\tif (mListener != null)\n\t\t\tmListener.onVideoSizeChanged(arg1, arg2);\n\t}\n\n\t@Override\n\tpublic void onPrepared(MediaPlayer arg0) {\n\t\tmPrepared = true;\n\t\topenSuccess();\n\t}\n\n\tprivate void openSuccess() {\n\t\tmInitialized = true;\n\t\tif (!mFromNotification && mSeekTo > 0 && mSeekTo < 1)\n\t\t\tseekTo(mSeekTo);\n\t\tmSeekTo = -1;\n\t\tmListener.onOpenSuccess();\n\t\tif (!mFromNotification) {\n\t\t\tsetSubEncoding(VP.DEFAULT_SUB_ENCODING);\n\t\t\tif (mUri != null)\n\t\t\t\tmSubPaths = getSubFiles(mUri.getPath());\n\t\t\tif (mSubPaths != null)\n\t\t\t\tsetSubPath(FileUtils.getCanonical(new File(mSubPaths[0])));\n\t\t\tsetSubShown(VP.DEFAULT_SUB_SHOWN);\n\t\t}\n\t}\n\n\t@Override\n\tpublic void onCompletion(MediaPlayer arg0) {\n\t\tif (mListener != null) {\n\t\t\tmListener.onPlaybackComplete();\n\t\t} else {\n\t\t\trelease(true);\n\t\t}\n\t}\n\n\t@Override\n\tpublic void onBufferingUpdate(MediaPlayer arg0, int arg1) {\n\t}\n\n\t@Override\n\tpublic void onSeekComplete(MediaPlayer arg0) {\n\t}\n\n\t@Override\n\tpublic boolean onInfo(MediaPlayer arg0, int arg1, int arg2) {\n\t\tswitch (arg1) {\n\t\tcase MediaPlayer.MEDIA_INFO_BUFFERING_START:\n\t\t\tif (mListener != null)\n\t\t\t\tmListener.onBufferStart();\n\t\t\telse\n\t\t\t\tmPlayer.pause();\n\t\t\tbreak;\n\t\tcase MediaPlayer.MEDIA_INFO_BUFFERING_END:\n\t\t\tif (mListener != null)\n\t\t\t\tmListener.onBufferComplete();\n\t\t\telse\n\t\t\t\tmPlayer.start();\n\t\t\tbreak;\n\t\tcase MediaPlayer.MEDIA_INFO_DOWNLOAD_RATE_CHANGED:\n\t\t\tif (mListener != null)\n\t\t\t\tmListener.onDownloadRateChanged(arg2);\n\t\t\tbreak;\n\t\t}\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic boolean onError(MediaPlayer arg0, int arg1, int arg2) {\n\t\tmListener.onOpenFailed();\n\t\treturn true;\n\t}\n\n\tprivate String[] getSubFiles(String videoPath) {\n\t\tArrayList<String> files = new ArrayList<String>();\n\t\tfor (String ext : MediaPlayer.SUB_TYPES) {\n\t\t\tFile s = new File(videoPath.substring(0,\n\t\t\t\t\tvideoPath.lastIndexOf('.') > 0 ? videoPath.lastIndexOf('.')\n\t\t\t\t\t\t\t: videoPath.length())\n\t\t\t\t\t+ ext);\n\t\t\tif (s.exists() && s.isFile() && s.canRead())\n\t\t\t\tfiles.add(s.getAbsolutePath());\n\t\t}\n\n\t\tif (files.isEmpty())\n\t\t\treturn null;\n\t\telse\n\t\t\treturn files.toArray(new String[files.size()]);\n\t}\n\n\t@Override\n\tpublic void onTimedText(String text) {\n\t\tif (mListener != null)\n\t\t\tmListener.onSubChanged(text);\n\t}\n\n\t@Override\n\tpublic void onTimedTextUpdate(byte[] pixels, int width, int height) {\n\t\tif (mListener != null)\n\t\t\tmListener.onSubChanged(pixels, width, height);\n\t}\n\n\t// @Override\n\t// public void onSubtitleUpdate(String arg0) {\n\t// if (mListener != null)\n\t// mListener.onSubChanged(arg0);\n\t// }\n\t//\n\t// @Override\n\t// public void onSubtitleUpdate(byte[] arg0, int arg1, int arg2) {\n\t// if (mListener != null)\n\t// mListener.onSubChanged(arg0, arg1, arg2);\n\t// }\n\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/view/PullToZoomListView.java",
    "content": "package com.cjj.bb.view;\n\nimport android.app.Activity;\nimport android.content.Context;\nimport android.os.SystemClock;\nimport android.util.AttributeSet;\nimport android.util.DisplayMetrics;\nimport android.util.Log;\nimport android.view.MotionEvent;\nimport android.view.ViewGroup;\nimport android.view.animation.Interpolator;\nimport android.widget.AbsListView;\nimport android.widget.FrameLayout;\nimport android.widget.ImageView;\nimport android.widget.ListView;\n\n/**\n * 下拉缩放\n * \n * @author open resource\n * \n */\npublic class PullToZoomListView extends ListView implements\n\t\tAbsListView.OnScrollListener {\n\tprivate static final int INVALID_VALUE = -1;\n\tprivate static final String TAG = \"PullToZoomListView\";\n\tprivate static final Interpolator sInterpolator = new Interpolator() {\n\t\tpublic float getInterpolation(float paramAnonymousFloat) {\n\t\t\tfloat f = paramAnonymousFloat - 1.0F;\n\t\t\treturn 1.0F + f * (f * (f * (f * f)));\n\t\t}\n\t};\n\tint mActivePointerId = -1;\n\tprivate FrameLayout mHeaderContainer;\n\tprivate int mHeaderHeight;\n\tprivate ImageView mHeaderImage;\n\tfloat mLastMotionY = -1.0F;\n\tfloat mLastScale = -1.0F;\n\tfloat mMaxScale = -1.0F;\n\tprivate OnScrollListener mOnScrollListener;\n\tprivate ScalingRunnalable mScalingRunnalable;\n\tprivate int mScreenHeight;\n\tprivate ImageView mShadow;\n\n\tpublic PullToZoomListView(Context paramContext) {\n\t\tsuper(paramContext);\n\t\tinit(paramContext);\n\t}\n\n\tpublic PullToZoomListView(Context paramContext,\n\t\t\tAttributeSet paramAttributeSet) {\n\t\tsuper(paramContext, paramAttributeSet);\n\t\tinit(paramContext);\n\t}\n\n\tpublic PullToZoomListView(Context paramContext,\n\t\t\tAttributeSet paramAttributeSet, int paramInt) {\n\t\tsuper(paramContext, paramAttributeSet, paramInt);\n\t\tinit(paramContext);\n\t}\n\n\tprivate void endScraling() {\n\t\tif (this.mHeaderContainer.getBottom() >= this.mHeaderHeight)\n\t\t\tLog.d(\"mmm\", \"endScraling\");\n\t\tthis.mScalingRunnalable.startAnimation(200L);\n\t}\n\n\tprivate void init(Context paramContext) {\n\t\tDisplayMetrics localDisplayMetrics = new DisplayMetrics();\n\t\t((Activity) paramContext).getWindowManager().getDefaultDisplay()\n\t\t\t\t.getMetrics(localDisplayMetrics);\n\t\tthis.mScreenHeight = localDisplayMetrics.heightPixels;\n\t\tthis.mHeaderContainer = new FrameLayout(paramContext);\n\t\tthis.mHeaderImage = new ImageView(paramContext);\n\t\tint i = localDisplayMetrics.widthPixels;\n\t\tsetHeaderViewSize(i, (int) (9.0F * (i / 16.0F)));\n\t\tthis.mShadow = new ImageView(paramContext);\n\t\tFrameLayout.LayoutParams localLayoutParams = new FrameLayout.LayoutParams(\n\t\t\t\t-1, -2);\n\t\tlocalLayoutParams.gravity = 80;\n\t\tthis.mShadow.setLayoutParams(localLayoutParams);\n\t\tthis.mHeaderContainer.addView(this.mHeaderImage);\n\t\tthis.mHeaderContainer.addView(this.mShadow);\n\t\taddHeaderView(this.mHeaderContainer);\n\t\tthis.mScalingRunnalable = new ScalingRunnalable();\n\t\tsuper.setOnScrollListener(this);\n\t}\n\n\tprivate void onSecondaryPointerUp(MotionEvent paramMotionEvent) {\n\t\tint i = (paramMotionEvent.getAction()) >> 8;\n\t\tif (paramMotionEvent.getPointerId(i) == this.mActivePointerId)\n\t\t\tif (i != 0) {\n\t\t\t\tint j = 1;\n\t\t\t\tthis.mLastMotionY = paramMotionEvent.getY(0);\n\t\t\t\tthis.mActivePointerId = paramMotionEvent.getPointerId(0);\n\t\t\t\treturn;\n\t\t\t}\n\t}\n\n\tprivate void reset() {\n\t\tthis.mActivePointerId = -1;\n\t\tthis.mLastMotionY = -1.0F;\n\t\tthis.mMaxScale = -1.0F;\n\t\tthis.mLastScale = -1.0F;\n\t}\n\n\tpublic ImageView getHeaderView() {\n\t\treturn this.mHeaderImage;\n\t}\n\n\tpublic boolean onInterceptTouchEvent(MotionEvent paramMotionEvent) {\n\t\treturn super.onInterceptTouchEvent(paramMotionEvent);\n\t}\n\n\tprotected void onLayout(boolean paramBoolean, int paramInt1, int paramInt2,\n\t\t\tint paramInt3, int paramInt4) {\n\t\tsuper.onLayout(paramBoolean, paramInt1, paramInt2, paramInt3, paramInt4);\n\t\tif (this.mHeaderHeight == 0)\n\t\t\tthis.mHeaderHeight = this.mHeaderContainer.getHeight();\n\t}\n\n\t@Override\n\tpublic void onScroll(AbsListView paramAbsListView, int paramInt1,\n\t\t\tint paramInt2, int paramInt3) {\n\t\tLog.d(\"mmm\", \"onScroll\");\n\t\tfloat f = this.mHeaderHeight - this.mHeaderContainer.getBottom();\n\t\tLog.d(\"mmm\", \"f|\" + f);\n\t\tif ((f > 0.0F) && (f < this.mHeaderHeight)) {\n\t\t\tLog.d(\"mmm\", \"1\");\n\t\t\tint i = (int) (0.65D * f);\n\t\t\tthis.mHeaderImage.scrollTo(0, -i);\n\t\t} else if (this.mHeaderImage.getScrollY() != 0) {\n\t\t\tLog.d(\"mmm\", \"2\");\n\t\t\tthis.mHeaderImage.scrollTo(0, 0);\n\t\t}\n\t\tif (this.mOnScrollListener != null) {\n\t\t\tthis.mOnScrollListener.onScroll(paramAbsListView, paramInt1,\n\t\t\t\t\tparamInt2, paramInt3);\n\t\t}\n\t}\n\n\tpublic void onScrollStateChanged(AbsListView paramAbsListView, int paramInt) {\n\t\tif (this.mOnScrollListener != null)\n\t\t\tthis.mOnScrollListener.onScrollStateChanged(paramAbsListView,\n\t\t\t\t\tparamInt);\n\t}\n\n\tpublic boolean onTouchEvent(MotionEvent paramMotionEvent) {\n\t\tLog.d(\"mmm\", \"\" + (0xFF & paramMotionEvent.getAction()));\n\t\tswitch (0xFF & paramMotionEvent.getAction()) {\n\t\tcase 4:\n\t\tcase 0:\n\t\t\tif (!this.mScalingRunnalable.mIsFinished) {\n\t\t\t\tthis.mScalingRunnalable.abortAnimation();\n\t\t\t}\n\t\t\tthis.mLastMotionY = paramMotionEvent.getY();\n\t\t\tthis.mActivePointerId = paramMotionEvent.getPointerId(0);\n\t\t\tthis.mMaxScale = (this.mScreenHeight / this.mHeaderHeight);\n\t\t\tthis.mLastScale = (this.mHeaderContainer.getBottom() / this.mHeaderHeight);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tLog.d(\"mmm\", \"mActivePointerId\" + mActivePointerId);\n\t\t\tint j = paramMotionEvent.findPointerIndex(this.mActivePointerId);\n\t\t\tif (j == -1) {\n\t\t\t\tLog.e(\"PullToZoomListView\", \"Invalid pointerId=\"\n\t\t\t\t\t\t+ this.mActivePointerId + \" in onTouchEvent\");\n\t\t\t} else {\n\t\t\t\tif (this.mLastMotionY == -1.0F)\n\t\t\t\t\tthis.mLastMotionY = paramMotionEvent.getY(j);\n\t\t\t\tif (this.mHeaderContainer.getBottom() >= this.mHeaderHeight) {\n\t\t\t\t\tViewGroup.LayoutParams localLayoutParams = this.mHeaderContainer\n\t\t\t\t\t\t\t.getLayoutParams();\n\t\t\t\t\tfloat f = ((paramMotionEvent.getY(j) - this.mLastMotionY + this.mHeaderContainer\n\t\t\t\t\t\t\t.getBottom()) / this.mHeaderHeight - this.mLastScale)\n\t\t\t\t\t\t\t/ 2.0F + this.mLastScale;\n\t\t\t\t\tif ((this.mLastScale <= 1.0D) && (f < this.mLastScale)) {\n\t\t\t\t\t\tlocalLayoutParams.height = this.mHeaderHeight;\n\t\t\t\t\t\tthis.mHeaderContainer\n\t\t\t\t\t\t\t\t.setLayoutParams(localLayoutParams);\n\t\t\t\t\t\treturn super.onTouchEvent(paramMotionEvent);\n\t\t\t\t\t}\n\t\t\t\t\tthis.mLastScale = Math.min(Math.max(f, 1.0F),\n\t\t\t\t\t\t\tthis.mMaxScale);\n\t\t\t\t\tlocalLayoutParams.height = ((int) (this.mHeaderHeight * this.mLastScale));\n\t\t\t\t\tif (localLayoutParams.height < this.mScreenHeight)\n\t\t\t\t\t\tthis.mHeaderContainer\n\t\t\t\t\t\t\t\t.setLayoutParams(localLayoutParams);\n\t\t\t\t\tthis.mLastMotionY = paramMotionEvent.getY(j);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tthis.mLastMotionY = paramMotionEvent.getY(j);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\treset();\n\t\t\tendScraling();\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tint i = paramMotionEvent.getActionIndex();\n\t\t\tthis.mLastMotionY = paramMotionEvent.getY(i);\n\t\t\tthis.mActivePointerId = paramMotionEvent.getPointerId(i);\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tonSecondaryPointerUp(paramMotionEvent);\n\t\t\tthis.mLastMotionY = paramMotionEvent.getY(paramMotionEvent\n\t\t\t\t\t.findPointerIndex(this.mActivePointerId));\n\t\t\tbreak;\n\t\tcase 6:\n\t\t}\n\t\treturn super.onTouchEvent(paramMotionEvent);\n\t}\n\n\tpublic void setHeaderViewSize(int paramInt1, int paramInt2) {\n\t\tObject localObject = this.mHeaderContainer.getLayoutParams();\n\t\tif (localObject == null)\n\t\t\tlocalObject = new LayoutParams(paramInt1, paramInt2);\n\t\t((ViewGroup.LayoutParams) localObject).width = paramInt1;\n\t\t((ViewGroup.LayoutParams) localObject).height = paramInt2;\n\t\tthis.mHeaderContainer\n\t\t\t\t.setLayoutParams((ViewGroup.LayoutParams) localObject);\n\t\tthis.mHeaderHeight = paramInt2;\n\t}\n\n\tpublic void setOnScrollListener(\n\t\t\tOnScrollListener paramOnScrollListener) {\n\t\tthis.mOnScrollListener = paramOnScrollListener;\n\t}\n\n\tpublic void setShadow(int paramInt) {\n\t\tthis.mShadow.setBackgroundResource(paramInt);\n\t}\n\n\tclass ScalingRunnalable implements Runnable {\n\t\tlong mDuration;\n\t\tboolean mIsFinished = true;\n\t\tfloat mScale;\n\t\tlong mStartTime;\n\n\t\tScalingRunnalable() {\n\t\t}\n\n\t\tpublic void abortAnimation() {\n\t\t\tthis.mIsFinished = true;\n\t\t}\n\n\t\tpublic boolean isFinished() {\n\t\t\treturn this.mIsFinished;\n\t\t}\n\n\t\tpublic void run() {\n\t\t\tfloat f2;\n\t\t\tViewGroup.LayoutParams localLayoutParams;\n\t\t\tif ((!this.mIsFinished) && (this.mScale > 1.0D)) {\n\t\t\t\tfloat f1 = ((float) SystemClock.currentThreadTimeMillis() - (float) this.mStartTime)\n\t\t\t\t\t\t/ (float) this.mDuration;\n\t\t\t\tf2 = this.mScale - (this.mScale - 1.0F)\n\t\t\t\t\t\t* PullToZoomListView.sInterpolator.getInterpolation(f1);\n\t\t\t\tlocalLayoutParams = PullToZoomListView.this.mHeaderContainer\n\t\t\t\t\t\t.getLayoutParams();\n\t\t\t\tif (f2 > 1.0F) {\n\t\t\t\t\tLog.d(\"mmm\", \"f2>1.0\");\n\t\t\t\t\tlocalLayoutParams.height = PullToZoomListView.this.mHeaderHeight;\n\t\t\t\t\tlocalLayoutParams.height = ((int) (f2 * PullToZoomListView.this.mHeaderHeight));\n\t\t\t\t\tPullToZoomListView.this.mHeaderContainer\n\t\t\t\t\t\t\t.setLayoutParams(localLayoutParams);\n\t\t\t\t\tPullToZoomListView.this.post(this);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.mIsFinished = true;\n\t\t\t}\n\t\t}\n\n\t\tpublic void startAnimation(long paramLong) {\n\t\t\tthis.mStartTime = SystemClock.currentThreadTimeMillis();\n\t\t\tthis.mDuration = paramLong;\n\t\t\tthis.mScale = ((float) (PullToZoomListView.this.mHeaderContainer\n\t\t\t\t\t.getBottom()) / PullToZoomListView.this.mHeaderHeight);\n\t\t\tthis.mIsFinished = false;\n\t\t\tPullToZoomListView.this.post(this);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/view/VP.java",
    "content": "package com.cjj.bb.view;\n\nimport io.vov.vitamio.MediaPlayer;\nimport android.graphics.Typeface;\n\npublic class VP {\n\t\n\tpublic static final String SNAP_SHOT_PATH = \"/Player\";\n\tpublic static final String SESSION_LAST_POSITION_SUFIX = \".last\";\n\t\n\t// key\n\tpublic static final String SUB_SHADOW_COLOR = \"vplayer_sub_shadow_color\";\n\tpublic static final String SUB_POSITION = \"vplayer_sub_position\";\n\tpublic static final String SUB_SIZE = \"vplayer_sub_size\";\n\tpublic static final String SUB_SHADOW_RADIUS = \"vplayer_sub_shadow_radius\";\n\tpublic static final String SUB_ENABLED = \"vplayer_sub_enabled\";\n\tpublic static final String SUB_SHADOW_ENABLED = \"vplayer_sub_shadow_enabled\";\n\tpublic static final String SUB_TEXT_KEY = \"sub_text\";\n\tpublic static final String SUB_PIXELS_KEY = \"sub_pixels\";\n\tpublic static final String SUB_WIDTH_KEY = \"sub_width\";\n\tpublic static final String SUB_HEIGHT_KEY = \"sub_height\";\n\t\n\t// default value 1024\n\tpublic static final int DEFAULT_BUF_SIZE = 512 * 1024;\n\tpublic static final int DEFAULT_VIDEO_QUALITY = MediaPlayer.VIDEOQUALITY_MEDIUM;\n\tpublic static final boolean DEFAULT_DEINTERLACE = false;\n\tpublic static final float DEFAULT_ASPECT_RATIO = 0f;\n\tpublic static final float DEFAULT_STEREO_VOLUME = 1.0f;\n\tpublic static final String DEFAULT_META_ENCODING = \"auto\";\n\tpublic static final String DEFAULT_SUB_ENCODING = \"auto\";\n\tpublic static final int DEFAULT_SUB_STYLE = Typeface.BOLD;\n\tpublic static final int DEFAULT_SUB_COLOR = 0xffffffff;\n\tpublic static final int DEFAULT_SUB_SHADOWCOLOR = 0xff000000;\n\tpublic static final float DEFAULT_SUB_SHADOWRADIUS = 2.0f;\n\tpublic static final float DEFAULT_SUB_SIZE = 18.0f;\n\tpublic static final float DEFAULT_SUB_POS = 10.0f;\n\tpublic static final int DEFAULT_TYPEFACE_INT = 0;\n\tpublic static final boolean DEFAULT_SUB_SHOWN = true;\n\tpublic static final boolean DEFAULT_SUB_SHADOW = true;\n\tpublic static final Typeface DEFAULT_TYPEFACE = Typeface.DEFAULT;\n\t\n\t\n\tpublic static Typeface getTypeface(int type) {\n\t\tswitch (type) {\n\t\tcase 0:\n\t\t\treturn Typeface.DEFAULT;\n\t\tcase 1:\n\t\t\treturn Typeface.SANS_SERIF;\n\t\tcase 2:\n\t\t\treturn Typeface.SERIF;\n\t\tcase 3:\n\t\t\treturn Typeface.MONOSPACE;\n\t\tdefault:\n\t\t\treturn DEFAULT_TYPEFACE;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/com/cjj/bb/view/VideoView.java",
    "content": "/*\n * Copyright (C) 2012 YIXIA.COM\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage com.cjj.bb.view;\n\n\nimport android.app.Activity;\nimport android.content.Context;\nimport android.graphics.PixelFormat;\nimport android.util.AttributeSet;\nimport android.view.SurfaceHolder;\nimport android.view.SurfaceView;\nimport android.view.ViewGroup.LayoutParams;\n\nimport com.cjj.bb.utils.DeviceUtils;\n\n\npublic class VideoView extends SurfaceView {\n\tprivate Activity mActivity;\n\tprivate SurfaceHolder mSurfaceHolder;\n\tprivate int mSurfaceWidth, mSurfaceHeight;\n\tprivate int mVideoMode = VIDEO_LAYOUT_SCALE;\n\tpublic static final int VIDEO_LAYOUT_ORIGIN = 0;\n\tpublic static final int VIDEO_LAYOUT_SCALE = 1;\n\tpublic static final int VIDEO_LAYOUT_STRETCH = 2;\n\tpublic static final int VIDEO_LAYOUT_ZOOM = 3;\n\tpublic static final int VIDEO_LAYOUT_SCALE_ZOOM = 4;\n\tpublic int mVideoHeight;\n\n\tpublic VideoView(Context context, AttributeSet attrs) {\n\t\tsuper(context, attrs);\n\t\tgetHolder().addCallback(mCallback);\n\t\tgetHolder().setFormat(PixelFormat.RGBA_8888); \n\t}\n\n\t@SuppressWarnings(\"deprecation\")\n\tpublic void initialize(Activity activity, SurfaceCallback l, boolean push) {\n\t\tmActivity = activity;\n\t\tmListener = l;\n\t\tif (mSurfaceHolder == null)\n\t\t\tmSurfaceHolder = getHolder();\n\n\t\t// These methods is set to hw decoder or sw decoder, <= 2.3\n\t\tif (push)\n\t\t\tgetHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);\n\t\telse\n\t\t\tgetHolder().setType(SurfaceHolder.SURFACE_TYPE_NORMAL);\n\t}\n\n\tprivate void setSurfaceLayout(float userRatio, int videoWidth, int videoHeight, float videoAspectRatio) {\n\t\tLayoutParams lp = getLayoutParams();\n\t\tint windowWidth = DeviceUtils.getScreenWidth(mActivity);\n\t\tint windowHeight = DeviceUtils.getScreenHeight(mActivity);\n\t\tfloat windowRatio = windowWidth / (float) windowHeight;\n\t\tfloat videoRatio = userRatio <= 0.01f ? videoAspectRatio : userRatio;\n\t\tmSurfaceHeight = videoHeight;\n\t\tmSurfaceWidth = videoWidth;\n\t\tif (VIDEO_LAYOUT_ORIGIN == mVideoMode && mSurfaceWidth < windowWidth && mSurfaceHeight < windowHeight) {\n\t\t\tlp.width = (int) (mSurfaceHeight * videoRatio);\n\t\t\tlp.height = mSurfaceHeight;\n\t\t} else if (mVideoMode == VIDEO_LAYOUT_ZOOM) {\n\t\t\tlp.width = windowRatio > videoRatio ? windowWidth : (int) (videoRatio * windowHeight);\n\t\t\tlp.height = windowRatio < videoRatio ? windowHeight : (int) (windowWidth / videoRatio);\n\t\t} else if (mVideoMode == VIDEO_LAYOUT_SCALE_ZOOM && mVideoHeight > 0) {\n\t\t\tlp.width = (int) (mVideoHeight * videoRatio);\n\t\t\tlp.height = mVideoHeight;\n\t\t} else {\n\t\t\tboolean full = mVideoMode == VIDEO_LAYOUT_STRETCH;\n\t\t\tlp.width = (full || windowRatio < videoRatio) ? windowWidth : (int) (videoRatio * windowHeight);\n\t\t\tlp.height = (full || windowRatio > videoRatio) ? windowHeight : (int) (windowWidth / videoRatio);\n\t\t}\n\t\tmVideoHeight = lp.height;\n\t\tsetLayoutParams(lp);\n\t\tgetHolder().setFixedSize(mSurfaceWidth, mSurfaceHeight);\n\t\t//Log.d(\"VIDEO: %dx%dx%f, Surface: %dx%d, LP: %dx%d, Window: %dx%dx%f\", videoWidth, videoHeight, videoAspectRatio, mSurfaceWidth, mSurfaceHeight, lp.width, lp.height, windowWidth, windowHeight, windowRatio);\n\t}\n\n\tpublic void setVideoLayout(int layout, float userRatio, int videoWidth, int videoHeight, float videoRatio) {\n\t\tmVideoMode = layout;\n\t\tsetSurfaceLayout(userRatio, videoWidth, videoHeight, videoRatio);\n\t}\n\n\tprivate SurfaceHolder.Callback mCallback = new SurfaceHolder.Callback() {\n\t\t@Override\n\t\tpublic void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {\n\t\t\tholder.setKeepScreenOn(true);\n\t\t\tif (mListener != null)\n\t\t\t\tmListener.onSurfaceChanged(holder, format, width, height);\n\t\t}\n\n\t\t@Override\n\t\tpublic void surfaceCreated(SurfaceHolder holder) {\n\t\t\tmSurfaceHolder = holder;\n\t\t\tif (mListener != null)\n\t\t\t\tmListener.onSurfaceCreated(holder);\n\t\t}\n\n\t\t@Override\n\t\tpublic void surfaceDestroyed(SurfaceHolder holder) {\n\t\t\tif (mListener != null)\n\t\t\t\tmListener.onSurfaceDestroyed(holder);\n\t\t}\n\t};\n\n\tprivate SurfaceCallback mListener;\n\n\tpublic interface SurfaceCallback {\n\t\tpublic void onSurfaceCreated(SurfaceHolder holder);\n\n\t\tpublic void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height);\n\n\t\tpublic void onSurfaceDestroyed(SurfaceHolder holder);\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/viewpagerindicator/CirclePageIndicator.java",
    "content": "/*\n * Copyright (C) 2011 Patrik Akerfeldt\n * Copyright (C) 2011 Jake Wharton\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage viewpagerindicator;\n\nimport android.content.Context;\nimport android.content.res.Resources;\nimport android.content.res.TypedArray;\nimport android.graphics.Canvas;\nimport android.graphics.Paint;\nimport android.graphics.Paint.Style;\nimport android.graphics.drawable.Drawable;\nimport android.os.Parcel;\nimport android.os.Parcelable;\nimport android.support.v4.view.MotionEventCompat;\nimport android.support.v4.view.ViewConfigurationCompat;\nimport android.support.v4.view.ViewPager;\nimport android.util.AttributeSet;\nimport android.view.MotionEvent;\nimport android.view.View;\nimport android.view.ViewConfiguration;\n\n\nimport com.cjj.bb.R;\n\nimport static android.graphics.Paint.ANTI_ALIAS_FLAG;\nimport static android.widget.LinearLayout.HORIZONTAL;\nimport static android.widget.LinearLayout.VERTICAL;\n\n/**\n * Draws circles (one for each view). The current view position is filled and\n * others are only stroked.\n */\npublic class CirclePageIndicator extends View implements PageIndicator {\n    private static final int INVALID_POINTER = -1;\n\n    private float mRadius;\n    private final Paint mPaintPageFill = new Paint(ANTI_ALIAS_FLAG);\n    private final Paint mPaintStroke = new Paint(ANTI_ALIAS_FLAG);\n    private final Paint mPaintFill = new Paint(ANTI_ALIAS_FLAG);\n    private ViewPager mViewPager;\n    private ViewPager.OnPageChangeListener mListener;\n    private int mCurrentPage;\n    private int mSnapPage;\n    private float mPageOffset;\n    private int mScrollState;\n    private int mOrientation;\n    private boolean mCentered;\n    private boolean mSnap;\n\n    private int mTouchSlop;\n    private float mLastMotionX = -1;\n    private int mActivePointerId = INVALID_POINTER;\n    private boolean mIsDragging;\n\n\n    public CirclePageIndicator(Context context) {\n        this(context, null);\n    }\n\n    public CirclePageIndicator(Context context, AttributeSet attrs) {\n        this(context, attrs, R.attr.vpiCirclePageIndicatorStyle);\n    }\n\n    public CirclePageIndicator(Context context, AttributeSet attrs, int defStyle) {\n        super(context, attrs, defStyle);\n        if (isInEditMode()) return;\n\n        //Load defaults from resources\n        final Resources res = getResources();\n        final int defaultPageColor = res.getColor(R.color.default_circle_indicator_page_color);\n        final int defaultFillColor = res.getColor(R.color.default_circle_indicator_fill_color);\n        final int defaultOrientation = res.getInteger(R.integer.default_circle_indicator_orientation);\n        final int defaultStrokeColor = res.getColor(R.color.default_circle_indicator_stroke_color);\n        final float defaultStrokeWidth = res.getDimension(R.dimen.default_circle_indicator_stroke_width);\n        final float defaultRadius = res.getDimension(R.dimen.default_circle_indicator_radius);\n        final boolean defaultCentered = res.getBoolean(R.bool.default_circle_indicator_centered);\n        final boolean defaultSnap = res.getBoolean(R.bool.default_circle_indicator_snap);\n\n        //Retrieve styles attributes\n        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CirclePageIndicator, defStyle, 0);\n\n        mCentered = a.getBoolean(R.styleable.CirclePageIndicator_centered, defaultCentered);\n        mOrientation = a.getInt(R.styleable.CirclePageIndicator_android_orientation, defaultOrientation);\n        mPaintPageFill.setStyle(Style.FILL);\n        mPaintPageFill.setColor(a.getColor(R.styleable.CirclePageIndicator_pageColor, defaultPageColor));\n        mPaintStroke.setStyle(Style.STROKE);\n        mPaintStroke.setColor(a.getColor(R.styleable.CirclePageIndicator_strokeColor, defaultStrokeColor));\n        mPaintStroke.setStrokeWidth(a.getDimension(R.styleable.CirclePageIndicator_strokeWidth, defaultStrokeWidth));\n        mPaintFill.setStyle(Style.FILL);\n        mPaintFill.setColor(a.getColor(R.styleable.CirclePageIndicator_fillColor, defaultFillColor));\n        mRadius = a.getDimension(R.styleable.CirclePageIndicator_radius, defaultRadius);\n        mSnap = a.getBoolean(R.styleable.CirclePageIndicator_snap, defaultSnap);\n\n        Drawable background = a.getDrawable(R.styleable.CirclePageIndicator_android_background);\n        if (background != null) {\n          setBackgroundDrawable(background);\n        }\n\n        a.recycle();\n\n        final ViewConfiguration configuration = ViewConfiguration.get(context);\n        mTouchSlop = ViewConfigurationCompat.getScaledPagingTouchSlop(configuration);\n    }\n\n\n    public void setCentered(boolean centered) {\n        mCentered = centered;\n        invalidate();\n    }\n\n    public boolean isCentered() {\n        return mCentered;\n    }\n\n    public void setPageColor(int pageColor) {\n        mPaintPageFill.setColor(pageColor);\n        invalidate();\n    }\n\n    public int getPageColor() {\n        return mPaintPageFill.getColor();\n    }\n\n    public void setFillColor(int fillColor) {\n        mPaintFill.setColor(fillColor);\n        invalidate();\n    }\n\n    public int getFillColor() {\n        return mPaintFill.getColor();\n    }\n\n    public void setOrientation(int orientation) {\n        switch (orientation) {\n            case HORIZONTAL:\n            case VERTICAL:\n                mOrientation = orientation;\n                requestLayout();\n                break;\n\n            default:\n                throw new IllegalArgumentException(\"Orientation must be either HORIZONTAL or VERTICAL.\");\n        }\n    }\n\n    public int getOrientation() {\n        return mOrientation;\n    }\n\n    public void setStrokeColor(int strokeColor) {\n        mPaintStroke.setColor(strokeColor);\n        invalidate();\n    }\n\n    public int getStrokeColor() {\n        return mPaintStroke.getColor();\n    }\n\n    public void setStrokeWidth(float strokeWidth) {\n        mPaintStroke.setStrokeWidth(strokeWidth);\n        invalidate();\n    }\n\n    public float getStrokeWidth() {\n        return mPaintStroke.getStrokeWidth();\n    }\n\n    public void setRadius(float radius) {\n        mRadius = radius;\n        invalidate();\n    }\n\n    public float getRadius() {\n        return mRadius;\n    }\n\n    public void setSnap(boolean snap) {\n        mSnap = snap;\n        invalidate();\n    }\n\n    public boolean isSnap() {\n        return mSnap;\n    }\n\n    @Override\n    protected void onDraw(Canvas canvas) {\n        super.onDraw(canvas);\n\n        if (mViewPager == null) {\n            return;\n        }\n        final int count = mViewPager.getAdapter().getCount();\n        if (count == 0) {\n            return;\n        }\n\n        if (mCurrentPage >= count) {\n            setCurrentItem(count - 1);\n            return;\n        }\n\n        int longSize;\n        int longPaddingBefore;\n        int longPaddingAfter;\n        int shortPaddingBefore;\n        if (mOrientation == HORIZONTAL) {\n            longSize = getWidth();\n            longPaddingBefore = getPaddingLeft();\n            longPaddingAfter = getPaddingRight();\n            shortPaddingBefore = getPaddingTop();\n        } else {\n            longSize = getHeight();\n            longPaddingBefore = getPaddingTop();\n            longPaddingAfter = getPaddingBottom();\n            shortPaddingBefore = getPaddingLeft();\n        }\n\n        final float threeRadius = mRadius * 3;\n        final float shortOffset = shortPaddingBefore + mRadius;\n        float longOffset = longPaddingBefore + mRadius;\n        if (mCentered) {\n            longOffset += ((longSize - longPaddingBefore - longPaddingAfter) / 2.0f) - ((count * threeRadius) / 2.0f);\n        }\n\n        float dX;\n        float dY;\n\n        float pageFillRadius = mRadius;\n        if (mPaintStroke.getStrokeWidth() > 0) {\n            pageFillRadius -= mPaintStroke.getStrokeWidth() / 2.0f;\n        }\n\n        //Draw stroked circles\n        for (int iLoop = 0; iLoop < count; iLoop++) {\n            float drawLong = longOffset + (iLoop * threeRadius);\n            if (mOrientation == HORIZONTAL) {\n                dX = drawLong;\n                dY = shortOffset;\n            } else {\n                dX = shortOffset;\n                dY = drawLong;\n            }\n            // Only paint fill if not completely transparent\n            if (mPaintPageFill.getAlpha() > 0) {\n                canvas.drawCircle(dX, dY, pageFillRadius, mPaintPageFill);\n            }\n\n            // Only paint stroke if a stroke width was non-zero\n            if (pageFillRadius != mRadius) {\n                canvas.drawCircle(dX, dY, mRadius, mPaintStroke);\n            }\n        }\n\n        //Draw the filled circle according to the current scroll\n        float cx = (mSnap ? mSnapPage : mCurrentPage) * threeRadius;\n        if (!mSnap) {\n            cx += mPageOffset * threeRadius;\n        }\n        if (mOrientation == HORIZONTAL) {\n            dX = longOffset + cx;\n            dY = shortOffset;\n        } else {\n            dX = shortOffset;\n            dY = longOffset + cx;\n        }\n        canvas.drawCircle(dX, dY, mRadius, mPaintFill);\n    }\n\n    public boolean onTouchEvent(MotionEvent ev) {\n        if (super.onTouchEvent(ev)) {\n            return true;\n        }\n        if ((mViewPager == null) || (mViewPager.getAdapter().getCount() == 0)) {\n            return false;\n        }\n\n        final int action = ev.getAction() & MotionEventCompat.ACTION_MASK;\n        switch (action) {\n            case MotionEvent.ACTION_DOWN:\n                mActivePointerId = MotionEventCompat.getPointerId(ev, 0);\n                mLastMotionX = ev.getX();\n                break;\n\n            case MotionEvent.ACTION_MOVE: {\n                final int activePointerIndex = MotionEventCompat.findPointerIndex(ev, mActivePointerId);\n                final float x = MotionEventCompat.getX(ev, activePointerIndex);\n                final float deltaX = x - mLastMotionX;\n\n                if (!mIsDragging) {\n                    if (Math.abs(deltaX) > mTouchSlop) {\n                        mIsDragging = true;\n                    }\n                }\n\n                if (mIsDragging) {\n                    mLastMotionX = x;\n                    if (mViewPager.isFakeDragging() || mViewPager.beginFakeDrag()) {\n                        mViewPager.fakeDragBy(deltaX);\n                    }\n                }\n\n                break;\n            }\n\n            case MotionEvent.ACTION_CANCEL:\n            case MotionEvent.ACTION_UP:\n                if (!mIsDragging) {\n                    final int count = mViewPager.getAdapter().getCount();\n                    final int width = getWidth();\n                    final float halfWidth = width / 2f;\n                    final float sixthWidth = width / 6f;\n\n                    if ((mCurrentPage > 0) && (ev.getX() < halfWidth - sixthWidth)) {\n                        if (action != MotionEvent.ACTION_CANCEL) {\n                            mViewPager.setCurrentItem(mCurrentPage - 1);\n                        }\n                        return true;\n                    } else if ((mCurrentPage < count - 1) && (ev.getX() > halfWidth + sixthWidth)) {\n                        if (action != MotionEvent.ACTION_CANCEL) {\n                            mViewPager.setCurrentItem(mCurrentPage + 1);\n                        }\n                        return true;\n                    }\n                }\n\n                mIsDragging = false;\n                mActivePointerId = INVALID_POINTER;\n                if (mViewPager.isFakeDragging()) mViewPager.endFakeDrag();\n                break;\n\n            case MotionEventCompat.ACTION_POINTER_DOWN: {\n                final int index = MotionEventCompat.getActionIndex(ev);\n                mLastMotionX = MotionEventCompat.getX(ev, index);\n                mActivePointerId = MotionEventCompat.getPointerId(ev, index);\n                break;\n            }\n\n            case MotionEventCompat.ACTION_POINTER_UP:\n                final int pointerIndex = MotionEventCompat.getActionIndex(ev);\n                final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex);\n                if (pointerId == mActivePointerId) {\n                    final int newPointerIndex = pointerIndex == 0 ? 1 : 0;\n                    mActivePointerId = MotionEventCompat.getPointerId(ev, newPointerIndex);\n                }\n                mLastMotionX = MotionEventCompat.getX(ev, MotionEventCompat.findPointerIndex(ev, mActivePointerId));\n                break;\n        }\n\n        return true;\n    }\n\n    @Override\n    public void setViewPager(ViewPager view) {\n        if (mViewPager == view) {\n            return;\n        }\n        if (mViewPager != null) {\n            mViewPager.setOnPageChangeListener(null);\n        }\n        if (view.getAdapter() == null) {\n            throw new IllegalStateException(\"ViewPager does not have adapter instance.\");\n        }\n        mViewPager = view;\n        mViewPager.setOnPageChangeListener(this);\n        invalidate();\n    }\n\n    @Override\n    public void setViewPager(ViewPager view, int initialPosition) {\n        setViewPager(view);\n        setCurrentItem(initialPosition);\n    }\n\n    @Override\n    public void setCurrentItem(int item) {\n        if (mViewPager == null) {\n            throw new IllegalStateException(\"ViewPager has not been bound.\");\n        }\n        mViewPager.setCurrentItem(item);\n        mCurrentPage = item;\n        invalidate();\n    }\n\n    @Override\n    public void notifyDataSetChanged() {\n        invalidate();\n    }\n\n    @Override\n    public void onPageScrollStateChanged(int state) {\n        mScrollState = state;\n\n        if (mListener != null) {\n            mListener.onPageScrollStateChanged(state);\n        }\n    }\n\n    @Override\n    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {\n        mCurrentPage = position;\n        mPageOffset = positionOffset;\n        invalidate();\n\n        if (mListener != null) {\n            mListener.onPageScrolled(position, positionOffset, positionOffsetPixels);\n        }\n    }\n\n    @Override\n    public void onPageSelected(int position) {\n        if (mSnap || mScrollState == ViewPager.SCROLL_STATE_IDLE) {\n            mCurrentPage = position;\n            mSnapPage = position;\n            invalidate();\n        }\n\n        if (mListener != null) {\n            mListener.onPageSelected(position);\n        }\n    }\n\n    @Override\n    public void setOnPageChangeListener(ViewPager.OnPageChangeListener listener) {\n        mListener = listener;\n    }\n\n    /*\n     * (non-Javadoc)\n     *\n     * @see android.view.View#onMeasure(int, int)\n     */\n    @Override\n    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {\n        if (mOrientation == HORIZONTAL) {\n            setMeasuredDimension(measureLong(widthMeasureSpec), measureShort(heightMeasureSpec));\n        } else {\n            setMeasuredDimension(measureShort(widthMeasureSpec), measureLong(heightMeasureSpec));\n        }\n    }\n\n    /**\n     * Determines the width of this view\n     *\n     * @param measureSpec\n     *            A measureSpec packed into an int\n     * @return The width of the view, honoring constraints from measureSpec\n     */\n    private int measureLong(int measureSpec) {\n        int result;\n        int specMode = MeasureSpec.getMode(measureSpec);\n        int specSize = MeasureSpec.getSize(measureSpec);\n\n        if ((specMode == MeasureSpec.EXACTLY) || (mViewPager == null)) {\n            //We were told how big to be\n            result = specSize;\n        } else {\n            //Calculate the width according the views count\n            final int count = mViewPager.getAdapter().getCount();\n            result = (int)(getPaddingLeft() + getPaddingRight()\n                    + (count * 2 * mRadius) + (count - 1) * mRadius + 1);\n            //Respect AT_MOST value if that was what is called for by measureSpec\n            if (specMode == MeasureSpec.AT_MOST) {\n                result = Math.min(result, specSize);\n            }\n        }\n        return result;\n    }\n\n    /**\n     * Determines the height of this view\n     *\n     * @param measureSpec\n     *            A measureSpec packed into an int\n     * @return The height of the view, honoring constraints from measureSpec\n     */\n    private int measureShort(int measureSpec) {\n        int result;\n        int specMode = MeasureSpec.getMode(measureSpec);\n        int specSize = MeasureSpec.getSize(measureSpec);\n\n        if (specMode == MeasureSpec.EXACTLY) {\n            //We were told how big to be\n            result = specSize;\n        } else {\n            //Measure the height\n            result = (int)(2 * mRadius + getPaddingTop() + getPaddingBottom() + 1);\n            //Respect AT_MOST value if that was what is called for by measureSpec\n            if (specMode == MeasureSpec.AT_MOST) {\n                result = Math.min(result, specSize);\n            }\n        }\n        return result;\n    }\n\n    @Override\n    public void onRestoreInstanceState(Parcelable state) {\n        SavedState savedState = (SavedState)state;\n        super.onRestoreInstanceState(savedState.getSuperState());\n        mCurrentPage = savedState.currentPage;\n        mSnapPage = savedState.currentPage;\n        requestLayout();\n    }\n\n    @Override\n    public Parcelable onSaveInstanceState() {\n        Parcelable superState = super.onSaveInstanceState();\n        SavedState savedState = new SavedState(superState);\n        savedState.currentPage = mCurrentPage;\n        return savedState;\n    }\n\n    static class SavedState extends BaseSavedState {\n        int currentPage;\n\n        public SavedState(Parcelable superState) {\n            super(superState);\n        }\n\n        private SavedState(Parcel in) {\n            super(in);\n            currentPage = in.readInt();\n        }\n\n        @Override\n        public void writeToParcel(Parcel dest, int flags) {\n            super.writeToParcel(dest, flags);\n            dest.writeInt(currentPage);\n        }\n\n        @SuppressWarnings(\"UnusedDeclaration\")\n        public static final Creator<SavedState> CREATOR = new Creator<SavedState>() {\n            @Override\n            public SavedState createFromParcel(Parcel in) {\n                return new SavedState(in);\n            }\n\n            @Override\n            public SavedState[] newArray(int size) {\n                return new SavedState[size];\n            }\n        };\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/viewpagerindicator/IconPageIndicator.java",
    "content": "/*\n * Copyright (C) 2011 The Android Open Source Project\n * Copyright (C) 2012 Jake Wharton\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage viewpagerindicator;\n\nimport android.content.Context;\nimport android.support.v4.view.PagerAdapter;\nimport android.support.v4.view.ViewPager;\nimport android.support.v4.view.ViewPager.OnPageChangeListener;\nimport android.util.AttributeSet;\nimport android.view.Gravity;\nimport android.view.View;\nimport android.widget.HorizontalScrollView;\nimport android.widget.ImageView;\n\nimport com.cjj.bb.R;\n\nimport static android.view.ViewGroup.LayoutParams.FILL_PARENT;\nimport static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;\n\n/**\n * This widget implements the dynamic action bar tab behavior that can change\n * across different configurations or circumstances.\n */\npublic class IconPageIndicator extends HorizontalScrollView implements PageIndicator {\n    private final IcsLinearLayout mIconsLayout;\n\n    private ViewPager mViewPager;\n    private OnPageChangeListener mListener;\n    private Runnable mIconSelector;\n    private int mSelectedIndex;\n\n    public IconPageIndicator(Context context) {\n        this(context, null);\n    }\n\n    public IconPageIndicator(Context context, AttributeSet attrs) {\n        super(context, attrs);\n        setHorizontalScrollBarEnabled(false);\n\n        mIconsLayout = new IcsLinearLayout(context, R.attr.vpiIconPageIndicatorStyle);\n        addView(mIconsLayout, new LayoutParams(WRAP_CONTENT, FILL_PARENT, Gravity.CENTER));\n    }\n\n    private void animateToIcon(final int position) {\n        final View iconView = mIconsLayout.getChildAt(position);\n        if (mIconSelector != null) {\n            removeCallbacks(mIconSelector);\n        }\n        mIconSelector = new Runnable() {\n            public void run() {\n                final int scrollPos = iconView.getLeft() - (getWidth() - iconView.getWidth()) / 2;\n                smoothScrollTo(scrollPos, 0);\n                mIconSelector = null;\n            }\n        };\n        post(mIconSelector);\n    }\n\n    @Override\n    public void onAttachedToWindow() {\n        super.onAttachedToWindow();\n        if (mIconSelector != null) {\n            // Re-post the selector we saved\n            post(mIconSelector);\n        }\n    }\n\n    @Override\n    public void onDetachedFromWindow() {\n        super.onDetachedFromWindow();\n        if (mIconSelector != null) {\n            removeCallbacks(mIconSelector);\n        }\n    }\n\n    @Override\n    public void onPageScrollStateChanged(int arg0) {\n        if (mListener != null) {\n            mListener.onPageScrollStateChanged(arg0);\n        }\n    }\n\n    @Override\n    public void onPageScrolled(int arg0, float arg1, int arg2) {\n        if (mListener != null) {\n            mListener.onPageScrolled(arg0, arg1, arg2);\n        }\n    }\n\n    @Override\n    public void onPageSelected(int arg0) {\n        setCurrentItem(arg0);\n        if (mListener != null) {\n            mListener.onPageSelected(arg0);\n        }\n    }\n\n    @Override\n    public void setViewPager(ViewPager view) {\n        if (mViewPager == view) {\n            return;\n        }\n        if (mViewPager != null) {\n            mViewPager.setOnPageChangeListener(null);\n        }\n        PagerAdapter adapter = view.getAdapter();\n        if (adapter == null) {\n            throw new IllegalStateException(\"ViewPager does not have adapter instance.\");\n        }\n        mViewPager = view;\n        view.setOnPageChangeListener(this);\n        notifyDataSetChanged();\n    }\n\n    public void notifyDataSetChanged() {\n        mIconsLayout.removeAllViews();\n        IconPagerAdapter iconAdapter = (IconPagerAdapter) mViewPager.getAdapter();\n        int count = iconAdapter.getCount();\n        for (int i = 0; i < count; i++) {\n            ImageView view = new ImageView(getContext(), null, R.attr.vpiIconPageIndicatorStyle);\n            view.setImageResource(iconAdapter.getIconResId(i));\n            mIconsLayout.addView(view);\n        }\n        if (mSelectedIndex > count) {\n            mSelectedIndex = count - 1;\n        }\n        setCurrentItem(mSelectedIndex);\n        requestLayout();\n    }\n\n    @Override\n    public void setViewPager(ViewPager view, int initialPosition) {\n        setViewPager(view);\n        setCurrentItem(initialPosition);\n    }\n\n    @Override\n    public void setCurrentItem(int item) {\n        if (mViewPager == null) {\n            throw new IllegalStateException(\"ViewPager has not been bound.\");\n        }\n        mSelectedIndex = item;\n        mViewPager.setCurrentItem(item);\n\n        int tabCount = mIconsLayout.getChildCount();\n        for (int i = 0; i < tabCount; i++) {\n            View child = mIconsLayout.getChildAt(i);\n            boolean isSelected = (i == item);\n            child.setSelected(isSelected);\n            if (isSelected) {\n                animateToIcon(item);\n            }\n        }\n    }\n\n    @Override\n    public void setOnPageChangeListener(OnPageChangeListener listener) {\n        mListener = listener;\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/viewpagerindicator/IconPagerAdapter.java",
    "content": "package viewpagerindicator;\n\npublic interface IconPagerAdapter {\n    /**\n     * Get icon representing the page at {@code index} in the adapter.\n     */\n    int getIconResId(int index);\n\n    // From PagerAdapter\n    int getCount();\n}\n"
  },
  {
    "path": "app/src/main/java/viewpagerindicator/IcsLinearLayout.java",
    "content": "package viewpagerindicator;\n\nimport android.content.Context;\nimport android.content.res.TypedArray;\nimport android.graphics.Canvas;\nimport android.graphics.drawable.Drawable;\nimport android.view.View;\nimport android.widget.LinearLayout;\n\n/**\n * A simple extension of a regular linear layout that supports the divider API\n * of Android 4.0+. The dividers are added adjacent to the children by changing\n * their layout params. If you need to rely on the margins which fall in the\n * same orientation as the layout you should wrap the child in a simple\n * {@link android.widget.FrameLayout} so it can receive the margin.\n */\nclass IcsLinearLayout extends LinearLayout {\n    private static final int[] LL = new int[] {\n        /* 0 */ android.R.attr.divider,\n        /* 1 */ android.R.attr.showDividers,\n        /* 2 */ android.R.attr.dividerPadding,\n    };\n    private static final int LL_DIVIDER = 0;\n    private static final int LL_SHOW_DIVIDER = 1;\n    private static final int LL_DIVIDER_PADDING = 2;\n\n    private Drawable mDivider;\n    private int mDividerWidth;\n    private int mDividerHeight;\n    private int mShowDividers;\n    private int mDividerPadding;\n\n\n    public IcsLinearLayout(Context context, int themeAttr) {\n        super(context);\n\n        TypedArray a = context.obtainStyledAttributes(null, LL, themeAttr, 0);\n        setDividerDrawable(a.getDrawable(IcsLinearLayout.LL_DIVIDER));\n        mDividerPadding = a.getDimensionPixelSize(LL_DIVIDER_PADDING, 0);\n        mShowDividers = a.getInteger(LL_SHOW_DIVIDER, SHOW_DIVIDER_NONE);\n        a.recycle();\n    }\n\n    public void setDividerDrawable(Drawable divider) {\n        if (divider == mDivider) {\n            return;\n        }\n        mDivider = divider;\n        if (divider != null) {\n            mDividerWidth = divider.getIntrinsicWidth();\n            mDividerHeight = divider.getIntrinsicHeight();\n        } else {\n            mDividerWidth = 0;\n            mDividerHeight = 0;\n        }\n        setWillNotDraw(divider == null);\n        requestLayout();\n    }\n\n    @Override\n    protected void measureChildWithMargins(View child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed) {\n        final int index = indexOfChild(child);\n        final int orientation = getOrientation();\n        final LayoutParams params = (LayoutParams) child.getLayoutParams();\n        if (hasDividerBeforeChildAt(index)) {\n            if (orientation == VERTICAL) {\n                //Account for the divider by pushing everything up\n                params.topMargin = mDividerHeight;\n            } else {\n                //Account for the divider by pushing everything left\n                params.leftMargin = mDividerWidth;\n            }\n        }\n\n        final int count = getChildCount();\n        if (index == count - 1) {\n            if (hasDividerBeforeChildAt(count)) {\n                if (orientation == VERTICAL) {\n                    params.bottomMargin = mDividerHeight;\n                } else {\n                    params.rightMargin = mDividerWidth;\n                }\n            }\n        }\n        super.measureChildWithMargins(child, parentWidthMeasureSpec, widthUsed, parentHeightMeasureSpec, heightUsed);\n    }\n\n    @Override\n    protected void onDraw(Canvas canvas) {\n        if (mDivider != null) {\n            if (getOrientation() == VERTICAL) {\n                drawDividersVertical(canvas);\n            } else {\n                drawDividersHorizontal(canvas);\n            }\n        }\n        super.onDraw(canvas);\n    }\n\n    private void drawDividersVertical(Canvas canvas) {\n        final int count = getChildCount();\n        for (int i = 0; i < count; i++) {\n            final View child = getChildAt(i);\n\n            if (child != null && child.getVisibility() != GONE) {\n                if (hasDividerBeforeChildAt(i)) {\n                    final LayoutParams lp = (LayoutParams) child.getLayoutParams();\n                    final int top = child.getTop() - lp.topMargin/* - mDividerHeight*/;\n                    drawHorizontalDivider(canvas, top);\n                }\n            }\n        }\n\n        if (hasDividerBeforeChildAt(count)) {\n            final View child = getChildAt(count - 1);\n            int bottom = 0;\n            if (child == null) {\n                bottom = getHeight() - getPaddingBottom() - mDividerHeight;\n            } else {\n                //final LayoutParams lp = (LayoutParams) child.getLayoutParams();\n                bottom = child.getBottom()/* + lp.bottomMargin*/;\n            }\n            drawHorizontalDivider(canvas, bottom);\n        }\n    }\n\n    private void drawDividersHorizontal(Canvas canvas) {\n        final int count = getChildCount();\n        for (int i = 0; i < count; i++) {\n            final View child = getChildAt(i);\n\n            if (child != null && child.getVisibility() != GONE) {\n                if (hasDividerBeforeChildAt(i)) {\n                    final LayoutParams lp = (LayoutParams) child.getLayoutParams();\n                    final int left = child.getLeft() - lp.leftMargin/* - mDividerWidth*/;\n                    drawVerticalDivider(canvas, left);\n                }\n            }\n        }\n\n        if (hasDividerBeforeChildAt(count)) {\n            final View child = getChildAt(count - 1);\n            int right = 0;\n            if (child == null) {\n                right = getWidth() - getPaddingRight() - mDividerWidth;\n            } else {\n                //final LayoutParams lp = (LayoutParams) child.getLayoutParams();\n                right = child.getRight()/* + lp.rightMargin*/;\n            }\n            drawVerticalDivider(canvas, right);\n        }\n    }\n\n    private void drawHorizontalDivider(Canvas canvas, int top) {\n        mDivider.setBounds(getPaddingLeft() + mDividerPadding, top,\n                getWidth() - getPaddingRight() - mDividerPadding, top + mDividerHeight);\n        mDivider.draw(canvas);\n    }\n\n    private void drawVerticalDivider(Canvas canvas, int left) {\n        mDivider.setBounds(left, getPaddingTop() + mDividerPadding,\n                left + mDividerWidth, getHeight() - getPaddingBottom() - mDividerPadding);\n        mDivider.draw(canvas);\n    }\n\n    private boolean hasDividerBeforeChildAt(int childIndex) {\n        if (childIndex == 0 || childIndex == getChildCount()) {\n          return false;\n        }\n        if ((mShowDividers & SHOW_DIVIDER_MIDDLE) != 0) {\n            boolean hasVisibleViewBefore = false;\n            for (int i = childIndex - 1; i >= 0; i--) {\n                if (getChildAt(i).getVisibility() != GONE) {\n                    hasVisibleViewBefore = true;\n                    break;\n                }\n            }\n            return hasVisibleViewBefore;\n        }\n        return false;\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/viewpagerindicator/LinePageIndicator.java",
    "content": "/*\n * Copyright (C) 2012 Jake Wharton\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage viewpagerindicator;\n\nimport android.content.Context;\nimport android.content.res.Resources;\nimport android.content.res.TypedArray;\nimport android.graphics.Canvas;\nimport android.graphics.Paint;\nimport android.graphics.drawable.Drawable;\nimport android.os.Parcel;\nimport android.os.Parcelable;\nimport android.support.v4.view.MotionEventCompat;\nimport android.support.v4.view.ViewConfigurationCompat;\nimport android.support.v4.view.ViewPager;\nimport android.util.AttributeSet;\nimport android.util.FloatMath;\nimport android.view.MotionEvent;\nimport android.view.View;\nimport android.view.ViewConfiguration;\n\nimport com.cjj.bb.R;\n\n/**\n * Draws a line for each page. The current page line is colored differently\n * than the unselected page lines.\n */\npublic class LinePageIndicator extends View implements PageIndicator {\n    private static final int INVALID_POINTER = -1;\n\n    private final Paint mPaintUnselected = new Paint(Paint.ANTI_ALIAS_FLAG);\n    private final Paint mPaintSelected = new Paint(Paint.ANTI_ALIAS_FLAG);\n    private ViewPager mViewPager;\n    private ViewPager.OnPageChangeListener mListener;\n    private int mCurrentPage;\n    private boolean mCentered;\n    private float mLineWidth;\n    private float mGapWidth;\n\n    private int mTouchSlop;\n    private float mLastMotionX = -1;\n    private int mActivePointerId = INVALID_POINTER;\n    private boolean mIsDragging;\n\n\n    public LinePageIndicator(Context context) {\n        this(context, null);\n    }\n\n    public LinePageIndicator(Context context, AttributeSet attrs) {\n        this(context, attrs, R.attr.vpiLinePageIndicatorStyle);\n    }\n\n    public LinePageIndicator(Context context, AttributeSet attrs, int defStyle) {\n        super(context, attrs, defStyle);\n        if (isInEditMode()) return;\n\n        final Resources res = getResources();\n\n        //Load defaults from resources\n        final int defaultSelectedColor = res.getColor(R.color.default_line_indicator_selected_color);\n        final int defaultUnselectedColor = res.getColor(R.color.default_line_indicator_unselected_color);\n        final float defaultLineWidth = res.getDimension(R.dimen.default_line_indicator_line_width);\n        final float defaultGapWidth = res.getDimension(R.dimen.default_line_indicator_gap_width);\n        final float defaultStrokeWidth = res.getDimension(R.dimen.default_line_indicator_stroke_width);\n        final boolean defaultCentered = res.getBoolean(R.bool.default_line_indicator_centered);\n\n        //Retrieve styles attributes\n        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.LinePageIndicator, defStyle, 0);\n\n        mCentered = a.getBoolean(R.styleable.LinePageIndicator_centered, defaultCentered);\n        mLineWidth = a.getDimension(R.styleable.LinePageIndicator_lineWidth, defaultLineWidth);\n        mGapWidth = a.getDimension(R.styleable.LinePageIndicator_gapWidth, defaultGapWidth);\n        setStrokeWidth(a.getDimension(R.styleable.LinePageIndicator_strokeWidth, defaultStrokeWidth));\n        mPaintUnselected.setColor(a.getColor(R.styleable.LinePageIndicator_unselectedColor, defaultUnselectedColor));\n        mPaintSelected.setColor(a.getColor(R.styleable.LinePageIndicator_selectedColor, defaultSelectedColor));\n\n        Drawable background = a.getDrawable(R.styleable.LinePageIndicator_android_background);\n        if (background != null) {\n          setBackgroundDrawable(background);\n        }\n\n        a.recycle();\n\n        final ViewConfiguration configuration = ViewConfiguration.get(context);\n        mTouchSlop = ViewConfigurationCompat.getScaledPagingTouchSlop(configuration);\n    }\n\n\n    public void setCentered(boolean centered) {\n        mCentered = centered;\n        invalidate();\n    }\n\n    public boolean isCentered() {\n        return mCentered;\n    }\n\n    public void setUnselectedColor(int unselectedColor) {\n        mPaintUnselected.setColor(unselectedColor);\n        invalidate();\n    }\n\n    public int getUnselectedColor() {\n        return mPaintUnselected.getColor();\n    }\n\n    public void setSelectedColor(int selectedColor) {\n        mPaintSelected.setColor(selectedColor);\n        invalidate();\n    }\n\n    public int getSelectedColor() {\n        return mPaintSelected.getColor();\n    }\n\n    public void setLineWidth(float lineWidth) {\n        mLineWidth = lineWidth;\n        invalidate();\n    }\n\n    public float getLineWidth() {\n        return mLineWidth;\n    }\n\n    public void setStrokeWidth(float lineHeight) {\n        mPaintSelected.setStrokeWidth(lineHeight);\n        mPaintUnselected.setStrokeWidth(lineHeight);\n        invalidate();\n    }\n\n    public float getStrokeWidth() {\n        return mPaintSelected.getStrokeWidth();\n    }\n\n    public void setGapWidth(float gapWidth) {\n        mGapWidth = gapWidth;\n        invalidate();\n    }\n\n    public float getGapWidth() {\n        return mGapWidth;\n    }\n\n    @Override\n    protected void onDraw(Canvas canvas) {\n        super.onDraw(canvas);\n\n        if (mViewPager == null) {\n            return;\n        }\n        final int count = mViewPager.getAdapter().getCount();\n        if (count == 0) {\n            return;\n        }\n\n        if (mCurrentPage >= count) {\n            setCurrentItem(count - 1);\n            return;\n        }\n\n        final float lineWidthAndGap = mLineWidth + mGapWidth;\n        final float indicatorWidth = (count * lineWidthAndGap) - mGapWidth;\n        final float paddingTop = getPaddingTop();\n        final float paddingLeft = getPaddingLeft();\n        final float paddingRight = getPaddingRight();\n\n        float verticalOffset = paddingTop + ((getHeight() - paddingTop - getPaddingBottom()) / 2.0f);\n        float horizontalOffset = paddingLeft;\n        if (mCentered) {\n            horizontalOffset += ((getWidth() - paddingLeft - paddingRight) / 2.0f) - (indicatorWidth / 2.0f);\n        }\n\n        //Draw stroked circles\n        for (int i = 0; i < count; i++) {\n            float dx1 = horizontalOffset + (i * lineWidthAndGap);\n            float dx2 = dx1 + mLineWidth;\n            canvas.drawLine(dx1, verticalOffset, dx2, verticalOffset, (i == mCurrentPage) ? mPaintSelected : mPaintUnselected);\n        }\n    }\n\n    public boolean onTouchEvent(MotionEvent ev) {\n        if (super.onTouchEvent(ev)) {\n            return true;\n        }\n        if ((mViewPager == null) || (mViewPager.getAdapter().getCount() == 0)) {\n            return false;\n        }\n\n        final int action = ev.getAction() & MotionEventCompat.ACTION_MASK;\n        switch (action) {\n            case MotionEvent.ACTION_DOWN:\n                mActivePointerId = MotionEventCompat.getPointerId(ev, 0);\n                mLastMotionX = ev.getX();\n                break;\n\n            case MotionEvent.ACTION_MOVE: {\n                final int activePointerIndex = MotionEventCompat.findPointerIndex(ev, mActivePointerId);\n                final float x = MotionEventCompat.getX(ev, activePointerIndex);\n                final float deltaX = x - mLastMotionX;\n\n                if (!mIsDragging) {\n                    if (Math.abs(deltaX) > mTouchSlop) {\n                        mIsDragging = true;\n                    }\n                }\n\n                if (mIsDragging) {\n                    mLastMotionX = x;\n                    if (mViewPager.isFakeDragging() || mViewPager.beginFakeDrag()) {\n                        mViewPager.fakeDragBy(deltaX);\n                    }\n                }\n\n                break;\n            }\n\n            case MotionEvent.ACTION_CANCEL:\n            case MotionEvent.ACTION_UP:\n                if (!mIsDragging) {\n                    final int count = mViewPager.getAdapter().getCount();\n                    final int width = getWidth();\n                    final float halfWidth = width / 2f;\n                    final float sixthWidth = width / 6f;\n\n                    if ((mCurrentPage > 0) && (ev.getX() < halfWidth - sixthWidth)) {\n                        if (action != MotionEvent.ACTION_CANCEL) {\n                            mViewPager.setCurrentItem(mCurrentPage - 1);\n                        }\n                        return true;\n                    } else if ((mCurrentPage < count - 1) && (ev.getX() > halfWidth + sixthWidth)) {\n                        if (action != MotionEvent.ACTION_CANCEL) {\n                            mViewPager.setCurrentItem(mCurrentPage + 1);\n                        }\n                        return true;\n                    }\n                }\n\n                mIsDragging = false;\n                mActivePointerId = INVALID_POINTER;\n                if (mViewPager.isFakeDragging()) mViewPager.endFakeDrag();\n                break;\n\n            case MotionEventCompat.ACTION_POINTER_DOWN: {\n                final int index = MotionEventCompat.getActionIndex(ev);\n                mLastMotionX = MotionEventCompat.getX(ev, index);\n                mActivePointerId = MotionEventCompat.getPointerId(ev, index);\n                break;\n            }\n\n            case MotionEventCompat.ACTION_POINTER_UP:\n                final int pointerIndex = MotionEventCompat.getActionIndex(ev);\n                final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex);\n                if (pointerId == mActivePointerId) {\n                    final int newPointerIndex = pointerIndex == 0 ? 1 : 0;\n                    mActivePointerId = MotionEventCompat.getPointerId(ev, newPointerIndex);\n                }\n                mLastMotionX = MotionEventCompat.getX(ev, MotionEventCompat.findPointerIndex(ev, mActivePointerId));\n                break;\n        }\n\n        return true;\n    }\n\n    @Override\n    public void setViewPager(ViewPager viewPager) {\n        if (mViewPager == viewPager) {\n            return;\n        }\n        if (mViewPager != null) {\n            //Clear us from the old pager.\n            mViewPager.setOnPageChangeListener(null);\n        }\n        if (viewPager.getAdapter() == null) {\n            throw new IllegalStateException(\"ViewPager does not have adapter instance.\");\n        }\n        mViewPager = viewPager;\n        mViewPager.setOnPageChangeListener(this);\n        invalidate();\n    }\n\n    @Override\n    public void setViewPager(ViewPager view, int initialPosition) {\n        setViewPager(view);\n        setCurrentItem(initialPosition);\n    }\n\n    @Override\n    public void setCurrentItem(int item) {\n        if (mViewPager == null) {\n            throw new IllegalStateException(\"ViewPager has not been bound.\");\n        }\n        mViewPager.setCurrentItem(item);\n        mCurrentPage = item;\n        invalidate();\n    }\n\n    @Override\n    public void notifyDataSetChanged() {\n        invalidate();\n    }\n\n    @Override\n    public void onPageScrollStateChanged(int state) {\n        if (mListener != null) {\n            mListener.onPageScrollStateChanged(state);\n        }\n    }\n\n    @Override\n    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {\n        if (mListener != null) {\n            mListener.onPageScrolled(position, positionOffset, positionOffsetPixels);\n        }\n    }\n\n    @Override\n    public void onPageSelected(int position) {\n        mCurrentPage = position;\n        invalidate();\n\n        if (mListener != null) {\n            mListener.onPageSelected(position);\n        }\n    }\n\n    @Override\n    public void setOnPageChangeListener(ViewPager.OnPageChangeListener listener) {\n        mListener = listener;\n    }\n\n    @Override\n    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {\n        setMeasuredDimension(measureWidth(widthMeasureSpec), measureHeight(heightMeasureSpec));\n    }\n\n    /**\n     * Determines the width of this view\n     *\n     * @param measureSpec\n     *            A measureSpec packed into an int\n     * @return The width of the view, honoring constraints from measureSpec\n     */\n    private int measureWidth(int measureSpec) {\n        float result;\n        int specMode = MeasureSpec.getMode(measureSpec);\n        int specSize = MeasureSpec.getSize(measureSpec);\n\n        if ((specMode == MeasureSpec.EXACTLY) || (mViewPager == null)) {\n            //We were told how big to be\n            result = specSize;\n        } else {\n            //Calculate the width according the views count\n            final int count = mViewPager.getAdapter().getCount();\n            result = getPaddingLeft() + getPaddingRight() + (count * mLineWidth) + ((count - 1) * mGapWidth);\n            //Respect AT_MOST value if that was what is called for by measureSpec\n            if (specMode == MeasureSpec.AT_MOST) {\n                result = Math.min(result, specSize);\n            }\n        }\n        return (int)FloatMath.ceil(result);\n    }\n\n    /**\n     * Determines the height of this view\n     *\n     * @param measureSpec\n     *            A measureSpec packed into an int\n     * @return The height of the view, honoring constraints from measureSpec\n     */\n    private int measureHeight(int measureSpec) {\n        float result;\n        int specMode = MeasureSpec.getMode(measureSpec);\n        int specSize = MeasureSpec.getSize(measureSpec);\n\n        if (specMode == MeasureSpec.EXACTLY) {\n            //We were told how big to be\n            result = specSize;\n        } else {\n            //Measure the height\n            result = mPaintSelected.getStrokeWidth() + getPaddingTop() + getPaddingBottom();\n            //Respect AT_MOST value if that was what is called for by measureSpec\n            if (specMode == MeasureSpec.AT_MOST) {\n                result = Math.min(result, specSize);\n            }\n        }\n        return (int)FloatMath.ceil(result);\n    }\n\n    @Override\n    public void onRestoreInstanceState(Parcelable state) {\n        SavedState savedState = (SavedState)state;\n        super.onRestoreInstanceState(savedState.getSuperState());\n        mCurrentPage = savedState.currentPage;\n        requestLayout();\n    }\n\n    @Override\n    public Parcelable onSaveInstanceState() {\n        Parcelable superState = super.onSaveInstanceState();\n        SavedState savedState = new SavedState(superState);\n        savedState.currentPage = mCurrentPage;\n        return savedState;\n    }\n\n    static class SavedState extends BaseSavedState {\n        int currentPage;\n\n        public SavedState(Parcelable superState) {\n            super(superState);\n        }\n\n        private SavedState(Parcel in) {\n            super(in);\n            currentPage = in.readInt();\n        }\n\n        @Override\n        public void writeToParcel(Parcel dest, int flags) {\n            super.writeToParcel(dest, flags);\n            dest.writeInt(currentPage);\n        }\n\n        @SuppressWarnings(\"UnusedDeclaration\")\n        public static final Creator<SavedState> CREATOR = new Creator<SavedState>() {\n            @Override\n            public SavedState createFromParcel(Parcel in) {\n                return new SavedState(in);\n            }\n\n            @Override\n            public SavedState[] newArray(int size) {\n                return new SavedState[size];\n            }\n        };\n    }\n}"
  },
  {
    "path": "app/src/main/java/viewpagerindicator/PageIndicator.java",
    "content": "/*\n * Copyright (C) 2011 Patrik Akerfeldt\n * Copyright (C) 2011 Jake Wharton\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage viewpagerindicator;\n\nimport android.support.v4.view.ViewPager;\n\n/**\n * A PageIndicator is responsible to show an visual indicator on the total views\n * number and the current visible view.\n */\npublic interface PageIndicator extends ViewPager.OnPageChangeListener {\n    /**\n     * Bind the indicator to a ViewPager.\n     *\n     * @param view\n     */\n    void setViewPager(ViewPager view);\n\n    /**\n     * Bind the indicator to a ViewPager.\n     *\n     * @param view\n     * @param initialPosition\n     */\n    void setViewPager(ViewPager view, int initialPosition);\n\n    /**\n     * <p>Set the current page of both the ViewPager and indicator.</p>\n     *\n     * <p>This <strong>must</strong> be used if you need to set the page before\n     * the views are drawn on screen (e.g., default start page).</p>\n     *\n     * @param item\n     */\n    void setCurrentItem(int item);\n\n    /**\n     * Set a page change listener which will receive forwarded events.\n     *\n     * @param listener\n     */\n    void setOnPageChangeListener(ViewPager.OnPageChangeListener listener);\n\n    /**\n     * Notify the indicator that the fragment list has changed.\n     */\n    void notifyDataSetChanged();\n}\n"
  },
  {
    "path": "app/src/main/java/viewpagerindicator/TabPageIndicator.java",
    "content": "/*\n * Copyright (C) 2011 The Android Open Source Project\n * Copyright (C) 2011 Jake Wharton\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage viewpagerindicator;\n\nimport android.content.Context;\nimport android.support.v4.view.PagerAdapter;\nimport android.support.v4.view.ViewPager;\nimport android.support.v4.view.ViewPager.OnPageChangeListener;\nimport android.util.AttributeSet;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport android.widget.HorizontalScrollView;\nimport android.widget.LinearLayout;\nimport android.widget.TextView;\n\n\nimport com.cjj.bb.R;\n\nimport static android.view.ViewGroup.LayoutParams.MATCH_PARENT;\nimport static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;\n\n/**\n * This widget implements the dynamic action bar tab behavior that can change\n * across different configurations or circumstances.\n */\npublic class TabPageIndicator extends HorizontalScrollView implements PageIndicator {\n    /** Title text used when no title is provided by the adapter. */\n    private static final CharSequence EMPTY_TITLE = \"\";\n\n    /**\n     * Interface for a callback when the selected tab has been reselected.\n     */\n    public interface OnTabReselectedListener {\n        /**\n         * Callback when the selected tab has been reselected.\n         *\n         * @param position Position of the current center item.\n         */\n        void onTabReselected(int position);\n    }\n\n    private Runnable mTabSelector;\n\n    private final OnClickListener mTabClickListener = new OnClickListener() {\n        public void onClick(View view) {\n            TabView tabView = (TabView)view;\n            final int oldSelected = mViewPager.getCurrentItem();\n            final int newSelected = tabView.getIndex();\n            mViewPager.setCurrentItem(newSelected);\n            if (oldSelected == newSelected && mTabReselectedListener != null) {\n                mTabReselectedListener.onTabReselected(newSelected);\n            }\n        }\n    };\n\n    private final IcsLinearLayout mTabLayout;\n\n    private ViewPager mViewPager;\n    private ViewPager.OnPageChangeListener mListener;\n\n    private int mMaxTabWidth;\n    private int mSelectedTabIndex;\n\n    private OnTabReselectedListener mTabReselectedListener;\n\n    public TabPageIndicator(Context context) {\n        this(context, null);\n    }\n\n    public TabPageIndicator(Context context, AttributeSet attrs) {\n        super(context, attrs);\n        setHorizontalScrollBarEnabled(false);\n\n        mTabLayout = new IcsLinearLayout(context, R.attr.vpiTabPageIndicatorStyle);\n        addView(mTabLayout, new ViewGroup.LayoutParams(WRAP_CONTENT, MATCH_PARENT));\n    }\n\n    public void setOnTabReselectedListener(OnTabReselectedListener listener) {\n        mTabReselectedListener = listener;\n    }\n\n    @Override\n    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {\n        final int widthMode = MeasureSpec.getMode(widthMeasureSpec);\n        final boolean lockedExpanded = widthMode == MeasureSpec.EXACTLY;\n        setFillViewport(lockedExpanded);\n\n        final int childCount = mTabLayout.getChildCount();\n        if (childCount > 1 && (widthMode == MeasureSpec.EXACTLY || widthMode == MeasureSpec.AT_MOST)) {\n            if (childCount > 2) {\n                mMaxTabWidth = (int)(MeasureSpec.getSize(widthMeasureSpec) * 0.4f);\n            } else {\n                mMaxTabWidth = MeasureSpec.getSize(widthMeasureSpec) / 2;\n            }\n        } else {\n            mMaxTabWidth = -1;\n        }\n\n        final int oldWidth = getMeasuredWidth();\n        super.onMeasure(widthMeasureSpec, heightMeasureSpec);\n        final int newWidth = getMeasuredWidth();\n\n        if (lockedExpanded && oldWidth != newWidth) {\n            // Recenter the tab display if we're at a new (scrollable) size.\n            setCurrentItem(mSelectedTabIndex);\n        }\n    }\n\n    private void animateToTab(final int position) {\n        final View tabView = mTabLayout.getChildAt(position);\n        if (mTabSelector != null) {\n            removeCallbacks(mTabSelector);\n        }\n        mTabSelector = new Runnable() {\n            public void run() {\n                final int scrollPos = tabView.getLeft() - (getWidth() - tabView.getWidth()) / 2;\n                smoothScrollTo(scrollPos, 0);\n                mTabSelector = null;\n            }\n        };\n        post(mTabSelector);\n    }\n\n    @Override\n    public void onAttachedToWindow() {\n        super.onAttachedToWindow();\n        if (mTabSelector != null) {\n            // Re-post the selector we saved\n            post(mTabSelector);\n        }\n    }\n\n    @Override\n    public void onDetachedFromWindow() {\n        super.onDetachedFromWindow();\n        if (mTabSelector != null) {\n            removeCallbacks(mTabSelector);\n        }\n    }\n\n    private void addTab(int index, CharSequence text, int iconResId) {\n        final TabView tabView = new TabView(getContext());\n        tabView.mIndex = index;\n        tabView.setFocusable(true);\n        tabView.setOnClickListener(mTabClickListener);\n        tabView.setText(text);\n\n        if (iconResId != 0) {\n            tabView.setCompoundDrawablesWithIntrinsicBounds(iconResId, 0, 0, 0);\n        }\n\n        mTabLayout.addView(tabView, new LinearLayout.LayoutParams(0, MATCH_PARENT, 1));\n    }\n\n    @Override\n    public void onPageScrollStateChanged(int arg0) {\n        if (mListener != null) {\n            mListener.onPageScrollStateChanged(arg0);\n        }\n    }\n\n    @Override\n    public void onPageScrolled(int arg0, float arg1, int arg2) {\n        if (mListener != null) {\n            mListener.onPageScrolled(arg0, arg1, arg2);\n        }\n    }\n\n    @Override\n    public void onPageSelected(int arg0) {\n        setCurrentItem(arg0);\n        if (mListener != null) {\n            mListener.onPageSelected(arg0);\n        }\n    }\n\n    @Override\n    public void setViewPager(ViewPager view) {\n        if (mViewPager == view) {\n            return;\n        }\n        if (mViewPager != null) {\n            mViewPager.setOnPageChangeListener(null);\n        }\n        final PagerAdapter adapter = view.getAdapter();\n        if (adapter == null) {\n            throw new IllegalStateException(\"ViewPager does not have adapter instance.\");\n        }\n        mViewPager = view;\n        view.setOnPageChangeListener(this);\n        notifyDataSetChanged();\n    }\n\n    public void notifyDataSetChanged() {\n        mTabLayout.removeAllViews();\n        PagerAdapter adapter = mViewPager.getAdapter();\n        IconPagerAdapter iconAdapter = null;\n        if (adapter instanceof IconPagerAdapter) {\n            iconAdapter = (IconPagerAdapter)adapter;\n        }\n        final int count = adapter.getCount();\n        for (int i = 0; i < count; i++) {\n            CharSequence title = adapter.getPageTitle(i);\n            if (title == null) {\n                title = EMPTY_TITLE;\n            }\n            int iconResId = 0;\n            if (iconAdapter != null) {\n                iconResId = iconAdapter.getIconResId(i);\n            }\n            addTab(i, title, iconResId);\n        }\n        if (mSelectedTabIndex > count) {\n            mSelectedTabIndex = count - 1;\n        }\n        setCurrentItem(mSelectedTabIndex);\n        requestLayout();\n    }\n\n    @Override\n    public void setViewPager(ViewPager view, int initialPosition) {\n        setViewPager(view);\n        setCurrentItem(initialPosition);\n    }\n\n    @Override\n    public void setCurrentItem(int item) {\n        if (mViewPager == null) {\n            throw new IllegalStateException(\"ViewPager has not been bound.\");\n        }\n        mSelectedTabIndex = item;\n        mViewPager.setCurrentItem(item);\n\n        final int tabCount = mTabLayout.getChildCount();\n        for (int i = 0; i < tabCount; i++) {\n            final View child = mTabLayout.getChildAt(i);\n            final boolean isSelected = (i == item);\n            child.setSelected(isSelected);\n            if (isSelected) {\n                animateToTab(item);\n            }\n        }\n    }\n\n    @Override\n    public void setOnPageChangeListener(OnPageChangeListener listener) {\n        mListener = listener;\n    }\n\n    private class TabView extends TextView {\n        private int mIndex;\n\n        public TabView(Context context) {\n            super(context, null, R.attr.vpiTabPageIndicatorStyle);\n        }\n\n        @Override\n        public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {\n            super.onMeasure(widthMeasureSpec, heightMeasureSpec);\n\n            // Re-measure if we went beyond our maximum size.\n            if (mMaxTabWidth > 0 && getMeasuredWidth() > mMaxTabWidth) {\n                super.onMeasure(MeasureSpec.makeMeasureSpec(mMaxTabWidth, MeasureSpec.EXACTLY),\n                        heightMeasureSpec);\n            }\n        }\n\n        public int getIndex() {\n            return mIndex;\n        }\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/viewpagerindicator/TitlePageIndicator.java",
    "content": "/*\n * Copyright (C) 2011 Jake Wharton\n * Copyright (C) 2011 Patrik Akerfeldt\n * Copyright (C) 2011 Francisco Figueiredo Jr.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage viewpagerindicator;\n\nimport android.content.Context;\nimport android.content.res.Resources;\nimport android.content.res.TypedArray;\nimport android.graphics.Canvas;\nimport android.graphics.Paint;\nimport android.graphics.Path;\nimport android.graphics.Rect;\nimport android.graphics.Typeface;\nimport android.graphics.drawable.Drawable;\nimport android.os.Parcel;\nimport android.os.Parcelable;\nimport android.support.v4.view.MotionEventCompat;\nimport android.support.v4.view.ViewConfigurationCompat;\nimport android.support.v4.view.ViewPager;\nimport android.util.AttributeSet;\nimport android.view.MotionEvent;\nimport android.view.View;\nimport android.view.ViewConfiguration;\n\n\nimport com.cjj.bb.R;\n\nimport java.util.ArrayList;\n\n/**\n * A TitlePageIndicator is a PageIndicator which displays the title of left view\n * (if exist), the title of the current select view (centered) and the title of\n * the right view (if exist). When the user scrolls the ViewPager then titles are\n * also scrolled.\n */\npublic class TitlePageIndicator extends View implements PageIndicator {\n    /**\n     * Percentage indicating what percentage of the screen width away from\n     * center should the underline be fully faded. A value of 0.25 means that\n     * halfway between the center of the screen and an edge.\n     */\n    private static final float SELECTION_FADE_PERCENTAGE = 0.25f;\n\n    /**\n     * Percentage indicating what percentage of the screen width away from\n     * center should the selected text bold turn off. A value of 0.05 means\n     * that 10% between the center and an edge.\n     */\n    private static final float BOLD_FADE_PERCENTAGE = 0.05f;\n\n    /**\n     * Title text used when no title is provided by the adapter.\n     */\n    private static final String EMPTY_TITLE = \"\";\n\n    /**\n     * Interface for a callback when the center item has been clicked.\n     */\n    public interface OnCenterItemClickListener {\n        /**\n         * Callback when the center item has been clicked.\n         *\n         * @param position Position of the current center item.\n         */\n        void onCenterItemClick(int position);\n    }\n\n    public enum IndicatorStyle {\n        None(0), Triangle(1), Underline(2);\n\n        public final int value;\n\n        private IndicatorStyle(int value) {\n            this.value = value;\n        }\n\n        public static IndicatorStyle fromValue(int value) {\n            for (IndicatorStyle style : IndicatorStyle.values()) {\n                if (style.value == value) {\n                    return style;\n                }\n            }\n            return null;\n        }\n    }\n\n    public enum LinePosition {\n        Bottom(0), Top(1);\n\n        public final int value;\n\n        private LinePosition(int value) {\n            this.value = value;\n        }\n\n        public static LinePosition fromValue(int value) {\n            for (LinePosition position : LinePosition.values()) {\n                if (position.value == value) {\n                    return position;\n                }\n            }\n            return null;\n        }\n    }\n\n    private ViewPager mViewPager;\n    private ViewPager.OnPageChangeListener mListener;\n    private int mCurrentPage = -1;\n    private float mPageOffset;\n    private int mScrollState;\n    private final Paint mPaintText = new Paint();\n    private boolean mBoldText;\n    private int mColorText;\n    private int mColorSelected;\n    private Path mPath = new Path();\n    private final Rect mBounds = new Rect();\n    private final Paint mPaintFooterLine = new Paint();\n    private IndicatorStyle mFooterIndicatorStyle;\n    private LinePosition mLinePosition;\n    private final Paint mPaintFooterIndicator = new Paint();\n    private float mFooterIndicatorHeight;\n    private float mFooterIndicatorUnderlinePadding;\n    private float mFooterPadding;\n    private float mTitlePadding;\n    private float mTopPadding;\n    /** Left and right side padding for not active view titles. */\n    private float mClipPadding;\n    private float mFooterLineHeight;\n\n    private static final int INVALID_POINTER = -1;\n\n    private int mTouchSlop;\n    private float mLastMotionX = -1;\n    private int mActivePointerId = INVALID_POINTER;\n    private boolean mIsDragging;\n\n    private OnCenterItemClickListener mCenterItemClickListener;\n\n\n    public TitlePageIndicator(Context context) {\n        this(context, null);\n    }\n\n    public TitlePageIndicator(Context context, AttributeSet attrs) {\n        this(context, attrs, R.attr.vpiTitlePageIndicatorStyle);\n    }\n\n    public TitlePageIndicator(Context context, AttributeSet attrs, int defStyle) {\n        super(context, attrs, defStyle);\n        if (isInEditMode()) return;\n\n        //Load defaults from resources\n        final Resources res = getResources();\n        final int defaultFooterColor = res.getColor(R.color.default_title_indicator_footer_color);\n        final float defaultFooterLineHeight = res.getDimension(R.dimen.default_title_indicator_footer_line_height);\n        final int defaultFooterIndicatorStyle = res.getInteger(R.integer.default_title_indicator_footer_indicator_style);\n        final float defaultFooterIndicatorHeight = res.getDimension(R.dimen.default_title_indicator_footer_indicator_height);\n        final float defaultFooterIndicatorUnderlinePadding = res.getDimension(R.dimen.default_title_indicator_footer_indicator_underline_padding);\n        final float defaultFooterPadding = res.getDimension(R.dimen.default_title_indicator_footer_padding);\n        final int defaultLinePosition = res.getInteger(R.integer.default_title_indicator_line_position);\n        final int defaultSelectedColor = res.getColor(R.color.default_title_indicator_selected_color);\n        final boolean defaultSelectedBold = res.getBoolean(R.bool.default_title_indicator_selected_bold);\n        final int defaultTextColor = res.getColor(R.color.default_title_indicator_text_color);\n        final float defaultTextSize = res.getDimension(R.dimen.default_title_indicator_text_size);\n        final float defaultTitlePadding = res.getDimension(R.dimen.default_title_indicator_title_padding);\n        final float defaultClipPadding = res.getDimension(R.dimen.default_title_indicator_clip_padding);\n        final float defaultTopPadding = res.getDimension(R.dimen.default_title_indicator_top_padding);\n\n        //Retrieve styles attributes\n        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TitlePageIndicator, defStyle, 0);\n\n        //Retrieve the colors to be used for this view and apply them.\n        mFooterLineHeight = a.getDimension(R.styleable.TitlePageIndicator_footerLineHeight, defaultFooterLineHeight);\n        mFooterIndicatorStyle = IndicatorStyle.fromValue(a.getInteger(R.styleable.TitlePageIndicator_footerIndicatorStyle, defaultFooterIndicatorStyle));\n        mFooterIndicatorHeight = a.getDimension(R.styleable.TitlePageIndicator_footerIndicatorHeight, defaultFooterIndicatorHeight);\n        mFooterIndicatorUnderlinePadding = a.getDimension(R.styleable.TitlePageIndicator_footerIndicatorUnderlinePadding, defaultFooterIndicatorUnderlinePadding);\n        mFooterPadding = a.getDimension(R.styleable.TitlePageIndicator_footerPadding, defaultFooterPadding);\n        mLinePosition = LinePosition.fromValue(a.getInteger(R.styleable.TitlePageIndicator_linePosition, defaultLinePosition));\n        mTopPadding = a.getDimension(R.styleable.TitlePageIndicator_topPadding, defaultTopPadding);\n        mTitlePadding = a.getDimension(R.styleable.TitlePageIndicator_titlePadding, defaultTitlePadding);\n        mClipPadding = a.getDimension(R.styleable.TitlePageIndicator_clipPadding, defaultClipPadding);\n        mColorSelected = a.getColor(R.styleable.TitlePageIndicator_selectedColor, defaultSelectedColor);\n        mColorText = a.getColor(R.styleable.TitlePageIndicator_android_textColor, defaultTextColor);\n        mBoldText = a.getBoolean(R.styleable.TitlePageIndicator_selectedBold, defaultSelectedBold);\n\n        final float textSize = a.getDimension(R.styleable.TitlePageIndicator_android_textSize, defaultTextSize);\n        final int footerColor = a.getColor(R.styleable.TitlePageIndicator_footerColor, defaultFooterColor);\n        mPaintText.setTextSize(textSize);\n        mPaintText.setAntiAlias(true);\n        mPaintFooterLine.setStyle(Paint.Style.FILL_AND_STROKE);\n        mPaintFooterLine.setStrokeWidth(mFooterLineHeight);\n        mPaintFooterLine.setColor(footerColor);\n        mPaintFooterIndicator.setStyle(Paint.Style.FILL_AND_STROKE);\n        mPaintFooterIndicator.setColor(footerColor);\n\n        Drawable background = a.getDrawable(R.styleable.TitlePageIndicator_android_background);\n        if (background != null) {\n          setBackgroundDrawable(background);\n        }\n\n        a.recycle();\n\n        final ViewConfiguration configuration = ViewConfiguration.get(context);\n        mTouchSlop = ViewConfigurationCompat.getScaledPagingTouchSlop(configuration);\n    }\n\n\n    public int getFooterColor() {\n        return mPaintFooterLine.getColor();\n    }\n\n    public void setFooterColor(int footerColor) {\n        mPaintFooterLine.setColor(footerColor);\n        mPaintFooterIndicator.setColor(footerColor);\n        invalidate();\n    }\n\n    public float getFooterLineHeight() {\n        return mFooterLineHeight;\n    }\n\n    public void setFooterLineHeight(float footerLineHeight) {\n        mFooterLineHeight = footerLineHeight;\n        mPaintFooterLine.setStrokeWidth(mFooterLineHeight);\n        invalidate();\n    }\n\n    public float getFooterIndicatorHeight() {\n        return mFooterIndicatorHeight;\n    }\n\n    public void setFooterIndicatorHeight(float footerTriangleHeight) {\n        mFooterIndicatorHeight = footerTriangleHeight;\n        invalidate();\n    }\n\n    public float getFooterIndicatorPadding() {\n        return mFooterPadding;\n    }\n\n    public void setFooterIndicatorPadding(float footerIndicatorPadding) {\n        mFooterPadding = footerIndicatorPadding;\n        invalidate();\n    }\n\n    public IndicatorStyle getFooterIndicatorStyle() {\n        return mFooterIndicatorStyle;\n    }\n\n    public void setFooterIndicatorStyle(IndicatorStyle indicatorStyle) {\n        mFooterIndicatorStyle = indicatorStyle;\n        invalidate();\n    }\n\n    public LinePosition getLinePosition() {\n        return mLinePosition;\n    }\n\n    public void setLinePosition(LinePosition linePosition) {\n        mLinePosition = linePosition;\n        invalidate();\n    }\n\n    public int getSelectedColor() {\n        return mColorSelected;\n    }\n\n    public void setSelectedColor(int selectedColor) {\n        mColorSelected = selectedColor;\n        invalidate();\n    }\n\n    public boolean isSelectedBold() {\n        return mBoldText;\n    }\n\n    public void setSelectedBold(boolean selectedBold) {\n        mBoldText = selectedBold;\n        invalidate();\n    }\n\n    public int getTextColor() {\n        return mColorText;\n    }\n\n    public void setTextColor(int textColor) {\n        mPaintText.setColor(textColor);\n        mColorText = textColor;\n        invalidate();\n    }\n\n    public float getTextSize() {\n        return mPaintText.getTextSize();\n    }\n\n    public void setTextSize(float textSize) {\n        mPaintText.setTextSize(textSize);\n        invalidate();\n    }\n\n    public float getTitlePadding() {\n        return this.mTitlePadding;\n    }\n\n    public void setTitlePadding(float titlePadding) {\n        mTitlePadding = titlePadding;\n        invalidate();\n    }\n\n    public float getTopPadding() {\n        return this.mTopPadding;\n    }\n\n    public void setTopPadding(float topPadding) {\n        mTopPadding = topPadding;\n        invalidate();\n    }\n\n    public float getClipPadding() {\n        return this.mClipPadding;\n    }\n\n    public void setClipPadding(float clipPadding) {\n        mClipPadding = clipPadding;\n        invalidate();\n    }\n\n    public void setTypeface(Typeface typeface) {\n        mPaintText.setTypeface(typeface);\n        invalidate();\n    }\n\n    public Typeface getTypeface() {\n        return mPaintText.getTypeface();\n    }\n\n    /*\n     * (non-Javadoc)\n     *\n     * @see android.view.View#onDraw(android.graphics.Canvas)\n     */\n    @Override\n    protected void onDraw(Canvas canvas) {\n        super.onDraw(canvas);\n\n        if (mViewPager == null) {\n            return;\n        }\n        final int count = mViewPager.getAdapter().getCount();\n        if (count == 0) {\n            return;\n        }\n\n        // mCurrentPage is -1 on first start and after orientation changed. If so, retrieve the correct index from viewpager.\n        if (mCurrentPage == -1 && mViewPager != null) {\n            mCurrentPage = mViewPager.getCurrentItem();\n        }\n\n        //Calculate views bounds\n        ArrayList<Rect> bounds = calculateAllBounds(mPaintText);\n        final int boundsSize = bounds.size();\n\n        //Make sure we're on a page that still exists\n        if (mCurrentPage >= boundsSize) {\n            setCurrentItem(boundsSize - 1);\n            return;\n        }\n\n        final int countMinusOne = count - 1;\n        final float halfWidth = getWidth() / 2f;\n        final int left = getLeft();\n        final float leftClip = left + mClipPadding;\n        final int width = getWidth();\n        int height = getHeight();\n        final int right = left + width;\n        final float rightClip = right - mClipPadding;\n\n        int page = mCurrentPage;\n        float offsetPercent;\n        if (mPageOffset <= 0.5) {\n            offsetPercent = mPageOffset;\n        } else {\n            page += 1;\n            offsetPercent = 1 - mPageOffset;\n        }\n        final boolean currentSelected = (offsetPercent <= SELECTION_FADE_PERCENTAGE);\n        final boolean currentBold = (offsetPercent <= BOLD_FADE_PERCENTAGE);\n        final float selectedPercent = (SELECTION_FADE_PERCENTAGE - offsetPercent) / SELECTION_FADE_PERCENTAGE;\n\n        //Verify if the current view must be clipped to the screen\n        Rect curPageBound = bounds.get(mCurrentPage);\n        float curPageWidth = curPageBound.right - curPageBound.left;\n        if (curPageBound.left < leftClip) {\n            //Try to clip to the screen (left side)\n            clipViewOnTheLeft(curPageBound, curPageWidth, left);\n        }\n        if (curPageBound.right > rightClip) {\n            //Try to clip to the screen (right side)\n            clipViewOnTheRight(curPageBound, curPageWidth, right);\n        }\n\n        //Left views starting from the current position\n        if (mCurrentPage > 0) {\n            for (int i = mCurrentPage - 1; i >= 0; i--) {\n                Rect bound = bounds.get(i);\n                //Is left side is outside the screen\n                if (bound.left < leftClip) {\n                    int w = bound.right - bound.left;\n                    //Try to clip to the screen (left side)\n                    clipViewOnTheLeft(bound, w, left);\n                    //Except if there's an intersection with the right view\n                    Rect rightBound = bounds.get(i + 1);\n                    //Intersection\n                    if (bound.right + mTitlePadding > rightBound.left) {\n                        bound.left = (int) (rightBound.left - w - mTitlePadding);\n                        bound.right = bound.left + w;\n                    }\n                }\n            }\n        }\n        //Right views starting from the current position\n        if (mCurrentPage < countMinusOne) {\n            for (int i = mCurrentPage + 1 ; i < count; i++) {\n                Rect bound = bounds.get(i);\n                //If right side is outside the screen\n                if (bound.right > rightClip) {\n                    int w = bound.right - bound.left;\n                    //Try to clip to the screen (right side)\n                    clipViewOnTheRight(bound, w, right);\n                    //Except if there's an intersection with the left view\n                    Rect leftBound = bounds.get(i - 1);\n                    //Intersection\n                    if (bound.left - mTitlePadding < leftBound.right) {\n                        bound.left = (int) (leftBound.right + mTitlePadding);\n                        bound.right = bound.left + w;\n                    }\n                }\n            }\n        }\n\n        //Now draw views\n        int colorTextAlpha = mColorText >>> 24;\n        for (int i = 0; i < count; i++) {\n            //Get the title\n            Rect bound = bounds.get(i);\n            //Only if one side is visible\n            if ((bound.left > left && bound.left < right) || (bound.right > left && bound.right < right)) {\n                final boolean currentPage = (i == page);\n                final CharSequence pageTitle = getTitle(i);\n\n                //Only set bold if we are within bounds\n                mPaintText.setFakeBoldText(currentPage && currentBold && mBoldText);\n\n                //Draw text as unselected\n                mPaintText.setColor(mColorText);\n                if(currentPage && currentSelected) {\n                    //Fade out/in unselected text as the selected text fades in/out\n                    mPaintText.setAlpha(colorTextAlpha - (int)(colorTextAlpha * selectedPercent));\n                }\n\n                //Except if there's an intersection with the right view\n                if (i < boundsSize - 1)  {\n                    Rect rightBound = bounds.get(i + 1);\n                    //Intersection\n                    if (bound.right + mTitlePadding > rightBound.left) {\n                        int w = bound.right - bound.left;\n                        bound.left = (int) (rightBound.left - w - mTitlePadding);\n                        bound.right = bound.left + w;\n                    }\n                }\n                canvas.drawText(pageTitle, 0, pageTitle.length(), bound.left, bound.bottom + mTopPadding, mPaintText);\n\n                //If we are within the selected bounds draw the selected text\n                if (currentPage && currentSelected) {\n                    mPaintText.setColor(mColorSelected);\n                    mPaintText.setAlpha((int)((mColorSelected >>> 24) * selectedPercent));\n                    canvas.drawText(pageTitle, 0, pageTitle.length(), bound.left, bound.bottom + mTopPadding, mPaintText);\n                }\n            }\n        }\n\n        //If we want the line on the top change height to zero and invert the line height to trick the drawing code\n        float footerLineHeight = mFooterLineHeight;\n        float footerIndicatorLineHeight = mFooterIndicatorHeight;\n        if (mLinePosition == LinePosition.Top) {\n            height = 0;\n            footerLineHeight = -footerLineHeight;\n            footerIndicatorLineHeight = -footerIndicatorLineHeight;\n        }\n\n        //Draw the footer line\n        mPath.reset();\n        mPath.moveTo(0, height - footerLineHeight / 2f);\n        mPath.lineTo(width, height - footerLineHeight / 2f);\n        mPath.close();\n        canvas.drawPath(mPath, mPaintFooterLine);\n\n        float heightMinusLine = height - footerLineHeight;\n        switch (mFooterIndicatorStyle) {\n            case Triangle:\n                mPath.reset();\n                mPath.moveTo(halfWidth, heightMinusLine - footerIndicatorLineHeight);\n                mPath.lineTo(halfWidth + footerIndicatorLineHeight, heightMinusLine);\n                mPath.lineTo(halfWidth - footerIndicatorLineHeight, heightMinusLine);\n                mPath.close();\n                canvas.drawPath(mPath, mPaintFooterIndicator);\n                break;\n\n            case Underline:\n                if (!currentSelected || page >= boundsSize) {\n                    break;\n                }\n\n                Rect underlineBounds = bounds.get(page);\n                final float rightPlusPadding = underlineBounds.right + mFooterIndicatorUnderlinePadding;\n                final float leftMinusPadding = underlineBounds.left - mFooterIndicatorUnderlinePadding;\n                final float heightMinusLineMinusIndicator = heightMinusLine - footerIndicatorLineHeight;\n\n                mPath.reset();\n                mPath.moveTo(leftMinusPadding, heightMinusLine);\n                mPath.lineTo(rightPlusPadding, heightMinusLine);\n                mPath.lineTo(rightPlusPadding, heightMinusLineMinusIndicator);\n                mPath.lineTo(leftMinusPadding, heightMinusLineMinusIndicator);\n                mPath.close();\n\n                mPaintFooterIndicator.setAlpha((int)(0xFF * selectedPercent));\n                canvas.drawPath(mPath, mPaintFooterIndicator);\n                mPaintFooterIndicator.setAlpha(0xFF);\n                break;\n        }\n    }\n\n    public boolean onTouchEvent(MotionEvent ev) {\n        if (super.onTouchEvent(ev)) {\n            return true;\n        }\n        if ((mViewPager == null) || (mViewPager.getAdapter().getCount() == 0)) {\n            return false;\n        }\n\n        final int action = ev.getAction() & MotionEventCompat.ACTION_MASK;\n        switch (action) {\n            case MotionEvent.ACTION_DOWN:\n                mActivePointerId = MotionEventCompat.getPointerId(ev, 0);\n                mLastMotionX = ev.getX();\n                break;\n\n            case MotionEvent.ACTION_MOVE: {\n                final int activePointerIndex = MotionEventCompat.findPointerIndex(ev, mActivePointerId);\n                final float x = MotionEventCompat.getX(ev, activePointerIndex);\n                final float deltaX = x - mLastMotionX;\n\n                if (!mIsDragging) {\n                    if (Math.abs(deltaX) > mTouchSlop) {\n                        mIsDragging = true;\n                    }\n                }\n\n                if (mIsDragging) {\n                    mLastMotionX = x;\n                    if (mViewPager.isFakeDragging() || mViewPager.beginFakeDrag()) {\n                        mViewPager.fakeDragBy(deltaX);\n                    }\n                }\n\n                break;\n            }\n\n            case MotionEvent.ACTION_CANCEL:\n            case MotionEvent.ACTION_UP:\n                if (!mIsDragging) {\n                    final int count = mViewPager.getAdapter().getCount();\n                    final int width = getWidth();\n                    final float halfWidth = width / 2f;\n                    final float sixthWidth = width / 6f;\n                    final float leftThird = halfWidth - sixthWidth;\n                    final float rightThird = halfWidth + sixthWidth;\n                    final float eventX = ev.getX();\n\n                    if (eventX < leftThird) {\n                        if (mCurrentPage > 0) {\n                            if (action != MotionEvent.ACTION_CANCEL) {\n                                mViewPager.setCurrentItem(mCurrentPage - 1);\n                            }\n                            return true;\n                        }\n                    } else if (eventX > rightThird) {\n                        if (mCurrentPage < count - 1) {\n                            if (action != MotionEvent.ACTION_CANCEL) {\n                                mViewPager.setCurrentItem(mCurrentPage + 1);\n                            }\n                            return true;\n                        }\n                    } else {\n                        //Middle third\n                        if (mCenterItemClickListener != null && action != MotionEvent.ACTION_CANCEL) {\n                            mCenterItemClickListener.onCenterItemClick(mCurrentPage);\n                        }\n                    }\n                }\n\n                mIsDragging = false;\n                mActivePointerId = INVALID_POINTER;\n                if (mViewPager.isFakeDragging()) mViewPager.endFakeDrag();\n                break;\n\n            case MotionEventCompat.ACTION_POINTER_DOWN: {\n                final int index = MotionEventCompat.getActionIndex(ev);\n                mLastMotionX = MotionEventCompat.getX(ev, index);\n                mActivePointerId = MotionEventCompat.getPointerId(ev, index);\n                break;\n            }\n\n            case MotionEventCompat.ACTION_POINTER_UP:\n                final int pointerIndex = MotionEventCompat.getActionIndex(ev);\n                final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex);\n                if (pointerId == mActivePointerId) {\n                    final int newPointerIndex = pointerIndex == 0 ? 1 : 0;\n                    mActivePointerId = MotionEventCompat.getPointerId(ev, newPointerIndex);\n                }\n                mLastMotionX = MotionEventCompat.getX(ev, MotionEventCompat.findPointerIndex(ev, mActivePointerId));\n                break;\n        }\n\n        return true;\n    }\n\n    /**\n     * Set bounds for the right textView including clip padding.\n     *\n     * @param curViewBound\n     *            current bounds.\n     * @param curViewWidth\n     *            width of the view.\n     */\n    private void clipViewOnTheRight(Rect curViewBound, float curViewWidth, int right) {\n        curViewBound.right = (int) (right - mClipPadding);\n        curViewBound.left = (int) (curViewBound.right - curViewWidth);\n    }\n\n    /**\n     * Set bounds for the left textView including clip padding.\n     *\n     * @param curViewBound\n     *            current bounds.\n     * @param curViewWidth\n     *            width of the view.\n     */\n    private void clipViewOnTheLeft(Rect curViewBound, float curViewWidth, int left) {\n        curViewBound.left = (int) (left + mClipPadding);\n        curViewBound.right = (int) (mClipPadding + curViewWidth);\n    }\n\n    /**\n     * Calculate views bounds and scroll them according to the current index\n     *\n     * @param paint\n     * @return\n     */\n    private ArrayList<Rect> calculateAllBounds(Paint paint) {\n        ArrayList<Rect> list = new ArrayList<Rect>();\n        //For each views (If no values then add a fake one)\n        final int count = mViewPager.getAdapter().getCount();\n        final int width = getWidth();\n        final int halfWidth = width / 2;\n        for (int i = 0; i < count; i++) {\n            Rect bounds = calcBounds(i, paint);\n            int w = bounds.right - bounds.left;\n            int h = bounds.bottom - bounds.top;\n            bounds.left = (int)(halfWidth - (w / 2f) + ((i - mCurrentPage - mPageOffset) * width));\n            bounds.right = bounds.left + w;\n            bounds.top = 0;\n            bounds.bottom = h;\n            list.add(bounds);\n        }\n\n        return list;\n    }\n\n    /**\n     * Calculate the bounds for a view's title\n     *\n     * @param index\n     * @param paint\n     * @return\n     */\n    private Rect calcBounds(int index, Paint paint) {\n        //Calculate the text bounds\n        Rect bounds = new Rect();\n        CharSequence title = getTitle(index);\n        bounds.right = (int) paint.measureText(title, 0, title.length());\n        bounds.bottom = (int) (paint.descent() - paint.ascent());\n        return bounds;\n    }\n\n    @Override\n    public void setViewPager(ViewPager view) {\n        if (mViewPager == view) {\n            return;\n        }\n        if (mViewPager != null) {\n            mViewPager.setOnPageChangeListener(null);\n        }\n        if (view.getAdapter() == null) {\n            throw new IllegalStateException(\"ViewPager does not have adapter instance.\");\n        }\n        mViewPager = view;\n        mViewPager.setOnPageChangeListener(this);\n        invalidate();\n    }\n\n    @Override\n    public void setViewPager(ViewPager view, int initialPosition) {\n        setViewPager(view);\n        setCurrentItem(initialPosition);\n    }\n\n    @Override\n    public void notifyDataSetChanged() {\n        invalidate();\n    }\n\n    /**\n     * Set a callback listener for the center item click.\n     *\n     * @param listener Callback instance.\n     */\n    public void setOnCenterItemClickListener(OnCenterItemClickListener listener) {\n        mCenterItemClickListener = listener;\n    }\n\n    @Override\n    public void setCurrentItem(int item) {\n        if (mViewPager == null) {\n            throw new IllegalStateException(\"ViewPager has not been bound.\");\n        }\n        mViewPager.setCurrentItem(item);\n        mCurrentPage = item;\n        invalidate();\n    }\n\n    @Override\n    public void onPageScrollStateChanged(int state) {\n        mScrollState = state;\n\n        if (mListener != null) {\n            mListener.onPageScrollStateChanged(state);\n        }\n    }\n\n    @Override\n    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {\n        mCurrentPage = position;\n        mPageOffset = positionOffset;\n        invalidate();\n\n        if (mListener != null) {\n            mListener.onPageScrolled(position, positionOffset, positionOffsetPixels);\n        }\n    }\n\n    @Override\n    public void onPageSelected(int position) {\n        if (mScrollState == ViewPager.SCROLL_STATE_IDLE) {\n            mCurrentPage = position;\n            invalidate();\n        }\n\n        if (mListener != null) {\n            mListener.onPageSelected(position);\n        }\n    }\n\n    @Override\n    public void setOnPageChangeListener(ViewPager.OnPageChangeListener listener) {\n        mListener = listener;\n    }\n\n    @Override\n    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {\n        //Measure our width in whatever mode specified\n        final int measuredWidth = MeasureSpec.getSize(widthMeasureSpec);\n\n        //Determine our height\n        float height;\n        final int heightSpecMode = MeasureSpec.getMode(heightMeasureSpec);\n        if (heightSpecMode == MeasureSpec.EXACTLY) {\n            //We were told how big to be\n            height = MeasureSpec.getSize(heightMeasureSpec);\n        } else {\n            //Calculate the text bounds\n            mBounds.setEmpty();\n            mBounds.bottom = (int) (mPaintText.descent() - mPaintText.ascent());\n            height = mBounds.bottom - mBounds.top + mFooterLineHeight + mFooterPadding + mTopPadding;\n            if (mFooterIndicatorStyle != IndicatorStyle.None) {\n                height += mFooterIndicatorHeight;\n            }\n        }\n        final int measuredHeight = (int)height;\n\n        setMeasuredDimension(measuredWidth, measuredHeight);\n    }\n\n    @Override\n    public void onRestoreInstanceState(Parcelable state) {\n        SavedState savedState = (SavedState)state;\n        super.onRestoreInstanceState(savedState.getSuperState());\n        mCurrentPage = savedState.currentPage;\n        requestLayout();\n    }\n\n    @Override\n    public Parcelable onSaveInstanceState() {\n        Parcelable superState = super.onSaveInstanceState();\n        SavedState savedState = new SavedState(superState);\n        savedState.currentPage = mCurrentPage;\n        return savedState;\n    }\n\n    static class SavedState extends BaseSavedState {\n        int currentPage;\n\n        public SavedState(Parcelable superState) {\n            super(superState);\n        }\n\n        private SavedState(Parcel in) {\n            super(in);\n            currentPage = in.readInt();\n        }\n\n        @Override\n        public void writeToParcel(Parcel dest, int flags) {\n            super.writeToParcel(dest, flags);\n            dest.writeInt(currentPage);\n        }\n\n        @SuppressWarnings(\"UnusedDeclaration\")\n        public static final Creator<SavedState> CREATOR = new Creator<SavedState>() {\n            @Override\n            public SavedState createFromParcel(Parcel in) {\n                return new SavedState(in);\n            }\n\n            @Override\n            public SavedState[] newArray(int size) {\n                return new SavedState[size];\n            }\n        };\n    }\n\n    private CharSequence getTitle(int i) {\n        CharSequence title = mViewPager.getAdapter().getPageTitle(i);\n        if (title == null) {\n            title = EMPTY_TITLE;\n        }\n        return title;\n    }\n}\n"
  },
  {
    "path": "app/src/main/java/viewpagerindicator/UnderlinePageIndicator.java",
    "content": "/*\n * Copyright (C) 2012 Jake Wharton\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage viewpagerindicator;\n\nimport android.content.Context;\nimport android.content.res.Resources;\nimport android.content.res.TypedArray;\nimport android.graphics.Canvas;\nimport android.graphics.Paint;\nimport android.graphics.drawable.Drawable;\nimport android.os.Parcel;\nimport android.os.Parcelable;\nimport android.support.v4.view.MotionEventCompat;\nimport android.support.v4.view.ViewConfigurationCompat;\nimport android.support.v4.view.ViewPager;\nimport android.util.AttributeSet;\nimport android.view.MotionEvent;\nimport android.view.View;\nimport android.view.ViewConfiguration;\n\nimport com.cjj.bb.R;\n\n/**\n * Draws a line for each page. The current page line is colored differently\n * than the unselected page lines.\n */\npublic class UnderlinePageIndicator extends View implements PageIndicator {\n    private static final int INVALID_POINTER = -1;\n    private static final int FADE_FRAME_MS = 30;\n\n    private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);\n\n    private boolean mFades;\n    private int mFadeDelay;\n    private int mFadeLength;\n    private int mFadeBy;\n\n    private ViewPager mViewPager;\n    private ViewPager.OnPageChangeListener mListener;\n    private int mScrollState;\n    private int mCurrentPage;\n    private float mPositionOffset;\n\n    private int mTouchSlop;\n    private float mLastMotionX = -1;\n    private int mActivePointerId = INVALID_POINTER;\n    private boolean mIsDragging;\n\n    private final Runnable mFadeRunnable = new Runnable() {\n      @Override public void run() {\n        if (!mFades) return;\n\n        final int alpha = Math.max(mPaint.getAlpha() - mFadeBy, 0);\n        mPaint.setAlpha(alpha);\n        invalidate();\n        if (alpha > 0) {\n          postDelayed(this, FADE_FRAME_MS);\n        }\n      }\n    };\n\n    public UnderlinePageIndicator(Context context) {\n        this(context, null);\n    }\n\n    public UnderlinePageIndicator(Context context, AttributeSet attrs) {\n        this(context, attrs, R.attr.vpiUnderlinePageIndicatorStyle);\n    }\n\n    public UnderlinePageIndicator(Context context, AttributeSet attrs, int defStyle) {\n        super(context, attrs, defStyle);\n        if (isInEditMode()) return;\n\n        final Resources res = getResources();\n\n        //Load defaults from resources\n        final boolean defaultFades = res.getBoolean(R.bool.default_underline_indicator_fades);\n        final int defaultFadeDelay = res.getInteger(R.integer.default_underline_indicator_fade_delay);\n        final int defaultFadeLength = res.getInteger(R.integer.default_underline_indicator_fade_length);\n        final int defaultSelectedColor = res.getColor(R.color.default_underline_indicator_selected_color);\n\n        //Retrieve styles attributes\n        TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.UnderlinePageIndicator, defStyle, 0);\n\n        setFades(a.getBoolean(R.styleable.UnderlinePageIndicator_fades, defaultFades));\n        setSelectedColor(a.getColor(R.styleable.UnderlinePageIndicator_selectedColor, defaultSelectedColor));\n        setFadeDelay(a.getInteger(R.styleable.UnderlinePageIndicator_fadeDelay, defaultFadeDelay));\n        setFadeLength(a.getInteger(R.styleable.UnderlinePageIndicator_fadeLength, defaultFadeLength));\n\n        Drawable background = a.getDrawable(R.styleable.UnderlinePageIndicator_android_background);\n        if (background != null) {\n          setBackgroundDrawable(background);\n        }\n\n        a.recycle();\n\n        final ViewConfiguration configuration = ViewConfiguration.get(context);\n        mTouchSlop = ViewConfigurationCompat.getScaledPagingTouchSlop(configuration);\n    }\n\n    public boolean getFades() {\n        return mFades;\n    }\n\n    public void setFades(boolean fades) {\n        if (fades != mFades) {\n            mFades = fades;\n            if (fades) {\n                post(mFadeRunnable);\n            } else {\n                removeCallbacks(mFadeRunnable);\n                mPaint.setAlpha(0xFF);\n                invalidate();\n            }\n        }\n    }\n\n    public int getFadeDelay() {\n        return mFadeDelay;\n    }\n\n    public void setFadeDelay(int fadeDelay) {\n        mFadeDelay = fadeDelay;\n    }\n\n    public int getFadeLength() {\n        return mFadeLength;\n    }\n\n    public void setFadeLength(int fadeLength) {\n        mFadeLength = fadeLength;\n        mFadeBy = 0xFF / (mFadeLength / FADE_FRAME_MS);\n    }\n\n    public int getSelectedColor() {\n        return mPaint.getColor();\n    }\n\n    public void setSelectedColor(int selectedColor) {\n        mPaint.setColor(selectedColor);\n        invalidate();\n    }\n\n    @Override\n    protected void onDraw(Canvas canvas) {\n        super.onDraw(canvas);\n\n        if (mViewPager == null) {\n            return;\n        }\n        final int count = mViewPager.getAdapter().getCount();\n        if (count == 0) {\n            return;\n        }\n\n        if (mCurrentPage >= count) {\n            setCurrentItem(count - 1);\n            return;\n        }\n\n        final int paddingLeft = getPaddingLeft();\n        final float pageWidth = (getWidth() - paddingLeft - getPaddingRight()) / (1f * count);\n        final float left = paddingLeft + pageWidth * (mCurrentPage + mPositionOffset);\n        final float right = left + pageWidth;\n        final float top = getPaddingTop();\n        final float bottom = getHeight() - getPaddingBottom();\n        canvas.drawRect(left, top, right, bottom, mPaint);\n    }\n\n    public boolean onTouchEvent(MotionEvent ev) {\n        if (super.onTouchEvent(ev)) {\n            return true;\n        }\n        if ((mViewPager == null) || (mViewPager.getAdapter().getCount() == 0)) {\n            return false;\n        }\n\n        final int action = ev.getAction() & MotionEventCompat.ACTION_MASK;\n        switch (action) {\n            case MotionEvent.ACTION_DOWN:\n                mActivePointerId = MotionEventCompat.getPointerId(ev, 0);\n                mLastMotionX = ev.getX();\n                break;\n\n            case MotionEvent.ACTION_MOVE: {\n                final int activePointerIndex = MotionEventCompat.findPointerIndex(ev, mActivePointerId);\n                final float x = MotionEventCompat.getX(ev, activePointerIndex);\n                final float deltaX = x - mLastMotionX;\n\n                if (!mIsDragging) {\n                    if (Math.abs(deltaX) > mTouchSlop) {\n                        mIsDragging = true;\n                    }\n                }\n\n                if (mIsDragging) {\n                    mLastMotionX = x;\n                    if (mViewPager.isFakeDragging() || mViewPager.beginFakeDrag()) {\n                        mViewPager.fakeDragBy(deltaX);\n                    }\n                }\n\n                break;\n            }\n\n            case MotionEvent.ACTION_CANCEL:\n            case MotionEvent.ACTION_UP:\n                if (!mIsDragging) {\n                    final int count = mViewPager.getAdapter().getCount();\n                    final int width = getWidth();\n                    final float halfWidth = width / 2f;\n                    final float sixthWidth = width / 6f;\n\n                    if ((mCurrentPage > 0) && (ev.getX() < halfWidth - sixthWidth)) {\n                        if (action != MotionEvent.ACTION_CANCEL) {\n                            mViewPager.setCurrentItem(mCurrentPage - 1);\n                        }\n                        return true;\n                    } else if ((mCurrentPage < count - 1) && (ev.getX() > halfWidth + sixthWidth)) {\n                        if (action != MotionEvent.ACTION_CANCEL) {\n                            mViewPager.setCurrentItem(mCurrentPage + 1);\n                        }\n                        return true;\n                    }\n                }\n\n                mIsDragging = false;\n                mActivePointerId = INVALID_POINTER;\n                if (mViewPager.isFakeDragging()) mViewPager.endFakeDrag();\n                break;\n\n            case MotionEventCompat.ACTION_POINTER_DOWN: {\n                final int index = MotionEventCompat.getActionIndex(ev);\n                mLastMotionX = MotionEventCompat.getX(ev, index);\n                mActivePointerId = MotionEventCompat.getPointerId(ev, index);\n                break;\n            }\n\n            case MotionEventCompat.ACTION_POINTER_UP:\n                final int pointerIndex = MotionEventCompat.getActionIndex(ev);\n                final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex);\n                if (pointerId == mActivePointerId) {\n                    final int newPointerIndex = pointerIndex == 0 ? 1 : 0;\n                    mActivePointerId = MotionEventCompat.getPointerId(ev, newPointerIndex);\n                }\n                mLastMotionX = MotionEventCompat.getX(ev, MotionEventCompat.findPointerIndex(ev, mActivePointerId));\n                break;\n        }\n\n        return true;\n    }\n\n    @Override\n    public void setViewPager(ViewPager viewPager) {\n        if (mViewPager == viewPager) {\n            return;\n        }\n        if (mViewPager != null) {\n            //Clear us from the old pager.\n            mViewPager.setOnPageChangeListener(null);\n        }\n        if (viewPager.getAdapter() == null) {\n            throw new IllegalStateException(\"ViewPager does not have adapter instance.\");\n        }\n        mViewPager = viewPager;\n        mViewPager.setOnPageChangeListener(this);\n        invalidate();\n        post(new Runnable() {\n            @Override public void run() {\n                if (mFades) {\n                    post(mFadeRunnable);\n                }\n            }\n        });\n    }\n\n    @Override\n    public void setViewPager(ViewPager view, int initialPosition) {\n        setViewPager(view);\n        setCurrentItem(initialPosition);\n    }\n\n    @Override\n    public void setCurrentItem(int item) {\n        if (mViewPager == null) {\n            throw new IllegalStateException(\"ViewPager has not been bound.\");\n        }\n        mViewPager.setCurrentItem(item);\n        mCurrentPage = item;\n        invalidate();\n    }\n\n    @Override\n    public void notifyDataSetChanged() {\n        invalidate();\n    }\n\n    @Override\n    public void onPageScrollStateChanged(int state) {\n        mScrollState = state;\n\n        if (mListener != null) {\n            mListener.onPageScrollStateChanged(state);\n        }\n    }\n\n    @Override\n    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {\n        mCurrentPage = position;\n        mPositionOffset = positionOffset;\n        if (mFades) {\n            if (positionOffsetPixels > 0) {\n                removeCallbacks(mFadeRunnable);\n                mPaint.setAlpha(0xFF);\n            } else if (mScrollState != ViewPager.SCROLL_STATE_DRAGGING) {\n                postDelayed(mFadeRunnable, mFadeDelay);\n            }\n        }\n        invalidate();\n\n        if (mListener != null) {\n            mListener.onPageScrolled(position, positionOffset, positionOffsetPixels);\n        }\n    }\n\n    @Override\n    public void onPageSelected(int position) {\n        if (mScrollState == ViewPager.SCROLL_STATE_IDLE) {\n            mCurrentPage = position;\n            mPositionOffset = 0;\n            invalidate();\n            mFadeRunnable.run();\n        }\n        if (mListener != null) {\n            mListener.onPageSelected(position);\n        }\n    }\n\n    @Override\n    public void setOnPageChangeListener(ViewPager.OnPageChangeListener listener) {\n        mListener = listener;\n    }\n\n    @Override\n    public void onRestoreInstanceState(Parcelable state) {\n        SavedState savedState = (SavedState)state;\n        super.onRestoreInstanceState(savedState.getSuperState());\n        mCurrentPage = savedState.currentPage;\n        requestLayout();\n    }\n\n    @Override\n    public Parcelable onSaveInstanceState() {\n        Parcelable superState = super.onSaveInstanceState();\n        SavedState savedState = new SavedState(superState);\n        savedState.currentPage = mCurrentPage;\n        return savedState;\n    }\n\n    static class SavedState extends BaseSavedState {\n        int currentPage;\n\n        public SavedState(Parcelable superState) {\n            super(superState);\n        }\n\n        private SavedState(Parcel in) {\n            super(in);\n            currentPage = in.readInt();\n        }\n\n        @Override\n        public void writeToParcel(Parcel dest, int flags) {\n            super.writeToParcel(dest, flags);\n            dest.writeInt(currentPage);\n        }\n\n        @SuppressWarnings(\"UnusedDeclaration\")\n        public static final Creator<SavedState> CREATOR = new Creator<SavedState>() {\n            @Override\n            public SavedState createFromParcel(Parcel in) {\n                return new SavedState(in);\n            }\n\n            @Override\n            public SavedState[] newArray(int size) {\n                return new SavedState[size];\n            }\n        };\n    }\n}"
  },
  {
    "path": "app/src/main/res/anim/bili_anim.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- 指定动画循环播放 -->\n<animation-list xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:oneshot=\"false\">\n\t<!-- 添加多个帧 -->\n\t<item android:drawable=\"@drawable/bili_anim_tv_chan_1\" android:duration=\"60\" />\n\t<item android:drawable=\"@drawable/bili_anim_tv_chan_3\" android:duration=\"60\" />\n\t<item android:drawable=\"@drawable/bili_anim_tv_chan_5\" android:duration=\"60\" />\n\t<item android:drawable=\"@drawable/bili_anim_tv_chan_7\" android:duration=\"60\" />\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t<item android:drawable=\"@drawable/bili_anim_tv_chan_9\" android:duration=\"60\" />\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n</animation-list>"
  },
  {
    "path": "app/src/main/res/anim/push_left_in.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2007 The Android Open Source Project\n\n     Licensed under the Apache License, Version 2.0 (the \"License\");\n     you may not use this file except in compliance with the License.\n     You may obtain a copy of the License at\n  \n          http://www.apache.org/licenses/LICENSE-2.0\n  \n     Unless required by applicable law or agreed to in writing, software\n     distributed under the License is distributed on an \"AS IS\" BASIS,\n     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     See the License for the specific language governing permissions and\n     limitations under the License.\n-->\n\n<set xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<translate android:fromXDelta=\"100%p\" android:toXDelta=\"0\" android:duration=\"300\"/>\n\t<!--alpha android:fromAlpha=\"0.0\" android:toAlpha=\"1.0\" android:duration=\"300\" /-->\n</set>\n"
  },
  {
    "path": "app/src/main/res/anim/push_no.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<set xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <alpha android:fromAlpha=\"1.0\" android:toAlpha=\"1.0\" android:duration=\"500\"/>\n</set>"
  },
  {
    "path": "app/src/main/res/anim/slide_in_bottom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n     /* //device/apps/common/res/anim/slide_in_left.xml ** ** Copyright 2007, \n\tThe Android Open Source Project ** ** Licensed under the Apache License, \n\tVersion 2.0 (the \"License\"); ** you may not use this file except in compliance \n\twith the License. ** You may obtain a copy of the License at ** ** http://www.apache.org/licenses/LICENSE-2.0 \n\t** ** Unless required by applicable law or agreed to in writing, software \n\t** distributed under the License is distributed on an \"AS IS\" BASIS, ** WITHOUT \n\tWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the \n\tLicense for the specific language governing permissions and ** limitations \n\tunder the License. */\n-->\n\n<set xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <translate\n        android:duration=\"300\"\n        android:fromYDelta=\"-100%\"\n        android:toYDelta=\"0\" />\n\n    <alpha\n        android:duration=\"300\"\n        android:fromAlpha=\"0.0\"\n        android:toAlpha=\"1.0\" />\n\n</set>"
  },
  {
    "path": "app/src/main/res/anim/slide_in_top.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n     /* //device/apps/common/res/anim/slide_in_right.xml ** ** Copyright \n\t2007, The Android Open Source Project ** ** Licensed under the Apache License, \n\tVersion 2.0 (the \"License\"); ** you may not use this file except in compliance \n\twith the License. ** You may obtain a copy of the License at ** ** http://www.apache.org/licenses/LICENSE-2.0 \n\t** ** Unless required by applicable law or agreed to in writing, software \n\t** distributed under the License is distributed on an \"AS IS\" BASIS, ** WITHOUT \n\tWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the \n\tLicense for the specific language governing permissions and ** limitations \n\tunder the License. */\n-->\n\n<set xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <translate\n        android:duration=\"300\"\n        android:fromYDelta=\"100%\"\n        android:toYDelta=\"0\" />\n\n    <alpha\n        android:duration=\"300\"\n        android:fromAlpha=\"0.0\"\n        android:toAlpha=\"1.0\" />\n\n</set>"
  },
  {
    "path": "app/src/main/res/anim/slide_out_bottom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n     /* //device/apps/common/res/anim/slide_out_left.xml ** ** Copyright \n\t2007, The Android Open Source Project ** ** Licensed under the Apache License, \n\tVersion 2.0 (the \"License\"); ** you may not use this file except in compliance \n\twith the License. ** You may obtain a copy of the License at ** ** http://www.apache.org/licenses/LICENSE-2.0 \n\t** ** Unless required by applicable law or agreed to in writing, software \n\t** distributed under the License is distributed on an \"AS IS\" BASIS, ** WITHOUT \n\tWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the \n\tLicense for the specific language governing permissions and ** limitations \n\tunder the License. */\n-->\n\n<set xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <translate\n        android:duration=\"300\"\n        android:fromYDelta=\"0\"\n        android:toYDelta=\"-100%\" />\n\n    <alpha\n        android:duration=\"300\"\n        android:fromAlpha=\"1.0\"\n        android:toAlpha=\"0.0\" />\n\n</set>"
  },
  {
    "path": "app/src/main/res/anim/slide_out_top.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n     /* //device/apps/common/res/anim/slide_out_right.xml ** ** Copyright \n\t2007, The Android Open Source Project ** ** Licensed under the Apache License, \n\tVersion 2.0 (the \"License\"); ** you may not use this file except in compliance \n\twith the License. ** You may obtain a copy of the License at ** ** http://www.apache.org/licenses/LICENSE-2.0 \n\t** ** Unless required by applicable law or agreed to in writing, software \n\t** distributed under the License is distributed on an \"AS IS\" BASIS, ** WITHOUT \n\tWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the \n\tLicense for the specific language governing permissions and ** limitations \n\tunder the License. */\n-->\n\n<set xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <translate\n        android:duration=\"300\"\n        android:fromYDelta=\"0\"\n        android:toYDelta=\"100%\" />\n\n    <alpha\n        android:duration=\"300\"\n        android:fromAlpha=\"1.0\"\n        android:toAlpha=\"0.0\" />\n\n</set>"
  },
  {
    "path": "app/src/main/res/color/vpi__dark_theme.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2010 The Android Open Source Project\n\n     Licensed under the Apache License, Version 2.0 (the \"License\");\n     you may not use this file except in compliance with the License.\n     You may obtain a copy of the License at\n  \n          http://www.apache.org/licenses/LICENSE-2.0\n  \n     Unless required by applicable law or agreed to in writing, software\n     distributed under the License is distributed on an \"AS IS\" BASIS,\n     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     See the License for the specific language governing permissions and\n     limitations under the License.\n-->\n\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item android:state_enabled=\"false\" android:color=\"@color/vpi__bright_foreground_disabled_holo_dark\"/>\n    <item android:state_window_focused=\"false\" android:color=\"@color/vpi__bright_foreground_holo_dark\"/>\n    <item android:state_pressed=\"true\" android:color=\"@color/vpi__bright_foreground_holo_dark\"/>\n    <item android:state_selected=\"true\" android:color=\"@color/vpi__bright_foreground_holo_dark\"/>\n    <!--item android:state_activated=\"true\" android:color=\"@color/vpi__bright_foreground_holo_dark\"/-->\n    <item android:color=\"@color/vpi__bright_foreground_holo_dark\"/> <!-- not selected -->\n</selector>\n"
  },
  {
    "path": "app/src/main/res/color/vpi__light_theme.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2010 The Android Open Source Project\n\n     Licensed under the Apache License, Version 2.0 (the \"License\");\n     you may not use this file except in compliance with the License.\n     You may obtain a copy of the License at\n  \n          http://www.apache.org/licenses/LICENSE-2.0\n  \n     Unless required by applicable law or agreed to in writing, software\n     distributed under the License is distributed on an \"AS IS\" BASIS,\n     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     See the License for the specific language governing permissions and\n     limitations under the License.\n-->\n\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item android:state_enabled=\"false\" android:color=\"@color/vpi__bright_foreground_disabled_holo_light\"/>\n    <item android:state_window_focused=\"false\" android:color=\"@color/vpi__bright_foreground_holo_light\"/>\n    <item android:state_pressed=\"true\" android:color=\"@color/vpi__bright_foreground_holo_light\"/>\n    <item android:state_selected=\"true\" android:color=\"@color/vpi__bright_foreground_holo_light\"/>\n    <!--item android:state_activated=\"true\" android:color=\"@color/vpi__bright_foreground_holo_light\"/-->\n    <item android:color=\"@color/vpi__bright_foreground_holo_light\"/> <!-- not selected -->\n    \n</selector>\n\n"
  },
  {
    "path": "app/src/main/res/drawable/back_btn.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector\n  xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item \n    android:state_pressed=\"false\"\n    android:drawable=\"@drawable/biz_news_detail_back_normal\"\n    ></item>\n    <item \n    android:state_pressed=\"true\"\n    android:drawable=\"@drawable/biz_pics_ic_back_pressed\"\n    ></item>\n</selector>"
  },
  {
    "path": "app/src/main/res/drawable/base_action_bar_action_more_selector.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n    <item android:drawable=\"@drawable/base_action_bar_action_more_pressed\" android:state_pressed=\"true\"/>\n    <item android:drawable=\"@drawable/base_action_bar_action_more_pressed\" android:state_focused=\"true\"/>\n    <item android:drawable=\"@drawable/base_action_bar_action_more_normal\"/>\n\n</selector>"
  },
  {
    "path": "app/src/main/res/drawable/card_background.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!--\r\n    Copyright 2014-present Biraj Patel\r\n\r\n    Licensed under the Apache License, Version 2.0 (the \"License\");\r\n    you may not use this file except in compliance with the License.\r\n    You may obtain a copy of the License at\r\n\r\n       http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n    Unless required by applicable law or agreed to in writing, software\r\n    distributed under the License is distributed on an \"AS IS\" BASIS,\r\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n    See the License for the specific language governing permissions and\r\n    limitations under the License.\r\n-->\r\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\r\n    android:shape=\"rectangle\" >\r\n\r\n    <solid android:color=\"@android:color/white\" />\r\n\r    <corners android:radius=\"3dp\" />\r\n\r\n</shape>"
  },
  {
    "path": "app/src/main/res/drawable/comment_btn.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector\n  xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item \n    android:state_pressed=\"false\"\n    android:drawable=\"@drawable/base_send_normal\"></item>\n    <item \n    android:state_pressed=\"true\"\n    android:drawable=\"@drawable/base_send_pressed\"\n    ></item>\n</selector>"
  },
  {
    "path": "app/src/main/res/drawable/corner.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n    <item android:state_focused=\"true\" android:drawable=\"@drawable/focus_show\"></item>\n     <item android:state_pressed=\"true\" android:drawable=\"@drawable/focus_show\"></item>\n    <item android:drawable=\"@drawable/normal_show\"/>\n\n</selector>"
  },
  {
    "path": "app/src/main/res/drawable/dot_focused.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:shape=\"oval\" >\n\n    <solid android:color=\"@color/bili_red\" />\n\n    <corners android:radius=\"5dip\" />\n\n</shape>"
  },
  {
    "path": "app/src/main/res/drawable/dot_normal.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:shape=\"oval\" >\n\n    <solid android:color=\"@color/bili_red2\" />\n\n    <corners android:radius=\"5dip\" />\n\n</shape>"
  },
  {
    "path": "app/src/main/res/drawable/focus_show.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\" >  \n  \n    <solid android:color=\"#f3f3f3\" />  \n  \n    <corners  \n        android:bottomLeftRadius=\"1dp\"  \n        android:bottomRightRadius=\"1dp\"  \n        android:topLeftRadius=\"1dp\"  \n        android:topRightRadius=\"1dp\" />  \n    <stroke  \n        android:dashGap=\"0dp\"  \n        android:width=\"1dp\"  \n        android:color=\"@color/black_alpha2\" />  \n  \n</shape>"
  },
  {
    "path": "app/src/main/res/drawable/home_btn_bg.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<item android:state_checked=\"false\" android:drawable=\"@drawable/home_bg_normal\" />\n\t<item android:state_checked=\"true\" android:drawable=\"@drawable/home_bg_checked\" />\n</selector> "
  },
  {
    "path": "app/src/main/res/drawable/image_corner.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>  \n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\" >  \n  \n    <solid android:color=\"#f3f3f3\" />  \n  \n    <corners  \n        android:bottomLeftRadius=\"1dp\"  \n        android:bottomRightRadius=\"1dp\"  \n        android:topLeftRadius=\"1dp\"  \n        android:topRightRadius=\"1dp\" />  \n  \n</shape>  "
  },
  {
    "path": "app/src/main/res/drawable/list_selector.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n    <item android:drawable=\"@color/bili_red2\" android:state_selected=\"true\"/>\n    <item android:drawable=\"@color/bili_red2\" android:state_focused=\"true\"/>\n    <item android:drawable=\"@color/bili_red2\" android:state_pressed=\"true\"/>\n    <item android:drawable=\"@color/bilibg\" android:state_enabled=\"true\"/>\n    <item android:drawable=\"@color/bilibg\" android:state_enabled=\"false\"/>\n    <item android:drawable=\"@color/bilibg\" android:state_window_focused=\"false\"/>\n    <item android:drawable=\"@color/bili_red2\"/>\n\n</selector>"
  },
  {
    "path": "app/src/main/res/drawable/normal_show.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\" >  \n  \n    <solid android:color=\"#ffffff\" />  \n  \n    <corners  \n        android:bottomLeftRadius=\"1dp\"  \n        android:bottomRightRadius=\"1dp\"  \n        android:topLeftRadius=\"1dp\"  \n        android:topRightRadius=\"1dp\" />  \n    <stroke  \n        android:dashGap=\"0dp\"  \n        android:width=\"1dp\"  \n        android:color=\"@color/black_alpha2\" />  \n  \n</shape>"
  },
  {
    "path": "app/src/main/res/drawable/progressbar_large.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<animated-rotate\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:drawable=\"@drawable/base_loading_large_icon\"\n    android:pivotX=\"50%\"\n    android:pivotY=\"50%\"\n    />\n"
  },
  {
    "path": "app/src/main/res/drawable/selector_tabtext.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item android:state_selected=\"true\" android:color=\"@android:color/white\" />\n    <item android:state_pressed=\"true\" android:color=\"@android:color/white\" />\n    <item android:state_focused=\"true\" android:color=\"@android:color/white\" />\n    <item android:color=\"@color/bili_red2\"/>\n</selector> "
  },
  {
    "path": "app/src/main/res/drawable/tab_indicator.xml",
    "content": "<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item android:state_selected=\"false\" android:state_pressed=\"false\" android:drawable=\"@android:color/transparent\" />\n    <item android:state_selected=\"false\" android:state_pressed=\"true\" android:drawable=\"@android:color/transparent\" />     \n    <item android:state_selected=\"true\"  android:state_pressed=\"false\" android:drawable=\"@drawable/base_tabpager_indicator_selected\" />\n    <item android:state_selected=\"true\"  android:state_pressed=\"true\" android:drawable=\"@drawable/base_tabpager_indicator_selected\" />\n</selector>\n"
  },
  {
    "path": "app/src/main/res/drawable/vpi__tab_indicator.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2008 The Android Open Source Project\n\n     Licensed under the Apache License, Version 2.0 (the \"License\");\n     you may not use this file except in compliance with the License.\n     You may obtain a copy of the License at\n  \n          http://www.apache.org/licenses/LICENSE-2.0\n  \n     Unless required by applicable law or agreed to in writing, software\n     distributed under the License is distributed on an \"AS IS\" BASIS,\n     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     See the License for the specific language governing permissions and\n     limitations under the License.\n-->\n\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <!-- Non focused states -->\n    <item android:state_focused=\"false\" android:state_selected=\"false\" android:state_pressed=\"false\" android:drawable=\"@drawable/vpi__tab_unselected_holo\" />\n    <item android:state_focused=\"false\" android:state_selected=\"true\"  android:state_pressed=\"false\" android:drawable=\"@drawable/vpi__tab_selected_holo\" />\n\n    <!-- Focused states -->\n    <item android:state_focused=\"true\" android:state_selected=\"false\" android:state_pressed=\"false\" android:drawable=\"@drawable/vpi__tab_unselected_focused_holo\" />\n    <item android:state_focused=\"true\" android:state_selected=\"true\"  android:state_pressed=\"false\" android:drawable=\"@drawable/vpi__tab_selected_focused_holo\" />\n\n    <!-- Pressed -->\n    <!--    Non focused states -->\n    <item android:state_focused=\"false\" android:state_selected=\"false\" android:state_pressed=\"true\" android:drawable=\"@drawable/vpi__tab_unselected_pressed_holo\" />\n    <item android:state_focused=\"false\" android:state_selected=\"true\"  android:state_pressed=\"true\" android:drawable=\"@drawable/vpi__tab_selected_pressed_holo\" />\n\n    <!--    Focused states -->\n    <item android:state_focused=\"true\" android:state_selected=\"false\" android:state_pressed=\"true\" android:drawable=\"@drawable/vpi__tab_unselected_pressed_holo\" />\n    <item android:state_focused=\"true\" android:state_selected=\"true\"  android:state_pressed=\"true\" android:drawable=\"@drawable/vpi__tab_selected_pressed_holo\" />\n</selector>\n"
  },
  {
    "path": "app/src/main/res/drawable-xhdpi/mediacontroller_btn_bg.xml",
    "content": "<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n    <item android:drawable=\"@color/mediacontroller_bg_pressed\" android:state_focused=\"true\"/>\n    <item android:drawable=\"@color/mediacontroller_bg_pressed\" android:state_pressed=\"true\"/>\n    <item android:drawable=\"@color/transparent\" android:state_enabled=\"false\"/>\n    <item android:drawable=\"@color/transparent\"/>\n\n</selector>"
  },
  {
    "path": "app/src/main/res/layout/activity_main.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:background=\"@color/bilibg\"\n    android:orientation=\"vertical\" >\n    \n<include layout=\"@layout/main_head\" />\n\n    <viewpagerindicator.TitlePageIndicator\n        android:id=\"@+id/indicator\"\n        xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n        app:footerColor=\"#ff91e4\"\n        app:footerLineHeight=\"1dp\"\n        app:footerIndicatorHeight=\"3dp\"\n        app:footerIndicatorStyle=\"underline\"\n        app:selectedColor=\"#FFffff\"\n        android:textColor=\"#f2f2f2\"\n        app:selectedBold=\"true\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:background=\"@color/bili_red\" />\n\n    <android.support.v4.view.ViewPager\n        android:id=\"@+id/pager\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"0dp\"\n        android:layout_weight=\"1\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_video.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<io.vov.vitamio.widget.CenterLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:id=\"@+id/video_root\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:background=\"@android:color/black\"\n    android:orientation=\"horizontal\" >\n\n    <com.cjj.bb.view.VideoView\n        android:id=\"@+id/video\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"\n        android:fitsSystemWindows=\"true\"\n        android:saveEnabled=\"true\" />\n    <master.flame.danmaku.ui.widget.DanmakuView\n        android:id=\"@+id/sv_danmaku\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\" />\n    \n\n    <RelativeLayout\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"\n        android:orientation=\"horizontal\" >\n        \n        <RelativeLayout\n            android:id=\"@+id/video_loading\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:layout_centerInParent=\"true\"\n            android:visibility=\"gone\" >\n\n            <!-- <ImageView\n                android:id=\"@+id/video_loading_progress\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_alignParentTop=\"true\"\n                android:layout_centerHorizontal=\"true\"\n                android:src=\"@drawable/icon\" /> -->\n            <ProgressBar\n                android:id=\"@+id/video_loading_progress\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_alignParentTop=\"true\"\n                android:layout_centerHorizontal=\"true\" />\n\n            <TextView\n                android:id=\"@+id/video_loading_text\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_below=\"@+id/video_loading_progress\"\n                android:layout_centerHorizontal=\"true\"\n                android:paddingTop=\"7.0dip\"\n                android:text=\"@string/video_layout_loading\"\n                android:textColor=\"@android:color/white\"\n                android:textSize=\"20.0sp\" />\n        </RelativeLayout>\n        \n        <RelativeLayout\n            android:id=\"@+id/video_start\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"match_parent\"\n            android:layout_centerInParent=\"true\"\n            android:background=\"@color/bilibg\"\n            android:visibility=\"gone\" >\n\n            <ImageView\n                android:id=\"@+id/bili_anim\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_centerInParent=\"true\"\n                android:layout_centerHorizontal=\"true\"\n                android:background=\"@anim/bili_anim\" />\n\n            <TextView\n                android:id=\"@+id/video_start_info\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_alignParentBottom=\"true\"\n                android:text=\"初始化播放器...\"\n                android:textColor=\"@android:color/black\"\n                android:textSize=\"12sp\" />\n        </RelativeLayout>\n\n\n\n        <RelativeLayout\n            android:id=\"@+id/subtitle_container\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:layout_alignParentBottom=\"true\"\n            android:layout_marginBottom=\"10.0dip\" >\n\n            <io.vov.vitamio.widget.OutlineTextView\n                android:id=\"@+id/subtitle_text\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_centerHorizontal=\"true\"\n                android:gravity=\"center_vertical|center_horizontal\"\n                android:shadowColor=\"@color/gray\"\n                android:shadowDx=\"1\"\n                android:shadowDy=\"1\"\n                android:shadowRadius=\"2\"\n                android:textColor=\"@android:color/white\"\n                android:textSize=\"18sp\"\n                android:textStyle=\"bold\" />\n\n            <ImageView\n                android:id=\"@+id/subtitle_image\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_centerHorizontal=\"true\"\n                android:contentDescription=\"@string/imageview_content_description\"\n                android:gravity=\"center_vertical|center_horizontal\"\n                android:visibility=\"gone\" />\n        </RelativeLayout>\n    </RelativeLayout>\n\n</io.vov.vitamio.widget.CenterLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_video_info.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:background=\"@color/bilibg\"\n    android:orientation=\"vertical\" >\n    <include layout=\"@layout/back_head\" />\n\n\t<FrameLayout\n    \tandroid:id=\"@+id/container\"\n    \tandroid:layout_width=\"match_parent\"\n    \tandroid:layout_height=\"match_parent\">\n\t</FrameLayout>\n\t\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/area_item.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    android:padding=\"15dp\"\n    android:background=\"@color/white\"\n    android:orientation=\"horizontal\" >\n\n    <ImageView\n        android:id=\"@+id/areaImageView\"\n        android:layout_width=\"60dp\"\n        android:layout_height=\"60dp\"\n        android:padding=\"8dp\"\n        android:src=\"@drawable/ic_cate_animation\" />\n\n    <TextView\n        android:id=\"@+id/areaTextView\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"left|center\"\n        android:text=\"动画\"\n        android:textColor=\"@color/black\"\n        android:textSize=\"22sp\" />\n\n</LinearLayout>\n"
  },
  {
    "path": "app/src/main/res/layout/back_head.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"50dp\"\n    android:background=\"@drawable/head_bg\"\n    android:orientation=\"horizontal\"\n    android:gravity=\"center_vertical\"\n    android:paddingLeft=\"4dp\" >\n\n    <LinearLayout\n        android:id=\"@+id/logobutton\"\n        android:gravity=\"center_vertical\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"match_parent\"\n        android:orientation=\"horizontal\"\n        android:padding=\"-4dp\" >\n\n        <ImageView\n            android:id=\"@+id/head_logo\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"40dp\"\n            android:src=\"@drawable/abc_ic_ab_back_holo_light\" />\n\n        <ImageView\n            android:id=\"@+id/head_launcher\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"35dp\"\n            android:paddingBottom=\"4dp\"\n            android:paddingTop=\"4dp\"\n            android:src=\"@drawable/ic_launcher\" />\n\n    </LinearLayout>\n\n    <TextView\n        android:id=\"@+id/textViewTitle\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center\"\n        android:paddingLeft=\"4dp\"\n        android:text=\"动画\"\n        android:textSize=\"16sp\" />\n\n    <ImageView\n        android:id=\"@+id/headTV\"\n        android:layout_width=\"0dp\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center_vertical\"\n        android:layout_marginLeft=\"4dp\"\n        android:layout_weight=\"1\"\n         >\n    </ImageView>\n\n    <!--\n        <ProgressBar\n        android:id=\"@+id/progress\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center_vertical\"\n        android:visibility=\"invisible\" />\n    -->\n\n    <ImageButton\n        android:id=\"@+id/personCenter\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center_vertical\" \n         android:background=\"@drawable/abc_ic_search_api_holo_light\" />\n\n    <View\n        android:layout_width=\"10dp\"\n        android:layout_height=\"40dp\"\n        android:layout_gravity=\"center_vertical\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/banner.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    android:orientation=\"vertical\" >\n\n    <FrameLayout\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\" >\n\n        <android.support.v4.view.ViewPager\n            android:id=\"@+id/vp\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"160dp\" />\n\n        <LinearLayout\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:layout_marginTop=\"10dip\"\n            android:layout_gravity=\"bottom|center_horizontal\"\n            android:layout_marginBottom=\"10dp\"\n            android:gravity=\"center\" >\n\n            <View\n                android:id=\"@+id/v_dot0\"\n                style=\"@style/dot_style\"\n                android:background=\"@drawable/dot_focused\"\n                android:visibility=\"invisible\" />\n\n            <View\n                android:id=\"@+id/v_dot1\"\n                style=\"@style/dot_style\" \n                android:visibility=\"invisible\"/>\n\n            <View\n                android:id=\"@+id/v_dot2\"\n                style=\"@style/dot_style\" \n                android:visibility=\"invisible\"/>\n\n            <View\n                android:id=\"@+id/v_dot3\"\n                style=\"@style/dot_style\" \n                android:visibility=\"invisible\"/>\n\n            <View\n                android:id=\"@+id/v_dot4\"\n                style=\"@style/dot_style\"\n                android:visibility=\"invisible\" />\n            <View\n                android:id=\"@+id/v_dot5\"\n                style=\"@style/dot_style\"\n                android:visibility=\"invisible\" />\n        </LinearLayout>\n    </FrameLayout>\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/bili_videoview.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"fill_parent\"\n    android:layout_height=\"fill_parent\"\n    android:orientation=\"vertical\" >\n\n    <io.vov.vitamio.widget.VideoView\n        android:id=\"@+id/surface_view\"\n        android:layout_width=\"fill_parent\"\n        android:layout_height=\"fill_parent\"\n        android:layout_centerHorizontal=\"true\"\n        android:layout_centerVertical=\"true\" />\n\n    <LinearLayout\n        android:id=\"@+id/video_loading\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_centerInParent=\"true\"\n        android:gravity=\"center_vertical\" >\n\n        <ProgressBar\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\" />\n\n        <TextView\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:paddingTop=\"7.0dip\"\n            android:text=\"@string/video_layout_loading\"\n            android:textColor=\"@color/white\"\n            android:textSize=\"20.0sp\" />\n    </LinearLayout>\n\n    <FrameLayout\n        android:id=\"@+id/operation_volume_brightness\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_centerInParent=\"true\"\n        android:background=\"#00000000\"\n        android:orientation=\"horizontal\"\n        android:padding=\"0dip\"\n        android:visibility=\"invisible\" >\n\n        <ImageView\n            android:id=\"@+id/operation_bg\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:layout_gravity=\"center\"\n            android:src=\"@drawable/video_volumn_bg\" />\n\n        <FrameLayout\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:layout_gravity=\"bottom|center_horizontal\"\n            android:paddingBottom=\"25dip\" >\n\n            <ImageView\n                android:id=\"@+id/operation_full\"\n                android:layout_width=\"94dip\"\n                android:layout_height=\"wrap_content\"\n                android:layout_gravity=\"left\"\n                android:src=\"@drawable/video_num_bg\" />\n\n            <ImageView\n                android:id=\"@+id/operation_percent\"\n                android:layout_width=\"0dip\"\n                android:layout_height=\"wrap_content\"\n                android:layout_gravity=\"left\"\n                android:scaleType=\"matrix\"\n                android:src=\"@drawable/video_num_front\" />\n        </FrameLayout>\n    </FrameLayout>\n\n</RelativeLayout>\n"
  },
  {
    "path": "app/src/main/res/layout/bili_webview.xml",
    "content": "<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:id=\"@+id/blogContentView\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:background=\"@color/bilibg\"\n    android:clickable=\"true\" >\n\n    <RelativeLayout\n        android:id=\"@+id/head\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\" >\n\n        <include layout=\"@layout/bili_webview_head\" />\n    </RelativeLayout>\n\n    <ProgressBar\n        android:id=\"@+id/blogContentPro\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_centerInParent=\"true\"\n        android:indeterminateDrawable=\"@drawable/progressbar_large\"\n        android:visibility=\"visible\" />\n\n    <ImageView\n        android:id=\"@+id/reLoadImage\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_centerInParent=\"true\"\n        android:clickable=\"true\"\n        android:src=\"@drawable/base_empty_view\"\n        android:visibility=\"invisible\" />\n\n    <WebView\n        android:id=\"@+id/BiliWebView\"\n        android:layout_below=\"@id/head\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\" />\n\n</RelativeLayout>"
  },
  {
    "path": "app/src/main/res/layout/bili_webview_head.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    android:background=\"@drawable/biz_news_detaila_action_bar_bg\"\n    android:orientation=\"horizontal\" >\n\n    <ImageView\n        android:id=\"@+id/backBtn\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center_vertical\"\n        android:layout_marginLeft=\"0dp\"\n        android:layout_marginRight=\"0dp\"\n        android:background=\"@drawable/back_btn\" />\n\n    <ImageView\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center_vertical\"\n        android:src=\"@drawable/base_action_bar_back_divider\" />\n\n    <TextView\n        android:id=\"@+id/headTV\"\n        android:layout_width=\"0dp\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center_vertical\"\n        android:layout_marginLeft=\"4dp\"\n        android:layout_weight=\"1\"\n        android:text=\"\"\n        android:textColor=\"@color/white\"\n        android:textSize=\"21sp\"\n        android:textStyle=\"bold\" >\n    </TextView>\n\n    <ProgressBar\n        android:id=\"@+id/progress\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center_vertical\"\n        android:visibility=\"gone\" />\n\n    <ImageView\n        android:id=\"@+id/comment\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center_vertical\"\n        android:src=\"@drawable/comment_btn\" />\n    <!--\n         <ImageButton\n\t    android:id=\"@+id/personCenter\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center_vertical\"\n        android:src=\"@drawable/base_send_normal\"\n        android:background=\"@drawable/person_btn\"\n        />\n    -->\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/brightness_volumn.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<FrameLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"wrap_content\"\n    android:layout_height=\"wrap_content\"\n    android:background=\"#00000000\"\n    android:orientation=\"horizontal\"\n    android:padding=\"0dip\" >\n\n    <ImageView\n        android:id=\"@+id/operation_bg\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center\"\n        android:src=\"@drawable/video_volumn_bg\" />\n\n    <FrameLayout\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"bottom|center_horizontal\"\n        android:paddingBottom=\"25dip\" >\n\n        <ImageView\n            android:id=\"@+id/operation_full\"\n            android:layout_width=\"94dip\"\n            android:layout_height=\"wrap_content\"\n            android:layout_gravity=\"left\"\n            android:src=\"@drawable/video_num_bg\" />\n\n        <ImageView\n            android:id=\"@+id/operation_percent\"\n            android:layout_width=\"0dip\"\n            android:layout_height=\"wrap_content\"\n            android:layout_gravity=\"left\"\n            android:scaleType=\"matrix\"\n            android:src=\"@drawable/video_num_front\" />\n    </FrameLayout>\n\n</FrameLayout>"
  },
  {
    "path": "app/src/main/res/layout/card_layout.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n    Copyright 2014-present Biraj Patel\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n-->\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:id=\"@+id/card_main_parent\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:background=\"@drawable/card_background\"\n    android:orientation=\"vertical\"\n    android:paddingLeft=\"6dp\"\n    android:paddingRight=\"6dp\" >\n\n    <RelativeLayout\n        android:id=\"@+id/image_container\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"\n        android:background=\"@drawable/card_background\"\n        android:orientation=\"vertical\"\n        android:paddingBottom=\"6dp\"\n        android:paddingTop=\"6dp\" >\n\n        <ImageView\n            android:id=\"@+id/sample_image\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"match_parent\"\n            android:layout_centerInParent=\"true\" />\n    </RelativeLayout>\n\n    <TextView\n        android:id=\"@+id/name\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:padding=\"6dp\"\n        android:singleLine=\"true\"\n        android:textAppearance=\"?android:attr/textAppearanceLarge\"\n        android:textColor=\"@android:color/black\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/donghua_tab.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:background=\"@color/bilibg\"\n    android:orientation=\"vertical\" >\n    \n<include layout=\"@layout/back_head\" />\n\n    <viewpagerindicator.TabPageIndicator\n        android:id=\"@+id/indicator\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:background=\"@color/bili_red\" />\n\n    <android.support.v4.view.ViewPager\n        android:id=\"@+id/pager\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"0dp\"\n        android:layout_weight=\"1\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/fragment_donghua.xml",
    "content": "<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:background=\"@color/bilibg\"\n    tools:context=\".MainFrag\" >\n\n    <ListView\n        android:layout_margin=\"12dp\"\n        android:id=\"@+id/videoListView\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"\n        android:layout_marginLeft=\"18dp\"\n        android:layout_marginRight=\"18dp\"\n        android:cacheColorHint=\"#00000000\"\n        android:divider=\"#00000000\"\n        android:dividerHeight=\"8dp\"\n        android:fadingEdge=\"horizontal\" />\n\n    <LinearLayout\n        android:id=\"@+id/noBlogLayout\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_centerInParent=\"true\" \n        android:visibility=\"invisible\">\n\n        <ImageView\n            android:id=\"@+id/no_blog\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:clickable=\"true\"\n            android:src=\"@drawable/phiz\"\n            android:visibility=\"visible\" />\n        <TextView \n            android:id=\"@+id/tv_noblog\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:text=\"(｀・ω・´)怎么也找不到数据！！！\"/>\n    </LinearLayout>\n\n<LinearLayout\n    android:layout_marginTop=\"10dp\"\n    android:id=\"@+id/ll_loading\"\n    android:gravity=\"center\"\n    android:layout_centerHorizontal=\"true\"\n    android:layout_width=\"wrap_content\"\n    android:layout_height=\"wrap_content\">\n    <ProgressBar\n\n        style=\"?android:attr/progressBarStyleSmall\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\" />\n\n    <TextView\n        android:text=\"嘿咻...嘿咻...\"\n        android:textColor=\"#202020\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\" />\n</LinearLayout>\n</RelativeLayout>"
  },
  {
    "path": "app/src/main/res/layout/fragment_gamecenter.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:orientation=\"vertical\" >\n\n    <ListView\n        android:id=\"@+id/GameListView\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\" >\n        \n    </ListView>\n\n</LinearLayout>\n"
  },
  {
    "path": "app/src/main/res/layout/fragment_homepage.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ScrollView xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\" >\n\n    <LinearLayout\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:background=\"#FFFFFF\"\n        android:clickable=\"true\"\n        android:orientation=\"vertical\"\n        android:scrollbars=\"vertical\" >\n\n        <include layout=\"@layout/banner\" />\n\n        <RelativeLayout\n            android:id=\"@+id/BangumiView\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"40dp\"\n            android:background=\"@drawable/list_selector\" >\n\n            <TextView\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_alignParentLeft=\"true\"\n                android:layout_centerInParent=\"true\"\n                android:layout_marginLeft=\"5dp\"\n                android:text=\"番剧\"\n                android:textColor=\"@color/black\"\n                android:textSize=\"18sp\" />\n\n            <ImageView\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_alignParentRight=\"true\"\n                android:layout_centerVertical=\"true\"\n                android:layout_marginRight=\"5dp\"\n                android:focusable=\"false\"\n                android:src=\"@drawable/ic_arrow_right\" />\n        </RelativeLayout>\n\n        <GridView\n            android:id=\"@+id/BangumiGridView\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"280dp\"\n            android:background=\"@color/bilibg\"\n            android:scrollbarStyle=\"outsideInset\"\n            android:numColumns=\"2\">\n\n        </GridView>\n        \n        <RelativeLayout\n            android:id=\"@+id/DonghuaView\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"40dp\"\n            android:background=\"@drawable/list_selector\" >\n\n            <TextView\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_alignParentLeft=\"true\"\n                android:layout_centerInParent=\"true\"\n                android:layout_marginLeft=\"5dp\"\n                android:text=\"动画\"\n                android:textColor=\"@color/black\"\n                android:textSize=\"18sp\" />\n\n            <ImageView\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_alignParentRight=\"true\"\n                android:layout_centerVertical=\"true\"\n                android:layout_marginRight=\"5dp\"\n                android:focusable=\"false\"\n                android:src=\"@drawable/ic_arrow_right\" />\n        </RelativeLayout>\n        \n        <GridView\n            android:id=\"@+id/DonghuaGridView\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"280dp\"\n            android:background=\"@color/bilibg\"\n            android:scrollbarStyle=\"outsideInset\"\n            android:numColumns=\"2\">\n\n        </GridView>\n        \n        <RelativeLayout\n            android:id=\"@+id/MusicView\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"40dp\"\n            android:background=\"@drawable/list_selector\" >\n\n            <TextView\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_alignParentLeft=\"true\"\n                android:layout_centerInParent=\"true\"\n                android:layout_marginLeft=\"5dp\"\n                android:text=\"音乐\"\n                android:textColor=\"@color/black\"\n                android:textSize=\"18sp\" />\n\n            <ImageView\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_alignParentRight=\"true\"\n                android:layout_centerVertical=\"true\"\n                android:layout_marginRight=\"5dp\"\n                android:focusable=\"false\"\n                android:src=\"@drawable/ic_arrow_right\" />\n        </RelativeLayout>\n        \n        <GridView\n            android:id=\"@+id/MusicGridView\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"280dp\"\n            android:background=\"@color/bilibg\"\n            android:scrollbarStyle=\"outsideInset\"\n            android:numColumns=\"2\">\n        </GridView>\n        \n        <RelativeLayout\n            android:id=\"@+id/DanceView\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"40dp\"\n            android:background=\"@drawable/list_selector\" >\n\n            <TextView\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_alignParentLeft=\"true\"\n                android:layout_centerInParent=\"true\"\n                android:layout_marginLeft=\"5dp\"\n                android:text=\"游戏\"\n                android:textColor=\"@color/black\"\n                android:textSize=\"18sp\" />\n\n            <ImageView\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_alignParentRight=\"true\"\n                android:layout_centerVertical=\"true\"\n                android:layout_marginRight=\"5dp\"\n                android:focusable=\"false\"\n                android:src=\"@drawable/ic_arrow_right\" />\n        </RelativeLayout>\n        \n        <GridView\n            android:id=\"@+id/DanceGridView\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"280dp\"\n            android:background=\"@color/bilibg\"\n            android:scrollbarStyle=\"outsideInset\"\n            android:numColumns=\"2\">\n        </GridView>\n        \n        <RelativeLayout\n            android:id=\"@+id/EntView\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"40dp\"\n            android:background=\"@drawable/list_selector\" >\n\n            <TextView\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_alignParentLeft=\"true\"\n                android:layout_centerInParent=\"true\"\n                android:layout_marginLeft=\"5dp\"\n                android:text=\"娱乐\"\n                android:textColor=\"@color/black\"\n                android:textSize=\"18sp\" />\n\n            <ImageView\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_alignParentRight=\"true\"\n                android:layout_centerVertical=\"true\"\n                android:layout_marginRight=\"5dp\"\n                android:focusable=\"false\"\n                android:src=\"@drawable/ic_arrow_right\" />\n        </RelativeLayout>\n        \n        <GridView\n            android:id=\"@+id/EntGridView\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"280dp\"\n            android:background=\"@color/bilibg\"\n            android:scrollbarStyle=\"outsideInset\"\n            android:numColumns=\"2\">\n        </GridView>\n        \n        <RelativeLayout\n            android:id=\"@+id/MovieView\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"40dp\"\n            android:background=\"@drawable/list_selector\" >\n\n            <TextView\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_alignParentLeft=\"true\"\n                android:layout_centerInParent=\"true\"\n                android:layout_marginLeft=\"5dp\"\n                android:text=\"电影\"\n                android:textColor=\"@color/black\"\n                android:textSize=\"18sp\" />\n\n            <ImageView\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_alignParentRight=\"true\"\n                android:layout_centerVertical=\"true\"\n                android:layout_marginRight=\"5dp\"\n                android:focusable=\"false\"\n                android:src=\"@drawable/ic_arrow_right\" />\n        </RelativeLayout>\n        \n        <GridView\n            android:id=\"@+id/MovieGridView\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"280dp\"\n            android:background=\"@color/bilibg\"\n            android:scrollbarStyle=\"outsideInset\"\n            android:numColumns=\"2\">\n        </GridView>\n        <RelativeLayout\n            android:id=\"@+id/KejiView\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"40dp\"\n            android:background=\"@drawable/list_selector\" >\n\n            <TextView\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_alignParentLeft=\"true\"\n                android:layout_centerInParent=\"true\"\n                android:layout_marginLeft=\"5dp\"\n                android:text=\"科学·技术\"\n                android:textColor=\"@color/black\"\n                android:textSize=\"18sp\" />\n\n            <ImageView\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_alignParentRight=\"true\"\n                android:layout_centerVertical=\"true\"\n                android:layout_marginRight=\"5dp\"\n                android:focusable=\"false\"\n                android:src=\"@drawable/ic_arrow_right\" />\n        </RelativeLayout>\n        \n        <GridView\n            android:id=\"@+id/KejiGridView\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"280dp\"\n            android:background=\"@color/bilibg\"\n            android:scrollbarStyle=\"outsideInset\"\n            android:numColumns=\"2\">\n        </GridView>\n\n    </LinearLayout>\n\n</ScrollView>"
  },
  {
    "path": "app/src/main/res/layout/fragment_main.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ScrollView xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\">\n<LinearLayout \n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    android:background=\"#FFFFFF\"\n    android:clickable=\"true\"\n    android:orientation=\"vertical\"\n    android:scrollbars=\"vertical\" >\n  <include layout=\"@layout/banner\"/>\n  <RelativeLayout\n    android:id=\"@+id/BangumiView\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"40dp\"\n    android:background=\"@drawable/list_selector\" >\n\n    <TextView\n        android:id=\"@+id/tv8\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_alignParentLeft=\"true\"\n        android:layout_centerInParent=\"true\"\n        android:layout_marginLeft=\"1dp\"\n        android:text=\"番剧\"\n        android:textColor=\"@color/black\"\n        android:textSize=\"20sp\" />\n\n    <ImageView\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_alignParentRight=\"true\"\n        android:layout_centerVertical=\"true\"\n        android:layout_marginRight=\"5dp\"\n        android:focusable=\"false\"\n        android:src=\"@drawable/ic_arrow_right\" />\n\n</RelativeLayout>\n\n  <GridLayout\n      android:layout_width=\"match_parent\"\n      android:layout_height=\"wrap_content\"\n      android:columnCount=\"2\"\n      android:rowCount=\"2\" >\n\n      <LinearLayout\n          android:layout_width=\"wrap_content\"\n          android:layout_height=\"wrap_content\"\n          android:layout_gravity=\"fill_horizontal\"\n          android:background=\"@drawable/card_background\"\n          android:orientation=\"vertical\"\n          android:padding=\"2dp\" >\n\n          <FrameLayout\n              android:layout_width=\"wrap_content\"\n              android:layout_height=\"wrap_content\" >\n\n              <ImageView\n                  android:id=\"@+id/BangumiImageView01\"\n                  android:layout_width=\"wrap_content\"\n                  android:layout_height=\"wrap_content\"\n                  android:padding=\"5dp\"\n                  android:src=\"@drawable/bili_default_image_tv_with_bg\" />\n\n              <LinearLayout\n                  android:layout_width=\"match_parent\"\n                  android:layout_height=\"match_parent\"\n                  android:layout_gravity=\"bottom|center_horizontal\"\n                  android:layout_marginBottom=\"5dp\"\n                  android:layout_marginTop=\"5dip\"\n                  android:background=\"@color/black_alpha\"\n                  android:gravity=\"center\"\n                  android:padding=\"3dp\" >\n\n                  <ImageView\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:src=\"@drawable/ic_info_views\" />\n\n                  <TextView\n                      android:id=\"@+id/BangumiImageView01_baofang\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:text=\"566666\" />\n\n                  <ImageView\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:src=\"@drawable/ic_info_views\" />\n\n                  <TextView\n                      android:id=\"@+id/BangumiImageView01_danmugu\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:text=\"233333\" />\n              </LinearLayout>\n          </FrameLayout>\n\n          <TextView\n              android:id=\"@+id/BangumiTextView01\"\n              android:layout_width=\"wrap_content\"\n              android:layout_height=\"wrap_content\"\n              android:text=\"TextView\" />\n      </LinearLayout>\n\n      <LinearLayout\n          android:layout_width=\"wrap_content\"\n          android:layout_height=\"wrap_content\"\n          android:layout_gravity=\"fill_horizontal\"\n          android:background=\"@drawable/card_background\"\n          android:orientation=\"vertical\"\n          android:padding=\"2dp\" >\n\n          <FrameLayout\n              android:layout_width=\"wrap_content\"\n              android:layout_height=\"wrap_content\" >\n\n              <ImageView\n                  android:id=\"@+id/BangumiImageView02\"\n                  android:layout_width=\"wrap_content\"\n                  android:layout_height=\"wrap_content\"\n                  android:padding=\"5dp\"\n                  android:src=\"@drawable/bili_default_image_tv_with_bg\" />\n\n              <LinearLayout\n                  android:layout_width=\"match_parent\"\n                  android:layout_height=\"match_parent\"\n                  android:layout_gravity=\"bottom|center_horizontal\"\n                  android:layout_marginBottom=\"5dp\"\n                  android:layout_marginTop=\"5dip\"\n                  android:background=\"@color/black_alpha\"\n                  android:gravity=\"center\"\n                  android:padding=\"3dp\" >\n\n                  <ImageView\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:src=\"@drawable/ic_info_views\" />\n\n                  <TextView\n                      android:id=\"@+id/BangumiImageView02_baofang\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:text=\"TextView\" />\n\n                  <ImageView\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:src=\"@drawable/ic_info_views\" />\n\n                  <TextView\n                      android:id=\"@+id/BangumiImageView02_danmugu\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:text=\"TextView\" />\n              </LinearLayout>\n          </FrameLayout>\n\n          <TextView\n              android:id=\"@+id/BangumiTextView02\"\n              android:layout_width=\"wrap_content\"\n              android:layout_height=\"wrap_content\"\n              android:text=\"TextView\" />\n      </LinearLayout>\n\n      <LinearLayout\n          android:layout_width=\"wrap_content\"\n          android:layout_height=\"wrap_content\"\n          android:layout_gravity=\"fill_horizontal\"\n          android:background=\"@drawable/card_background\"\n          android:orientation=\"vertical\"\n          android:padding=\"2dp\" >\n\n          <FrameLayout\n              android:layout_width=\"wrap_content\"\n              android:layout_height=\"wrap_content\" >\n\n              <ImageView\n                  android:id=\"@+id/BangumiImageView03\"\n                  android:layout_width=\"wrap_content\"\n                  android:layout_height=\"wrap_content\"\n                  android:padding=\"5dp\"\n                  android:src=\"@drawable/bili_default_image_tv_with_bg\" />\n\n              <LinearLayout\n                  android:layout_width=\"match_parent\"\n                  android:layout_height=\"match_parent\"\n                  android:layout_gravity=\"bottom|center_horizontal\"\n                  android:layout_marginBottom=\"5dp\"\n                  android:layout_marginTop=\"5dip\"\n                  android:background=\"@color/black_alpha\"\n                  android:gravity=\"center\"\n                  android:padding=\"3dp\" >\n\n                  <ImageView\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:src=\"@drawable/ic_info_views\" />\n\n                  <TextView\n                      android:id=\"@+id/BangumiImageView03_baofang\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:text=\"TextView\" />\n\n                  <ImageView\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:src=\"@drawable/ic_info_views\" />\n\n                  <TextView\n                      android:id=\"@+id/BangumiImageView03_danmugu\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:text=\"TextView\" />\n              </LinearLayout>\n          </FrameLayout>\n\n          <TextView\n              android:id=\"@+id/BangumiTextView03\"\n              android:layout_width=\"wrap_content\"\n              android:layout_height=\"wrap_content\"\n              android:text=\"TextView\" />\n      </LinearLayout>\n\n      <LinearLayout\n          android:layout_width=\"wrap_content\"\n          android:layout_height=\"wrap_content\"\n          android:layout_gravity=\"fill_horizontal\"\n          android:background=\"@drawable/card_background\"\n          android:orientation=\"vertical\"\n          android:padding=\"2dp\" >\n\n          <FrameLayout\n              android:layout_width=\"wrap_content\"\n              android:layout_height=\"wrap_content\" >\n\n              <ImageView\n                  android:id=\"@+id/BangumiImageView04\"\n                  android:layout_width=\"wrap_content\"\n                  android:layout_height=\"wrap_content\"\n                  android:padding=\"5dp\"\n                  android:src=\"@drawable/bili_default_image_tv_with_bg\" />\n\n              <LinearLayout\n                  android:layout_width=\"match_parent\"\n                  android:layout_height=\"match_parent\"\n                  android:layout_gravity=\"bottom|center_horizontal\"\n                  android:layout_marginBottom=\"5dp\"\n                  android:layout_marginTop=\"5dip\"\n                  android:background=\"@color/black_alpha\"\n                  android:gravity=\"center\"\n                  android:padding=\"3dp\" >\n\n                  <ImageView\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:src=\"@drawable/ic_info_views\" />\n\n                  <TextView\n                      android:id=\"@+id/BangumiImageView04_baofang\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:text=\"TextView\" />\n\n                  <ImageView\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:src=\"@drawable/ic_info_views\" />\n\n                  <TextView\n                      android:id=\"@+id/BangumiImageView04_danmugu\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:text=\"TextView\" />\n              </LinearLayout>\n          </FrameLayout>\n\n          <TextView\n              android:id=\"@+id/BangumiTextView04\"\n              android:layout_width=\"wrap_content\"\n              android:layout_height=\"wrap_content\"\n              android:text=\"TextView\" />\n      </LinearLayout>\n    \n  </GridLayout>\n  <RelativeLayout\n    android:id=\"@+id/DonhuaView\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"40dp\"\n    android:background=\"@drawable/list_selector\" >\n\n    <TextView\n        android:id=\"@+id/donghua\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_alignParentLeft=\"true\"\n        android:layout_centerInParent=\"true\"\n        android:layout_marginLeft=\"1dp\"\n        android:text=\"动画\"\n        android:textColor=\"@color/black\"\n        android:textSize=\"20sp\" />\n\n    <ImageView\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_alignParentRight=\"true\"\n        android:layout_centerVertical=\"true\"\n        android:layout_marginRight=\"5dp\"\n        android:focusable=\"false\"\n        android:src=\"@drawable/ic_arrow_right\" />\n\n</RelativeLayout>\n\n  <GridLayout\n      android:layout_width=\"match_parent\"\n      android:layout_height=\"wrap_content\"\n      android:columnCount=\"2\"\n      android:rowCount=\"2\" >\n\n      <LinearLayout\n          android:layout_width=\"wrap_content\"\n          android:layout_height=\"wrap_content\"\n          android:layout_gravity=\"fill_horizontal\"\n          android:background=\"@drawable/card_background\"\n          android:orientation=\"vertical\"\n          android:padding=\"2dp\" >\n\n          <FrameLayout\n              android:layout_width=\"wrap_content\"\n              android:layout_height=\"wrap_content\" >\n\n              <ImageView\n                  android:id=\"@+id/imageView1\"\n                  android:layout_width=\"wrap_content\"\n                  android:layout_height=\"wrap_content\"\n                  android:padding=\"5dp\"\n                  android:src=\"@drawable/bili_default_image_tv_with_bg\" />\n\n              <LinearLayout\n                  android:layout_width=\"match_parent\"\n                  android:layout_height=\"match_parent\"\n                  android:layout_gravity=\"bottom|center_horizontal\"\n                  android:layout_marginBottom=\"5dp\"\n                  android:layout_marginTop=\"5dip\"\n                  android:background=\"@color/black_alpha\"\n                  android:gravity=\"center\"\n                  android:padding=\"3dp\" >\n\n                  <ImageView\n                      android:id=\"@+id/imageView2\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:src=\"@drawable/ic_info_views\" />\n\n                  <TextView\n                      android:id=\"@+id/textView2\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:text=\"TextView\" />\n\n                  <ImageView\n                      android:id=\"@+id/imageView3\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:src=\"@drawable/ic_info_views\" />\n\n                  <TextView\n                      android:id=\"@+id/textView3\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:text=\"TextView\" />\n              </LinearLayout>\n          </FrameLayout>\n\n          <TextView\n              android:id=\"@+id/titleTextView\"\n              android:layout_width=\"wrap_content\"\n              android:layout_height=\"wrap_content\"\n              android:text=\"TextView\" />\n      </LinearLayout>\n\n      <LinearLayout\n          android:layout_width=\"wrap_content\"\n          android:layout_height=\"wrap_content\"\n          android:layout_gravity=\"fill_horizontal\"\n          android:background=\"@drawable/card_background\"\n          android:orientation=\"vertical\"\n          android:padding=\"2dp\" >\n\n          <FrameLayout\n              android:layout_width=\"wrap_content\"\n              android:layout_height=\"wrap_content\" >\n\n              <ImageView\n                  android:id=\"@+id/ImageView08\"\n                  android:layout_width=\"wrap_content\"\n                  android:layout_height=\"wrap_content\"\n                  android:padding=\"5dp\"\n                  android:src=\"@drawable/bili_default_image_tv_with_bg\" />\n\n              <LinearLayout\n                  android:layout_width=\"match_parent\"\n                  android:layout_height=\"match_parent\"\n                  android:layout_gravity=\"bottom|center_horizontal\"\n                  android:layout_marginBottom=\"5dp\"\n                  android:layout_marginTop=\"5dip\"\n                  android:background=\"@color/black_alpha\"\n                  android:gravity=\"center\"\n                  android:padding=\"3dp\" >\n\n                  <ImageView\n                      android:id=\"@+id/ImageView07\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:src=\"@drawable/ic_info_views\" />\n\n                  <TextView\n                      android:id=\"@+id/TextView06\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:text=\"TextView\" />\n\n                  <ImageView\n                      android:id=\"@+id/ImageView06\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:src=\"@drawable/ic_info_views\" />\n\n                  <TextView\n                      android:id=\"@+id/TextView08\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:text=\"TextView\" />\n              </LinearLayout>\n          </FrameLayout>\n\n          <TextView\n              android:id=\"@+id/TextView07\"\n              android:layout_width=\"wrap_content\"\n              android:layout_height=\"wrap_content\"\n              android:text=\"TextView\" />\n      </LinearLayout>\n\n      <LinearLayout\n          android:layout_width=\"wrap_content\"\n          android:layout_height=\"wrap_content\"\n          android:layout_gravity=\"fill_horizontal\"\n          android:background=\"@drawable/card_background\"\n          android:orientation=\"vertical\"\n          android:padding=\"2dp\" >\n\n          <FrameLayout\n              android:layout_width=\"wrap_content\"\n              android:layout_height=\"wrap_content\" >\n\n              <ImageView\n                  android:id=\"@+id/ImageView15\"\n                  android:layout_width=\"wrap_content\"\n                  android:layout_height=\"wrap_content\"\n                  android:padding=\"5dp\"\n                  android:src=\"@drawable/bili_default_image_tv_with_bg\" />\n\n              <LinearLayout\n                  android:layout_width=\"match_parent\"\n                  android:layout_height=\"match_parent\"\n                  android:layout_gravity=\"bottom|center_horizontal\"\n                  android:layout_marginBottom=\"5dp\"\n                  android:layout_marginTop=\"5dip\"\n                  android:background=\"@color/black_alpha\"\n                  android:gravity=\"center\"\n                  android:padding=\"3dp\" >\n\n                  <ImageView\n                      android:id=\"@+id/ImageView14\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:src=\"@drawable/ic_info_views\" />\n\n                  <TextView\n                      android:id=\"@+id/TextView13\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:text=\"TextView\" />\n\n                  <ImageView\n                      android:id=\"@+id/ImageView13\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:src=\"@drawable/ic_info_views\" />\n\n                  <TextView\n                      android:id=\"@+id/TextView15\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:text=\"TextView\" />\n              </LinearLayout>\n          </FrameLayout>\n\n          <TextView\n              android:id=\"@+id/TextView14\"\n              android:layout_width=\"wrap_content\"\n              android:layout_height=\"wrap_content\"\n              android:text=\"TextView\" />\n      </LinearLayout>\n\n      <LinearLayout\n          android:layout_width=\"wrap_content\"\n          android:layout_height=\"wrap_content\"\n          android:layout_gravity=\"fill_horizontal\"\n          android:background=\"@drawable/card_background\"\n          android:orientation=\"vertical\"\n          android:padding=\"2dp\" >\n\n          <FrameLayout\n              android:layout_width=\"wrap_content\"\n              android:layout_height=\"wrap_content\" >\n\n              <ImageView\n                  android:id=\"@+id/ImageView18\"\n                  android:layout_width=\"wrap_content\"\n                  android:layout_height=\"wrap_content\"\n                  android:padding=\"5dp\"\n                  android:src=\"@drawable/bili_default_image_tv_with_bg\" />\n\n              <LinearLayout\n                  android:layout_width=\"match_parent\"\n                  android:layout_height=\"match_parent\"\n                  android:layout_gravity=\"bottom|center_horizontal\"\n                  android:layout_marginBottom=\"5dp\"\n                  android:layout_marginTop=\"5dip\"\n                  android:background=\"@color/black_alpha\"\n                  android:gravity=\"center\"\n                  android:padding=\"3dp\" >\n\n                  <ImageView\n                      android:id=\"@+id/ImageView17\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:src=\"@drawable/ic_info_views\" />\n\n                  <TextView\n                      android:id=\"@+id/TextView16\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:text=\"TextView\" />\n\n                  <ImageView\n                      android:id=\"@+id/ImageView16\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:src=\"@drawable/ic_info_views\" />\n\n                  <TextView\n                      android:id=\"@+id/TextView18\"\n                      android:layout_width=\"wrap_content\"\n                      android:layout_height=\"wrap_content\"\n                      android:text=\"TextView\" />\n              </LinearLayout>\n          </FrameLayout>\n\n          <TextView\n              android:id=\"@+id/TextView17\"\n              android:layout_width=\"wrap_content\"\n              android:layout_height=\"wrap_content\"\n              android:text=\"TextView\" />\n      </LinearLayout>\n    \n  </GridLayout>\n\n</LinearLayout>\n</ScrollView>"
  },
  {
    "path": "app/src/main/res/layout/fragment_online.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:orientation=\"vertical\" >\n\n    <LinearLayout\n        android:id=\"@+id/adLayout\"\n        android:layout_width=\"fill_parent\"\n        android:layout_height=\"wrap_content\"\n        android:gravity=\"center_horizontal\"\n        android:orientation=\"vertical\" >\n\t</LinearLayout>\n\n    <ListView\n        android:id=\"@android:id/list\"\n        android:layout_width=\"fill_parent\"\n        android:layout_height=\"fill_parent\"\n      \tandroid:cacheColorHint=\"#00000000\"\n        android:divider=\"#00000000\"\n        android:drawSelectorOnTop=\"false\"\n        android:fadingEdge=\"none\"\n        android:listSelector=\"#e8e8e8\"\n        android:scrollbars=\"none\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/fragment_online_item.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:id=\"@+id/linearlayout_row\"\n    android:layout_width=\"fill_parent\"\n    android:layout_height=\"wrap_content\"\n    android:background=\"@drawable/list_selector\" >\n \n    <ImageView\n        android:id=\"@+id/thumbnail\"\n        android:layout_width=\"40dp\"\n        android:layout_height=\"40dp\"\n        android:layout_centerVertical=\"true\"\n        android:layout_margin=\"4.0dip\"\n        android:paddingLeft=\"4dp\" />\n\n    <ImageView\n        android:id=\"@+id/arrow\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"40dp\"\n        android:layout_alignParentRight=\"true\"\n        android:layout_centerVertical=\"true\"\n        android:layout_marginRight=\"5.0dip\"\n        android:paddingRight=\"4dp\"\n        android:scaleType=\"center\"\n        android:src=\"@drawable/ic_arrow_right\" />\n\n    <TextView\n        android:id=\"@+id/title\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_centerVertical=\"true\"\n        android:layout_marginRight=\"8.0dip\"\n        android:layout_toRightOf=\"@id/thumbnail\"\n        android:marqueeRepeatLimit=\"marquee_forever\"\n        android:maxLines=\"2\"\n        android:singleLine=\"false\"\n        android:textColor=\"@color/title\"\n        android:textSize=\"16sp\"\n        android:textStyle=\"normal\" />\n\n</RelativeLayout>"
  },
  {
    "path": "app/src/main/res/layout/fragment_subarea.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:background=\"@color/bilibg\"\n    android:orientation=\"vertical\" >\n\n    <GridView\n        android:id=\"@+id/AreaGridView\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center\"\n        android:layout_marginBottom=\"14dp\"\n        android:background=\"@color/bilibg\"\n        android:gravity=\"center\"\n        android:numColumns=\"2\"\n        android:horizontalSpacing=\"1dp\"\n        android:verticalSpacing=\"1dp\"\n        android:stretchMode=\"columnWidth\"\n         >\n\n    </GridView>\n\n    <TextView\n        android:id=\"@+id/textView1\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"left|center\"\n        android:background=\"@color/white\"\n        android:padding=\"8dp\"\n        android:text=\"其他\"\n        android:textSize=\"18sp\" />\n    \n    <LinearLayout\n        android:id=\"@+id/RankView\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:layout_marginTop=\"1dp\"\n        android:background=\"@drawable/list_selector\"\n        android:clickable=\"true\"\n        android:padding=\"4dp\" >\n\n        <ImageView\n            android:layout_width=\"48dp\"\n            android:layout_height=\"48dp\"\n            android:paddingLeft=\"4dp\"\n            android:src=\"@drawable/ic_cate_ranks\" />\n\n        <TextView\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:layout_gravity=\"left|center\"\n            android:layout_margin=\"4dp\"\n            android:padding=\"4dp\"\n            android:textSize=\"18sp\"\n            android:text=\"排行榜\" />\n\n    </LinearLayout>\n    \n    <LinearLayout\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:background=\"@drawable/list_selector\"\n        android:clickable=\"true\"\n        android:padding=\"4dp\" >\n\n        <ImageView\n            android:layout_width=\"48dp\"\n            android:layout_height=\"48dp\"\n            android:paddingLeft=\"4dp\"\n            android:src=\"@drawable/ic_cate_hot\" />\n\n        <TextView\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:layout_gravity=\"left|center\"\n            android:layout_margin=\"4dp\"\n            android:padding=\"4dp\"\n            android:textSize=\"18sp\"\n            android:text=\"最热门\" />\n\n    </LinearLayout>\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/fragment_videoinfo.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    android:orientation=\"vertical\" >\n\n    <LinearLayout\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:padding=\"2dp\" >\n\n        <ImageView\n            android:id=\"@+id/imageView\"\n            android:layout_width=\"100dp\"\n            android:layout_height=\"60dp\"\n            android:layout_marginRight=\"5dp\"\n            android:scaleType=\"fitXY\"\n            android:src=\"@drawable/abc_ab_bottom_solid_light_holo\" />\n\n        <TextView\n            android:id=\"@+id/titleTextView\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:lines=\"3\"\n            android:text=\"科技美学四大旗舰对决最终篇iPhone6+/Note4/Z5/930对决第四季下\" />\n    </LinearLayout>\n\n    <View\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"2dp\"\n        android:background=\"@color/bili_red\" />\n\n    <LinearLayout\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center\"\n        android:padding=\"2dp\" >\n\n        <LinearLayout\n            android:layout_width=\"100dp\"\n            android:layout_height=\"wrap_content\"\n            android:layout_gravity=\"bottom|left\"\n            android:orientation=\"vertical\" >\n\n            <TextView\n                android:id=\"@+id/authorTextView\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:layout_gravity=\"top\"\n                android:lines=\"1\"\n                android:text=\"UP主：科技美学\" />\n\n            <TextView\n                android:id=\"@+id/playTextView\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:text=\"播放：86384\" />\n        </LinearLayout>\n\n        <TextView\n            android:id=\"@+id/video_reviewTextView\"\n            android:layout_width=\"100dp\"\n            android:layout_height=\"wrap_content\"\n            android:layout_gravity=\"bottom|center\"\n            android:text=\"弹幕：7449\" />\n\n        <Button\n            android:id=\"@+id/playButton\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:layout_gravity=\"center\"\n            android:text=\"加载中...\" />\n\n    </LinearLayout>\n\n    <View\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"1dp\"\n        android:layout_marginTop=\"2dp\"\n        android:background=\"#f5f5f5\" />\n\n    <TextView\n        android:id=\"@+id/labelTextView\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:maxLines=\"1\"\n        android:padding=\"2dp\"\n        android:text=\"标签：加载中...\"\n        android:textColor=\"@color/bili_red\" />\n\n    <View\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"1dp\"\n        android:layout_marginTop=\"2dp\"\n        android:background=\"#f5f5f5\" />\n\n    <TextView\n        android:id=\"@+id/durationTextView\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:maxLines=\"2\"\n        android:padding=\"2dp\"\n        android:text=\"自制 大家好，我是钠盐，感谢大家一直以来对我的支持\" />\n\n    <ImageView\n        android:id=\"@+id/arrowButton\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"20dp\"\n        android:background=\"@drawable/list_selector\"\n        android:scaleType=\"center\"\n        android:src=\"@drawable/abcp__expander_open_holo_light\"\n        android:visibility=\"gone\" />\n    \n    <TextView\n        android:id=\"@+id/videoNumTextView\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:background=\"@color/bili_red\"\n        android:maxLines=\"1\"\n        android:paddingLeft=\"2dp\"\n        android:paddingRight=\"2dp\"\n        android:text=\"正在查询视频信息...\"\n        android:textColor=\"@color/white\" />\n    \n    <View\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"2dp\"\n        android:background=\"@color/bili_red\" />\n\n    <ListView\n        android:id=\"@+id/video_info_list\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:cacheColorHint=\"#00000000\"\n        android:divider=\"#00000000\"\n        android:drawSelectorOnTop=\"false\"\n        android:fadingEdge=\"none\"\n        android:listSelector=\"#e8e8e8\"\n        android:scrollbars=\"none\" />\n    \n    <LinearLayout\n        android:id=\"@+id/adLayout\"\n        android:layout_width=\"fill_parent\"\n        android:layout_height=\"wrap_content\"\n        android:gravity=\"center_horizontal\"\n        android:orientation=\"vertical\" >\n\n\t</LinearLayout>\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/game_list_item.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    android:layout_marginLeft=\"4dp\"\n    android:orientation=\"vertical\" >\n\n    <LinearLayout\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:layout_marginLeft=\"4dp\"\n        android:layout_marginRight=\"4dp\"\n        android:layout_marginTop=\"8dp\"\n        android:background=\"@drawable/corner\"\n        android:orientation=\"vertical\"\n        android:padding=\"1dp\" >   \n\n          <ImageView\n              android:id=\"@+id/game_item_image\"\n              android:layout_width=\"match_parent\"\n              android:layout_height=\"160dp\"\n              android:background=\"@drawable/hxzj_gamecenter_smallbanner\"\n              android:padding=\"0dp\"\n              android:scaleType=\"fitXY\" />\n\n        <View\n            android:background=\"#f5f5f5\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"1dp\" />\n\n        <LinearLayout\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\" >\n\n            <TextView\n                android:id=\"@+id/game_item_title\"\n                android:layout_width=\"200dp\"\n                android:layout_height=\"wrap_content\"\n                android:layout_gravity=\"center\"\n                android:layout_marginLeft=\"4dp\"\n                android:ellipsize=\"end\"\n                android:maxLines=\"1\"\n                android:minLines=\"1\"\n                android:paddingLeft=\"4dp\"\n                android:paddingRight=\"4dp\"\n                android:text=\"幻想战姬\"\n                android:textColor=\"@color/bili_red\"\n                android:textIsSelectable=\"false\"\n                android:textSize=\"24sp\" />\n            <ImageView\n        \t\tandroid:id=\"@+id/headTV\"\n        \t\tandroid:layout_width=\"0dp\"\n        \t\tandroid:layout_height=\"wrap_content\"\n        \t\tandroid:layout_gravity=\"center_vertical\"\n        \t\tandroid:layout_marginLeft=\"4dp\"\n        \t\tandroid:layout_weight=\"1\" >\n    \t\t\t</ImageView>\n\n            <Button\n                android:id=\"@+id/GameButton\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:background=\"@drawable/list_selector\"\n                android:paddingLeft=\"25dp\"\n                android:paddingRight=\"25dp\"\n                android:text=\"安装\" />\n\n        </LinearLayout>\n    </LinearLayout>\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/homepage_item.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    android:layout_marginLeft=\"4dp\"\n    android:orientation=\"vertical\" >\n\n    <LinearLayout\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:layout_marginLeft=\"4dp\"\n        android:layout_marginRight=\"4dp\"\n        android:layout_marginTop=\"8dp\"\n        android:background=\"@drawable/corner\"\n        android:orientation=\"vertical\"\n        android:padding=\"4dp\" >\n<!--\n        <ImageView\n            android:id=\"@+id/list_item_image\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"80dp\"\n            android:layout_alignParentLeft=\"true\"\n            android:background=\"@drawable/image_corner\"\n            android:padding=\"0dp\"\n            android:scaleType=\"centerCrop\" />\n  -->      \n        <FrameLayout\n               android:layout_width=\"match_parent\"\n            android:layout_height=\"80dp\" >\n\n              <ImageView\n                  android:id=\"@+id/list_item_image\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"80dp\"\n            android:background=\"@drawable/image_corner\"\n            android:padding=\"0dp\"\n            android:scaleType=\"centerCrop\" />\n\n              <LinearLayout\n                  android:layout_width=\"match_parent\"\n                  android:layout_height=\"20dp\"\n                  android:layout_gravity=\"bottom\"\n                  android:background=\"@color/black_alpha\"\n                  android:gravity=\"left|center\"\n                  android:padding=\"3dp\" >\n\n                  <ImageView\n                      android:layout_width=\"20dp\"\n                      android:layout_height=\"20dp\"\n                      android:src=\"@drawable/ic_info_views\" />\n\n                  <TextView\n                      android:id=\"@+id/BangumiImageView_baofang\"\n                      android:layout_width=\"50dp\"\n                      android:layout_height=\"20dp\"\n                      android:text=\"566666\"\n                      android:textColor=\"@color/white\" />\n\n                  <ImageView\n                      android:layout_width=\"20dp\"\n                      android:layout_height=\"20dp\"\n                      android:src=\"@drawable/ic_info_danmakus\" />\n\n                  <TextView\n                      android:id=\"@+id/BangumiImageView_danmugu\"\n                      android:layout_width=\"50dp\"\n                      android:layout_height=\"20dp\"\n                      android:text=\"233333\"\n                      android:textColor=\"@color/white\" />\n\n              </LinearLayout>\n          </FrameLayout>\n        \n        <!--\n        <TextView\n            android:id=\"@+id/list_item_title\"\n            android:layout_width=\"120dp\"\n            android:layout_height=\"wrap_content\"\n            android:layout_alignBottom=\"@+id/list_item_image\"\n            android:ellipsize=\"end\"\n            android:maxLines=\"3\"\n            android:minLines=\"2\"\n            android:text=\"aaaaaaaaaaaaaaaaaaaaaa\"\n            android:textColor=\"#202020\"\n            android:textIsSelectable=\"false\"\n            android:textSize=\"14sp\"\n            android:padding=\"2dp\"\n            android:textStyle=\"bold\" />\n        -->\n\n        <View\n            android:layout_marginTop=\"2dp\"\n            android:background=\"#f5f5f5\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"1dp\" />\n\n        <TextView\n            android:id=\"@+id/list_item_title\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:layout_marginLeft=\"2dp\"\n            android:ellipsize=\"end\"\n            android:maxLines=\"2\"\n            android:minLines=\"2\"\n            android:paddingLeft=\"4dp\"\n            android:paddingRight=\"4dp\"\n            android:text=\"aaaaaaaaaaaaaaaaaaaaaa\"\n            android:textColor=\"#adadad\"\n            android:textIsSelectable=\"false\"\n            android:textSize=\"13sp\" />\n    </LinearLayout>\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/item.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"   \n    android:orientation=\"vertical\"\n    android:paddingTop=\"10dp\">\n\n    <LinearLayout\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:orientation=\"vertical\"\n        android:background=\"@drawable/corner\" >\n\n        <ImageView\n            android:id=\"@+id/item_image\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"match_parent\"\n            android:adjustViewBounds=\"true\"\n            android:padding=\"1dp\"\n            android:scaleType=\"fitCenter\" />\n\n        <TextView\n            android:id=\"@+id/bankumi_item_title\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:layout_marginLeft=\"4dp\"\n            android:ellipsize=\"end\"\n            android:paddingLeft=\"4dp\"\n            android:paddingRight=\"4dp\"\n            android:text=\"[测试数据]\"\n            android:textColor=\"@color/bili_red\"\n            android:textIsSelectable=\"false\"\n            android:textSize=\"16sp\" />\n\n        <TextView\n            android:id=\"@+id/bankumi_num\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:layout_marginLeft=\"4dp\"\n            android:ellipsize=\"end\"\n            android:paddingBottom=\"2dp\"\n            android:paddingLeft=\"4dp\"\n            android:paddingRight=\"4dp\"\n            android:text=\"更新至第6话\"\n            android:textColor=\"#adadad\"\n            android:textIsSelectable=\"false\"\n            android:textSize=\"12sp\" />\n\n    </LinearLayout>\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/items_list.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"fill_parent\"\n    android:layout_height=\"fill_parent\"\n    android:orientation=\"horizontal\"\n    android:paddingLeft=\"10dp\"\n    android:paddingRight=\"10dp\" >\n\n    <ListView\n        android:id=\"@+id/list_view_left\"\n        android:layout_width=\"fill_parent\"\n        android:layout_height=\"fill_parent\"\n        android:layout_weight=\"1\"\n        android:paddingRight=\"5dp\"\n        android:scrollbars=\"none\" >\n    </ListView>\n\n    <ListView\n        android:id=\"@+id/list_view_right\"\n        android:layout_width=\"fill_parent\"\n        android:layout_height=\"fill_parent\"\n        android:layout_weight=\"1\"\n        android:paddingLeft=\"5dp\"\n        android:scrollbars=\"none\" >\n    </ListView>\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/main_head.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?><LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"50dp\"\n    android:background=\"@drawable/head_bg\"\n    android:orientation=\"horizontal\" >\n\n    <ImageView\n        android:id=\"@+id/head_logo\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"40dp\"\n        android:layout_gravity=\"center_vertical\"\n        android:padding=\"4dp\"\n        android:src=\"@drawable/ic_logo\" />\n\n    <ImageView\n        android:id=\"@+id/headTV\"\n        android:layout_width=\"0dp\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center_vertical\"\n        android:layout_marginLeft=\"4dp\"\n        android:layout_weight=\"1\"\n         >\n    </ImageView>\n\n    <!--\n        <ProgressBar\n        android:id=\"@+id/progress\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center_vertical\"\n        android:visibility=\"invisible\" />\n    -->\n\n    <ImageButton\n        android:id=\"@+id/personCenter\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center_vertical\"\n        android:background=\"@drawable/abc_ic_search_api_holo_light\" />\n    <View\n        android:layout_width=\"10dp\"\n        android:layout_height=\"40dp\"\n        android:layout_gravity=\"center_vertical\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/mediacontroller.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\" >\n\n    <RelativeLayout\n        android:id=\"@+id/mediacontroller\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"\n        android:layout_margin=\"0.0dip\"\n        android:orientation=\"horizontal\"\n        android:visibility=\"invisible\" >\n\n        <LinearLayout\n            android:id=\"@+id/info_panel\"\n            style=\"@style/InfoPanel_Container\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"@dimen/action_bar_default_height\"\n            android:gravity=\"center_horizontal|center\"\n            android:orientation=\"horizontal\" >\n\n            <ImageButton\n                android:id=\"@+id/mediacontroller_lock\"\n                style=\"@style/MediaController_Button\"\n                android:layout_width=\"@dimen/action_bar_default_height\"\n                android:layout_height=\"match_parent\"\n                android:contentDescription=\"@string/content_desc_lock\"\n                android:src=\"@drawable/mediacontroller_unlock\" />\n\n            <TextView\n                android:id=\"@+id/mediacontroller_file_name\"\n                android:layout_width=\"0dp\"\n                android:layout_height=\"wrap_content\"\n                android:layout_weight=\"1\"\n                android:paddingLeft=\"8dip\"\n                android:singleLine=\"true\"\n                android:textColor=\"@android:color/white\"\n                android:textSize=\"16sp\"\n                android:textStyle=\"bold\" />\n\n            <TextView\n                android:id=\"@+id/download_rate\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:drawableLeft=\"@drawable/video_download_rate\"\n                android:drawablePadding=\"3.0dp\"\n                android:paddingRight=\"12dp\"\n                android:textColor=\"@android:color/white\"\n                android:visibility=\"gone\" />\n\n            <TextView\n                android:id=\"@+id/date_time\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:paddingRight=\"12dp\"\n                android:textColor=\"@android:color/white\" />\n\n            <TextView\n                android:id=\"@+id/battery_level\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:paddingRight=\"12dp\"\n                android:textColor=\"@android:color/white\" />\n\n            <ImageButton\n                android:id=\"@+id/video_menu\"\n                style=\"@style/MediaController_Button\"\n                android:layout_width=\"@dimen/action_bar_default_height\"\n                android:layout_height=\"match_parent\"\n                android:contentDescription=\"@string/imageview_content_description\"\n                android:src=\"@drawable/video_more\" />\n        </LinearLayout>\n\n        <LinearLayout\n            android:id=\"@+id/mediacontroller_controls\"\n            style=\"@style/MediaController_Container\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:layout_alignParentBottom=\"true\"\n            android:layout_margin=\"0.0dip\"\n            android:orientation=\"vertical\" >\n\n            <RelativeLayout\n                android:layout_width=\"match_parent\"\n                android:layout_height=\"wrap_content\"\n                android:orientation=\"horizontal\" >\n\n                <TextView\n                    android:id=\"@+id/mediacontroller_time_current\"\n                    style=\"@style/MediaController_Text\"\n                    android:layout_width=\"wrap_content\"\n                    android:layout_height=\"wrap_content\"\n                    android:layout_alignParentLeft=\"true\"\n                    android:layout_centerVertical=\"true\" />\n\n                <SeekBar\n                    android:id=\"@+id/mediacontroller_seekbar\"\n                    style=\"@style/MediaController_SeekBar\"\n                    android:layout_width=\"match_parent\"\n                    android:layout_height=\"wrap_content\"\n                    android:layout_toLeftOf=\"@+id/mediacontroller_time_total\"\n                    android:layout_toRightOf=\"@+id/mediacontroller_time_current\"\n                    android:focusable=\"true\"\n                    android:max=\"1000\" />\n\n                <TextView\n                    android:id=\"@+id/mediacontroller_time_total\"\n                    style=\"@style/MediaController_Text\"\n                    android:layout_width=\"wrap_content\"\n                    android:layout_height=\"wrap_content\"\n                    android:layout_alignParentRight=\"true\"\n                    android:layout_centerVertical=\"true\" />\n            </RelativeLayout>\n\n            <RelativeLayout\n                android:id=\"@+id/mediacontroller_controls_buttons\"\n                android:layout_width=\"match_parent\"\n                android:layout_height=\"wrap_content\"\n                android:layout_marginBottom=\"@dimen/mediacontroller_buttons_bottom_margin\"\n                android:layout_marginTop=\"@dimen/mediacontroller_buttons_top_margin\"\n                android:orientation=\"horizontal\" >\n\n                <ImageButton\n                    android:id=\"@+id/mediacontroller_play_pause\"\n                    style=\"@style/MediaController_Button\"\n                    android:layout_width=\"64dip\"\n                    android:layout_height=\"48dip\"\n                    android:layout_centerInParent=\"true\"\n                    android:contentDescription=\"@string/imageview_content_description\"\n                    android:gravity=\"center\"\n                    android:src=\"@drawable/mediacontroller_pause\" />\n\n                <ImageButton\n                    android:id=\"@+id/mediacontroller_snapshot\"\n                    style=\"@style/MediaController_Button\"\n                    android:layout_width=\"64dip\"\n                    android:layout_height=\"42dip\"\n                    android:layout_centerVertical=\"true\"\n                    android:layout_marginRight=\"@dimen/mediacontroller_button_space\"\n                    android:layout_toLeftOf=\"@id/mediacontroller_play_pause\"\n                    android:contentDescription=\"@string/imageview_content_description\"\n                    android:gravity=\"center\"\n                    android:src=\"@drawable/mediacontroller_snapshot\" />\n                \n                 <ImageButton\n                    android:id=\"@+id/mediacontroller_send_danmaku\"\n                    style=\"@style/MediaController_Button\"\n                    android:layout_width=\"64dip\"\n                    android:layout_height=\"42dip\"\n                    android:layout_centerVertical=\"true\"\n                    android:layout_marginRight=\"@dimen/mediacontroller_button_space\"\n                    android:layout_toLeftOf=\"@id/mediacontroller_snapshot\"\n                    android:contentDescription=\"@string/imageview_content_description\"\n                    android:gravity=\"center\"\n                    android:src=\"@drawable/ic_send_danmaku\" />\n\n                <ImageButton\n                    android:id=\"@+id/mediacontroller_screen_size\"\n                    style=\"@style/MediaController_Button\"\n                    android:layout_width=\"64dip\"\n                    android:layout_height=\"42dip\"\n                    android:layout_centerVertical=\"true\"\n                    android:layout_marginLeft=\"@dimen/mediacontroller_button_space\"\n                    android:layout_toRightOf=\"@id/mediacontroller_play_pause\"\n                    android:contentDescription=\"@string/imageview_content_description\"\n                    android:gravity=\"center\"\n                    android:src=\"@drawable/mediacontroller_screen_size\" />\n                \n                 <ImageButton\n                    android:id=\"@+id/mediacontroller_danmaku_switch\"\n                    style=\"@style/MediaController_Button\"\n                    android:layout_width=\"64dip\"\n                    android:layout_height=\"42dip\"\n                    android:layout_centerVertical=\"true\"\n                    android:layout_marginLeft=\"@dimen/mediacontroller_button_space\"\n                    android:layout_toRightOf=\"@id/mediacontroller_screen_size\"\n                    android:contentDescription=\"@string/imageview_content_description\"\n                    android:gravity=\"center\"\n                    android:src=\"@drawable/bili_player_danmaku_is_open\" />\n\n                <!--\n                     <TextView\n                    android:id=\"@+id/mediacontroller_definition\"\n                    style=\"@style/MediaController_Button\"\n                    android:layout_width=\"64dip\"\n                    android:layout_height=\"42dip\"\n                    android:layout_centerVertical=\"true\"\n                    android:layout_marginLeft=\"@dimen/mediacontroller_button_space\"\n                    android:layout_toRightOf=\"@id/mediacontroller_screen_size\"\n                    android:gravity=\"center\"\n                    android:text=\"普清\"\n                    android:textColor=\"@color/white\"\n                    android:textSize=\"18sp\" />\n                -->\n            </RelativeLayout>\n        </LinearLayout>\n    </RelativeLayout>\n\n    <!--\n         <RelativeLayout\n        android:id=\"@+id/operation_container\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"\n        android:orientation=\"horizontal\" >\n    -->\n\n    <TextView\n        android:id=\"@+id/operation_info\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_centerInParent=\"true\"\n        android:background=\"@color/mediacontroller_bg\"\n        android:paddingBottom=\"0dip\"\n        android:paddingLeft=\"8dip\"\n        android:paddingRight=\"8dip\"\n        android:paddingTop=\"0dip\"\n        android:textColor=\"@android:color/white\"\n        android:textSize=\"46sp\"\n        android:textStyle=\"bold\"\n        android:visibility=\"gone\" />\n\n    <include\n        android:id=\"@+id/operation_volume_brightness\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_centerInParent=\"true\"\n        layout=\"@layout/brightness_volumn\"\n        android:visibility=\"gone\" />\n    <!-- </RelativeLayout> -->\n\n</RelativeLayout>"
  },
  {
    "path": "app/src/main/res/layout/video_info_list_item.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:id=\"@+id/linearlayout_row\"\n    android:layout_width=\"fill_parent\"\n    android:layout_height=\"wrap_content\"\n    android:background=\"@drawable/list_selector\" >\n\n    <TextView\n        android:id=\"@+id/title\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center\"\n        android:marqueeRepeatLimit=\"marquee_forever\"\n        android:maxLines=\"1\"\n        android:padding=\"2dp\"\n        android:singleLine=\"false\"\n        android:text=\"1、测试\"\n        android:textColor=\"@color/title\"\n        android:textSize=\"16sp\"\n        android:textStyle=\"normal\" />\n    \n     <ImageView\n        android:id=\"@+id/headTV\"\n        android:layout_width=\"0dp\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center_vertical\"\n        android:layout_weight=\"1\"\n         >\n    </ImageView>\n\n    <ImageView\n        android:id=\"@+id/arrow\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"40dp\"\n        android:paddingLeft=\"10dp\"\n        android:paddingRight=\"10dp\"\n        android:scaleType=\"center\"\n        android:src=\"@drawable/ic_arrow_right\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/video_list_item.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    android:layout_margin=\"4dp\"\n    android:background=\"@drawable/corner\"\n    android:orientation=\"horizontal\"\n    android:padding=\"10dp\" >\n    \n    <ImageView\n        android:id=\"@+id/list_item_image\"\n        android:layout_width=\"100dp\"\n        android:layout_height=\"63dp\"\n        android:background=\"@drawable/image_corner\"\n        android:padding=\"0dp\"\n        android:scaleType=\"centerCrop\" />\n\n    <LinearLayout\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"       \n        android:orientation=\"vertical\"\n         >\n\n        <TextView\n            android:id=\"@+id/list_item_title\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:layout_marginLeft=\"2dp\"\n            android:ellipsize=\"end\"\n            android:maxLines=\"2\"\n            android:minLines=\"2\"\n            android:paddingLeft=\"4dp\"\n            android:paddingRight=\"4dp\"\n            android:text=\"AAAAAAAAAAAAAAAAAAAAAA\"\n            android:textColor=\"@color/black\"\n            android:textIsSelectable=\"false\"\n            android:textSize=\"14sp\" />\n\n            <LinearLayout\n                android:layout_width=\"match_parent\"\n                android:layout_height=\"match_parent\"\n                android:layout_gravity=\"bottom\" \n                android:layout_marginLeft=\"2dp\">\n\n                  <TextView\n                      android:id=\"@+id/TextView_up\"\n                      android:layout_width=\"120dp\"\n                      android:layout_height=\"20dp\"\n                      android:layout_gravity=\"bottom\"\n                      android:layout_marginLeft=\"2dp\"\n                      android:text=\"up主：根号⑨\"\n                      android:textColor=\"#adadad\" />\n\n                  <TextView\n                      android:id=\"@+id/TextView_bofang\"\n                      android:layout_width=\"120dp\"\n                      android:layout_height=\"20dp\"\n                      android:layout_gravity=\"bottom\"\n                      android:layout_marginLeft=\"2dp\"\n                      android:text=\"播放：233333\"\n                      android:textColor=\"#adadad\" />\n\n              </LinearLayout>\n    </LinearLayout>\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/videoview.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:orientation=\"vertical\" >\n\n    <io.vov.vitamio.widget.CenterLayout\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"\n        android:orientation=\"vertical\" >\n\n        <io.vov.vitamio.widget.VideoView\n            android:id=\"@+id/surface_view\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"match_parent\"\n            android:layout_centerHorizontal=\"true\"\n            android:layout_centerVertical=\"true\" />\n    </io.vov.vitamio.widget.CenterLayout>\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/menu/main.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    tools:context=\"com.vanco.abplayer.MainActivity\" >\n\n\n\n</menu>\n"
  },
  {
    "path": "app/src/main/res/menu/menu_main.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    xmlns:tools=\"http://schemas.android.com/tools\" tools:context=\".MainActivity\">\n    <item android:id=\"@+id/action_settings\" android:title=\"@string/action_settings\"\n        android:orderInCategory=\"100\" app:showAsAction=\"never\" />\n</menu>\n"
  },
  {
    "path": "app/src/main/res/raw/comments.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><i><chatserver>chat.bilibili.com</chatserver><chatid>795339</chatid><mission>0</mission><maxlimit>1000</maxlimit><source>k-v</source><d p=\"250.3509979248,5,25,10027263,1413625762,0,de0be547,647598316\">one piece是真实存在的!!!</d>\n<d p=\"250.3509979248,5,25,10027263,1413625771,0,de0be547,647598560\">one piece是真实存在的!!!</d>\n<d p=\"250.3509979248,5,25,10027263,1413625781,0,de0be547,647598811\">one piece是真实存在的!!!</d>\n<d p=\"242.66000366211,1,25,6737151,1413625786,0,797f958d,647598950\">ONE PIECE是真实存在的！！！！！！！</d>\n<d p=\"250.3509979248,5,25,10027263,1413625789,0,de0be547,647599026\">one piece是真实存在的!!!</d>\n<d p=\"245.96800231934,1,25,16777215,1413625818,0,Dd898849,647599729\">ONE</d>\n<d p=\"250.3509979248,5,25,10027263,1413625821,0,de0be547,647599789\">one piece是真实存在的!!!</d>\n<d p=\"243.48699951172,1,25,6737151,1413625834,0,797f958d,647600092\">ONE PIECE 是真实存在的!!!!!!!!!!!!!!!!!!!!!!!!!!!!</d>\n<d p=\"245.96800231934,1,25,16777215,1413625853,0,Dd898849,647600578\">ONE PIECE 是真是存在的！</d>\n<d p=\"21.451999664307,1,25,16777215,1413625928,0,Dd898849,647602479\">今生无悔入海贼</d>\n<d p=\"101.86699676514,1,25,16777215,1413626061,0,3399ff8d,647605904\">有生之年不愿看到海贼完结</d>\n<d p=\"134.82600402832,4,25,16777164,1413626213,0,f12081c2,647609895\">我是要成为海贼王的男人！！！！</d>\n<d p=\"134.82600402832,4,25,16777113,1413626218,0,f12081c2,647610039\">我是要成为海贼王的男人！！！！</d>\n<d p=\"134.82600402832,4,25,16777062,1413626227,0,f12081c2,647610260\">我是要成为海贼王的男人！！！！</d>\n<d p=\"134.82600402832,4,25,16777011,1413626233,0,f12081c2,647610428\">我是要成为海贼王的男人！！！！</d>\n<d p=\"134.82600402832,4,25,16776960,1413626243,0,f12081c2,647610677\">我是要成为海贼王的男人！！！！</d>\n<d p=\"134.82600402832,4,25,6750156,1413626246,0,f12081c2,647610803\">我是要成为海贼王的男人！！！！</d>\n<d p=\"134.82600402832,4,25,6750105,1413626253,0,f12081c2,647610964\">我是要成为海贼王的男人！！！！</d>\n<d p=\"134.82600402832,4,25,6750054,1413626259,0,f12081c2,647611139\">我是要成为海贼王的男人！！！！</d>\n<d p=\"134.82600402832,4,25,6750054,1413626266,0,f12081c2,647611313\">我是要成为海贼王的男人！！！！</d>\n<d p=\"134.82600402832,4,25,6750003,1413626273,0,f12081c2,647611481\">我是要成为海贼王的男人！！！！</d>\n<d p=\"134.82600402832,4,25,6749952,1413626279,0,f12081c2,647611670\">我是要成为海贼王的男人！！！！</d>\n<d p=\"242.7859954834,1,25,16777215,1413626598,0,bf7c6a76,647620333\">one piece 是真实存在的</d>\n<d p=\"223.15600585938,4,25,16737792,1413627436,0,353944f1,647643186\">多谢白字   辛苦了</d>\n<d p=\"182.24000549316,1,25,16777215,1413627647,0,f91b7654,647648934\">说一点都不好看的你过来我们谈谈人生</d>\n<d p=\"158.92399597168,1,25,16777215,1413653002,0,1645d128,648440193\">艾斯！！！！</d>\n<d p=\"208.69299316406,1,25,16777215,1413653052,0,1645d128,648440875\">这么燃却泪了的你不是一个</d>\n<d p=\"89.333000183105,1,25,16777215,1413661709,0,f6655dcd,648508532\">我大海贼还能再战500年！</d>\n<d p=\"272.04501342773,1,25,16777215,1413678148,0,Ddc47a63,648564668\">看的好震撼！</d>\n<d p=\"81.59700012207,1,25,16777215,1413679112,0,5430f896,648571698\">我来晚了</d>\n<d p=\"244.375,1,25,16777215,1413679432,0,49656606,648574310\">one piece 是真的存在的</d>\n<d p=\"250.77699279785,1,25,16777215,1413679440,0,49656606,648574370\">one piece 是真的存在的</d>\n<d p=\"3.7869999408722,1,25,16777215,1413679458,0,d53be3a2,648574555\">第一？</d>\n<d p=\"2.6340000629425,5,25,16763904,1413679476,0,baeac675,648574713\">尼桑大骗子QAQ</d>\n<d p=\"2.194000005722,1,25,16777215,1413679493,0,49656606,648574879\">2014.10.17</d>\n<d p=\"0.58999997377396,5,25,16711680,1413679528,0,49656606,648575198\">最后高能！！注意这不是演习！！！</d>\n<d p=\"57.930999755859,5,25,16763904,1413679575,0,baeac675,648575584\">我大海贼还能再战5000年！</d>\n<d p=\"0.58999997377396,5,25,16711680,1413679626,0,49656606,648576042\">最后高能！！注意这不是演习！！！</d>\n<d p=\"0.58999997377396,5,25,16711680,1413679645,0,49656606,648576199\">最后高能！！注意这不是演习！！！</d>\n<d p=\"0.58999997377396,5,25,16711680,1413679652,0,49656606,648576265\">最后高能！！注意这不是演习！！！</d>\n<d p=\"0.58999997377396,5,25,16711680,1413679660,0,49656606,648576334\">最后高能！！注意这不是演习！！！</d>\n<d p=\"0.58999997377396,5,25,16711680,1413679667,0,49656606,648576403\">最后高能！！注意这不是演习！！！</d>\n<d p=\"0.58999997377396,5,25,16711680,1413679674,0,49656606,648576461\">最后高能！！注意这不是演习！！！</d>\n<d p=\"136.74699401855,1,25,16763904,1413679677,0,baeac675,648576488\">我是要成为海贼王的男人！</d>\n<d p=\"0.58999997377396,5,25,16711680,1413679684,0,49656606,648576552\">最后高能！！注意这不是演习！！！</d>\n<d p=\"136.74699401855,5,25,16763904,1413679713,0,baeac675,648576805\">我是要成为海贼王的男人！</d>\n<d p=\"136.74699401855,5,25,16763904,1413679719,0,baeac675,648576865\">我是要成为海贼王的男人！</d>\n<d p=\"136.74699401855,5,25,16763904,1413679725,0,baeac675,648576912\">我是要成为海贼王的男人！</d>\n<d p=\"136.74699401855,5,25,6684774,1413679764,0,baeac675,648577235\">我是要成为海贼王的男人！我是要成为海贼王的男人！</d>\n<d p=\"136.74699401855,5,25,6684774,1413679770,0,baeac675,648577301\">我是要成为海贼王的男人！</d>\n<d p=\"136.74699401855,5,25,6684774,1413679775,0,baeac675,648577343\">我是要成为海贼王的男人！</d>\n<d p=\"136.74699401855,5,25,6684774,1413679781,0,baeac675,648577392\">我是要成为海贼王的男人！</d>\n<d p=\"149.56300354004,5,25,16750848,1413679828,0,baeac675,648577833\">尼桑大骗子！！！！！</d>\n<d p=\"255.65800476074,5,25,16711680,1413680196,0,baeac675,648581191\">十万也好百万也好，我们会把你们全部打飞！！！！！！</d>\n<d p=\"255.65800476074,5,25,16711731,1413680202,0,baeac675,648581251\">十万也好百万也好，我们会把你们全部打飞！！！！！！</d>\n<d p=\"255.65800476074,5,25,16711782,1413680208,0,baeac675,648581306\">十万也好百万也好，我们会把你们全部打飞！！！！！！</d>\n<d p=\"255.65800476074,5,25,16711833,1413680214,0,baeac675,648581365\">十万也好百万也好，我们会把你们全部打飞！！！！！！</d>\n<d p=\"255.65800476074,5,25,16711884,1413680220,0,baeac675,648581414\">十万也好百万也好，我们会把你们全部打飞！！！！！！</d>\n<d p=\"255.65800476074,5,25,16711935,1413680226,0,baeac675,648581478\">十万也好百万也好，我们会把你们全部打飞！！！！！！</d>\n<d p=\"255.65800476074,5,25,16724991,1413680231,0,baeac675,648581547\">十万也好百万也好，我们会把你们全部打飞！！！！！！</d>\n<d p=\"255.65800476074,5,25,16724940,1413680238,0,baeac675,648581604\">十万也好百万也好，我们会把你们全部打飞！！！！！！</d>\n<d p=\"255.65800476074,5,25,16724889,1413680244,0,baeac675,648581652\">十万也好百万也好，我们会把你们全部打飞！！！！！！</d>\n<d p=\"255.65800476074,5,25,16724838,1413680250,0,baeac675,648581719\">十万也好百万也好，我们会把你们全部打飞！！！！！！</d>\n<d p=\"255.65800476074,5,25,16724787,1413680256,0,baeac675,648581766\">十万也好百万也好，我们会把你们全部打飞！！！！！！</d>\n<d p=\"136.16900634766,5,25,16711680,1413680537,0,27427633,648584548\">我是要成为海贼王的男人！！</d>\n<d p=\"136.16900634766,5,25,65280,1413680543,0,27427633,648584607\">我是要成为海贼王的男人！！</d>\n<d p=\"136.16900634766,5,25,255,1413680549,0,27427633,648584674\">我是要成为海贼王的男人！！</d>\n<d p=\"136.16900634766,5,25,16776960,1413680554,0,27427633,648584724\">我是要成为海贼王的男人！！</d>\n<d p=\"136.16900634766,5,25,65535,1413680560,0,27427633,648584766\">我是要成为海贼王的男人！！</d>\n<d p=\"136.16900634766,5,25,16711935,1413680568,0,27427633,648584837\">我是要成为海贼王的男人！！</d>\n<d p=\"4.8819999694824,1,25,6737151,1413680912,0,651c4cd6,648588562\">2014.10.19打卡，爱海贼一生一世</d>\n<d p=\"237.78799438477,4,25,16711680,1413681560,0,c1096619,648595965\">ONE PIECE！！！是真实存在的！！！ONE PIECE！！！是真实存在的！！！ONE PIECE！！！是真实存在的！！！</d>\n<d p=\"95.699996948242,1,25,16777215,1413689009,0,Dd7cfe2c,648729724\">2014.10.19</d>\n<d p=\"173.32400512695,1,25,16777215,1413689087,0,Dd7cfe2c,648731486\">老爹</d>\n<d p=\"232.875,1,25,16777215,1413689146,0,Dd7cfe2c,648732864\">刷</d>\n<d p=\"5.7129998207092,1,25,16777215,1413707804,0,D9a108c4,649233976\">2014-10-19 艾斯我好想你。</d>\n<d p=\"119.172996521,1,25,16777215,1413712659,0,3db8ebf6,649376872\">雷利桑！~</d>\n<d p=\"160.57800292969,1,25,16777215,1413787912,0,De4d010d,650617053\">海贼王里都是真爷们</d>\n<d p=\"85.190002441406,1,25,16711680,1413800611,0,ffc96a3b,650763557\">狗耳朵罗杰！</d>\n<d p=\"90.862998962402,1,25,16711680,1413800647,0,ffc96a3b,650764160\">狗耳朵罗杰！</d>\n<d p=\"29.521999359131,1,25,16777215,1413809009,0,8c3ed6af,650943548\">2014/10/20又上首页啦！</d>\n<d p=\"121.84600067139,1,25,16777215,1413809394,0,e3614025,650952091\">不想海贼完结的是抖M么</d>\n<d p=\"22.42200088501,1,25,16777215,1413856555,0,0bea31e7,651317295\">gold</d>\n<d p=\"203.08999633789,4,25,16711680,1413884843,0,78ec6f4d,651600209\">前方高能！！！！</d>\n<d p=\"203.08999633789,4,25,16711680,1413884849,0,78ec6f4d,651600291\">前方高能！！！！</d>\n<d p=\"203.08999633789,4,25,16711680,1413884854,0,78ec6f4d,651600364\">前方高能！！！！</d>\n<d p=\"209.4049987793,4,25,16711680,1413884862,0,78ec6f4d,651600447\">前方高能！！！！</d>\n<d p=\"220.26600646973,4,25,16711680,1413884873,0,78ec6f4d,651600594\">前方高能！！！！</d>\n<d p=\"84.341003417969,1,25,16777215,1413967427,0,0602852e,652455151\">恭喜再上首页！我大海贼还能再战500年！</d>\n<d p=\"118.1549987793,1,25,16777215,1413967533,0,0602852e,652456177\">D！</d>\n<d p=\"136.7380065918,1,25,16777215,1413967566,0,0602852e,652456505\">路飞我爱你啊！草帽海贼团是最棒的！</d>\n<d p=\"251.31199645996,5,25,13382451,1413967742,0,0602852e,652458329\">ONE PIECE是真实存在的！！！</d>\n<d p=\"251.31199645996,5,25,13382451,1413967749,0,0602852e,652458390\">ONE PIECE是真实存在的！！！</d>\n<d p=\"251.31199645996,5,25,13382451,1413967756,0,0602852e,652458458\">ONE PIECE是真实存在的！！！</d>\n<d p=\"251.31199645996,5,25,16711680,1413967763,0,0602852e,652458530\">ONE PIECE是真实存在的！！！</d>\n<d p=\"251.31199645996,5,25,16711680,1413967776,0,0602852e,652458682\">ONE PIECE是真实存在的！！！</d>\n<d p=\"251.31199645996,5,25,16711680,1413967782,0,0602852e,652458744\">ONE PIECE是真实存在的！！！</d>\n<d p=\"251.31199645996,5,25,16711680,1413967789,0,0602852e,652458822\">ONE PIECE是真实存在的！！！</d>\n<d p=\"251.31199645996,5,25,16711680,1413967804,0,0602852e,652458976\">ONE PIECE是真实存在的！！！</d>\n<d p=\"251.31199645996,5,25,16711680,1413967811,0,0602852e,652459064\">ONE PIECE是真实存在的！！！</d>\n<d p=\"251.31199645996,5,25,16711680,1413967818,0,0602852e,652459122\">ONE PIECE是真实存在的！！！</d>\n<d p=\"270.97799682617,5,25,16711680,1413968153,0,0602852e,652462434\">拉夫德鲁！</d>\n<d p=\"137.14199829102,1,25,16777215,1413968356,0,4c141781,652464556\">我是要成为海贼王的男人！！！</d>\n<d p=\"240.60899353027,1,25,16711680,1413968476,0,4c141781,652465787\">ONE PIECE是真实存在的!!ONE PIECE是真实存在的!!</d>\n<d p=\"1.1219999790192,5,25,16711680,1413968838,0,708bf170,652470267\">对不起，我要让他上首页！</d>\n<d p=\"1.1219999790192,5,25,65280,1413968844,0,708bf170,652470347\">对不起，我要让他上首页！</d>\n<d p=\"1.1219999790192,5,25,255,1413968851,0,708bf170,652470413\">对不起，我要让他上首页！</d>\n<d p=\"1.1219999790192,5,25,16776960,1413968858,0,708bf170,652470504\">对不起，我要让他上首页！</d>\n<d p=\"1.1219999790192,5,25,65535,1413968867,0,708bf170,652470595\">对不起，我要让他上首页！</d>\n<d p=\"1.1219999790192,5,25,16711935,1413968873,0,708bf170,652470663\">对不起，我要让他上首页！</d>\n<d p=\"20.315999984741,1,25,16777215,1413970039,0,4c141781,652483807\">全身鸡皮疙瘩的别跑 带上我</d>\n<d p=\"72.079002380371,1,25,16777215,1413980421,0,D0790028,652659677\">我叫 蒙奇D路飞 我是要成为海贼王的男人</d>\n<d p=\"20.370000839233,1,25,16777215,1413980480,0,060d7a84,652660887\">又被顶上来了 = -=</d>\n<d p=\"141.45500183105,1,25,10027212,1414074943,0,c5a1e3b6,653763303\">我是要成为海贼王的    男人！！！！！！！</d>\n<d p=\"13.788000106812,1,25,16777215,1414227868,0,801ac868,655785468\">爱死海贼王</d>\n<d p=\"78.095001220703,1,25,16777215,1414227939,0,801ac868,655787194\">大爱路飞</d>\n<d p=\"90.541000366211,1,25,16777215,1414227960,0,801ac868,655787675\">我来晚了</d>\n<d p=\"194.51899719238,1,25,16777215,1414228067,0,801ac868,655790230\">老爹</d>\n<d p=\"214.24000549316,1,25,16777215,1414228098,0,801ac868,655790973\">艾斯。。。。。</d>\n<d p=\"230.08000183105,1,25,16777215,1414228117,0,801ac868,655791467\">老爹</d>\n<d p=\"136.16400146484,5,25,16711680,1414231026,0,d8b7b8c0,655862482\">我是要成为海贼王的男人！</d>\n<d p=\"241.05599975586,5,25,16711680,1414231156,0,d8b7b8c0,655865715\">ONE PIECE是真实存在的！！！！！</d>\n<d p=\"237.67300415039,5,25,16711680,1414231202,0,d8b7b8c0,655866881\">ONE PIECE是真实存在的！！！！！</d>\n<d p=\"243.46600341797,5,25,16711680,1414231208,0,d8b7b8c0,655867025\">ONE PIECE是真实存在的！！！！！</d>\n<d p=\"90.861000061035,1,25,16777215,1414232056,0,ec7dc846,655888018\">小心脏损伤不轻</d>\n<d p=\"212.33000183105,1,25,16777215,1414232178,0,ec7dc846,655891206\">一生的归宿点</d>\n<d p=\"258.45199584961,1,25,16777215,1414232233,0,ec7dc846,655892675\">死了</d>\n<d p=\"11.171299934387,1,25,16777215,1414246547,0,003a8ee1,656336928\">2014 10 25 打卡</d>\n<d p=\"249.83999633789,1,25,16777215,1414252476,0,Df8a7497,656550059\">one  piece是真实存在的！！！</d>\n<d p=\"33.002998352051,1,25,16777215,1414392331,0,3eca339e,658535746\">2014.10.27打卡</d>\n<d p=\"255.66600036621,1,25,16777215,1414642676,0,Dbc89246,661444195\">我擦！！！</d>\n<d p=\"100.91600036621,1,25,16711731,1414700164,0,e19ff79f,662355296\">浑身鸡皮疙瘩了------------------------</d>\n<d p=\"57.004001617432,1,25,16777215,1414763759,0,a5d8e61a,663114732\">罗杰长大长残了</d>\n<d p=\"241.19700622559,5,25,3355545,1414798743,0,4861878a,663432433\">one piece是真实存在的！！！！！！！</d>\n<d p=\"241.19700622559,5,25,3355545,1414798751,0,4861878a,663432451\">one piece是真实存在的！！！！！！！</d>\n<d p=\"241.19700622559,5,25,3355545,1414798758,0,4861878a,663432469\">one piece是真实存在的！！！！！！！</d>\n<d p=\"241.19700622559,5,25,3355545,1414798766,0,4861878a,663432491\">one piece是真实存在的！！！！！！！</d>\n<d p=\"241.19700622559,5,25,3355545,1414798775,0,4861878a,663432516\">one piece是真实存在的！！！！！！！</d>\n<d p=\"241.19700622559,5,25,3355545,1414798783,0,4861878a,663432528\">one piece是真实存在的！！！！！！！</d>\n<d p=\"241.19700622559,5,25,3355545,1414798790,0,4861878a,663432551\">one piece是真实存在的！！！！！！！</d>\n<d p=\"241.19700622559,5,25,3355545,1414798799,0,4861878a,663432584\">one piece是真实存在的！！！！！！！</d>\n<d p=\"241.19700622559,5,25,3355545,1414798809,0,4861878a,663432621\">one piece是真实存在的！！！！！！！</d>\n<d p=\"98.932998657227,1,25,16777215,1414800168,0,c7848e49,663437397\">连衣裙的混蛋!</d>\n<d p=\"52.331001281738,1,25,16777215,1414823159,0,0369517e,663758976\">2014.11.1打卡</d>\n<d p=\"5.1160001754761,1,25,16777215,1414890296,0,0ef5d562,664807878\">弹幕又被清了</d>\n<d p=\"227.72200012207,1,25,16711680,1414890617,0,0ef5d562,664810422\">前方高能  注意这不是演戏！！！</d>\n<d p=\"227.72200012207,1,25,16711680,1414890623,0,0ef5d562,664810478\">前方高能  注意这不是演戏</d>\n<d p=\"227.72200012207,1,25,16711680,1414890629,0,0ef5d562,664810538\">前方高能  注意这不是演戏</d>\n<d p=\"227.72200012207,1,25,16711680,1414890635,0,0ef5d562,664810603\">前方高能  注意这不是演戏</d>\n<d p=\"227.72200012207,1,25,16711680,1414890642,0,0ef5d562,664810653\">前方高能  注意这不是演戏</d>\n<d p=\"270.86999511719,1,25,65280,1414890725,0,0ef5d562,664811415\">感觉弹幕又清了</d>\n<d p=\"5.563000202179,5,25,16711680,1414923528,0,a336f512,665509087\">是男人谁不看海贼王！</d>\n<d p=\"5.563000202179,5,25,16711680,1414923530,0,a336f512,665509123\">是男人谁不看海贼王！</d>\n<d p=\"5.563000202179,5,25,16711680,1414923537,0,a336f512,665509258\">是男人谁不看海贼王！</d>\n<d p=\"5.563000202179,5,25,16711680,1414923544,0,a336f512,665509368\">是男人谁不看海贼王！</d>\n<d p=\"5.563000202179,5,25,16711680,1414923554,0,a336f512,665509549\">是男人谁不看海贼王！</d>\n<d p=\"5.563000202179,5,25,16711680,1414923560,0,a336f512,665509657\">是男人谁不看海贼王！</d>\n<d p=\"5.563000202179,5,25,16711680,1414923567,0,a336f512,665509779\">是男人谁不看海贼王！</d>\n<d p=\"5.563000202179,5,25,16711680,1414923574,0,a336f512,665509880\">是男人谁不看海贼王！</d>\n<d p=\"240.65800476074,1,25,16777215,1415180334,0,Db3930dd,667931203\">ONE PIECE 是真实存在的！</d>\n<d p=\"240.65800476074,1,25,16777215,1415180349,0,Db3930dd,667931391\">ONE PIECE 是真实存在的！</d>\n<d p=\"0,1,25,16777215,1415191734,0,abc14864,668130619\">日常打卡</d>\n<d p=\"67.728996276855,1,25,16711680,1415191811,0,ece8dbd4,668132132\">我也是大海贼啊。</d>\n<d p=\"14.875,1,25,16777215,1415193554,0,D8b1746f,668164425\">我是罗杰</d>\n<d p=\"46.436000823975,1,25,16777215,1415193611,0,D8b1746f,668165565\">如果我听你的话，我就不是海贼了，对吧！！</d>\n<d p=\"155.62600708008,1,25,16777215,1415279073,0,D775abb5,669003362\">艾斯</d>\n<d p=\"9.9010000228882,1,25,16777215,1415313624,0,Ded0f773,669363503\">日常打卡2014/11/7</d>\n<d p=\"90.763999938965,1,25,16777215,1415313786,0,Ded0f773,669363762\">我是哥尔·D·罗杰！</d>\n<d p=\"47.716999053955,1,25,16777215,1415351125,0,Dc93abc9,669770558\">2014.11.7</d>\n<d p=\"138.46600341797,1,25,16777215,1415351216,0,Dc93abc9,669772081\">D应该是dream或者dreamer~</d>\n<d p=\"166.30400085449,1,25,16777215,1415351243,0,Dc93abc9,669772531\">oyaji</d>\n<d p=\"21.479999542236,4,25,16711680,1415360660,0,e8df9fdf,669966154\">雷利，和我一起去颠覆世界吧</d>\n<d p=\"205.53900146484,4,25,16711680,1415360956,0,e8df9fdf,669973775\">话说回来，萨博的配音是鸣人吧</d>\n<d p=\"267.85299682617,4,25,16711680,1415361046,0,e8df9fdf,669976069\">我要去拉夫德鲁</d>\n<d p=\"75.805999755859,1,25,16777215,1415361697,0,7b4b3b80,669993403\">艾斯便当不服</d>\n<d p=\"39.244998931885,1,25,15138834,1415372600,0,e150207d,670273133\">弹幕给我刷出来!</d>\n<d p=\"42.240001678467,5,25,15138834,1415372619,0,e150207d,670273553\">海贼必须上首页!!</d>\n<d p=\"89.889999389648,5,25,8700107,1415372688,0,e150207d,670274889\">为大海贼盖楼!</d>\n<d p=\"262.67999267578,5,25,16777215,1415375413,0,97880f6c,670328220\">前面弹幕被删了好多。。</d>\n<d p=\"135.80299377441,1,25,16777215,1415376575,0,32afab63,670347534\">感谢遇到你！</d>\n<d p=\"17.948999404907,1,25,16777215,1415411216,0,0edfbd43,670530295\">雷利</d>\n<d p=\"22.701999664307,1,25,16777215,1415411251,0,0edfbd43,670530623\"> 要和我一起把世界闹的天翻地覆吗？</d>\n<d p=\"22.701999664307,1,25,16777215,1415411259,0,0edfbd43,670530710\"> 要和我一起把世界闹的天翻地覆吗？</d>\n<d p=\"22.701999664307,1,25,16777215,1415411267,0,0edfbd43,670530790\"> 要和我一起把世界闹的天翻地覆吗？</d>\n<d p=\"50.416999816895,5,25,16711680,1415438570,0,13cabc6e,671163305\">感谢字幕君！！！</d>\n<d p=\"7.3000001907349,1,25,16777113,1415450425,0,0816584f,671496766\">永远大海贼 永远不完结</d>\n<d p=\"204.4109954834,1,25,16777113,1415450649,0,0816584f,671502730\">高能高能</d>\n<d p=\"238.02799987793,1,25,16777011,1415450797,0,0816584f,671507448\">高能高能高能</d>\n<d p=\"93.727996826172,1,25,16777215,1415456876,0,366d083e,671688182\">连衣裙笑尿哈哈哈哈哈哈哈哈</d>\n<d p=\"127.43499755859,1,25,16711680,1415458982,0,48434515,671754337\">顶端白字+1</d>\n<d p=\"270.69799804688,1,25,16777215,1415606541,0,efa7678e,673701413\">2014 11 10</d>\n<d p=\"20.652000427246,1,25,16777215,1415804352,0,0369517e,675737259\">11.12打卡</d>\n<d p=\"54.193000793457,1,25,26112,1415804386,0,0369517e,675737854\">我拒绝你的邀请。</d>\n<d p=\"24.583999633789,5,25,16711680,1415804394,0,6cef7750,675738006\">海贼一生挚爱！！</d>\n<d p=\"63.278999328613,1,25,26112,1415804395,0,0369517e,675738026\">我会打到你的全员</d>\n<d p=\"109.87699890137,1,25,16777215,1415818710,0,26ff2025,675862057\">Dream</d>\n<d p=\"240.04600524902,1,25,16777215,1416027483,0,D9d07cbb,678051694\">ONE PIECE 是真实存在的</d>\n<d p=\"103.66300201416,1,25,16777215,1416041065,0,0369517e,678368021\">燃燃燃</d>\n<d p=\"131.50700378418,1,25,13382502,1416041093,0,0369517e,678368663\">D·路飞</d>\n<d p=\"23.260999679565,1,25,16777215,1416066854,0,a5d374dc,679055119\">2014.11.15</d>\n<d p=\"236.1130065918,1,25,16777215,1416131553,0,e820f861,679903297\">从小就想有个自己的家族..鸡皮疙瘩</d>\n<d p=\"237.72099304199,1,25,16711680,1416470289,0,b75329f3,683411672\">onepiece是真实存在的！！onepiece是真实存在的！！onepiece是真实存在的！！</d>\n<d p=\"6.1849999427795,1,25,16777215,1416470804,0,a0267744,683416113\">是啊</d>\n<d p=\"34.841999053955,1,25,16777215,1416470833,0,a0267744,683416368\">出发吧~</d>\n<d p=\"117.97899627686,1,25,16777215,1416470916,0,a0267744,683417098\">D</d>\n<d p=\"61.653999328613,4,25,65280,1416471049,0,f4b9dd5b,683418255\">绿字来到</d>\n<d p=\"23.944999694824,1,25,16777215,1416471151,0,D9a545ff,683419040\">顶顶顶顶顶顶顶顶</d>\n<d p=\"92.73999786377,4,25,16711680,1416471272,0,387e9fde,683420088\">QAQ</d>\n<d p=\"147.03100585938,1,25,16777215,1416471275,0,D9a545ff,683420116\">海贼666 海贼666 海贼666</d>\n<d p=\"143.11000061035,1,25,16711680,1416471328,0,7894e9da,683420584\">操。我突然哭了、、</d>\n<d p=\"230.92399597168,1,25,16711680,1416471482,0,387e9fde,683422190\">哭了</d>\n<d p=\"27.909999847412,4,25,15138834,1416659383,0,2510efab,685770603\">弹幕绝对清了！！！！</d>\n<d p=\"271.18099975586,5,25,16777215,1416698452,0,0369517e,686260728\">拉夫德鲁</d>\n<d p=\"4.3720002174377,1,25,16777215,1416834300,0,6cece7e3,688089196\">感觉这个画质的海贼看起来好有感觉</d>\n<d p=\"29.127000808716,1,25,16777215,1416835036,0,8834db7a,688103503\">one piece.                                                           </d>\n<d p=\"239.5659942627,1,25,16777215,1416836899,0,D35ca46b,688142747\">ONEPIECE是真实存在的！！！！！！</d>\n<d p=\"239.5659942627,1,25,16777215,1416836912,0,D35ca46b,688143026\">ONEPIECE是真实存在的！！！！！！</d>\n<d p=\"169.73899841309,1,25,255,1416836918,0,8f37c3fb,688143144\">白字大赞</d>\n<d p=\"239.5659942627,1,25,16777215,1416836925,0,D35ca46b,688143289\">ONEPIECE是真实存在的！！！！！！</d>\n<d p=\"239.5659942627,1,25,16777215,1416836944,0,D35ca46b,688143693\">ONEPIECE是真实存在的！！！！！！</d>\n<d p=\"239.5659942627,1,25,16777215,1416836964,0,D35ca46b,688144123\">ONEPIECE是真实存在的！！！！！！</d>\n<d p=\"239.5659942627,1,25,16777215,1416836982,0,D35ca46b,688144505\">ONEPIECE是真实存在的！！！！！！</d>\n<d p=\"239.5659942627,1,25,16777215,1416836994,0,D35ca46b,688144730\">ONEPIECE是真实存在的！！！！！！</d>\n<d p=\"239.5659942627,1,25,16777215,1416837006,0,D35ca46b,688144941\">ONEPIECE是真实存在的！！！！！！</d>\n<d p=\"239.5659942627,1,25,16777215,1416837018,0,D35ca46b,688145222\">ONEPIECE是真实存在的！！！！！！</d>\n<d p=\"39.784000396729,1,25,16777215,1416891421,0,82a5053e,688473214\">我来晚了  11.25</d>\n<d p=\"54.125,1,25,16777215,1416905152,0,a5d8e61a,688598912\">罗杰长残了</d>\n<d p=\"24.576999664307,1,25,16777215,1416905208,0,6ac9a961,688599501\">见海进</d>\n<d p=\"267.08099365234,1,25,16777215,1416905469,0,6ac9a961,688602161\">QAQ一生推</d>\n<d p=\"269.64801025391,4,25,16711680,1416905826,0,7850cd58,688605712\">看此视频，今生无怨！</d>\n<d p=\"269.64801025391,4,25,16711680,1416905847,0,7850cd58,688605892\">看此视频，今生无怨！</d>\n<d p=\"269.64801025391,4,25,16711680,1416905852,0,7850cd58,688605952\">看此视频，今生无怨！</d>\n<d p=\"269.64801025391,4,25,16711680,1416905859,0,7850cd58,688606026\">看此视频，今生无怨！</d>\n<d p=\"269.64801025391,4,25,16711680,1416905865,0,7850cd58,688606074\">看此视频，今生无怨！</d>\n<d p=\"269.64801025391,4,25,16711680,1416905876,0,7850cd58,688606176\">看此视频，今生无怨！</d>\n<d p=\"269.64801025391,4,25,16711680,1416905881,0,7850cd58,688606208\">看此视频，今生无怨！</d>\n<d p=\"18.464000701904,1,25,16777215,1416905992,0,dcccd676,688607209\">第一？</d>\n<d p=\"61.820999145508,1,25,16777215,1416912451,0,f5a7ef95,688692254\">好嫩！！！</d>\n<d p=\"249.56399536133,1,25,16776960,1416912714,0,f5a7ef95,688696593\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"249.56399536133,1,25,16776960,1416912721,0,f5a7ef95,688696697\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"249.56399536133,5,25,16776960,1416912729,0,f5a7ef95,688696817\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"249.56399536133,5,25,16776960,1416912736,0,f5a7ef95,688696936\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"249.56399536133,4,25,16776960,1416912743,0,f5a7ef95,688697049\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"249.56399536133,4,25,16776960,1416912750,0,f5a7ef95,688697164\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"249.56399536133,1,25,16776960,1416912757,0,f5a7ef95,688697281\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"241.74600219727,1,25,10027008,1416916861,0,bee86208,688810417\">ONE PIECE！！！是真实存在的！！ONE PIECE！！！是真实存在的！！ONE PIECE！！！是真实存在的！！</d>\n<d p=\"241.74600219727,1,25,10027008,1416916870,0,bee86208,688810635\">ONE PIECE！！！是真实存在的！！</d>\n<d p=\"241.74600219727,1,25,10027008,1416916881,0,bee86208,688810898\">ONE PIECE！！！是真实存在的！！</d>\n<d p=\"241.74600219727,1,25,10027008,1416916888,0,bee86208,688811055\">ONE PIECE！！！是真实存在的！！</d>\n<d p=\"241.74600219727,1,25,10027008,1416916896,0,bee86208,688811293\">ONE PIECE！！！是真实存在的！！</d>\n<d p=\"223.88000488281,1,25,16776960,1416983024,0,f99a65d0,689354426\">ONE PIECE，是真实存在的！</d>\n<d p=\"238.60000610352,1,25,16777215,1417000153,0,D1bbaca6,689531033\">lala !!!</d>\n<d p=\"138.68099975586,1,25,16777215,1417003999,0,351edfe6,689596868\">燃哭我i！！！！</d>\n<d p=\"246.99299621582,1,25,16777215,1417004129,0,351edfe6,689599285\">老爹啊！！！</d>\n<d p=\"12.996000289917,1,25,16777215,1417019147,0,0369517e,689871918\">雷利</d>\n<d p=\"111.02500152588,1,25,16777215,1417019217,0,0369517e,689872566\">D</d>\n<d p=\"118.0240020752,1,25,16777215,1417019224,0,0369517e,689872631\">D</d>\n<d p=\"96.896003723145,1,25,39168,1417067673,0,050befc7,690214268\">颜表立</d>\n<d p=\"19.59700012207,5,25,16711680,1417140878,0,d3b3174c,690917999\">男神</d>\n<d p=\"54.209999084473,5,25,16711680,1417140913,0,d3b3174c,690918185\">鸡皮疙瘩</d>\n<d p=\"10.925999641418,1,25,16777215,1417253467,0,fdcd9d0e,692945340\">大爱</d>\n<d p=\"10.925999641418,1,25,16777215,1417253477,0,fdcd9d0e,692945575\">大爱</d>\n<d p=\"51.634998321533,1,25,16724736,1417312361,0,bf7aa351,694015738\">2014 11 30</d>\n<d p=\"131.78399658203,1,25,16777215,1417427623,0,D8688e2d,695586978\">路飞船长我能成为你的同伴吗</d>\n<d p=\"239.50500488281,1,25,16777215,1417427799,0,D8688e2d,695588856\">ONE PIECE 是真实存在的</d>\n<d p=\"238.78100585938,1,25,16777215,1417505842,0,52326a6f,696302652\">ONE PIECE是真实存在的！！！</d>\n<d p=\"131.15699768066,1,25,16777215,1417506051,0,e43e03e5,696304691\">吗的，就是忍不住眼泪！</d>\n<d p=\"265.87899780273,1,25,16777215,1417515782,0,5fe82afd,696401645\">让了</d>\n<d p=\"10.237999916077,1,25,16777215,1418547688,0,9d4d935d,709465527\">海贼王道</d>\n<d p=\"142.21000671387,1,25,16777215,1418547862,0,9d4d935d,709469171\">路宝我爱你</d>\n<d p=\"110.08000183105,1,25,16777215,1418560140,0,D9520910,709724605\">大爱海贼</d>\n<d p=\"201.80000305176,1,25,16777215,1418560289,0,D9520910,709727865\">老爹帅爆了</d>\n<d p=\"49.770000457764,1,25,16777215,1418561440,0,D1490405,709754247\">看了各种爽啊。</d>\n<d p=\"0,1,25,16777215,1418561803,0,787dd94c,709763050\">再顶</d>\n<d p=\"20.549999237061,1,25,16777215,1418565907,0,D036c003,709865096\">海贼王就来了</d>\n<d p=\"48.520000457764,1,25,16777215,1418565961,0,D8b38614,709866484\">成为，海贼的男人</d>\n<d p=\"188.6369934082,1,25,16777215,1418566010,0,D8b38614,709867632\">大爱海贼画风！！超级有气场</d>\n<d p=\"144.18699645996,1,25,16777215,1418566030,0,D036c003,709868123\">我是要成为海贼王的男人</d>\n<d p=\"229.97300720215,1,25,16777215,1418566116,0,D036c003,709870070\">萨博燃烧果实</d>\n<d p=\"243.00799560547,5,25,16750899,1418566751,0,45743948,709885421\">ONE PIECE是真实存在的！</d>\n<d p=\"256.59600830078,1,25,16777215,1418899940,0,D03f0d02,713038762\">one piece ！！是真实存在的！！</d>\n<d p=\"248.94500732422,1,25,16777215,1418902455,0,D03f0d02,713078388\">one piece ！！是真实存在的</d>\n<d p=\"95.475997924805,1,25,16777215,1419082343,0,D6ea34d0,715339232\">DDDDDD</d>\n<d p=\"234.33399963379,5,25,16777215,1419157117,0,97880f6c,716358473\">one piece是真实存在的 one piece是真实存在的 one piece是真实存在的</d>\n<d p=\"169.2140045166,1,25,16711680,1419157268,0,2ea79104,716362090\">老爹的声音</d>\n<d p=\"156.74800109863,1,25,16777215,1419848407,0,ffc96a3b,724383763\">鹰眼帅爆</d>\n<d p=\"119.25,1,25,16777215,1420032206,0,0ef5d562,726669052\">2014 12 31再来回顾</d>\n<d p=\"136.32000732422,1,25,16777215,1420033435,0,D8343204,726724527\">我的大船长！！！！</d>\n<d p=\"162.47999572754,1,25,16777215,1420033484,0,D8343204,726725984\">索隆我宣你！！！！</d>\n<d p=\"175.44000244141,1,25,16777215,1420033491,0,D8343204,726726703\">老爹啊啊啊啊啊啊啊啊</d>\n<d p=\"194.24000549316,1,25,16777215,1420033536,0,D8343204,726728232\">臭红狗！！！</d>\n<d p=\"205.47999572754,1,25,16777215,1420033556,0,D8343204,726729007\">萨博尼桑</d>\n<d p=\"136.74099731445,1,25,16777215,1420041739,0,D7ba803b,727046070\">海贼王，2015,你好</d>\n<d p=\"259.66500854492,1,25,16777215,1420083453,0,a9f876ee,727333917\">ONE PIECE是真实存在的！！</d>\n<d p=\"170.72700500488,1,25,16777215,1420095888,0,2e0de867,727553667\">突然发现就我自己了</d>\n<d p=\"252.95599365234,1,25,16777215,1420108565,0,5638df13,727775806\">one piece 是真实存在的</d>\n<d p=\"241.19799804688,1,25,13369344,1420108627,0,abba3838,727776928\">ONE PIECE是真实存在的！！！</d>\n<d p=\"241.19799804688,1,25,13382400,1420108632,0,abba3838,727776984\">ONE PIECE是真实存在的！！！</d>\n<d p=\"241.19799804688,1,25,13395456,1420108619,0,abba3838,727777087\">ONE PIECE是真实存在的！！！</d>\n<d p=\"241.19799804688,1,25,13408512,1420108646,0,abba3838,727777223\">ONE PIECE是真实存在的！！！</d>\n<d p=\"241.19799804688,1,25,13421568,1420108646,0,abba3838,727777361\">ONE PIECE是真实存在的！！！</d>\n<d p=\"241.19799804688,1,25,13434624,1420108652,0,abba3838,727777485\">ONE PIECE是真实存在的！！！</d>\n<d p=\"241.19799804688,5,25,6749952,1420108653,0,abba3838,727777618\">ONE PIECE是真实存在的！！！</d>\n<d p=\"241.19799804688,5,25,6750003,1420108671,0,abba3838,727777786\">ONE PIECE是真实存在的！！！</d>\n<d p=\"241.19799804688,5,25,6750054,1420108667,0,abba3838,727777938\">ONE PIECE是真实存在的！！！</d>\n<d p=\"241.19799804688,5,25,6750105,1420108673,0,abba3838,727778074\">ONE PIECE是真实存在的！！！</d>\n<d p=\"241.19799804688,5,25,6750156,1420108693,0,abba3838,727778188\">ONE PIECE是真实存在的！！！</d>\n<d p=\"241.19799804688,5,25,6750207,1420108691,0,abba3838,727778310\">ONE PIECE是真实存在的！！！</d>\n<d p=\"241.57400512695,1,25,16711680,1420110854,0,161028f1,727827199\">ONEP POECE!!!!!!是真实存在的！！！！！</d>\n<d p=\"120.63999938965,1,25,16777215,1420205063,0,8c275b2a,729482304\">DDDDDDDDDDDDDDDDDDDDDDDDDDD</d>\n<d p=\"5.1999998092651,1,25,16777215,1420211965,0,76b88f30,729684792\">a1a1</d>\n<d p=\"159.77000427246,1,25,16777215,1420212099,0,76b88f30,729687639\">a1</d>\n<d p=\"237.64599609375,1,25,16777215,1420215010,0,43a8157d,729757607\">ONE PIECE！！！是真实存在的！！ONE PIECE！！！是真实存在的！！ONE PIECE！！！是真实存在的！！</d>\n<d p=\"92.180000305176,1,25,16777215,1420288549,0,235f7475,730823098\">狗耳朵罗杰</d>\n<d p=\"137.42500305176,1,25,16777215,1420289233,0,0a1eb6be,730844466\">路飞要成为罗杰的男人</d>\n<d p=\"249.29299926758,1,25,16777215,1420369395,0,D8ac5b9e,732023862\">我也来依法</d>\n<d p=\"239.29699707031,1,25,16777215,1420371096,0,7b55413a,732057614\"> OnePiece是真实存在的22222222222222222222222222</d>\n<d p=\"248.04499816895,1,25,16777215,1420371104,0,7b55413a,732057791\">aaa</d>\n<d p=\"89.069999694824,1,25,16777215,1420431049,0,D9cd5d1e,732597811\">DDDDDDDDDDDDDDDDDDDD</d>\n<d p=\"240.49099731445,1,25,16777215,1420431207,0,D9cd5d1e,732599425\">ONE PIECE，是真实存在的！</d>\n<d p=\"241.81900024414,1,25,16777215,1420431221,0,D9cd5d1e,732599600\">ONE PIECE，是真实存在的！</d>\n<d p=\"244.85600280762,1,25,16777215,1420431238,0,D9cd5d1e,732599772\">ONE PIECE，是真实存在的！</d>\n<d p=\"208.19500732422,1,25,16777215,1420432363,0,D2500da9,732614957\">鸣人</d>\n<d p=\"211.98300170898,1,25,16777215,1420432385,0,D2500da9,732615238\">新吧唧</d>\n<d p=\"116.69599914551,1,25,10027212,1420432555,0,a7c23a9a,732617632\">我是要成为海贼王的男人</d>\n<d p=\"149.02900695801,1,25,10027212,1420432587,0,a7c23a9a,732618095\">我是要成为海贼王的男人！！！</d>\n<d p=\"210.08099365234,1,25,10027212,1420432649,0,a7c23a9a,732618966\">我是要成为海贼王的男人！！！</d>\n<d p=\"0,1,25,16777215,1420442470,0,0ad4ce3c,732747867\">此生无悔入海贼！！</d>\n<d p=\"78.401000976562,1,25,16777215,1420452804,0,ffc96a3b,732989267\">长残了。。。</d>\n<d p=\"89.819000244141,1,25,16777215,1420452817,0,ffc96a3b,732989440\">那是鼻毛还是胡子？</d>\n<d p=\"25.663000106812,1,25,16777215,1420474910,0,013b884d,733406605\">2015/1/6</d>\n<d p=\"271.29000854492,1,25,16777215,1420536210,0,3f68903d,733862601\">最爱。没有之一。海贼一生</d>\n<d p=\"0.51899999380112,1,25,16711680,1420537398,0,4e4abe6f,733877187\">被清空了？</d>\n<d p=\"155.46299743652,1,25,16777215,1420608710,0,ffc96a3b,734565047\">燃爆了</d>\n<d p=\"178.82499694824,1,25,16777215,1420608732,0,ffc96a3b,734565368\">   红狗</d>\n<d p=\"30.791999816895,1,25,16777215,1420627160,0,7b55413a,734833933\">海贼王本命！！！！！</d>\n<d p=\"151.58200073242,1,25,13311,1420627281,0,7b55413a,734835936\">D没有确定的意思 这样才是男人的浪漫啊！！！永远追求着别人看来意义不明的东西！</d>\n<d p=\"208.34800720215,1,25,16777215,1420633146,0,03b84cbf,734953120\">路过。。。</d>\n<d p=\"6.1680002212524,1,25,16777215,1420633573,0,ceb8969a,734961628\">23333333333333</d>\n<d p=\"141.60299682617,1,25,16777215,1420634084,0,06686feb,734972382\">要哭了！</d>\n<d p=\"191.85200500488,1,25,16777215,1420634132,0,06686feb,734973435\">他娘要去在更海贼！</d>\n<d p=\"237.41299438477,1,25,16777215,1420645340,0,De83da88,735204724\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"247.4049987793,1,25,16777215,1420645354,0,De83da88,735204979\">ONE PIECE　是真实存在的！！！O</d>\n<d p=\"238.59300231934,1,25,16777215,1420645420,0,De83da88,735206035\">ONE PIECE 是真实存在的！！ON</d>\n<d p=\"238.16299438477,1,25,16777215,1420645640,0,De83da88,735209260\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"238.59199523926,1,25,16777215,1420645654,0,De83da88,735209422\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"238.59199523926,1,25,16777215,1420645666,0,De83da88,735209624\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"238.59199523926,1,25,16777215,1420645674,0,De83da88,735209795\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"238.59199523926,1,25,16777215,1420645686,0,De83da88,735209969\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"238.59199523926,1,25,16777215,1420645701,0,De83da88,735210134\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"238.59199523926,1,25,16777215,1420645712,0,De83da88,735210293\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"238.59199523926,1,25,16777215,1420645725,0,De83da88,735210466\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"238.59199523926,1,25,16777215,1420645739,0,De83da88,735210661\">ONE PIECE 是真实存在的！！！!</d>\n<d p=\"238.59199523926,1,25,16777215,1420645752,0,De83da88,735210865\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"74.745002746582,1,25,16777215,1420718959,0,e9bfb46c,735842029\">你要死了，路飞？</d>\n<d p=\"247.08000183105,1,25,16777215,1420722922,0,db5863ac,735938490\">ONEP IECE是真实存在的</d>\n<d p=\"60.779998779297,1,25,16711680,1420793138,0,6d3a4663,736636289\">红发大人QAQ</d>\n<d p=\"133.85800170898,1,25,16711680,1420793234,0,6d3a4663,736637757\">我的小男神出来了</d>\n<d p=\"245.66299438477,5,25,65535,1420806753,0,62667e0e,737073108\">one piece！！是真实存在的。。。</d>\n<d p=\"238.33200073242,1,25,16777215,1420820571,0,bfa6dbf5,737418285\">全身抖动！！！！！</d>\n<d p=\"19.579000473022,1,25,16777215,1420858797,0,eba8942d,737647501\">2015-01-10</d>\n<d p=\"28.111000061035,1,25,16777215,1420864414,0,D2f1b0bd,737732313\">因为那可是全世界啊！</d>\n<d p=\"28.111000061035,1,25,16777215,1420864430,0,D2f1b0bd,737732610\">因为那可是全世界啊！</d>\n<d p=\"28.111000061035,1,25,16777215,1420864441,0,D2f1b0bd,737732814\">因为那可是全世界啊！</d>\n<d p=\"28.111000061035,1,25,16777215,1420864440,0,D2f1b0bd,737732965\">因为那可是全世界啊！</d>\n<d p=\"28.111000061035,1,25,16777215,1420864459,0,D2f1b0bd,737733149\">因为那可是全世界啊！</d>\n<d p=\"134.51499938965,1,25,16777215,1420864591,0,D2f1b0bd,737735755\">我是要成为海贼王的男人！</d>\n<d p=\"134.51499938965,1,25,16777215,1420864600,0,D2f1b0bd,737735994\">我是要成为海贼王的男人！</d>\n<d p=\"134.51499938965,1,25,16777215,1420864605,0,D2f1b0bd,737736201\">我是要成为海贼王的男人！</d>\n<d p=\"134.51499938965,1,25,16777215,1420864619,0,D2f1b0bd,737736386\">我是要成为海贼王的男人！</d>\n<d p=\"134.51499938965,1,25,16777215,1420864631,0,D2f1b0bd,737736597\">我是要成为海贼王的男人！</d>\n<d p=\"241.04200744629,5,25,3381708,1420865798,0,3ede655c,737760182\">ONE PIECE是真实存在的！！！！！</d>\n<d p=\"30.291999816895,1,25,16777215,1420870293,0,Dda8cd32,737855718\">赞赞赞赞赞赞赞</d>\n<d p=\"67.376998901367,1,25,16777215,1420870339,0,Dda8cd32,737856492\">帅帅帅</d>\n<d p=\"108.52899932861,1,25,16777215,1420870375,0,Dda8cd32,737857307\">燃</d>\n<d p=\"133.66499328613,1,25,16777215,1420870405,0,Dda8cd32,737857847\">燃哭</d>\n<d p=\"143.88999938965,1,25,16777215,1420870413,0,Dda8cd32,737858061\">我是要成为海贼王的男人</d>\n<d p=\"165.0240020752,1,25,16777215,1420870428,0,Dda8cd32,737858516\">1！！</d>\n<d p=\"202.8450012207,1,25,16777215,1420870475,0,Dda8cd32,737859303\">赞飞</d>\n<d p=\"231.82800292969,1,25,16777215,1420870504,0,Dda8cd32,737859926\">赞赞赞那灾难</d>\n<d p=\"243.34599304199,1,25,16777215,1420870511,0,Dda8cd32,737860158\">OP是真实存在的！</d>\n<d p=\"261.48199462891,1,25,16777215,1420870531,0,Dda8cd32,737860517\">One Piece是真实存在的！</d>\n<d p=\"252.10899353027,4,25,16777215,1420881767,0,4c510654,738093511\">k</d>\n<d p=\"254.34599304199,1,25,16777215,1420882083,0,86a18f31,738100752\">去找吧  骚年们</d>\n<d p=\"244.71099853516,1,25,16777215,1420891343,0,2b9c63a2,738340091\">ONE PIECE IT'S RELLY BELIVE!!!</d>\n<d p=\"244.71099853516,1,25,16777215,1420891367,0,2b9c63a2,738340743\">ONE PIECE IT'S RELLY BELIVE!</d>\n<d p=\"244.71099853516,1,25,16777215,1420891390,0,2b9c63a2,738341280\">ONE PIECE IT'S RELLY BELIEVE!</d>\n<d p=\"242.02600097656,5,25,16711680,1420891445,0,2b9c63a2,738342628\">ONE PIECE是真实存在的</d>\n<d p=\"242.02600097656,5,25,16711680,1420891444,0,2b9c63a2,738342754\">ONE PIECE是真实存在的</d>\n<d p=\"242.02600097656,5,25,16711680,1420891456,0,2b9c63a2,738342917\">ONE PIECE是真实存在的</d>\n<d p=\"242.02600097656,5,25,16711680,1420891456,0,2b9c63a2,738343038\">ONE PIECE是真实存在的</d>\n<d p=\"242.02600097656,5,25,16711680,1420891463,0,2b9c63a2,738343182\">ONE PIECE是真实存在的</d>\n<d p=\"242.02600097656,5,25,16711680,1420891470,0,2b9c63a2,738343339\">ONE PIECE是真实存在的</d>\n<d p=\"242.02600097656,5,25,16711680,1420891476,0,2b9c63a2,738343508\">ONE PIECE是真实存在的</d>\n<d p=\"242.02600097656,5,25,16711680,1420891481,0,2b9c63a2,738343696\">ONE PIECE是真实存在的</d>\n<d p=\"242.02600097656,5,25,16711680,1420891488,0,2b9c63a2,738343854\">ONE PIECE是真实存在的</d>\n<d p=\"10.579999923706,1,25,16777215,1420897480,0,173c94ce,738520100\">重温</d>\n<d p=\"240.45899963379,1,25,16777215,1421156481,0,f06c6c46,741942566\">one piece 是真实存在的！！！！！！！！！</d>\n<d p=\"103.10199737549,1,25,16777215,1421156843,0,758396ae,741953998\">装在我大海贼</d>\n<d p=\"110.20600128174,1,25,16777215,1421198778,0,De55e669,742238022\">我的财宝吗？想要的话就都给你了。去找吧！我把他们都放在伟大航路了！</d>\n<d p=\"190.53999328613,1,25,16777215,1421198872,0,De55e669,742238463\">世界将会颠覆</d>\n<d p=\"35.472999572754,1,25,16777215,1421199627,0,De55e669,742252179\">因为那可是全世界啊！</d>\n<d p=\"36.75,1,25,16777215,1421199613,0,De55e669,742253247\">因为那可是全世界啊！</d>\n<d p=\"45.847999572754,1,25,16777215,1421199665,0,De55e669,742254461\">我会听你的话就不是海贼了！</d>\n<d p=\"57.319000244141,1,25,16777215,1421199707,0,De55e669,742255781\">我拒绝你的邀请！</d>\n<d p=\"92.891998291016,1,25,16777215,1421199768,0,De55e669,742260903\">我可是哥鲁·D·罗杰啊！！！！</d>\n<d p=\"162.48599243164,1,25,16777215,1421199847,0,De55e669,742263497\">向这个世界发起挑战！！！</d>\n<d p=\"135.64500427246,1,25,16777215,1421238237,0,De55e669,742892974\">我是要成为海贼王的男人！！！！！</d>\n<d p=\"241.62699890137,1,25,16777215,1421238442,0,De55e669,742897265\">one  piece 是真是存在的！！！</d>\n<d p=\"96.34700012207,1,25,16777215,1421244162,0,De55e669,743042418\">DDDDDDDDDDDDDDDDD</d>\n<d p=\"37.268001556396,1,25,6684876,1421244308,0,189a74c1,743045832\">太棒了</d>\n<d p=\"138.72399902344,1,25,16777215,1421244309,0,De55e669,743045837\">我是要成为海贼王的男人！！！！</d>\n<d p=\"53.493000030518,5,25,6684876,1421244324,0,189a74c1,743046196\">一辈子的爱</d>\n<d p=\"25.700000762939,1,25,16777215,1421324874,0,De55e669,743940063\">要和我一起把世界闹得天翻地覆吗？</d>\n<d p=\"72.827003479004,1,25,16777215,1421324939,0,De55e669,743941281\">海贼王的称号！</d>\n<d p=\"218.93099975586,1,25,16777215,1421325107,0,De55e669,743944680\">从今天开始，我们就是兄弟了！</d>\n<d p=\"247.17999267578,1,25,16777215,1421415406,0,2b9c63a2,745591203\">That Day Is Not Far</d>\n<d p=\"247.17999267578,1,25,16777215,1421415413,0,2b9c63a2,745591370\">BOTHER</d>\n<d p=\"247.17999267578,1,25,16777215,1421415425,0,2b9c63a2,745591758\">FAMILY</d>\n<d p=\"247.17999267578,1,25,16777215,1421415433,0,2b9c63a2,745591984\">PNE PIECE</d>\n<d p=\"247.17999267578,1,25,16777215,1421415448,0,2b9c63a2,745592418\">FIGHT</d>\n<d p=\"61.277000427246,1,25,16777215,1421472966,0,4e9b637d,746250561\">ONE PIECE  是真实存在的</d>\n<d p=\"250.71000671387,1,25,16777215,1421593011,0,8dd6f472,748468028\">QAQ真实的！！！！</d>\n<d p=\"52.301998138428,1,25,16724736,1421651341,0,f8aa46fc,748929280\">黄金·杰克逊号</d>\n<d p=\"211.19400024414,1,25,16777215,1421727734,0,bc047f66,749740344\">这声音</d>\n<d p=\"30.302000045776,1,25,16777215,1421727819,0,7f3723ae,749741466\">太拖了，不喜</d>\n<d p=\"242.14500427246,1,25,16777215,1422098917,0,15f67ffa,755239998\">ONE PIECE  是真实存在的！！！！！！！！！！！</d>\n<d p=\"54.60599899292,1,25,16777215,1422270573,0,b96698f8,757766351\">我拒绝你的邀请！！！</d>\n<d p=\"54.60599899292,5,25,16777215,1422270583,0,b96698f8,757766567\">我拒绝你的邀请！！！</d>\n<d p=\"54.60599899292,5,25,16777215,1422270591,0,b96698f8,757766710\">我拒绝你的邀请！！！</d>\n<d p=\"54.60599899292,5,25,16777215,1422270598,0,b96698f8,757766853\">我拒绝你的邀请！！！</d>\n<d p=\"54.60599899292,5,25,16777215,1422270606,0,b96698f8,757767018\">我拒绝你的邀请！！！</d>\n<d p=\"54.60599899292,5,25,16777215,1422270616,0,b96698f8,757767211\">我拒绝你的邀请！！！</d>\n<d p=\"54.60599899292,5,25,16777215,1422270623,0,b96698f8,757767365\">我拒绝你的邀请！！！</d>\n<d p=\"31.099000930786,1,25,16777215,1422271203,0,c83df5ef,757779650\">海贼王</d>\n<d p=\"132.26300048828,1,25,16777215,1422271304,0,c83df5ef,757781794\">路飞</d>\n<d p=\"28.281999588013,1,25,255,1422271995,0,5349c8bd,757797700\">罗杰的帽子怎么和红发的一样</d>\n<d p=\"3.4679999351501,1,25,16777215,1422349010,0,Daeef8d2,758782271\">顶顶顶顶顶顶顶顶顶顶！！！</d>\n<d p=\"47.268001556396,1,25,16777215,1422349058,0,Daeef8d2,758783686\">顶！</d>\n<d p=\"97.077003479004,1,25,16777215,1422349128,0,Daeef8d2,758784282\">D啊！</d>\n<d p=\"114.27799987793,1,25,16777215,1422349154,0,De55e669,758784726\">DDDDDDDDDDDDDDDDDDDD</d>\n<d p=\"134.24499511719,1,25,16777215,1422349160,0,De55e669,758785305\">我是要成为海贼王的男人！</d>\n<d p=\"136.77299499512,1,25,16777215,1422349179,0,De55e669,758785675\">我是要成为海贼王的男人！</d>\n<d p=\"144.09100341797,1,25,16777215,1422349196,0,De55e669,758786176\">即使在战斗中死了，也没什么不好！</d>\n<d p=\"172.11799621582,1,25,16777215,1422349263,0,De55e669,758786785\">DDDDDDDDDDDDDDDDD</d>\n<d p=\"214.82299804688,1,25,16777215,1422349319,0,De55e669,758787707\">从今天开始，我们就是兄弟了！</d>\n<d p=\"237.94200134277,1,25,16777215,1422349361,0,De55e669,758788366\">one piece 是真实存在的！</d>\n<d p=\"240.51699829102,1,25,16777215,1422349386,0,De55e669,758788770\">one  piece 是真实存在的！！！！</d>\n<d p=\"244.0950012207,1,25,16777215,1422349389,0,De55e669,758789197\">one piece 是真实存在的！！！！</d>\n<d p=\"257.70901489258,1,25,16777215,1422349416,0,De55e669,758789783\">由我来把你们全部打飞！</d>\n<d p=\"237.62399291992,1,25,65280,1422371704,0,7b63fb5a,759290564\">ONE PIECE！！！是真实存在的！！！！ONE PIECE！！！是真实存在的！！！！ONE PIECE！！！是真实存在的！！！！！ONE PIECE！！！是真实存在的！</d>\n<d p=\"87.333999633789,1,25,16711680,1422779357,0,e97afda6,764972123\">成为海贼王的男人!!!!!!!!!</d>\n<d p=\"87.333999633789,1,25,255,1422779400,0,e97afda6,764973106\">成为海贼王的男人！！！！！！</d>\n<d p=\"87.333999633789,1,25,255,1422779409,0,e97afda6,764973305\">成为海贼王的男人！！！！！！</d>\n<d p=\"87.333999633789,1,25,16711935,1422779417,0,e97afda6,764973471\">成为海贼王的男人！！！！！！</d>\n<d p=\"33.323001861572,1,25,16777215,1422779470,0,bd8e6fd0,764974659\">我大海贼还能再战10000年！！！</d>\n<d p=\"45.736999511719,1,25,16777215,1422873543,0,79f7c145,766509016\">2015.2.2</d>\n<d p=\"4.0500001907349,1,25,16777215,1422881068,0,D9cf645c,766705872\">顶！！！</d>\n<d p=\"34.807998657227,1,25,16777215,1422881157,0,D9cf645c,766707009\">出发吧！</d>\n<d p=\"88.900001525879,1,25,16777215,1422881209,0,D9cf645c,766709582\">我是哥鲁·D·罗杰啊！</d>\n<d p=\"90.249000549316,1,25,16777215,1422881250,0,D9cf645c,766709732\">我是哥鲁·D·罗杰啊！</d>\n<d p=\"91.287002563477,1,25,16777215,1422881254,0,D9cf645c,766709855\">我是哥鲁·D·罗杰啊！</d>\n<d p=\"92.91300201416,1,25,16777215,1422881224,0,D9cf645c,766709999\">我是哥鲁·D·罗杰啊！</d>\n<d p=\"93.579002380371,1,25,16777215,1422881227,0,D9cf645c,766710113\">我是哥鲁·D·罗杰啊！</d>\n<d p=\"94.180999755859,1,25,16777215,1422881266,0,D9cf645c,766710214\">我是哥鲁·D·罗杰啊！</d>\n<d p=\"94.674003601074,1,25,16777215,1422881270,0,D9cf645c,766710353\">我是哥鲁·D·罗杰啊！</d>\n<d p=\"135.8690032959,1,25,16777215,1422881298,0,D9cf645c,766712117\">我是要成为海贼王的男人</d>\n<d p=\"135.8690032959,1,25,16777215,1422881337,0,D9cf645c,766712233\">我是要成为海贼王的男人</d>\n<d p=\"136.47900390625,1,25,16777215,1422881305,0,D9cf645c,766712317\">我是要成为海贼王的男人</d>\n<d p=\"136.94299316406,1,25,16777215,1422881309,0,D9cf645c,766712421\">我是要成为海贼王的男人</d>\n<d p=\"137.4409942627,1,25,16777215,1422881351,0,D9cf645c,766712637\">我是要成为海贼王的男人</d>\n<d p=\"137.4409942627,1,25,16777215,1422881305,0,D9cf645c,766712724\">我是要成为海贼王的男人</d>\n<d p=\"139.05200195312,1,25,16777215,1422881362,0,D9cf645c,766712947\">我是要成为海贼王的男人</d>\n<d p=\"139.69400024414,1,25,16777215,1422881364,0,D9cf645c,766713028\">我是要成为海贼王的男人</d>\n<d p=\"140.22399902344,1,25,16777215,1422881368,0,D9cf645c,766713147\">我是要成为海贼王的男人</d>\n<d p=\"215.33799743652,1,25,16777215,1422881426,0,D80f41ef,766715883\">从今天开始，我们就是兄弟了！！</d>\n<d p=\"215.89599609375,1,25,16777215,1422881429,0,D80f41ef,766715992\">从今天开始，我们就是兄弟了！！</d>\n<d p=\"216.3630065918,1,25,16777215,1422881432,0,D80f41ef,766716060\">从今天开始，我们就是兄弟了！！</d>\n<d p=\"216.87399291992,1,25,16777215,1422881471,0,D80f41ef,766716147\">从今天开始，我们就是兄弟了！！</d>\n<d p=\"217.29699707031,1,25,16777215,1422881476,0,D80f41ef,766716293\">从今天开始，我们就是兄弟了！！</d>\n<d p=\"217.66999816895,1,25,16777215,1422881430,0,D80f41ef,766716383\">从今天开始，我们就是兄弟了！！</d>\n<d p=\"218.10800170898,1,25,16777215,1422881447,0,D80f41ef,766716479\">从今天开始，我们就是兄弟了！！</d>\n<d p=\"218.5359954834,1,25,16777215,1422881436,0,D80f41ef,766716561\">从今天开始，我们就是兄弟了！！</d>\n<d p=\"11.555999755859,1,25,16777215,1422883726,0,Dd0dc35d,766784767\">2015.2.2</d>\n<d p=\"59.108001708984,1,25,16777215,1422883774,0,Dd0dc35d,766786234\">哥儿 D 罗杰</d>\n<d p=\"190.40199279785,1,25,16777215,1422888481,0,D51de2d4,766926813\">莫名泪目</d>\n<d p=\"33.09700012207,1,25,16777215,1423156883,0,Df4755fa,771220839\">ONE PIECE是真实存在的！！！！！</d>\n<d p=\"50.970001220703,1,25,16777215,1423156901,0,Df4755fa,771221082\">ONE PIECE是真实存在的！！！！！</d>\n<d p=\"73.857002258301,1,25,16777215,1423156924,0,Df4755fa,771221400\">ONE PIECE是真实存在的！！！！!</d>\n<d p=\"11.375,1,25,16777215,1423404135,0,D942cb37,775797467\">艾斯永远的大本命    海贼最爱的动漫</d>\n<d p=\"23.648000717163,1,25,16777215,1423404179,0,D942cb37,775798989\">艾斯永远的大本命   海贼永远的最爱</d>\n<d p=\"37.400001525879,1,25,16777215,1423404218,0,D942cb37,775800241\">弹幕被清了Q_Q</d>\n<d p=\"149.24899291992,1,25,16777215,1423404394,0,D942cb37,775804536\">艾斯   尼桑  Q_QQ_QQ_Q</d>\n<d p=\"28.966999053955,1,25,16777215,1423575422,0,bf1b7413,778893113\">我大海贼!一天一补！</d>\n<d p=\"3.3199999332428,1,25,16777215,1423661334,0,D93ec898,780889526\">世界不末日，海贼不完结。</d>\n<d p=\"57.680000305176,1,25,16777215,1423703040,0,4f6f9a9d,781482155\">d  海贼  是自由  DA </d>\n<d p=\"224.88000488281,1,25,16777215,1423703273,0,4f6f9a9d,781484356\">兄弟    伙伴</d>\n<d p=\"233.39999389648,1,25,16777215,1423703306,0,4f6f9a9d,781484690\">老爹  就是家   啊</d>\n<d p=\"18.159999847412,1,25,16777215,1423703377,0,4f6f9a9d,781485373\">弹幕  走起</d>\n<d p=\"28.959999084473,1,25,16777215,1423703388,0,4f6f9a9d,781485484\">要  收苍</d>\n<d p=\"21.120000839233,1,25,16777215,1423921514,0,a68d0703,786365118\">2015.2.14</d>\n<d p=\"123.65299987793,1,25,16777215,1423921787,0,D27dc3c7,786371836\">好想哭，卧槽！！！</d>\n<d p=\"25.129999160767,1,25,16777215,1423922490,0,8a27e9bb,786397888\">要和我一起把世界闹的天翻地覆吗？</d>\n<d p=\"120.47299957275,1,25,16777215,1423922590,0,8a27e9bb,786401422\">我的财宝吗？想要的话就都给你了。去找吧！我把他们都放在伟大航路了！</d>\n<d p=\"137.44200134277,5,25,16777215,1423922639,0,8a27e9bb,786403290\">我是要成为海贼王的男人！！</d>\n<d p=\"252.37699890137,5,25,16777215,1423922763,0,8a27e9bb,786407696\">ONE PIECE!!!是真实存在的！！！！！！！！！ONE PIECE!!!是真实存在的！！！！！！！！！ONE PIECE!!!是真实存在的！！！！！！！！！</d>\n<d p=\"58.32799911499,1,25,16777215,1424077341,0,D5ac4682,790136281\">2333333</d>\n<d p=\"77.077003479004,1,25,16777215,1424077354,0,D5ac4682,790136862\">大海贼  ~~</d>\n<d p=\"134.68099975586,1,25,16777215,1424077418,0,D5ac4682,790138536\">我是海贼王的丈夫~~！！</d>\n<d p=\"147.75100708008,1,25,16777215,1424077437,0,D5ac4682,790139109\">233333333333</d>\n<d p=\"168.08099365234,1,25,16777215,1424077458,0,D5ac4682,790139823\">大草帽</d>\n<d p=\"193.82899475098,1,25,16777215,1424077479,0,D5ac4682,790140683\">@罗</d>\n<d p=\"140.87399291992,1,25,16777215,1424079465,0,D38456a5,790203998\">我是要成为海贼王的男人</d>\n<d p=\"3.819000005722,1,25,16777215,1424079555,0,c017616c,790206666\">又顶上来了，又顶上来了  </d>\n<d p=\"2.4189999103546,1,25,16777215,1424079590,0,D38456a5,790207650\">此生无悔入海贼</d>\n<d p=\"135.94799804688,1,25,16777215,1424079781,0,D38456a5,790213320\">我是要成为海贼王的男人！！！！</d>\n<d p=\"49.828998565674,1,25,16777215,1424148156,0,4f6f9a9d,791757059\">zhy自由</d>\n<d p=\"7.2519998550415,1,25,38979,1424427551,0,a6e2bcf4,798935752\">再来一次好了</d>\n<d p=\"242.38200378418,1,25,38979,1424427795,0,a6e2bcf4,798944925\">one picec，是真实存在的</d>\n<d p=\"244.52699279785,1,25,38979,1424427834,0,a6e2bcf4,798945235\">onep</d>\n<d p=\"244.52699279785,5,25,38979,1424427930,0,a6e2bcf4,798945986\">one picec，是真实存在的</d>\n<d p=\"244.52699279785,5,25,38979,1424427892,0,a6e2bcf4,798946806\">one picec，是真实存在的</d>\n<d p=\"244.52699279785,5,25,38979,1424427972,0,a6e2bcf4,798947117\">one picec，是真实存在的</d>\n<d p=\"244.52699279785,5,25,38979,1424428030,0,a6e2bcf4,798948536\">one picec，是真实存在的！</d>\n<d p=\"244.52699279785,5,25,38979,1424428035,0,a6e2bcf4,798948693\">one picec，是真实存在的！</d>\n<d p=\"244.52699279785,5,25,38979,1424428039,0,a6e2bcf4,798948808\">one picec，是真实存在的！</d>\n<d p=\"244.52699279785,5,25,38979,1424427973,0,a6e2bcf4,798948896\">one picec，是真实存在的！</d>\n<d p=\"213.28799438477,5,25,38979,1424428110,0,a6e2bcf4,798950642\">从今天开始，我们就是兄弟了！</d>\n<d p=\"213.28799438477,5,25,38979,1424428114,0,a6e2bcf4,798950760\">从今天开始，我们就是兄弟了！</d>\n<d p=\"213.28799438477,5,25,38979,1424428048,0,a6e2bcf4,798950840\">从今天开始，我们就是兄弟了！</d>\n<d p=\"213.28799438477,5,25,38979,1424428120,0,a6e2bcf4,798950932\">从今天开始，我们就是兄弟了！</d>\n<d p=\"213.28799438477,5,25,38979,1424428123,0,a6e2bcf4,798951013\">从今天开始，我们就是兄弟了！</d>\n<d p=\"213.28799438477,5,25,38979,1424428126,0,a6e2bcf4,798951101\">从今天开始，我们就是兄弟了！</d>\n<d p=\"213.28799438477,5,25,38979,1424428129,0,a6e2bcf4,798951179\">从今天开始，我们就是兄弟了！</d>\n<d p=\"213.28799438477,5,25,38979,1424428133,0,a6e2bcf4,798951267\">从今天开始，我们就是兄弟了！</d>\n<d p=\"213.28799438477,5,25,38979,1424428137,0,a6e2bcf4,798951352\">从今天开始，我们就是兄弟了！</d>\n<d p=\"267.88101196289,1,25,16777215,1424442008,0,c62b3fdc,799444769\">one piece是真实存在的</d>\n<d p=\"41.146999359131,1,25,16777215,1424492333,0,D23038c0,800121393\">漫画的这一段更更更更更加燃</d>\n<d p=\"241.35499572754,1,25,16777215,1424492612,0,D23038c0,800127378\">ONE PIECE 是真实存在的</d>\n<d p=\"3.3770000934601,1,25,16777215,1424505952,0,D4a490fe,800493604\">真是条不错的船！</d>\n<d p=\"5.7919998168945,1,25,16777215,1424506043,0,D4a490fe,800494123\">是我偷来的</d>\n<d p=\"7.6960000991821,1,25,16777215,1424506083,0,D4a490fe,800495108\">我的房子没了，所以我住在这里。</d>\n<d p=\"10.107000350952,1,25,16777215,1424506105,0,D4a490fe,800495732\">知道了，你的名字？</d>\n<d p=\"12.567000389099,1,25,16777215,1424506121,0,D4a490fe,800496131\">雷利</d>\n<d p=\"14.873999595642,1,25,16777215,1424506132,0,D4a490fe,800496396\">我叫罗杰</d>\n<d p=\"17.243999481201,1,25,16777215,1424506171,0,D4a490fe,800497463\">我们在此相遇是命运啊！</d>\n<d p=\"20.186000823975,1,25,16777215,1424506083,0,D4a490fe,800497757\">命运？</d>\n<d p=\"21.271999359131,1,25,16777215,1424506225,0,D4a490fe,800498932\">你想和我一起把世界颠覆吗？</d>\n<d p=\"25.049999237061,1,25,16777215,1424506243,0,D4a490fe,800499414\">为什么我要这么做？</d>\n<d p=\"27.114999771118,1,25,16777215,1424506260,0,D4a490fe,800499916\">因为那可是世界啊！</d>\n<d p=\"29.781000137329,1,25,16777215,1424506299,0,D4a490fe,800500934\">启航了，雷利！</d>\n<d p=\"37.550998687744,1,25,16777215,1424506324,0,D4a490fe,800501649\">还要我说多少次</d>\n<d p=\"40.083999633789,1,25,16777215,1424506356,0,D4a490fe,800502560\">成为我的左右手吧，罗杰！</d>\n<d p=\"43.247001647949,1,25,16777215,1424506383,0,D4a490fe,800503306\">如果我答应了你，我就不是海贼了吧</d>\n<d p=\"48.634998321533,1,25,16777215,1424506309,0,D4a490fe,800504167\">无论你邀请我多少次</d>\n<d p=\"51.673999786377,1,25,16777215,1424506419,0,D4a490fe,800504475\">金狮子</d>\n<d p=\"53.782001495361,1,25,16777215,1424506437,0,D4a490fe,800505011\">你的邀请……我拒绝！</d>\n<d p=\"57.082000732422,1,25,16777215,1424506460,0,D4a490fe,800505656\">我会把你们全员打飞的！</d>\n<d p=\"62.643001556396,1,25,16777215,1424506513,0,D4a490fe,800507201\">两年后，罗杰海贼团</d>\n<d p=\"65.583000183105,1,25,16777215,1424506533,0,D4a490fe,800507801\">征服了大航海线</d>\n<d p=\"69.716003417969,1,25,16777215,1424506471,0,D4a490fe,800508858\">哥尔多.罗杰成为了海贼王</d>\n<d p=\"73.914001464844,1,25,16777215,1424506535,0,D4a490fe,800509937\">你要死了，罗杰？</d>\n<d p=\"77.861000061035,1,25,16777215,1424506558,0,D4a490fe,800510616\">嗯，我没有多少时间了</d>\n<d p=\"81.80899810791,1,25,16777215,1424506555,0,D4a490fe,800511325\">你知道世界政府怎么称呼我吗？</d>\n<d p=\"87.819999694824,1,25,16777215,1424506669,0,D4a490fe,800511737\">黄金罗杰</d>\n<d p=\"90.662002563477,1,25,16777215,1424506700,0,D4a490fe,800512602\">我是哥尔.D.罗杰！</d>\n<d p=\"94.709999084473,1,25,16777215,1424506624,0,D4a490fe,800513236\">不是被捕</d>\n<d p=\"96.98999786377,1,25,16777215,1424506736,0,D4a490fe,800513571\">罗杰是自首的</d>\n<d p=\"100.4759979248,1,25,16777215,1424506690,0,D4a490fe,800514195\">因为我们的冒险已经到了尽头</d>\n<d p=\"105.59600067139,1,25,16777215,1424506704,0,D4a490fe,800514551\">我的财宝吗？</d>\n<d p=\"107,1,25,16777215,1424506807,0,D4a490fe,800515409\">如果你想要，就是你的</d>\n<d p=\"108.62999725342,1,25,16777215,1424506828,0,D4a490fe,800516007\">找去吧！</d>\n<d p=\"109.81199645996,1,25,16777215,1424506858,0,D4a490fe,800516796\">我把世上的全部都留在那里了！</d>\n<d p=\"114.03299713135,1,25,16777215,1424506872,0,D4a490fe,800517198\">我不会死的，伙伴</d>\n<d p=\"118.89199829102,1,25,16777215,1424506893,0,D4a490fe,800517765\">雷利先生，我真的很惊讶</d>\n<d p=\"122.33999633789,1,25,16777215,1424506944,0,D4a490fe,800519117\">在东海，有个孩子和船长说了同样的话</d>\n<d p=\"127.69200134277,1,25,16777215,1424506861,0,D4a490fe,800519551\">船长的那句誓言</d>\n<d p=\"131.74200439453,1,25,16777215,1424506991,0,D4a490fe,800520389\">我是蒙奇.D.路飞</d>\n<d p=\"134.28199768066,1,25,16777215,1424507014,0,D4a490fe,800521050\">我是要成为海贼王的男人！</d>\n<d p=\"138.14599609375,1,25,16777215,1424507032,0,D4a490fe,800521547\">海贼王，我当定了</d>\n<d p=\"141.40600585938,1,25,16777215,1424507086,0,D4a490fe,800522944\">正是如此，就算战死也没什么大不了的！</d>\n<d p=\"146.7559967041,1,25,16777215,1424507132,0,D4a490fe,800524158\">就像罗杰的意志被传承了</d>\n<d p=\"152.14799499512,1,25,16777215,1424507076,0,D4a490fe,800524542\">总有一天</d>\n<d p=\"153.58799743652,1,25,16777215,1424507179,0,D4a490fe,800525359\">会有人背负这数百年的历史</d>\n<d p=\"159.14799499512,1,25,16777215,1424507099,0,D4a490fe,800525889\">向世界发起挑战</d>\n<d p=\"165.33099365234,1,25,16777215,1424507143,0,D4a490fe,800526304\">战国</d>\n<d p=\"167.65100097656,1,25,16777215,1424507225,0,D4a490fe,800526602\">你们世界政府</d>\n<d p=\"171.13600158691,1,25,16777215,1424507237,0,D4a490fe,800526948\">一直在害怕</d>\n<d p=\"173.98699951172,1,25,16777215,1424507282,0,D4a490fe,800528150\">一场将世界颠覆的……</d>\n<d p=\"177.64399719238,1,25,16777215,1424507304,0,D4a490fe,800528779\">巨大的战争！</d>\n<d p=\"184.02699279785,1,25,16777215,1424507354,0,D4a490fe,800530179\">当那份财宝被人找到</d>\n<d p=\"188.38499450684,1,25,16777215,1424507297,0,D4a490fe,800530536\">世界将被颠覆！</d>\n<d p=\"192.15199279785,1,25,16777215,1424507386,0,D4a490fe,800531016\">终有一天会被人找到的</d>\n<d p=\"196.68200683594,1,25,16777215,1424507403,0,D4a490fe,800531493\">那一天必会到来！</d>\n<d p=\"202.50500488281,1,25,16777215,1424507318,0,D4a490fe,800531901\">艾斯！路飞！</d>\n<d p=\"205.27099609375,1,25,16777215,1424507435,0,D4a490fe,800532371\">我们一定会出海</d>\n<d p=\"208.375,1,25,16777215,1424507467,0,D4a490fe,800533207\">离开这个国家，获得自由！</d>\n<d p=\"211.97700500488,1,25,16777215,1424507491,0,D4a490fe,800533855\">从今往后，我们就是……</d>\n<d p=\"214.78300476074,1,25,16777215,1424507503,0,D4a490fe,800534143\">兄弟了！</d>\n<d p=\"218.66799926758,1,25,16777215,1424507524,0,D4a490fe,800534720\">索隆</d>\n<d p=\"219.6609954834,1,25,16777215,1424507532,0,D4a490fe,800534916\">乌索普</d>\n<d p=\"220.34300231934,1,25,16777215,1424507467,0,D4a490fe,800535078\">山治</d>\n<d p=\"221.41799926758,1,25,16777215,1424507473,0,D4a490fe,800535221\">娜美</d>\n<d p=\"222.2140045166,1,25,16777215,1424507451,0,D4a490fe,800535377\">乔巴</d>\n<d p=\"223.15600585938,1,25,16777215,1424507555,0,D4a490fe,800535550\">罗宾</d>\n<d p=\"224.09700012207,1,25,16777215,1424507561,0,D4a490fe,800535715\">弗兰奇</d>\n<d p=\"225.13800048828,1,25,16777215,1424507567,0,D4a490fe,800535879\">布鲁克</d>\n<d p=\"227.49899291992,1,25,16777215,1424507583,0,D4a490fe,800536324\">当我还是一个小鬼的时候</d>\n<d p=\"229.75199890137,1,25,16777215,1424507523,0,D4a490fe,800536679\">我就想要一个</d>\n<d p=\"231.82000732422,1,25,16777215,1424507602,0,D4a490fe,800536896\">家族！</d>\n<d p=\"237.45500183105,1,25,16777215,1424507530,0,D4a490fe,800537652\">One piece……</d>\n<d p=\"240.07200622559,1,25,16777215,1424507651,0,D4a490fe,800538220\">是真实存在的！</d>\n<d p=\"244.76899719238,1,25,16777215,1424507675,0,D4a490fe,800538874\">无论如何</d>\n<d p=\"247.24899291992,1,25,16777215,1424507697,0,D4a490fe,800539506\">男子汉必须站起来战斗！</d>\n<d p=\"252.62600708008,1,25,16777215,1424507632,0,D4a490fe,800540400\">管你是十万，还是一百万人</d>\n<d p=\"256.26699829102,1,25,16777215,1424507752,0,D4a490fe,800540986\">我们会把你们全部打飞！</d>\n<d p=\"260.22198486328,1,25,16777215,1424507764,0,D4a490fe,800541316\">进入二档</d>\n<d p=\"265.1369934082,1,25,16777215,1424507706,0,D4a490fe,800541634\">是旅行的话</d>\n<d p=\"267.08200073242,1,25,16777215,1424507787,0,D4a490fe,800541931\">你想去哪？</d>\n<d p=\"38.872001647949,1,25,16777215,1424573568,0,D942cb37,802288507\">我大海贼还能再战五百年</d>\n<d p=\"58.611999511719,1,25,16777215,1424590855,0,D8b0fb30,802717867\">海贼王的时代</d>\n<d p=\"146.86399841309,1,25,16777215,1424590943,0,D8b0fb30,802720384\">海贼王我当定了！</d>\n<d p=\"15.295999526978,1,25,16777215,1424591330,0,52c05919,802731567\">处女币  走你·~~~~</d>\n<d p=\"32.964000701904,1,25,16711680,1424754575,0,d554cc87,806508383\">看到大海贼就滚进来了</d>\n<d p=\"39.792999267578,1,25,16711680,1424754581,0,d554cc87,806508569\">看到大海贼就滚进来了看到大海贼就滚进来了</d>\n<d p=\"165.11799621582,1,25,16711680,1424754691,0,d554cc87,806511818\">尼酱</d>\n<d p=\"232.79800415039,1,25,16711680,1424754774,0,d554cc87,806513632\">家</d>\n<d p=\"251.10499572754,1,25,16711680,1424755913,0,f42e1801,806544609\">one piece 是真实存在的</d>\n<d p=\"251.10499572754,1,25,16711680,1424755922,0,f42e1801,806545274\">one piece 是真实存在的</d>\n<d p=\"251.10499572754,1,25,16711680,1424755943,0,f42e1801,806545655\">one piece 是真实存在的</d>\n<d p=\"251.10499572754,1,25,16711680,1424755949,0,f42e1801,806545809\">one piece 是真实存在的</d>\n<d p=\"11.831999778748,1,25,16777215,1424761639,0,a40512db,806718184\">被顶上来了..</d>\n<d p=\"46.11600112915,4,25,16711833,1424854284,0,feffa433,808970620\">金狮子被路飞打败纯粹开挂啊啊</d>\n<d p=\"92.056999206543,5,25,16711680,1424865646,0,338e69bf,809372294\">哥尔·D·罗杰 </d>\n<d p=\"92.056999206543,5,25,10027008,1424865644,0,338e69bf,809372722\">哥尔·D·罗杰 </d>\n<d p=\"92.056999206543,5,25,10027059,1424865664,0,338e69bf,809372987\">哥尔·D·罗杰 </d>\n<d p=\"92.056999206543,5,25,10027110,1424865670,0,338e69bf,809373250\">哥尔·D·罗杰 </d>\n<d p=\"92.056999206543,5,25,10027161,1424865677,0,338e69bf,809373527\">哥尔·D·罗杰 </d>\n<d p=\"92.056999206543,5,25,10027212,1424865684,0,338e69bf,809373786\">哥尔·D·罗杰 </d>\n<d p=\"92.056999206543,5,25,13369344,1424865674,0,338e69bf,809374063\">哥尔·D·罗杰 </d>\n<d p=\"92.056999206543,5,25,16711680,1424865685,0,338e69bf,809374361\">哥尔·D·罗杰 </d>\n<d p=\"59.888999938965,4,25,39423,1424962002,0,b3df5f38,811966145\">正是这个视频让我接触了海贼！鸣人都成了火影，路飞还会远吗！！！</d>\n<d p=\"137.23500061035,4,25,39423,1424962049,0,b3df5f38,811968746\">我是要成为海贼王的男人！！！！！！！11</d>\n<d p=\"258.0530090332,4,25,39423,1424962174,0,b3df5f38,811973639\">燃哭了</d>\n<d p=\"233.36000061035,1,25,16777215,1425194621,0,D58b9579,817447189\">家人</d>\n<d p=\"21.888000488281,1,25,16777215,1425198347,0,Def4a922,817647368\">艾斯</d>\n<d p=\"135.27699279785,1,25,3355443,1425484989,0,852f6e20,822373660\">duang duang duang我是要成为海贼王的男人！！！！</d>\n<d p=\"142.60299682617,4,25,16711680,1425487273,0,852f6e20,822411218\">为了这个决定就算是在战斗中死了，也没有什么不好！</d>\n<d p=\"142.60299682617,4,25,16711680,1425487298,0,852f6e20,822411867\">为了这个决定就算是在战斗中死了，也没有什么不好！</d>\n<d p=\"142.60299682617,4,25,16711680,1425487325,0,852f6e20,822412123\">为了这个决定就算是在战斗中死了，也没有什么不好！</d>\n<d p=\"142.60299682617,4,25,16711680,1425487332,0,852f6e20,822412221\">为了这个决定就算是在战斗中死了，也没有什么不好！</d>\n<d p=\"142.60299682617,4,25,16711680,1425487340,0,852f6e20,822412346\">为了这个决定就算是在战斗中死了，也没有什么不好！</d>\n<d p=\"142.60299682617,4,25,16711680,1425487352,0,852f6e20,822412515\">为了这个决定就算是在战斗中死了，也没有什么不好！</d>\n<d p=\"142.60299682617,4,25,16711680,1425487349,0,852f6e20,822412627\">为了这个决定就算是在战斗中死了，也没有什么不好！</d>\n<d p=\"142.60299682617,4,25,16711680,1425487372,0,852f6e20,822412796\">为了这个决定就算是在战斗中死了，也没有什么不好！</d>\n<d p=\"142.60299682617,4,25,16711680,1425487378,0,852f6e20,822412900\">为了这个决定就算是在战斗中死了，也没有什么不好！</d>\n<d p=\"121.3570022583,1,25,16777215,1425532588,0,3d2f9c6f,822769202\">这辈子能遇见海贼真是太好了QWQ</d>\n<d p=\"20.948999404907,1,25,16711680,1425532648,0,e336fe2a,822769921\">BGM 一响就想哭啊</d>\n<d p=\"66.444999694824,1,25,16711680,1425532693,0,e336fe2a,822770860\">红发 帅哭我</d>\n<d p=\"83.811996459961,1,25,16711680,1425532685,0,e336fe2a,822771245\">嗷嗷嗷嗷  老爹</d>\n<d p=\"131.81900024414,1,25,16711680,1425532758,0,e336fe2a,822772297\">泪目了</d>\n<d p=\"161.5659942627,1,25,16711680,1425532788,0,e336fe2a,822772949\">海贼王~~~我当定了~~~~~</d>\n<d p=\"220.44999694824,1,25,16711680,1425532847,0,e336fe2a,822774236\">泪目了  嗷嗷嗷嗷嗷</d>\n<d p=\"0,1,25,16777215,1425533291,0,Dddd073f,822784162\">燃却哭</d>\n<d p=\"128.13400268555,1,25,0,1425558276,0,cbeb417e,823509829\">2015.3.5</d>\n<d p=\"213.92900085449,5,25,0,1425558362,0,cbeb417e,823512575\">                    兄弟</d>\n<d p=\"11.60000038147,5,25,39321,1425608629,0,23f89c4b,824204313\">这是最让我感动的一幕</d>\n<d p=\"128.22300720215,5,25,39321,1425608792,0,23f89c4b,824205701\">这个BGM不是Two steps from hell的么</d>\n<d p=\"57.779998779297,1,25,16777215,1425902322,0,8128939d,829764467\">卧槽 这句打倒你们全员戳中燃点</d>\n<d p=\"117.88999938965,1,25,16777215,1425902394,0,8128939d,829766185\">伙伴！！！</d>\n<d p=\"186.48199462891,1,25,16777215,1425902538,0,8128939d,829769106\">巨大战争由路飞他们打响</d>\n<d p=\"226.98399353027,1,25,16777215,1425902596,0,8128939d,829770577\">感谢地下的白字菌</d>\n<d p=\"40.728000640869,1,25,16777215,1425908175,0,e4cbbc07,829915427\">15.3.9</d>\n<d p=\"241.03100585938,4,25,16711680,1425980784,0,fa41b032,830583593\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"241.03100585938,4,25,16711680,1425980758,0,fa41b032,830583652\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"241.03100585938,4,25,16711680,1425980764,0,fa41b032,830583701\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"241.03100585938,4,25,16711680,1425980787,0,fa41b032,830583778\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"241.03100585938,4,25,16711680,1425980806,0,fa41b032,830583844\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"241.03100585938,4,25,16711680,1425980780,0,fa41b032,830583895\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"241.03100585938,4,25,16711680,1425980817,0,fa41b032,830583954\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"20.114999771118,1,25,16777215,1426309151,0,856f85c4,834420130\">去吧处女币</d>\n<d p=\"10.972999572754,1,25,16777215,1426311105,0,352f77b2,834464319\">路飞我男神</d>\n<d p=\"21.343999862671,1,25,16777215,1426311144,0,352f77b2,834464557\">路飞我要嫁给你</d>\n<d p=\"13.085000038147,1,25,16777215,1426326448,0,Da567c5a,834823625\">爱爱爱爱爱</d>\n<d p=\"212.03300476074,1,25,16777215,1426326688,0,Da567c5a,834829587\">童年萨博的声优和鸣人的是同一个</d>\n<d p=\"121.45999908447,1,25,16777215,1426414157,0,f1fc8aa9,836444060\">为了D</d>\n<d p=\"164.79299926758,1,25,16777215,1426414201,0,f1fc8aa9,836445064\">为了D!!!!!!!!!!</d>\n<d p=\"242.59300231934,1,25,16777215,1426414236,0,f1fc8aa9,836446626\">老爹超越D了</d>\n<d p=\"236.94999694824,1,25,16777215,1426598054,0,117ce9a1,838718251\">one plece 是存在的</d>\n<d p=\"252.20100402832,1,25,16777215,1426673078,0,D5bc05f8,839397514\">气枪</d>\n<d p=\"41.779998779297,1,25,16777215,1427018468,0,315d5edf,843831876\">````````````````````````</d>\n<d p=\"50.439998626709,1,25,16777215,1427018486,0,315d5edf,843832278\">燃·······</d>\n<d p=\"243.39999389648,5,25,16777215,1427024264,0,378ea0ac,843964218\">One piece 是真实存在的</d>\n<d p=\"243.39999389648,5,25,16777215,1427024270,0,378ea0ac,843964382\">One piece 是真实存在的</d>\n<d p=\"243.39999389648,5,25,16777215,1427024269,0,378ea0ac,843964493\">One piece 是真实存在的</d>\n<d p=\"243.39999389648,5,25,16777215,1427024274,0,378ea0ac,843964603\">One piece 是真实存在的</d>\n<d p=\"243.39999389648,5,25,16777215,1427024283,0,378ea0ac,843964680\">One piece 是真实存在的</d>\n<d p=\"243.39999389648,5,25,16777215,1427024278,0,378ea0ac,843964759\">One piece 是真实存在的</d>\n<d p=\"243.39999389648,5,25,16777215,1427024290,0,378ea0ac,843964863\">One piece 是真实存在的</d>\n<d p=\"243.39999389648,5,25,16777215,1427024286,0,378ea0ac,843964940\">One piece 是真实存在的</d>\n<d p=\"243.39999389648,5,25,16777215,1427024291,0,378ea0ac,843965028\">One piece 是真实存在的</d>\n<d p=\"158.89599609375,1,25,16777215,1427117694,0,f42dd7dc,845099725\">艾斯</d>\n<d p=\"244.80799865723,1,25,16777215,1427118365,0,3a102c6b,845114510\">ONE piece 是真是存在的！ONE piece 是真是存在的！</d>\n<d p=\"115.92500305176,5,25,16711680,1427120612,0,0369517e,845162308\">高能</d>\n<d p=\"223.25999450684,5,25,16711680,1427120718,0,0369517e,845164443\">非战斗人员撤离！！！</d>\n<d p=\"199.83500671387,1,25,16777215,1427120889,0,cfd9cf33,845167650\">少主是将成为海贼王的男人！</d>\n<d p=\"200.66499328613,1,25,16777215,1427120908,0,cfd9cf33,845168019\">黑胡子是将成为海贼王的男人！</d>\n<d p=\"244.97399902344,1,25,16711680,1427120948,0,6649db46,845168811\">ONE PIECE 是真实存在的</d>\n<d p=\"233.30200195312,4,25,16711680,1427125802,0,b7da84b8,845253952\">这里应该翻译成：家人</d>\n<d p=\"237.60600280762,1,25,16777215,1427211030,0,Df44541c,846049581\">泪目</d>\n<d p=\"173.55999755859,1,25,16777215,1427382584,0,b89efdaa,847614399\">前方高能!!!</d>\n<d p=\"191.41700744629,1,25,15138834,1427382624,0,b89efdaa,847615080\">前方高能！</d>\n<d p=\"223.66600036621,1,25,15138834,1427382656,0,b89efdaa,847615895\">前方！前方高能！</d>\n<d p=\"4.4460000991821,1,25,16777215,1427382691,0,Dd3a1696,847616202\">脏</d>\n<d p=\"16.068000793457,1,25,16777215,1427382702,0,Dd3a1696,847616409\">赞</d>\n<d p=\"4.3359999656677,1,25,16777215,1427449732,0,d3b3174c,848084188\">鸡皮疙瘩</d>\n<d p=\"4.3359999656677,1,25,16777215,1427449745,0,d3b3174c,848084303\">鸡皮疙瘩</d>\n<d p=\"15.670999526978,1,25,16777215,1427451420,0,D3f5e227,848110327\">哇哈哈哈</d>\n<d p=\"41.793998718262,1,25,16777215,1427453015,0,80e69887,848137766\">海贼是我每周的期待</d>\n<d p=\"145.75900268555,1,25,16777215,1427453127,0,80e69887,848139635\">我是要成为海贼王的男人</d>\n<d p=\"248.55200195312,1,25,16777215,1427453230,0,80e69887,848141437\">太棒了</d>\n<d p=\"38.173999786377,1,25,16777215,1427467291,0,ec67de07,848470274\">3.27</d>\n<d p=\"140.88499450684,1,25,16777215,1427467840,0,Dfa785a6,848482635\">此生无悔入海贼！追梦路上永相随！！</d>\n<d p=\"249.35800170898,1,25,16777215,1427467939,0,Dfa785a6,848485014\">此生无悔入海贼，追梦路上永相随！</d>\n<d p=\"241.09700012207,1,25,13369344,1427469265,0,917fc2fc,848512786\">One Piece是真实存在的！</d>\n<d p=\"34.198001861572,1,25,16776960,1427471182,0,6e5769b0,848549798\">我大海贼还能再战5000年！！！</d>\n<d p=\"160.78500366211,1,25,16776960,1427471309,0,6e5769b0,848552029\">白胡子！！！！！！</d>\n<d p=\"257.42300415039,1,25,16776960,1427471406,0,6e5769b0,848553758\">ONEPIECE是真是存在的！！！！！！！</d>\n<d p=\"230.79400634766,1,25,16777215,1427534633,0,b89efdaa,849197716\">高能!!!!!!!!!!!</d>\n<d p=\"195.97200012207,1,25,16777215,1427535908,0,D10d14d9,849223013\">欧亚及。。。</d>\n<d p=\"206.14100646973,1,25,16777215,1427535916,0,D10d14d9,849223207\">@罗</d>\n<d p=\"218.10699462891,1,25,16777215,1427535938,0,D10d14d9,849223430\">萨博！！！！！</d>\n<d p=\"215.74000549316,5,25,16711680,1427539322,0,59e551cd,849296931\">从今天开始 我们就是兄弟了!!!</d>\n<d p=\"215.74000549316,5,25,16776960,1427539351,0,59e551cd,849297526\">从今天开始    我们就是兄弟了!!!</d>\n<d p=\"215.74000549316,5,25,3355596,1427539361,0,59e551cd,849297741\">从今天开始 我们就是兄弟了!!!</d>\n<d p=\"215.74000549316,5,25,3342489,1427539373,0,59e551cd,849298038\">从今天开始 我们就是兄弟了!!!</d>\n<d p=\"215.74000549316,5,25,16711833,1427539380,0,59e551cd,849298195\">从今天开始 我们就是兄弟了!!!</d>\n<d p=\"241.95500183105,1,25,16777215,1427549984,0,28efa348,849634094\">ONE PIECE是真实纯在的！！！</d>\n<d p=\"241.29899597168,1,25,16777215,1427550111,0,28efa348,849637648\">ONE PIECE是真实纯在的！！！</d>\n<d p=\"252.46000671387,5,25,16711935,1427550184,0,28efa348,849639766\">ONE PIECE是真实纯在的！！！</d>\n<d p=\"124.01899719238,1,25,16777215,1427812523,0,63b02486,852759781\">看几次燃几次</d>\n<d p=\"169.30799865723,1,25,16777215,1427812580,0,63b02486,852760588\">王者的声音啊！！！！</d>\n<d p=\"269.01501464844,5,25,16751001,1427814346,0,4422da04,852792182\">二次元。！~</d>\n<d p=\"269.01501464844,5,25,16751001,1427814352,0,4422da04,852792291\">二次元。！~</d>\n<d p=\"269.01501464844,5,25,16751001,1427814347,0,4422da04,852792409\">二次元。！~</d>\n<d p=\"269.01501464844,5,25,16751001,1427814366,0,4422da04,852792541\">二次元。！~</d>\n<d p=\"269.01501464844,5,25,16751001,1427814372,0,4422da04,852792652\">二次元。！~</d>\n<d p=\"142.33599853516,1,25,16711680,1427862894,0,c79e7ad9,853032251\">我是要成为海贼王的男人</d>\n<d p=\"0,5,25,13369344,1427875782,0,3e489c58,853170063\">我的处女币就给你了！</d>\n<d p=\"42.736000061035,1,25,16777215,1427876787,0,46d7bb02,853178772\">没有一起看得小伙伴？</d>\n<d p=\"88.361999511719,5,25,16737792,1428197796,0,c578058b,857132567\">大爱海贼！</d>\n<d p=\"136.77900695801,5,25,16737792,1428197850,0,c578058b,857133235\">我是要成为海贼王的男人！</d>\n<d p=\"203.02200317383,5,25,16737792,1428197917,0,c578058b,857134026\">老爹霸气</d>\n<d p=\"244.1190032959,5,25,16737792,1428197967,0,c578058b,857134650\">one picec，是真实存在的</d>\n<d p=\"15.239999771118,5,25,15138834,1428207865,0,e975c684,857340346\">罗杰</d>\n<d p=\"18.920000076294,5,25,15138834,1428207879,0,e975c684,857340706\">命运</d>\n<d p=\"22.639999389648,5,25,15138834,1428207895,0,e975c684,857341132\">天翻地覆</d>\n<d p=\"28.040000915527,5,25,15138834,1428207912,0,e975c684,857341566\">全世界</d>\n<d p=\"240.41999816895,1,25,16777215,1428208252,0,ff45d956,857350106\">one  piece 是真实存在的！！</d>\n<d p=\"34.499000549316,5,25,13369344,1428473927,0,f833063f,861693274\">帽子是罗杰给红发 红发给路飞的</d>\n<d p=\"98.50700378418,4,25,13369344,1428475173,0,f833063f,861703717\">块顶起来啊</d>\n<d p=\"61.151000976562,1,25,16777215,1428498581,0,D05ce841,862048380\">one piece是真实存在的 </d>\n<d p=\"99.499000549316,1,25,16777215,1428498619,0,D05ce841,862049161\">d</d>\n<d p=\"135.99299621582,1,25,16777215,1428498692,0,D05ce841,862050661\">我是要成为海贼王的男人！！！！  </d>\n<d p=\"141.07600402832,1,25,16777215,1428498702,0,D05ce841,862050875\">我是要成为海贼王的男人！！！！  </d>\n<d p=\"238.11000061035,1,25,16777215,1428498838,0,D6673695,862053695\">ONE PIECE是真实存在的！！！</d>\n<d p=\"251.21000671387,1,25,16777215,1428498851,0,D6673695,862053991\">ONE PIECE是真实存在的！！！</d>\n<d p=\"26.645000457764,1,25,16776960,1428498946,0,02ea873b,862056064\">处女弹幕和处女币都献给你了！！！！</d>\n<d p=\"133.3390045166,1,25,16776960,1428499103,0,02ea873b,862059088\">好想哭啊！！！！！</d>\n<d p=\"4.7839999198914,1,25,16777215,1428499478,0,D3f0ff40,862066783\">2015.4.8</d>\n<d p=\"141.88600158691,1,25,16777215,1428499730,0,D3f0ff40,862071815\">我是要成为海贼王的男人</d>\n<d p=\"151.61599731445,1,25,16777215,1428499797,0,D3f0ff40,862073176\">尼桑  大骗子 快回来</d>\n<d p=\"245.0590057373,1,25,16777215,1428499983,0,D3f0ff40,862076926\">ONE PIECE 是真正存在的</d>\n<d p=\"2.2400000095367,1,25,52479,1428502412,0,3c899f96,862125901\">会员第一发弹幕就交给你了！！！</d>\n<d p=\"31.58099937439,5,25,52479,1428502441,0,3c899f96,862126505\">处女币已交</d>\n<d p=\"228.03399658203,1,25,16777215,1428502702,0,D95d5fe4,862131783\">泪目。</d>\n<d p=\"4.6350002288818,1,18,52377,1428575484,0,98f38941,862610424\">默默的掏出洛阳铲</d>\n<d p=\"79.797996520996,1,25,16777215,1428575596,0,e6a3b2cc,862611843\">我大海贼</d>\n<d p=\"236.41799926758,1,25,16777215,1428575752,0,e6a3b2cc,862613997\">卧槽  然哭~~~~~~~~~~~~</d>\n<d p=\"252.85600280762,1,25,16777215,1428576361,0,70a770e9,862622064\">one piece是真实存在的！！！！</d>\n<d p=\"259.08898925781,1,25,16777215,1428576367,0,70a770e9,862622152\">one piece是真实存在的！！！！</d>\n<d p=\"141.32299804688,1,25,16777215,1428576476,0,6959cfdf,862623713\">忍不住眼泪了</d>\n<d p=\"148.77299499512,1,25,16777215,1428577840,0,d00e1ec3,862643310\">..</d>\n<d p=\"22.365999221802,1,25,16777215,1428578570,0,D7f9d5e8,862654717\">命运的邂逅。</d>\n<d p=\"83.218002319336,1,25,16777215,1428578631,0,D7f9d5e8,862655667\">老爹</d>\n<d p=\"8.5640001296997,1,25,16777215,1428578718,0,19e76540,862657020\">既然你们都喜欢尼桑，那雷利大爷让我来。</d>\n<d p=\"183.86799621582,1,25,16777215,1428578732,0,D7f9d5e8,862657225\">老爹。。 </d>\n<d p=\"3.4479999542236,1,25,16777215,1428578768,0,Df1b52d1,862657799\">23333333333333333333</d>\n<d p=\"238.83000183105,1,25,16777215,1428578786,0,D7f9d5e8,862658081\">老爹。。</d>\n<d p=\"131.12399291992,1,25,16777215,1428578896,0,Df1b52d1,862659815\">想要我的财宝吗</d>\n<d p=\"62.02799987793,5,25,16724736,1428578956,0,8b1fbe72,862660762\">顶我大海贼</d>\n<d p=\"242.04699707031,1,25,16777215,1428579042,0,Df1b52d1,862662091\">one piece！！！！是真实存在的！</d>\n<d p=\"127.12300109863,1,25,16776960,1428580492,0,7d85b9b0,862686547\">大家好,我是山治黄~~~</d>\n<d p=\"5.6929998397827,1,25,16711680,1428580738,0,7d85b9b0,862691205\">kai.sou.kou.ao.ni.ou.lei.wa.na.lu.</d>\n<d p=\"263.27801513672,1,25,3368652,1428582293,0,a6e0e471,862719632\">ONE PIECE</d>\n<d p=\"177.91900634766,1,25,16777215,1428583395,0,Ddb7ab52,862804463\">佐罗我喜欢你！！</d>\n<d p=\"0,1,25,16777215,1428584294,0,D33b5b6f,862820880\">海贼</d>\n<d p=\"241.51899719238,5,25,13260,1428654976,0,22419cf3,863355391\">ONE PIECE是真实纯在的！！！</d>\n<d p=\"241.51899719238,5,25,13260,1428654986,0,22419cf3,863355480\">キラメキ</d>\n<d p=\"241.51899719238,5,25,13260,1428654997,0,22419cf3,863355595\">ONE PIECE是真实纯在的！！！</d>\n<d p=\"241.51899719238,5,25,13260,1428655007,0,22419cf3,863355700\">ONE PIECE是真实纯在的！！！</d>\n<d p=\"241.51899719238,5,25,13260,1428655019,0,22419cf3,863355824\">ONE PIECE是真实纯在的！！！</d>\n<d p=\"241.51899719238,5,25,13260,1428655031,0,22419cf3,863355943\">ONE PIECE是真实纯在的！！！</d>\n<d p=\"241.51899719238,5,25,13260,1428655040,0,22419cf3,863356035\">ONE PIECE是真实纯在的！！！</d>\n<d p=\"242.03799438477,5,25,39423,1428655055,0,22419cf3,863356189\">ONE PIECE是真实纯在的！！！</d>\n<d p=\"242.03799438477,5,25,39423,1428655065,0,22419cf3,863356297\">ONE PIECE是真实纯在的！！！</d>\n<d p=\"242.03799438477,5,25,39423,1428655076,0,22419cf3,863356740\">ONE PIECE是真实纯在的！！！</d>\n<d p=\"126.52899932861,1,25,16777215,1428737487,0,3d2f9c6f,864423707\">DDDDDDDDDDDDDD!</d>\n<d p=\"57.640998840332,1,25,16777215,1428740328,0,20ebf48e,864477389\">吾大海贼！</d>\n<d p=\"63.277000427246,1,25,16777215,1428740333,0,20ebf48e,864477489\">吾大海贼！</d>\n<d p=\"27.502000808716,4,25,3407718,1428761283,0,99637f0a,864997890\">啊啊啊啊啊啊啊 啊</d>\n<d p=\"51.345001220703,1,25,16777215,1428761711,0,D33a08c4,865010915\">因为那帽子是罗杰给红发的</d>\n<d p=\"0,1,25,16777215,1428761748,0,3c499f68,865012013\">看见路飞的草帽我就进来了</d>\n<d p=\"139.90400695801,4,18,16711680,1428900403,0,893a21e5,866746591\">我是要成为海贼王的男人</d>\n<d p=\"241.31900024414,4,25,16776960,1428900547,0,893a21e5,866748552\">ONE PICE是真实存在的！！！！！</d>\n<d p=\"22.878999710083,1,25,16776960,1428902532,0,2ff34e64,866775593\">其实罗杰只是想骗船。。。。</d>\n<d p=\"42.055000305176,1,25,16777215,1428902642,0,f242dc3f,866776979\">本名雷叔</d>\n<d p=\"136.0059967041,1,25,16777215,1428902736,0,f242dc3f,866778241\">D之意志的继承者</d>\n<d p=\"147.1130065918,1,25,16711935,1428902747,0,f242dc3f,866778378\">D之意志的继承者</d>\n<d p=\"28.399000167847,1,25,16777215,1428903608,0,694a75ec,866788572\">不自然的全身打颤，燃起来了</d>\n<d p=\"138.33299255371,5,25,0,1428903760,0,694a75ec,866790151\">海贼王在这，谁要做我的男人？</d>\n<d p=\"138.33299255371,5,25,0,1428903765,0,694a75ec,866790219\">海贼王在这，谁要做我的男人？</d>\n<d p=\"138.33299255371,5,25,0,1428903770,0,694a75ec,866790284\">海贼王在这，谁要做我的男人？</d>\n<d p=\"229.05400085449,1,25,16777215,1428903798,0,d4065d7a,866790592\">ONE PIECE是真实纯在的！！！</d>\n<d p=\"194.33500671387,1,25,16777215,1428934457,0,6e6b440e,867196370\">泪流满面的你不是一个人</d>\n<d p=\"63.85599899292,1,25,16777215,1428935216,0,d164eead,867211980\">果然海贼最燃了</d>\n<d p=\"88.084999084473,1,25,16777215,1428935246,0,d164eead,867212563\">白胡子</d>\n<d p=\"125.68900299072,1,25,16777215,1428935284,0,d164eead,867213348\">新的时代开始了</d>\n<d p=\"140.57000732422,1,25,16777215,1428935298,0,d164eead,867213631\">是要成为海贼王的男人</d>\n<d p=\"195.31500244141,1,25,16777215,1428935360,0,d164eead,867214789\">艾斯</d>\n<d p=\"219.80099487305,1,25,16777215,1428935384,0,d164eead,867215197\">白胡子的死代表了一个时代的结束</d>\n<d p=\"222.02000427246,1,25,16777215,1428935390,0,d164eead,867215343\">新的一代来了</d>\n<d p=\"196.18499755859,1,25,16777215,1428935422,0,d164eead,867216007\">浑身的鸡皮疙瘩</d>\n<d p=\"207.76100158691,1,25,16777215,1428935432,0,d164eead,867216248\">萨博</d>\n<d p=\"231.87899780273,1,25,16777215,1428935456,0,d164eead,867216727\">白胡子</d>\n<d p=\"239.12199401855,1,25,16777215,1428935465,0,d164eead,867216943\">家族</d>\n<d p=\"259.50201416016,1,25,16777215,1428935484,0,d164eead,867217357\">雷利</d>\n<d p=\"266.86401367188,1,25,16777215,1428935491,0,d164eead,867217535\">熊</d>\n<d p=\"140.12399291992,1,25,16777215,1429061819,0,c578058b,868224844\">我是要成为海贼王的男人！</d>\n<d p=\"243.94700622559,4,25,16737792,1429061999,0,c578058b,868225521\">one  piece 是真是存在的！！！</d>\n<d p=\"208.30000305176,1,25,16777215,1429062106,0,8fd38723,868225910\">全程高能啊！</d>\n<d p=\"229.77499389648,1,25,16777215,1429062132,0,8fd38723,868226028\">新时代开启！</d>\n<d p=\"16.160999298096,1,25,16777215,1429062388,0,b4369dbc,868227045\">2015.4.15</d>\n<d p=\"172.96499633789,1,25,16777215,1429064631,0,Df8909dc,868236742\">金狮子</d>\n<d p=\"100.7679977417,1,25,16777215,1429064726,0,66050249,868237157\">D的意识</d>\n<d p=\"108.75800323486,1,25,16777215,1429065584,0,fb10339c,868241757\">D家族就是这么厉害</d>\n<d p=\"112.01999664307,1,25,3381759,1429067565,0,970bcdab,868253752\">看着要哭了</d>\n<d p=\"53.613998413086,1,25,16777215,1429067783,0,63ffb5f3,868254908\">我大海贼</d>\n<d p=\"21.502000808716,1,25,39219,1429067946,0,2bb0a203,868255856\">海贼</d>\n<d p=\"44.282001495361,1,25,16777215,1429069705,0,8aa25112,868267083\">好燃</d>\n<d p=\"199.11399841309,1,25,16777215,1429069875,0,8aa25112,868268262\">白胡子老爹!!!!!!!!!!!!!!</d>\n<d p=\"243.01100158691,1,25,16777215,1429069922,0,8aa25112,868268564\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"265.92599487305,1,25,16777215,1429069946,0,8aa25112,868268736\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"32.506000518799,1,25,16777215,1429070062,0,8aa25112,868269565\">大海賊王永遠不會完結</d>\n<d p=\"244.08799743652,1,25,16777215,1429070312,0,8aa25112,868271435\">ONE PIECE 是真实存在的！！！</d>\n<d p=\"253.16799926758,1,25,16777215,1429070321,0,8aa25112,868271504\">ONE PIECE 是真实存在的！！！ONE PIECE 是真实存在的！！！</d>\n<d p=\"192.15199279785,1,25,16777215,1429083522,0,84fb4afb,868400255\">痛哭</d>\n<d p=\"245.27000427246,1,25,16777215,1429083624,0,84fb4afb,868400958\">One piece是真实存在的！！！</d>\n<d p=\"17.472999572754,1,25,16777215,1429102935,0,5b63d130,868655384\">2015.4.15</d>\n<d p=\"92.098999023438,1,25,16777215,1429158921,0,8aa25112,869023416\">我是哥爾·羅傑！！</d>\n<d p=\"243.02499389648,1,25,16777215,1429159077,0,8aa25112,869025204\">ONE PIECE是真实存在的！！！！！</d>\n<d p=\"154.77099609375,1,25,16777215,1429159687,0,10f6c6da,869032918\">尼桑！！！！！！！！！！！</d>\n<d p=\"242.05700683594,1,25,16777215,1429159774,0,10f6c6da,869034081\">老爹！！！！！！！</d>\n<d p=\"47.671001434326,1,25,16777215,1429159829,0,905236d9,869034798\">我大海贼还可以再战100000000000000000年</d>\n<d p=\"51.262001037598,1,25,16777215,1429159883,0,905236d9,869035502\">海贼王的弹幕我来补</d>\n<d p=\"97.217002868652,1,25,16777215,1429159940,0,905236d9,869036230\">海贼王</d>\n<d p=\"203.15100097656,4,25,16777215,1429160099,0,ae457321,869038268\">我哭了</d>\n<d p=\"11.362999916077,1,25,16777215,1429160378,0,fb76332f,869041826\">真的是可以看到鸡皮疙瘩都起来的！！！！！！！！！！！</d>\n<d p=\"34.64400100708,1,25,16777215,1429160401,0,fb76332f,869042126\">可以大海贼尅呀再喊100年！</d>\n<d p=\"97.686996459961,1,25,16777215,1429160464,0,fb76332f,869042999\">大家好  我是海贼王</d>\n<d p=\"136.05599975586,1,25,16777215,1429161706,0,D80304e5,869058163\">我是要成为海贼王的男人！</d>\n<d p=\"239.40299987793,1,25,16777215,1429161810,0,D80304e5,869059360\">onepiece是真是存在的！！！</d>\n<d p=\"2.0680000782013,1,25,16777215,1429162126,0,1168a0a7,869062990\">各种高能</d>\n<d p=\"86.733001708984,1,25,65280,1429190809,0,d0443a1d,869401863\">帅哭了</d>\n<d p=\"16.908000946045,1,25,16777215,1429191073,0,D135eb85,869406837\">OP！！！！！！！</d>\n<d p=\"160.85699462891,1,25,16777215,1429191201,0,D135eb85,869409270\">路飞是要要成为海贼王的男人！罗杰的男人！</d>\n<d p=\"232.93499755859,1,25,16777215,1429191273,0,D135eb85,869410591\">路飞的时代开始了！</d>\n<d p=\"247.20599365234,1,25,16777215,1429191287,0,D135eb85,869410881\">纯在的！！！！！</d>\n<d p=\"243.80700683594,1,25,16777215,1429191380,0,3a102c6b,869412652\"> one piece 是真实存在的</d>\n<d p=\"88.317001342773,1,25,16777215,1429191973,0,bfed89e4,869425181\">黄金罗杰！！！！！！！海贼王！！！</d>\n<d p=\"9.6560001373291,1,25,65535,1429192094,0,38e15e2e,869427451\">我大海贼！！！</d>\n<d p=\"125.36000061035,1,25,65535,1429192210,0,38e15e2e,869429627\">来了！！</d>\n<d p=\"208.18800354004,1,25,65535,1429192293,0,38e15e2e,869431191\">高能！！</d>\n<d p=\"226.38499450684,1,25,65535,1429192311,0,38e15e2e,869431538\">这个真高能</d>\n<d p=\"17.042999267578,1,25,16777215,1429192812,0,D77cec3d,869440866\">又顶上来了。。。</d>\n<d p=\"30.750999450684,1,25,16777215,1429192869,0,2bded35e,869441923\">野生字幕君.....</d>\n<d p=\"211.54800415039,1,25,16777215,1429193792,0,da10a434,869459113\">第一?</d>\n<d p=\"233.42599487305,1,25,16777215,1429354637,0,0369517e,871499733\">家族</d>\n<d p=\"104.81400299072,1,25,16777215,1429354834,0,4331a971,871504208\">顶上去</d>\n<d p=\"177.93800354004,4,25,16777215,1429355099,0,2586dc16,871510330\">这群大神- -把世界毁灭吧</d>\n<d p=\"138.80200195312,1,25,16777215,1429355481,0,d5795fa6,871519352\">我是要成为海贼王的男人!!!</d>\n<d p=\"57.985000610352,1,25,16777215,1429355683,0,647b8b03,871524233\">全身发麻</d>\n<d p=\"160.98599243164,1,25,16777215,1429355993,0,647b8b03,871531835\">乌索普大神</d>\n<d p=\"83.330001831055,1,25,16777215,1429356309,0,D600ae21,871539821\">大爱海贼！！！</d>\n<d p=\"130.50199890137,1,25,16777215,1429363607,0,D8951e28,871767841\">这可是我大海贼</d>\n<d p=\"133.91400146484,1,25,16777215,1429363622,0,D8951e28,871768241\">我大海贼</d>\n<d p=\"215.36500549316,1,25,16777215,1429363703,0,D8951e28,871770528\">兄弟！</d>\n<d p=\"232.12300109863,1,25,16777215,1429363720,0,D8951e28,871770966\">家人</d>\n<d p=\"242.07099914551,1,25,16777215,1429406732,0,8aa25112,872287609\">ONE PIECE是真实存在的！！！</d>\n<d p=\"231.62199401855,1,25,16777215,1429410072,0,D2ae5452,872328175\">家人</d>\n<d p=\"160.28500366211,1,25,16777215,1429410088,0,f445ae39,872328403\">老爹</d>\n<d p=\"265.78601074219,1,25,16777215,1429410194,0,f445ae39,872329870\">苦苦苦了</d>\n<d p=\"176.81700134277,1,25,16777215,1429410452,0,D9b3c402,872333665\">壮哉我大凤凰</d>\n<d p=\"138.85800170898,1,25,16724838,1429449660,0,5aac4b77,873247734\">我是要成为看完海贼王的男人啊</d>\n<d p=\"4.6620001792908,1,25,16777215,1429856290,0,c561fe40,877074869\">aaaaaaaaaaaaaaa燃哭</d>\n<d p=\"18.124000549316,1,25,16777215,1429859962,0,D2d2c9c2,877109627\">我大海贼还能再战500年</d>\n<d p=\"28.666999816895,1,25,16777215,1429859972,0,D2d2c9c2,877109723\">那可是全世界啊</d>\n<d p=\"91.503997802734,1,25,16777215,1429860035,0,D2d2c9c2,877110301\">我是哥尔D罗杰啊</d>\n<d p=\"135.8990020752,1,25,16777215,1429860089,0,D2d2c9c2,877110757\">我是要成为海贼王的男人</d>\n<d p=\"142.52600097656,1,25,16777215,1429860114,0,D2d2c9c2,877110980\">为了这个决定就算在战斗中战死了 也没什么</d>\n<d p=\"212.78300476074,1,25,16777215,1429860201,0,D2d2c9c2,877111880\">从今天开始 我们就是：</d>\n<d p=\"238.16299438477,1,25,16777215,1429860255,0,D2d2c9c2,877112386\">ONE PIECE 是真实存在的！！！！</d>\n<d p=\"43.346000671387,1,25,16777215,1429883495,0,Dd89719f,877513901\">海贼王的团队！！</d>\n<d p=\"4.9390001296997,5,25,10027008,1429883673,0,681e51cc,877518187\">我大海贼还能再战五百年！！！</d>\n<d p=\"4.9390001296997,5,25,10040064,1429883673,0,681e51cc,877518188\">我大海贼还能再战五百年！！！</d>\n<d p=\"4.9390001296997,5,25,10053120,1429883679,0,681e51cc,877518335\">我大海贼还能再战五百年！！！</d>\n<d p=\"4.9390001296997,5,25,10066176,1429883685,0,681e51cc,877518457\">我大海贼还能再战五百年！！！</d>\n<d p=\"4.9390001296997,5,25,10066227,1429883729,0,681e51cc,877519458\">我大海贼还能再战五百年！！！</d>\n<d p=\"4.9390001296997,5,25,10053171,1429883729,0,681e51cc,877519459\">我大海贼还能再战五百年！！！</d>\n<d p=\"7.3280000686646,1,25,3407871,1429883910,0,681e51cc,877523572\">这辈子能遇到ONE PIECE真是太好了！QAQ</d>\n<d p=\"7.3280000686646,1,25,3394815,1429883917,0,681e51cc,877523720\">这辈子能遇到ONE PIECE真是太好了！QAQ</d>\n<d p=\"7.3280000686646,1,25,3381759,1429883924,0,681e51cc,877523885\">这辈子能遇到ONE PIECE真是太好了！QAQ</d>\n<d p=\"7.3280000686646,1,25,3368703,1429883930,0,681e51cc,877524011\">这辈子能遇到ONE PIECE真是太好了！QAQ</d>\n<d p=\"7.3280000686646,1,25,3355647,1429883936,0,681e51cc,877524169\">这辈子能遇到ONE PIECE真是太好了！QAQ</d>\n<d p=\"7.3280000686646,1,25,3342591,1429883942,0,681e51cc,877524323\">这辈子能遇到ONE PIECE真是太好了！QAQ</d>\n<d p=\"7.3280000686646,1,25,3342540,1429883948,0,681e51cc,877524453\">这辈子能遇到ONE PIECE真是太好了！QAQ</d>\n<d p=\"7.3280000686646,1,25,3355596,1429883954,0,681e51cc,877524575\">这辈子能遇到ONE PIECE真是太好了！QAQ</d>\n<d p=\"7.3280000686646,1,25,3381708,1429883960,0,681e51cc,877524700\">这辈子能遇到ONE PIECE真是太好了！QAQ</d>\n<d p=\"7.3280000686646,1,25,3394764,1429883967,0,681e51cc,877524845\">这辈子能遇到ONE PIECE真是太好了！QAQ</d>\n<d p=\"118.92500305176,5,25,13369344,1429884946,0,681e51cc,877547876\">路飞！D之意志的传承者！！</d>\n<d p=\"211.34399414062,5,25,16777215,1429885154,0,681e51cc,877565933\">ASL之羁绊永不解体！兄弟情义永不解散！</d>\n<d p=\"211.34399414062,5,25,16764108,1429885160,0,681e51cc,877566083\">ASL之羁绊永不解体！兄弟情义永不解散！</d>\n<d p=\"211.34399414062,5,25,16751001,1429885167,0,681e51cc,877566221\">ASL之羁绊永不解体！兄弟情义永不解散！</d>\n<d p=\"211.34399414062,5,25,16737894,1429885173,0,681e51cc,877566320\">ASL之羁绊永不解体！兄弟情义永不解散！</d>\n<d p=\"211.34399414062,5,25,16724787,1429885179,0,681e51cc,877566458\">ASL之羁绊永不解体！兄弟情义永不解散！</d>\n<d p=\"211.34399414062,5,25,16711680,1429885185,0,681e51cc,877566595\">ASL之羁绊永不解体！兄弟情义永不解散！</d>\n<d p=\"211.34399414062,5,25,16711731,1429885194,0,681e51cc,877566815\">ASL之羁绊永不解体！兄弟情义永不解散！</d>\n<d p=\"211.34399414062,5,25,16724838,1429885200,0,681e51cc,877566948\">ASL之羁绊永不解体！兄弟情义永不解散！</d>\n<d p=\"211.34399414062,5,25,16737945,1429885206,0,681e51cc,877567106\">ASL之羁绊永不解体！兄弟情义永不解散！</d>\n<d p=\"211.34399414062,5,25,16751052,1429885212,0,681e51cc,877567223\">ASL之羁绊永不解体！兄弟情义永不解散！</d>\n<d p=\"211.34399414062,5,25,16764159,1429885218,0,681e51cc,877567394\">ASL之羁绊永不解体！兄弟情义永不解散！</d>\n<d p=\"211.34399414062,5,25,16751103,1429885224,0,681e51cc,877567531\">ASL之羁绊永不解体！兄弟情义永不解散！</d>\n<d p=\"211.34399414062,5,25,16737996,1429885230,0,681e51cc,877567652\">ASL之羁绊永不解体！兄弟情义永不解散！</d>\n<d p=\"211.34399414062,5,25,16724889,1429885237,0,681e51cc,877567785\">ASL之羁绊永不解体！兄弟情义永不解散！</d>\n<d p=\"211.34399414062,5,25,16711782,1429885243,0,681e51cc,877567954\">ASL之羁绊永不解体！兄弟情义永不解散！</d>\n<d p=\"211.34399414062,5,25,16711833,1429885249,0,681e51cc,877568105\">ASL之羁绊永不解体！兄弟情义永不解散！</d>\n<d p=\"216.3450012207,5,25,6750207,1429885277,0,681e51cc,877568779\">从今天开始，我们就是兄弟了！！</d>\n<d p=\"216.3450012207,5,25,6737151,1429885283,0,681e51cc,877568924\">从今天开始，我们就是兄弟了！！</d>\n<d p=\"216.3450012207,5,25,6724095,1429885290,0,681e51cc,877569089\">从今天开始，我们就是兄弟了！！</d>\n<d p=\"216.3450012207,5,25,6711039,1429885296,0,681e51cc,877569222\">从今天开始，我们就是兄弟了！！</d>\n<d p=\"216.3450012207,5,25,6697983,1429885303,0,681e51cc,877569372\">从今天开始，我们就是兄弟了！！</d>\n<d p=\"216.3450012207,5,25,6684927,1429885309,0,681e51cc,877569487\">从今天开始，我们就是兄弟了！！</d>\n<d p=\"216.3450012207,5,25,6684876,1429885315,0,681e51cc,877569621\">从今天开始，我们就是兄弟了！！</d>\n<d p=\"216.3450012207,5,25,6697932,1429885321,0,681e51cc,877569763\">从今天开始，我们就是兄弟了！！</d>\n<d p=\"216.3450012207,5,25,6710988,1429885327,0,681e51cc,877569928\">从今天开始，我们就是兄弟了！！</d>\n<d p=\"216.3450012207,5,25,6724044,1429885333,0,681e51cc,877570071\">从今天开始，我们就是兄弟了！！</d>\n<d p=\"257.25900268555,1,25,13421670,1429885468,0,681e51cc,877573383\">要把你们全部打飞！！</d>\n<d p=\"23.079999923706,1,25,16777215,1430037563,0,4f6f9a9d,879756922\">命运    哎</d>\n<d p=\"34.240001678467,1,25,16777215,1430037574,0,4f6f9a9d,879757175\">全世界  啊 啊啊啊啊 啊啊 啊</d>\n<d p=\"66.160003662109,1,25,16777215,1430037606,0,4f6f9a9d,879757899\">上    啊 </d>\n<d p=\"131.67999267578,1,25,16777215,1430037672,0,4f6f9a9d,879759347\">处女  币  </d>\n<d p=\"146.83999633789,1,25,16777215,1430037687,0,4f6f9a9d,879759661\">海贼    自由  </d>\n<d p=\"11.307000160217,1,25,16777215,1430130332,0,6fa31acd,880754829\">肉村赛高！！！！！！</d>\n<d p=\"246.30700683594,1,25,16777215,1430131483,0,92061a9d,880770734\">哦压机</d>\n<d p=\"58.215000152588,1,25,16777215,1430131723,0,6ac9a961,880774198\">罗杰的声优去世了T T</d>\n<d p=\"159.91200256348,1,25,16711680,1430131879,0,49f2722b,880776557\">看得我浑身发颤……</d>\n<d p=\"173.5059967041,1,25,6749952,1430131893,0,49f2722b,880776738\">索隆绿</d>\n<d p=\"241.0590057373,5,25,16711680,1430205946,0,d1a300e1,881436670\">ONE PIECE是真的存在的！！！</d>\n<d p=\"241.0590057373,5,25,16724736,1430205953,0,d1a300e1,881436717\">ONE PIECE是真的存在的！！！</d>\n<d p=\"241.0590057373,5,25,16737792,1430205959,0,d1a300e1,881436765\">ONE PIECE是真的存在的！！！</d>\n<d p=\"241.0590057373,5,25,16750848,1430205965,0,d1a300e1,881436801\">ONE PIECE是真的存在的！！！</d>\n<d p=\"241.0590057373,5,25,16763904,1430205972,0,d1a300e1,881436845\">ONE PIECE是真的存在的！！！</d>\n<d p=\"241.0590057373,5,25,16776960,1430205978,0,d1a300e1,881436931\">ONE PIECE是真的存在的！！！</d>\n<d p=\"241.0590057373,5,25,16777011,1430205985,0,d1a300e1,881436966\">ONE PIECE是真的存在的！！！</d>\n<d p=\"241.0590057373,5,25,16777062,1430205991,0,d1a300e1,881437013\">ONE PIECE是真的存在的！！！</d>\n<d p=\"241.0590057373,5,25,16777113,1430205998,0,d1a300e1,881437049\">ONE PIECE是真的存在的！！！</d>\n<d p=\"241.0590057373,5,25,16777164,1430206004,0,d1a300e1,881437083\">ONE PIECE是真的存在的！！！</d>\n<d p=\"241.0590057373,5,25,16777215,1430206011,0,d1a300e1,881437129\">ONE PIECE是真的存在的！！！</d>\n<d p=\"54.78099822998,4,25,16777215,1430547477,0,c55bbc3b,886119569\">这一幕帅爆了有没有，面对这么多的海贼船还淡定拒绝</d>\n<d p=\"237.76600646973,1,25,16777215,1430567754,0,6ba87176,886519755\">泪目</d>\n<d p=\"176.46099853516,1,25,16777215,1430789866,0,6135267a,888963912\">看得我哭的稀里哇啦的啊</d>\n<d p=\"31.694999694824,1,25,16777215,1430791680,0,e97afda6,888972473\">上去吧</d>\n<d p=\"153.86399841309,1,25,16777215,1430791805,0,e97afda6,888972943\">定</d>\n<d p=\"168.1130065918,1,25,16777215,1430791818,0,e97afda6,888973007\">罗宾</d>\n<d p=\"172.36700439453,1,25,16777215,1430793262,0,dd0989ee,888984202\">路飞生日快乐</d>\n<d p=\"102.24199676514,1,25,16777215,1430794803,0,e52e29da,888992915\">D啊</d>\n<d p=\"37.185001373291,1,25,16777215,1430795160,0,5e4aac15,888994637\">0505路飞生日快乐！</d>\n<d p=\"55.810001373291,1,25,16711680,1430795176,0,5e4aac15,888994746\">我大海贼还能再战五百年！！！！</d>\n<d p=\"114.55200195312,5,25,16711680,1430795235,0,5e4aac15,888995054\">0505路飞生日快乐</d>\n<d p=\"129.95799255371,5,25,16711680,1430795248,0,5e4aac15,888995124\">路飞是要成为海贼王的男人！！！！！</d>\n<d p=\"150.28799438477,5,25,16777215,1430795268,0,5e4aac15,888995238\">路飞是要成为海贼王的男人！！！！</d>\n<d p=\"191.76300048828,1,25,16777215,1430795313,0,5e4aac15,888995465\">这是海贼的时代！！是路飞的时代！！！！！</d>\n<d p=\"201.74099731445,1,25,16777215,1430795320,0,5e4aac15,888995506\">老爹！！！！！！！</d>\n<d p=\"209.91400146484,1,25,16777215,1430795330,0,5e4aac15,888995878\">萨博！！！！！！</d>\n<d p=\"237.7380065918,1,25,16777215,1430795361,0,5e4aac15,888997756\">前方高能！！！</d>\n<d p=\"254.72300720215,1,25,16777215,1430795375,0,5e4aac15,888997820\">ONE PIECE是真实存在的！！！</d>\n<d p=\"108.51399993896,1,25,16777215,1430922707,0,De7a6fa5,890242830\">第一次看海贼觉得这句话帅到爆表</d>\n<d p=\"26.753000259399,1,25,16777215,1430922808,0,D370ee76,890244373\">闹吧！！！大家一起翻天吧！！</d>\n<d p=\"2.2400000095367,1,25,15772458,1430924989,0,e9d7defd,890280334\">喂！多精致的一艘船</d>\n<d p=\"3.6400001049042,4,25,15772458,1430925024,0,e9d7defd,890280788\">喂！多精致的一艘船</d>\n<d p=\"3.4690001010895,4,25,16777215,1406183870,1,bce74db0,528424650\">真是条不错的船</d>\n<d p=\"5.5780000686646,4,25,16777215,1406184011,1,bce74db0,528428838\">这是条偷来的船</d>\n<d p=\"7.4569997787476,4,25,16777215,1406184050,1,bce74db0,528430047\">我的家被烧了 所以就住这了</d>\n<d p=\"10.012999534607,4,25,16777215,1406184087,1,bce74db0,528431085\">原来如此 你的名字是？</d>\n<d p=\"12.121999740601,4,25,16777215,1406184114,1,bce74db0,528431813\">雷利</d>\n<d p=\"14.579000473022,4,25,16777215,1406184130,1,bce74db0,528432301\">我是罗杰！</d>\n<d p=\"16.16900062561,4,25,16777215,1406184145,1,bce74db0,528432746\">我们在这相遇是命运啊 雷利！</d>\n<d p=\"19.250999450684,4,25,16777215,1406184184,1,bce74db0,528433949\">命运？</d>\n<d p=\"20.85000038147,4,25,16777215,1406184232,1,bce74db0,528435395\">要一起和我把世界闹的天翻地覆吗？</d>\n<d p=\"24.968999862671,4,25,16777215,1406184274,1,bce74db0,528436615\">为什么我也要跟着做这种事？</d>\n<d p=\"26.982999801636,4,25,16777215,1406184290,1,bce74db0,528437096\">因为那可是全世界哦！</d>\n<d p=\"29.240999221802,4,25,16777215,1406184327,1,bce74db0,528438206\">好了 出发咯！雷利！</d>\n<d p=\"37.634998321533,4,25,16777215,1406184370,1,bce74db0,528439451\">都跟你说多少遍了啊</d>\n<d p=\"39.596000671387,4,25,16777215,1406184445,1,bce74db0,528441624\">成为我的左右手吧！</d>\n<d p=\"41.477001190186,4,25,16777215,1406184453,1,bce74db0,528441857\">罗杰！</d>\n<d p=\"42.751998901367,4,25,16777215,1406184479,1,bce74db0,528442603\">如果我会听你的话 我就不是海贼了 对吧？</d>\n<d p=\"48.361000061035,4,25,16777215,1406184497,1,bce74db0,528443105\">无论你怎么对我施压</d>\n<d p=\"51.537998199463,4,25,16777215,1406184518,1,bce74db0,528443665\">金狮子！</d>\n<d p=\"53.590999603271,4,25,16777215,1406184531,1,bce74db0,528444036\">我拒绝你的邀请！</d>\n<d p=\"57.039001464844,4,25,16777215,1406184568,1,bce74db0,528445088\">我会打倒你们全员的！</d>\n<d p=\"61.673999786377,4,25,16777215,1406184631,1,bce74db0,528446831\">两年后</d>\n<d p=\"63.541999816895,4,25,16777215,1406184641,1,bce74db0,528447106\">罗杰海贼团征服了大航海线</d>\n<d p=\"69.488998413086,4,25,16777215,1406184680,1,bce74db0,528448220\">黄金罗杰得到了海贼王称号</d>\n<d p=\"73.179000854492,4,25,16777215,1406184706,1,bce74db0,528448928\">你快要死了？罗杰？</d>\n<d p=\"77.324996948242,4,25,16777215,1406184734,1,bce74db0,528449691\">是啊 我快没时间了</d>\n<d p=\"80.928001403809,4,25,16777215,1406184770,1,bce74db0,528450704\">你知道政府的那些人都叫我什么吗？</d>\n<d p=\"87.722999572754,4,25,16777215,1406184794,1,bce74db0,528451329\">黄金罗杰</d>\n<d p=\"90.458999633789,4,25,16777215,1406184811,1,bce74db0,528451822\">我是 哥尔·D·罗杰 啊</d>\n<d p=\"94.34700012207,4,25,16777215,1406184839,1,bce74db0,528452563\">没有被抓住</d>\n<d p=\"96.853996276855,4,25,16777215,1406184861,1,bce74db0,528453183\">罗杰他是去自首了</d>\n<d p=\"100.20800018311,4,25,16777215,1406184876,1,bce74db0,528453623\">我们的旅途已经到尽头了</d>\n<d p=\"104.93299865723,4,25,16777215,1406184937,1,bce74db0,528455290\">我的财宝？</d>\n<d p=\"106.84700012207,4,25,16777215,1406184968,1,bce74db0,528456118\">如果想要的话都给你了！</d>\n<d p=\"108.77500152588,4,25,16777215,1406185006,1,bce74db0,528457200\">去找吧！</d>\n<d p=\"110.18399810791,4,25,16777215,1406185017,1,bce74db0,528457517\">我把这世界的全部都放在那了！</d>\n<d p=\"114.05000305176,4,25,16777215,1406185042,1,bce74db0,528458215\">我是不会死的 伙伴</d>\n<d p=\"118.95600128174,4,25,16777215,1406185241,1,bce74db0,528463619\">雷利先生 我当时真的吓了一跳！</d>\n<d p=\"122.047996521,4,25,16777215,1406185255,1,bce74db0,528464030\">东海有个小鬼竟然和罗杰船长说了同样的话</d>\n<d p=\"127.13800048828,4,25,16777215,1406185276,1,bce74db0,528464580\">船长的那句誓言</d>\n<d p=\"131.12899780273,4,25,16777215,1406185289,1,bce74db0,528464918\">我是蒙奇D路飞！</d>\n<d p=\"133.82699584961,4,25,16777215,1406185301,1,bce74db0,528465255\">我是要成为海贼王的男人！</d>\n<d p=\"137.52900695801,4,25,16777215,1406185353,1,bce74db0,528466720\">海贼王我当定了</d>\n<d p=\"140.79400634766,4,25,16777215,1406185381,1,bce74db0,528467487\">为了这个决定就算是在战斗中死了</d>\n<d p=\"142.55099487305,4,25,16777215,1406185393,1,bce74db0,528467818\">也没什么不好的！</d>\n<d p=\"146.74000549316,4,25,16777215,1406185408,1,bce74db0,528468229\">就像有继承罗杰意志的人们一样</d>\n<d p=\"152.38999938965,4,25,16777215,1406185434,1,bce74db0,528468949\">终有一日</d>\n<d p=\"154.41799926758,4,25,16777215,1406185447,1,bce74db0,528469300\">会有人背负那数百年份的历史</d>\n<d p=\"159.09100341797,4,25,16777215,1406185466,1,bce74db0,528469812\">向这个世界发起挑战</d>\n<d p=\"165.19400024414,4,25,16777215,1406185479,1,bce74db0,528470173\">战国</d>\n<d p=\"167.67999267578,4,25,16777215,1406185490,1,bce74db0,528470444\">你们世界政府</d>\n<d p=\"171.34800720215,4,25,16777215,1406185522,1,bce74db0,528471336\">一直在害怕</d>\n<d p=\"173.3159942627,4,25,16777215,1406185535,1,bce74db0,528471644\">那场席卷全世界的</d>\n<d p=\"177.10699462891,4,25,16777215,1406185546,1,bce74db0,528471992\">巨大战争</d>\n<d p=\"183.65100097656,4,25,16777215,1406185572,1,bce74db0,528472628\">终有一日会被谁找到的</d>\n<d p=\"183.71600341797,4,25,16777215,1406185597,1,bce74db0,528473293\">当那财宝被谁发现的时候</d>\n<d p=\"187.97099304199,4,25,16777215,1406185610,1,bce74db0,528473646\">全世界将会颠覆</d>\n<d p=\"192.08799743652,4,25,16777215,1406185628,1,bce74db0,528474183\">终有一日会被谁找到的</d>\n<d p=\"196.28799438477,4,25,16777215,1406185645,1,bce74db0,528474608\">那一天一定会到来</d>\n<d p=\"202.8090057373,4,25,16777215,1406185661,1,bce74db0,528475032\">艾斯！路飞！</d>\n<d p=\"205.21099853516,4,25,16777215,1406185673,1,bce74db0,528475329\">我们总有一天会出海的！</d>\n<d p=\"208.28900146484,4,25,16777215,1406185701,1,bce74db0,528476105\">离开这个城市 获得自由！</d>\n<d p=\"211.52499389648,4,25,16777215,1406185737,1,bce74db0,528477080\">从今天开始 我们就是</d>\n<d p=\"214.23899841309,4,25,16777215,1406185757,1,bce74db0,528477618\">兄弟！</d>\n<d p=\"218.81500244141,4,25,16777215,1406185770,1,bce74db0,528477961\">索罗</d>\n<d p=\"218.39700317383,4,25,16777215,1406185801,1,bce74db0,528478767\">索罗</d>\n<d p=\"219.52900695801,4,25,16777215,1406185811,1,bce74db0,528479060\">乌索普</d>\n<d p=\"220.4880065918,4,25,16777215,1406185836,1,bce74db0,528479768\">香吉士</d>\n<d p=\"221.48699951172,4,25,16777215,1406185849,1,bce74db0,528480160\">娜米</d>\n<d p=\"218.02699279785,4,25,16777215,1406185880,1,bce74db0,528480986\">索罗</d>\n<d p=\"219.25500488281,4,25,16777215,1406185899,1,bce74db0,528481485\">乌索普</d>\n<d p=\"220.00199890137,4,25,16777215,1406185909,1,bce74db0,528481792\">香吉士</d>\n<d p=\"221.16900634766,4,25,16777215,1406185919,1,bce74db0,528482076\">娜米</d>\n<d p=\"222.02000427246,4,25,16777215,1406185953,1,bce74db0,528482987\">乔巴</d>\n<d p=\"222.7559967041,4,25,16777215,1406185962,1,bce74db0,528483226\">罗宾</d>\n<d p=\"223.86399841309,4,25,16777215,1406185974,1,bce74db0,528483583\">弗兰克</d>\n<d p=\"224.66900634766,4,25,16777215,1406185982,1,bce74db0,528483761\">布鲁克</d>\n<d p=\"227.35800170898,4,25,16777215,1406185993,1,bce74db0,528484036\">在我还是小鬼的时候</d>\n<d p=\"229.32000732422,4,25,16777215,1406186004,1,bce74db0,528484371\">我就想要一个</d>\n<d p=\"233.03199768066,4,25,16777215,1406186021,1,bce74db0,528484850\">家族！</d>\n<d p=\"237.38400268555,4,25,16777215,1406186038,1,bce74db0,528485327\">ONE PIECE</d>\n<d p=\"240.02499389648,4,25,16777215,1406186050,1,bce74db0,528485647\">是真实的存在</d>\n<d p=\"247.39100646973,4,25,16777215,1406186088,1,bce74db0,528486721\">男子汉无论何时都要站起来奋斗！</d>\n<d p=\"252.36999511719,4,25,16777215,1406186111,1,bce74db0,528487317\">十万也好 百万也好</d>\n<d p=\"255.76899719238,4,25,16777215,1406186146,1,bce74db0,528488225\">我们会把你们全部打飞！</d>\n<d p=\"259.91598510742,4,25,16777215,1406186173,1,bce74db0,528488914\">二档</d>\n<d p=\"265.11401367188,4,25,16777215,1406186209,1,bce74db0,528489838\">旅行的话</d>\n<d p=\"267.17999267578,4,25,16777215,1406186219,1,bce74db0,528490109\">你想要去哪里？</d>\n</i>"
  },
  {
    "path": "app/src/main/res/values/attrs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\n    <declare-styleable name=\"CircleImageView\">\n        <attr name=\"border_width\" format=\"dimension\" />\n        <attr name=\"border_color\" format=\"color\" />\n    </declare-styleable>\n    <declare-styleable name=\"PullScrollView\">\n        <attr name=\"header\" format=\"reference\" />\n        <attr name=\"headerHeight\" format=\"dimension\" />\n        <attr name=\"headerVisibleHeight\" format=\"dimension\" />\n    </declare-styleable>\n\n</resources>"
  },
  {
    "path": "app/src/main/res/values/colors.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <color name=\"white\">#ffffff</color>\n    <color name=\"black\">#FF000000</color>\n    <color name=\"bilibg\">#f2f2f2</color>\n    <color name= \"black_alpha\">#75000000</color>\n    <color name= \"black_alpha2\">#23000000</color>\n    <color name=\"transparent\">#00000000</color>\n    <color name=\"mediacontroller_bg_pressed\">#ffefc1d9</color>\n    <color name=\"mediacontroller_bg\">#99000000</color>\n    <color name=\"background_dark\">#f4f4f4</color>\n    \n    <color name=\"blue\">#ff0000ff</color>\n    <color name=\"green\">#ff00ff00</color>\n    <color name=\"red\">#ffff0000</color>\n    <color name=\"higtlight\">#ff0078f0</color>\n    <color name=\"durationtext\">#ff7d7d7d</color>\n    <color name=\"background\">#ffc3ddea</color>\n    <color name=\"yellow\">#ffffcc00</color>\n    <color name=\"title\">#ff274462</color>\n    <color name=\"gray\">#808080ff</color>\n    <color name=\"transparentblue\">#445CACEE</color>\n    <color name=\"bili_red\">#db77ab</color>\n    <color name=\"bili_red2\">#efc1d9</color>\n    <color name=\"bili_red3\">#fcf4f8</color>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values/dimens.xml",
    "content": "<resources>\n\n    <!-- Default screen margins, per the Android Design guidelines. -->\n    <dimen name=\"activity_horizontal_margin\">16dp</dimen>\n    <dimen name=\"activity_vertical_margin\">16dp</dimen>\n    \n    <dimen name=\"LargeTextSize\">16.0dip</dimen>\n    <dimen name=\"BasicTextSize\">15.0dip</dimen>\n    <dimen name=\"TitleTextSize\">18.0dip</dimen>\n    <dimen name=\"SmallTextSize\">14.0dip</dimen>\n    <dimen name=\"SmallerTextSize\">13.0dip</dimen>\n    <dimen name=\"LargestTextSize\">30.0dip</dimen>\n    <dimen name=\"ChattingContentMinHeight\">49.0dip</dimen>\n    <dimen name=\"ChuZhuangWH\">40.0dip</dimen>\n    <dimen name=\"action_bar_default_height\">48dp</dimen>\n    <dimen name=\"mediacontroller_button_space\">32dp</dimen>\n    <dimen name=\"mediacontroller_buttons_top_margin\">2dp</dimen>\n    <dimen name=\"mediacontroller_buttons_bottom_margin\">0dp</dimen>\n\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values/integers.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <integer name=\"channalnum\">2</integer>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\n    <string name=\"app_name\">哔哩哔哩动画</string>\n    <string name=\"version_name\">1.0</string>\n    <string name=\"title_file\">本地视频</string>\n    <string name=\"title_online\">在线视频</string>\n    <string name=\"init_decoders\">初始化播放器...</string>\n    <string name=\"loadinfo\">载入中，请稍后...</string>\n    <string name=\"file_oper\">文件操作</string>\n    <string name=\"file_rename\">重命名</string>\n    <string name=\"file_rename_failed\">重命名失败</string>\n    <string name=\"file_rename_exists\">文件已存在</string>\n    <string name=\"file_delete\">删除</string>\n    <string name=\"file_delete_confirm\">确定删除 (%s) ？</string>\n    <string name=\"video_layout_loading\">正在缓冲...</string>\n    <string name=\"vitamio_theme_app_name\">VPlayer codec</string>\n    <string name=\"VideoView_error_title\">Cannot play video</string>\n    <string name=\"VideoView_error_text_invalid_progressive_playback\">Sorry, this video is not valid for streaming to\n\t\tthis device.</string>\n    <string name=\"VideoView_error_text_unknown\">对不起,这个视频不能播放。</string>\n    <string name=\"VideoView_error_button\">OK</string>\n    <string name=\"mediacontroller_play_pause\">Play/Pause</string>\n    <string name=\"imageview_content_description\"></string>\n    <string name=\"content_desc_lock\">锁定</string>\n    <string name=\"video_original\">100%</string>\n    <string name=\"video_fit_screen\">全屏</string>\n    <string name=\"video_stretch\">拉伸</string>\n    <string name=\"video_crop\">裁剪</string>\n    <string name=\"video_screen_locked\">屏幕已锁定</string>\n    <string name=\"video_screen_unlocked\">屏幕锁定已解除</string>\n    <string name=\"video_layout_buffering_progress\">缓冲: %.2f%%</string>\n    <string name=\"video_cannot_play\">对不起,这个视频不能播放。</string>\n    <string name=\"file_explorer_sdcard_not_available\">SD卡无法读取</string>\n    <string name=\"video_screenshot_save_in\">截图存放在 %s.</string>\n    <string name=\"video_screenshot_failed\">截图失败</string>\n    <string name=\"closing_file\">正在退出…</string>\n    <string name=\"action_settings\">settings</string>\n\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values/styles.xml",
    "content": "<resources>\n\n    <!--\n        Base application theme, dependent on API level. This theme is replaced\n        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.\n    -->\n    <style name=\"AppBaseTheme\" parent=\"Theme.AppCompat.Light\">\n        <!--\n            Theme customizations available in newer API levels can go in\n            res/values-vXX/styles.xml, while customizations related to\n            backward-compatibility can go here.\n        -->\n        <item name=\"vpiTabPageIndicatorStyle\">@style/MyWidget.TabPageIndicator</item>\n    </style>\n\n    <!-- Application theme. -->\n    <style name=\"AppTheme\" parent=\"AppBaseTheme\">\n\n        <!-- All customizations that are NOT specific to a particular API-level can go here. -->\n    </style>\n    \n\t<style name=\"dot_style\">\n        <item name=\"android:layout_width\">5dip</item>\n        <item name=\"android:layout_height\">5dip</item>\n        <item name=\"android:background\">@drawable/dot_normal</item>\n        <item name=\"android:layout_marginLeft\">1.5dip</item>\n        <item name=\"android:layout_marginRight\">1.5dip</item>\n    </style>\n    \n\t    <style name=\"Widget.ZI.SeekBar\" parent=\"android:Widget.SeekBar\">\n        <item name=\"android:progressDrawable\">@drawable/scrubber_progress_horizontal_holo_dark</item>\n        <item name=\"android:indeterminateDrawable\">@drawable/scrubber_progress_horizontal_holo_dark</item>\n        <item name=\"android:minHeight\">13dip</item>\n        <item name=\"android:maxHeight\">13dip</item>\n        <item name=\"android:thumb\">@drawable/scrubber_control_selector_holo</item>\n        <item name=\"android:thumbOffset\">16dip</item>\n        <item name=\"android:paddingLeft\">16dip</item>\n        <item name=\"android:paddingRight\">16dip</item>\n    </style>\n\n    <style name=\"main_tab_bottom\">\n        <item name=\"android:textSize\">12.0sp</item>\n        <item name=\"android:textColor\">#ffffffff</item>\n        <item name=\"android:ellipsize\">marquee</item>\n        <item name=\"android:gravity\">center_horizontal</item>\n        <item name=\"android:paddingTop\">2.0dip</item>\n        <!-- <item name=\"android:paddingTop\">5.0dip</item> -->\n        <item name=\"android:layout_width\">fill_parent</item>\n        <item name=\"android:layout_height\">wrap_content</item>\n        <item name=\"android:button\">@null</item>\n        <item name=\"android:singleLine\">true</item>\n        <!-- <item name=\"android:drawablePadding\">3.0dip</item> -->\n        <item name=\"android:layout_weight\">1.0</item>\n        <item name=\"android:background\">@drawable/home_btn_bg</item>\n    </style>\n\n    <style name=\"MediaController_SeekBar\">\n        <item name=\"android:minHeight\">16dip</item>\n        <item name=\"android:maxHeight\">16dip</item>\n        <item name=\"android:paddingLeft\">16dip</item>\n        <item name=\"android:paddingRight\">16dip</item>\n        <item name=\"android:progressDrawable\">@drawable/abcp_pink__progress_primary_holo_light</item>\n        <item name=\"android:thumb\">@drawable/abcp_pink__scrubber_control_normal_holo</item>\n    </style>\n\n    <style name=\"MediaController_Text\">\n        <item name=\"android:textColor\">#ffffffff</item>\n        <item name=\"android:textSize\">14sp</item>\n        <item name=\"android:textStyle\">bold</item>\n    </style>\n\n    <style name=\"InfoPanel_Container\">\n        <item name=\"android:background\">@color/mediacontroller_bg</item>\n    </style>\n\n    <style name=\"MediaController_Container\">\n        <item name=\"android:background\">@color/mediacontroller_bg</item>\n        <item name=\"android:paddingTop\">4dip</item>\n        <item name=\"android:paddingBottom\">8dip</item>\n        <item name=\"android:paddingLeft\">8dip</item>\n        <item name=\"android:paddingRight\">8dip</item>\n    </style>\n\n    <style name=\"MediaController_Button\">\n        <item name=\"android:background\">@drawable/mediacontroller_btn_bg</item>\n    </style>\n    \n    <style name=\"MyTheme\" parent=\"AppBaseTheme\">\n        <item name=\"vpiTabPageIndicatorStyle\">@style/MyWidget.TabPageIndicator</item>\n        <item name=\"android:animationDuration\">5000</item>\n        <item name=\"android:windowContentOverlay\">@null</item>\n        <item name=\"android:windowActionBar\">false</item>\n    </style>\n    \n    <style name=\"MyWidget.TabPageIndicator\" parent=\"Widget\">\n        <item name=\"android:gravity\">center</item>\n        <item name=\"android:paddingLeft\">22dip</item>\n        <item name=\"android:paddingRight\">22dip</item>\n        <item name=\"android:paddingTop\">8dp</item>\n        <item name=\"android:paddingBottom\">8dp</item>\n        <item name=\"android:textSize\">16sp</item>\n        <item name=\"android:maxLines\">1</item>\n        <item name=\"android:textAppearance\">@style/MyTextAppearance.TabPageIndicator</item>\n        <item name=\"android:background\">@drawable/tab_indicator</item>\n        <item name=\"android:actionBarTabStyle\">@style/Widget.Sherlock.ActionBar.TabView</item> \n    </style>\n\n    <style name=\"MyTextAppearance.TabPageIndicator\" parent=\"Widget\">\n        <item name=\"android:textStyle\">bold</item>\n        <item name=\"android:textColor\">@drawable/selector_tabtext</item>\n    </style>\n    \n    <style name=\"Themes.ActionBarTab\" parent=\"AppBaseTheme\">  \n      <!-- 去除ActionBar的Divider -->  \n      <item name=\"actionBarDivider\">@null</item>  \n      <item name=\"android:actionBarDivider\">@null</item>  \n        \n      <!-- 设置ActionBar Tab的高度 -->  \n      <item name=\"actionBarSize\">45dip</item>  \n      <item name=\"android:actionBarSize\">45dip</item>  \n        \n      <!-- 设置ActionBar Tab字体的样式 -->  \n      <item name=\"actionBarTabTextStyle\">@style/Widget.Sherlock.ActionBar.TabText</item>  \n      <item name=\"android:actionBarTabTextStyle\">@style/Widget.Sherlock.ActionBar.TabText</item>  \n        \n      <!-- 设置ActionBar Tab的样式,例如下面的红色指引，Tab之间的间隙等等 -->  \n      <item name=\"actionBarTabStyle\">@style/Widget.Sherlock.ActionBar.TabView</item>  \n      <item name=\"android:actionBarTabStyle\">@style/Widget.Sherlock.ActionBar.TabView</item>        \n  </style>  \n    \n    <style name=\"Widget.Sherlock.ActionBar.TabText\" parent=\"android:Widget.Holo.ActionBar.TabText\">  \n      <item name=\"android:textColor\">@drawable/selector_tabtext</item>  \n      <item name=\"android:textSize\">15sp</item>  \n    </style>\n    \n     <style name=\"Widget.Sherlock.ActionBar.TabView\" parent=\"Widget\">  \n      <item name=\"android:background\">@drawable/tab_indicator</item>  \n      <item name=\"android:paddingLeft\">8dip</item>  \n      <item name=\"android:paddingRight\">8dip</item>  \n  </style>   \n\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values/vpi__attrs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2012 Jake Wharton\n     Copyright (C) 2011 Patrik Åkerfeldt\n\n     Licensed under the Apache License, Version 2.0 (the \"License\");\n     you may not use this file except in compliance with the License.\n     You may obtain a copy of the License at\n\n          http://www.apache.org/licenses/LICENSE-2.0\n\n     Unless required by applicable law or agreed to in writing, software\n     distributed under the License is distributed on an \"AS IS\" BASIS,\n     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     See the License for the specific language governing permissions and\n     limitations under the License.\n-->\n\n<resources>\n    <declare-styleable name=\"ViewPagerIndicator\">\n        <!-- Style of the circle indicator. -->\n        <attr name=\"vpiCirclePageIndicatorStyle\" format=\"reference\"/>\n        <!-- Style of the icon indicator's views. -->\n        <attr name=\"vpiIconPageIndicatorStyle\" format=\"reference\"/>\n        <!-- Style of the line indicator. -->\n        <attr name=\"vpiLinePageIndicatorStyle\" format=\"reference\"/>\n        <!-- Style of the title indicator. -->\n        <attr name=\"vpiTitlePageIndicatorStyle\" format=\"reference\"/>\n        <!-- Style of the tab indicator's tabs. -->\n        <attr name=\"vpiTabPageIndicatorStyle\" format=\"reference\"/>\n        <!-- Style of the underline indicator. -->\n        <attr name=\"vpiUnderlinePageIndicatorStyle\" format=\"reference\"/>\n    </declare-styleable>\n\n    <attr name=\"centered\" format=\"boolean\" />\n    <attr name=\"selectedColor\" format=\"color\" />\n    <attr name=\"strokeWidth\" format=\"dimension\" />\n    <attr name=\"unselectedColor\" format=\"color\" />\n\n    <declare-styleable name=\"CirclePageIndicator\">\n        <!-- Whether or not the indicators should be centered. -->\n        <attr name=\"centered\" />\n        <!-- Color of the filled circle that represents the current page. -->\n        <attr name=\"fillColor\" format=\"color\" />\n        <!-- Color of the filled circles that represents pages. -->\n        <attr name=\"pageColor\" format=\"color\" />\n        <!-- Orientation of the indicator. -->\n        <attr name=\"android:orientation\"/>\n        <!-- Radius of the circles. This is also the spacing between circles. -->\n        <attr name=\"radius\" format=\"dimension\" />\n        <!-- Whether or not the selected indicator snaps to the circles. -->\n        <attr name=\"snap\" format=\"boolean\" />\n        <!-- Color of the open circles. -->\n        <attr name=\"strokeColor\" format=\"color\" />\n        <!-- Width of the stroke used to draw the circles. -->\n        <attr name=\"strokeWidth\" />\n        <!-- View background -->\n        <attr name=\"android:background\"/>\n    </declare-styleable>\n\n    <declare-styleable name=\"LinePageIndicator\">\n        <!-- Whether or not the indicators should be centered. -->\n        <attr name=\"centered\" />\n        <!-- Color of the unselected lines that represent the pages. -->\n        <attr name=\"unselectedColor\" />\n        <!-- Color of the selected line that represents the current page. -->\n        <attr name=\"selectedColor\" />\n        <!-- Width of each indicator line. -->\n        <attr name=\"lineWidth\" format=\"dimension\" />\n        <!-- Width of each indicator line's stroke. -->\n        <attr name=\"strokeWidth\" />\n        <!-- Width of the gap between each indicator line. -->\n        <attr name=\"gapWidth\" format=\"dimension\" />\n        <!-- View background -->\n        <attr name=\"android:background\"/>\n    </declare-styleable>\n\n    <declare-styleable name=\"TitlePageIndicator\">\n        <!-- Screen edge padding. -->\n        <attr name=\"clipPadding\" format=\"dimension\" />\n        <!-- Color of the footer line and indicator. -->\n        <attr name=\"footerColor\" format=\"color\" />\n        <!-- Height of the footer line. -->\n        <attr name=\"footerLineHeight\" format=\"dimension\" />\n        <!-- Style of the indicator. Default is triangle. -->\n        <attr name=\"footerIndicatorStyle\">\n            <enum name=\"none\" value=\"0\" />\n            <enum name=\"triangle\" value=\"1\" />\n            <enum name=\"underline\" value=\"2\" />\n        </attr>\n        <!-- Height of the indicator above the footer line. -->\n        <attr name=\"footerIndicatorHeight\" format=\"dimension\" />\n        <!-- Left and right padding of the underline indicator. -->\n        <attr name=\"footerIndicatorUnderlinePadding\" format=\"dimension\" />\n        <!-- Padding between the bottom of the title and the footer. -->\n        <attr name=\"footerPadding\" format=\"dimension\" />\n        <!-- Position of the line. -->\n        <attr name=\"linePosition\">\n            <enum name=\"bottom\" value=\"0\"/>\n            <enum name=\"top\" value=\"1\"/>\n        </attr>\n        <!-- Color of the selected title. -->\n        <attr name=\"selectedColor\" />\n        <!-- Whether or not the selected item is displayed as bold. -->\n        <attr name=\"selectedBold\" format=\"boolean\" />\n        <!-- Color of regular titles. -->\n        <attr name=\"android:textColor\" />\n        <!-- Size of title text. -->\n        <attr name=\"android:textSize\" />\n        <!-- Padding between titles when bumping into each other. -->\n        <attr name=\"titlePadding\" format=\"dimension\" />\n        <!-- Padding between titles and the top of the View. -->\n        <attr name=\"topPadding\" format=\"dimension\" />\n        <!-- View background -->\n        <attr name=\"android:background\"/>\n    </declare-styleable>\n\n    <declare-styleable name=\"UnderlinePageIndicator\">\n        <!-- Whether or not the selected indicator fades. -->\n        <attr name=\"fades\" format=\"boolean\" />\n        <!-- Length of the delay to fade the indicator. -->\n        <attr name=\"fadeDelay\" format=\"integer\" />\n        <!-- Length of the indicator fade to transparent. -->\n        <attr name=\"fadeLength\" format=\"integer\" />\n        <!-- Color of the selected line that represents the current page. -->\n        <attr name=\"selectedColor\" />\n        <!-- View background -->\n        <attr name=\"android:background\"/>\n    </declare-styleable>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values/vpi__colors.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2012 Jake Wharton\n\n     Licensed under the Apache License, Version 2.0 (the \"License\");\n     you may not use this file except in compliance with the License.\n     You may obtain a copy of the License at\n\n          http://www.apache.org/licenses/LICENSE-2.0\n\n     Unless required by applicable law or agreed to in writing, software\n     distributed under the License is distributed on an \"AS IS\" BASIS,\n     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     See the License for the specific language governing permissions and\n     limitations under the License.\n-->\n\n<resources>\n    <color name=\"vpi__background_holo_dark\">#ff000000</color>\n    <color name=\"vpi__background_holo_light\">#fff3f3f3</color>\n    <color name=\"vpi__bright_foreground_holo_dark\">@color/vpi__background_holo_light</color>\n    <color name=\"vpi__bright_foreground_holo_light\">@color/vpi__background_holo_dark</color>\n    <color name=\"vpi__bright_foreground_disabled_holo_dark\">#ff4c4c4c</color>\n    <color name=\"vpi__bright_foreground_disabled_holo_light\">#ffb2b2b2</color>\n    <color name=\"vpi__bright_foreground_inverse_holo_dark\">@color/vpi__bright_foreground_holo_light</color>\n    <color name=\"vpi__bright_foreground_inverse_holo_light\">@color/vpi__bright_foreground_holo_dark</color>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values/vpi__defaults.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2012 Jake Wharton\n\n     Licensed under the Apache License, Version 2.0 (the \"License\");\n     you may not use this file except in compliance with the License.\n     You may obtain a copy of the License at\n\n          http://www.apache.org/licenses/LICENSE-2.0\n\n     Unless required by applicable law or agreed to in writing, software\n     distributed under the License is distributed on an \"AS IS\" BASIS,\n     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     See the License for the specific language governing permissions and\n     limitations under the License.\n-->\n\n<resources>\n    <bool name=\"default_circle_indicator_centered\">true</bool>\n    <color name=\"default_circle_indicator_fill_color\">#FFFFFFFF</color>\n    <color name=\"default_circle_indicator_page_color\">#00000000</color>\n    <integer name=\"default_circle_indicator_orientation\">0</integer>\n    <dimen name=\"default_circle_indicator_radius\">3dp</dimen>\n    <bool name=\"default_circle_indicator_snap\">false</bool>\n    <color name=\"default_circle_indicator_stroke_color\">#FFDDDDDD</color>\n    <dimen name=\"default_circle_indicator_stroke_width\">1dp</dimen>\n\n    <dimen name=\"default_line_indicator_line_width\">12dp</dimen>\n    <dimen name=\"default_line_indicator_gap_width\">4dp</dimen>\n    <dimen name=\"default_line_indicator_stroke_width\">1dp</dimen>\n    <color name=\"default_line_indicator_selected_color\">#FF33B5E5</color>\n    <color name=\"default_line_indicator_unselected_color\">#FFBBBBBB</color>\n    <bool name=\"default_line_indicator_centered\">true</bool>\n\n    <dimen name=\"default_title_indicator_clip_padding\">4dp</dimen>\n    <color name=\"default_title_indicator_footer_color\">#FF33B5E5</color>\n    <dimen name=\"default_title_indicator_footer_line_height\">2dp</dimen>\n    <integer name=\"default_title_indicator_footer_indicator_style\">2</integer>\n    <dimen name=\"default_title_indicator_footer_indicator_height\">4dp</dimen>\n    <dimen name=\"default_title_indicator_footer_indicator_underline_padding\">20dp</dimen>\n    <dimen name=\"default_title_indicator_footer_padding\">7dp</dimen>\n    <integer name=\"default_title_indicator_line_position\">0</integer>\n    <color name=\"default_title_indicator_selected_color\">#FFFFFFFF</color>\n    <bool name=\"default_title_indicator_selected_bold\">true</bool>\n    <color name=\"default_title_indicator_text_color\">#BBFFFFFF</color>\n    <dimen name=\"default_title_indicator_text_size\">15dp</dimen>\n    <dimen name=\"default_title_indicator_title_padding\">5dp</dimen>\n    <dimen name=\"default_title_indicator_top_padding\">7dp</dimen>\n\n    <bool name=\"default_underline_indicator_fades\">true</bool>\n    <integer name=\"default_underline_indicator_fade_delay\">300</integer>\n    <integer name=\"default_underline_indicator_fade_length\">400</integer>\n    <color name=\"default_underline_indicator_selected_color\">#FF33B5E5</color>\n</resources>"
  },
  {
    "path": "app/src/main/res/values/vpi__styles.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2011 Jake Wharton\n\n     Licensed under the Apache License, Version 2.0 (the \"License\");\n     you may not use this file except in compliance with the License.\n     You may obtain a copy of the License at\n\n          http://www.apache.org/licenses/LICENSE-2.0\n\n     Unless required by applicable law or agreed to in writing, software\n     distributed under the License is distributed on an \"AS IS\" BASIS,\n     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     See the License for the specific language governing permissions and\n     limitations under the License.\n-->\n\n<resources>\n    <style name=\"Theme.PageIndicatorDefaults\" parent=\"android:Theme\">\n        <item name=\"vpiIconPageIndicatorStyle\">@style/Widget.IconPageIndicator</item>\n        <item name=\"vpiTabPageIndicatorStyle\">@style/Widget.TabPageIndicator</item>\n    </style>\n\n    <style name=\"Widget\">\n    </style>\n\n    <style name=\"Widget.TabPageIndicator\" parent=\"Widget\">\n        <item name=\"android:gravity\">center</item>\n        <item name=\"android:background\">@drawable/vpi__tab_indicator</item>\n        <item name=\"android:paddingLeft\">22dip</item>\n        <item name=\"android:paddingRight\">22dip</item>\n        <item name=\"android:paddingTop\">12dp</item>\n        <item name=\"android:paddingBottom\">12dp</item>\n        <item name=\"android:textAppearance\">@style/TextAppearance.TabPageIndicator</item>\n        <item name=\"android:textSize\">12sp</item>\n        <item name=\"android:maxLines\">1</item>\n    </style>\n\n    <style name=\"TextAppearance.TabPageIndicator\" parent=\"Widget\">\n        <item name=\"android:textStyle\">bold</item>\n        <item name=\"android:textColor\">@color/vpi__dark_theme</item>\n    </style>\n\n    <style name=\"Widget.IconPageIndicator\" parent=\"Widget\">\n        <item name=\"android:layout_marginLeft\">6dp</item>\n        <item name=\"android:layout_marginRight\">6dp</item>\n    </style>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-w820dp/dimens.xml",
    "content": "<resources>\n\n    <!--\n         Example customization of dimensions originally defined in res/values/dimens.xml\n         (such as screen margins) for screens with more than 820dp of available width. This\n         would include 7\" and 10\" devices in landscape (~960dp and ~1280dp respectively).\n    -->\n    <dimen name=\"activity_horizontal_margin\">64dp</dimen>\n\n</resources>\n"
  },
  {
    "path": "build/intermediates/dex-cache/cache.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<items version=\"2\" >\n\n    <item\n        jar=\"F:\\cjj\\BilibiliClient\\app\\build\\intermediates\\exploded-aar\\com.android.support\\support-v4\\22.1.1\\classes.jar\"\n        jumboMode=\"false\"\n        revision=\"22.0.1\"\n        sha1=\"c95ba8152923e4872e86a82cfcba9a51c0214328\">\n        <dex dex=\"F:\\cjj\\BilibiliClient\\app\\build\\intermediates\\pre-dexed\\debug\\classes-0b1567034b383eea9602ab8ca4de9dcfd8b211ac.jar\" />\n    </item>\n    <item\n        jar=\"F:\\cjj\\BilibiliClient\\app\\build\\intermediates\\exploded-aar\\com.android.support\\appcompat-v7\\22.1.1\\classes.jar\"\n        jumboMode=\"false\"\n        revision=\"22.0.1\"\n        sha1=\"a3ff3c506644c820eb2bdf06e8339f72be578551\">\n        <dex dex=\"F:\\cjj\\BilibiliClient\\app\\build\\intermediates\\pre-dexed\\debug\\classes-c4a1cb753190a73695b2d580afb2ef165bba844f.jar\" />\n    </item>\n    <item\n        jar=\"F:\\cjj\\BilibiliClient\\app\\build\\intermediates\\exploded-aar\\com.android.support\\support-v4\\22.1.1\\libs\\internal_impl-22.1.1.jar\"\n        jumboMode=\"false\"\n        revision=\"22.0.1\"\n        sha1=\"9e070ad32b2700b0343e8e0cccc437733d91ba3a\">\n        <dex dex=\"F:\\cjj\\BilibiliClient\\app\\build\\intermediates\\pre-dexed\\debug\\internal_impl-22.1.1-fa6fb693979d3a53cbdb14e179d859b5a7dd2a93.jar\" />\n    </item>\n    <item\n        jar=\"D:\\as\\sdk-install\\extras\\android\\m2repository\\com\\android\\support\\support-annotations\\22.1.1\\support-annotations-22.1.1.jar\"\n        jumboMode=\"false\"\n        revision=\"22.0.1\"\n        sha1=\"01d051a6bfb1218b1db2d3a5af0480ac2c25c42a\">\n        <dex dex=\"F:\\cjj\\BilibiliClient\\app\\build\\intermediates\\pre-dexed\\debug\\support-annotations-22.1.1-9aa71a3ba86e6c16a664e6c95633631caf63c836.jar\" />\n    </item>\n    <item\n        jar=\"F:\\cjj\\BilibiliClient\\app\\build\\intermediates\\exploded-aar\\BilibiliClient\\DanmakuFlameMaster\\unspecified\\classes.jar\"\n        jumboMode=\"false\"\n        revision=\"22.0.1\"\n        sha1=\"fe0ce2a05e081fa977f4bae3cfee5e6ae368d346\">\n        <dex dex=\"F:\\cjj\\BilibiliClient\\app\\build\\intermediates\\pre-dexed\\debug\\classes-448c44a63bc23fb40630dcda7b1ae090af4f1094.jar\" />\n    </item>\n    <item\n        jar=\"F:\\cjj\\BilibiliClient\\app\\libs\\jsoup-1.8.1.jar\"\n        jumboMode=\"false\"\n        revision=\"22.0.1\"\n        sha1=\"3d57e95c0f150b885ccdbda7a12bef353fd31d02\">\n        <dex dex=\"F:\\cjj\\BilibiliClient\\app\\build\\intermediates\\pre-dexed\\debug\\jsoup-1.8.1-66a56dfeb247574609b2b94d00a85b89fd9d5570.jar\" />\n    </item>\n    <item\n        jar=\"F:\\cjj\\BilibiliClient\\app\\build\\intermediates\\exploded-aar\\BilibiliClient\\VPIndexLibrary\\unspecified\\libs\\android-support-v4.jar\"\n        jumboMode=\"false\"\n        revision=\"22.0.1\"\n        sha1=\"53307dc2bd2b69fd5533458ee11885f55807de4b\">\n        <dex dex=\"F:\\cjj\\BilibiliClient\\app\\build\\intermediates\\pre-dexed\\debug\\android-support-v4-ca2019735ba673bf955ed6ee558d326914e7ba26.jar\" />\n    </item>\n    <item\n        jar=\"F:\\cjj\\BilibiliClient\\app\\libs\\universal-image-loader-1.9.3.jar\"\n        jumboMode=\"false\"\n        revision=\"22.0.1\"\n        sha1=\"a85588bec3e2c4584d593d3f15df1677321bca72\">\n        <dex dex=\"F:\\cjj\\BilibiliClient\\app\\build\\intermediates\\pre-dexed\\debug\\universal-image-loader-1.9.3-e6fbf25d64284f9262e6e6a3d74c611bd413ff80.jar\" />\n    </item>\n    <item\n        jar=\"F:\\cjj\\BilibiliClient\\app\\build\\intermediates\\exploded-aar\\BilibiliClient\\VPIndexLibrary\\unspecified\\classes.jar\"\n        jumboMode=\"false\"\n        revision=\"22.0.1\"\n        sha1=\"2b2a06e39f595cfc7cd8673d101aae53c5fb37c4\">\n        <dex dex=\"F:\\cjj\\BilibiliClient\\app\\build\\intermediates\\pre-dexed\\debug\\classes-e5673ed7e4165c5e01a0da2e4d193ba3041c41ff.jar\" />\n    </item>\n    <item\n        jar=\"F:\\cjj\\BilibiliClient\\app\\build\\intermediates\\exploded-aar\\BilibiliClient\\vitamio\\unspecified\\classes.jar\"\n        jumboMode=\"false\"\n        revision=\"22.0.1\"\n        sha1=\"98e8219bc0ea0cd9822d47e529feb077f8f63622\">\n        <dex dex=\"F:\\cjj\\BilibiliClient\\app\\build\\intermediates\\pre-dexed\\debug\\classes-b96bb5ee6c7416705c51fbc8bcb538fb180a23cd.jar\" />\n    </item>\n\n</items>\n"
  },
  {
    "path": "build.gradle",
    "content": "// Top-level build file where you can add configuration options common to all sub-projects/modules.\n\nbuildscript {\n    repositories {\n        jcenter()\n    }\n    dependencies {\n        classpath 'com.android.tools.build:gradle:1.1.0'\n\n        // NOTE: Do not place your application dependencies here; they belong\n        // in the individual module build.gradle files\n    }\n}\n\nallprojects {\n    repositories {\n        jcenter()\n    }\n}\n"
  },
  {
    "path": "gradle/wrapper/gradle-wrapper.properties",
    "content": "#Wed Apr 10 15:27:10 PDT 2013\ndistributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributions/gradle-2.2.1-all.zip\n"
  },
  {
    "path": "gradle.properties",
    "content": "# Project-wide Gradle settings.\n\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will override*\n# any settings specified in this file.\n\n# For more details on how to configure your build environment visit\n# http://www.gradle.org/docs/current/userguide/build_environment.html\n\n# Specifies the JVM arguments used for the daemon process.\n# The setting is particularly useful for tweaking memory settings.\n# Default value: -Xmx10248m -XX:MaxPermSize=256m\n# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8\n\n# When configured, Gradle will run in incubating parallel mode.\n# This option should only be used with decoupled projects. More details, visit\n# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects\n# org.gradle.parallel=true"
  },
  {
    "path": "gradlew",
    "content": "#!/usr/bin/env bash\n\n##############################################################################\n##\n##  Gradle start up script for UN*X\n##\n##############################################################################\n\n# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\nDEFAULT_JVM_OPTS=\"\"\n\nAPP_NAME=\"Gradle\"\nAPP_BASE_NAME=`basename \"$0\"`\n\n# Use the maximum available, or set MAX_FD != -1 to use that value.\nMAX_FD=\"maximum\"\n\nwarn ( ) {\n    echo \"$*\"\n}\n\ndie ( ) {\n    echo\n    echo \"$*\"\n    echo\n    exit 1\n}\n\n# OS specific support (must be 'true' or 'false').\ncygwin=false\nmsys=false\ndarwin=false\ncase \"`uname`\" in\n  CYGWIN* )\n    cygwin=true\n    ;;\n  Darwin* )\n    darwin=true\n    ;;\n  MINGW* )\n    msys=true\n    ;;\nesac\n\n# For Cygwin, ensure paths are in UNIX format before anything is touched.\nif $cygwin ; then\n    [ -n \"$JAVA_HOME\" ] && JAVA_HOME=`cygpath --unix \"$JAVA_HOME\"`\nfi\n\n# Attempt to set APP_HOME\n# Resolve links: $0 may be a link\nPRG=\"$0\"\n# Need this for relative symlinks.\nwhile [ -h \"$PRG\" ] ; do\n    ls=`ls -ld \"$PRG\"`\n    link=`expr \"$ls\" : '.*-> \\(.*\\)$'`\n    if expr \"$link\" : '/.*' > /dev/null; then\n        PRG=\"$link\"\n    else\n        PRG=`dirname \"$PRG\"`\"/$link\"\n    fi\ndone\nSAVED=\"`pwd`\"\ncd \"`dirname \\\"$PRG\\\"`/\" >&-\nAPP_HOME=\"`pwd -P`\"\ncd \"$SAVED\" >&-\n\nCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar\n\n# Determine the Java command to use to start the JVM.\nif [ -n \"$JAVA_HOME\" ] ; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ] ; then\n        # IBM's JDK on AIX uses strange locations for the executables\n        JAVACMD=\"$JAVA_HOME/jre/sh/java\"\n    else\n        JAVACMD=\"$JAVA_HOME/bin/java\"\n    fi\n    if [ ! -x \"$JAVACMD\" ] ; then\n        die \"ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\n    fi\nelse\n    JAVACMD=\"java\"\n    which java >/dev/null 2>&1 || die \"ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\nfi\n\n# Increase the maximum file descriptors if we can.\nif [ \"$cygwin\" = \"false\" -a \"$darwin\" = \"false\" ] ; then\n    MAX_FD_LIMIT=`ulimit -H -n`\n    if [ $? -eq 0 ] ; then\n        if [ \"$MAX_FD\" = \"maximum\" -o \"$MAX_FD\" = \"max\" ] ; then\n            MAX_FD=\"$MAX_FD_LIMIT\"\n        fi\n        ulimit -n $MAX_FD\n        if [ $? -ne 0 ] ; then\n            warn \"Could not set maximum file descriptor limit: $MAX_FD\"\n        fi\n    else\n        warn \"Could not query maximum file descriptor limit: $MAX_FD_LIMIT\"\n    fi\nfi\n\n# For Darwin, add options to specify how the application appears in the dock\nif $darwin; then\n    GRADLE_OPTS=\"$GRADLE_OPTS \\\"-Xdock:name=$APP_NAME\\\" \\\"-Xdock:icon=$APP_HOME/media/gradle.icns\\\"\"\nfi\n\n# For Cygwin, switch paths to Windows format before running java\nif $cygwin ; then\n    APP_HOME=`cygpath --path --mixed \"$APP_HOME\"`\n    CLASSPATH=`cygpath --path --mixed \"$CLASSPATH\"`\n\n    # We build the pattern for arguments to be converted via cygpath\n    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`\n    SEP=\"\"\n    for dir in $ROOTDIRSRAW ; do\n        ROOTDIRS=\"$ROOTDIRS$SEP$dir\"\n        SEP=\"|\"\n    done\n    OURCYGPATTERN=\"(^($ROOTDIRS))\"\n    # Add a user-defined pattern to the cygpath arguments\n    if [ \"$GRADLE_CYGPATTERN\" != \"\" ] ; then\n        OURCYGPATTERN=\"$OURCYGPATTERN|($GRADLE_CYGPATTERN)\"\n    fi\n    # Now convert the arguments - kludge to limit ourselves to /bin/sh\n    i=0\n    for arg in \"$@\" ; do\n        CHECK=`echo \"$arg\"|egrep -c \"$OURCYGPATTERN\" -`\n        CHECK2=`echo \"$arg\"|egrep -c \"^-\"`                                 ### Determine if an option\n\n        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition\n            eval `echo args$i`=`cygpath --path --ignore --mixed \"$arg\"`\n        else\n            eval `echo args$i`=\"\\\"$arg\\\"\"\n        fi\n        i=$((i+1))\n    done\n    case $i in\n        (0) set -- ;;\n        (1) set -- \"$args0\" ;;\n        (2) set -- \"$args0\" \"$args1\" ;;\n        (3) set -- \"$args0\" \"$args1\" \"$args2\" ;;\n        (4) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" ;;\n        (5) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" ;;\n        (6) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" ;;\n        (7) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" ;;\n        (8) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" ;;\n        (9) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" \"$args8\" ;;\n    esac\nfi\n\n# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules\nfunction splitJvmOpts() {\n    JVM_OPTS=(\"$@\")\n}\neval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS\nJVM_OPTS[${#JVM_OPTS[*]}]=\"-Dorg.gradle.appname=$APP_BASE_NAME\"\n\nexec \"$JAVACMD\" \"${JVM_OPTS[@]}\" -classpath \"$CLASSPATH\" org.gradle.wrapper.GradleWrapperMain \"$@\"\n"
  },
  {
    "path": "gradlew.bat",
    "content": "@if \"%DEBUG%\" == \"\" @echo off\n@rem ##########################################################################\n@rem\n@rem  Gradle startup script for Windows\n@rem\n@rem ##########################################################################\n\n@rem Set local scope for the variables with windows NT shell\nif \"%OS%\"==\"Windows_NT\" setlocal\n\n@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\nset DEFAULT_JVM_OPTS=\n\nset DIRNAME=%~dp0\nif \"%DIRNAME%\" == \"\" set DIRNAME=.\nset APP_BASE_NAME=%~n0\nset APP_HOME=%DIRNAME%\n\n@rem Find java.exe\nif defined JAVA_HOME goto findJavaFromJavaHome\n\nset JAVA_EXE=java.exe\n%JAVA_EXE% -version >NUL 2>&1\nif \"%ERRORLEVEL%\" == \"0\" goto init\n\necho.\necho ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\necho.\necho Please set the JAVA_HOME variable in your environment to match the\necho location of your Java installation.\n\ngoto fail\n\n:findJavaFromJavaHome\nset JAVA_HOME=%JAVA_HOME:\"=%\nset JAVA_EXE=%JAVA_HOME%/bin/java.exe\n\nif exist \"%JAVA_EXE%\" goto init\n\necho.\necho ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%\necho.\necho Please set the JAVA_HOME variable in your environment to match the\necho location of your Java installation.\n\ngoto fail\n\n:init\n@rem Get command-line arguments, handling Windowz variants\n\nif not \"%OS%\" == \"Windows_NT\" goto win9xME_args\nif \"%@eval[2+2]\" == \"4\" goto 4NT_args\n\n:win9xME_args\n@rem Slurp the command line arguments.\nset CMD_LINE_ARGS=\nset _SKIP=2\n\n:win9xME_args_slurp\nif \"x%~1\" == \"x\" goto execute\n\nset CMD_LINE_ARGS=%*\ngoto execute\n\n:4NT_args\n@rem Get arguments from the 4NT Shell from JP Software\nset CMD_LINE_ARGS=%$\n\n:execute\n@rem Setup the command line\n\nset CLASSPATH=%APP_HOME%\\gradle\\wrapper\\gradle-wrapper.jar\n\n@rem Execute Gradle\n\"%JAVA_EXE%\" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% \"-Dorg.gradle.appname=%APP_BASE_NAME%\" -classpath \"%CLASSPATH%\" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%\n\n:end\n@rem End local scope for the variables with windows NT shell\nif \"%ERRORLEVEL%\"==\"0\" goto mainEnd\n\n:fail\nrem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\nrem the _cmd.exe /c_ return code!\nif  not \"\" == \"%GRADLE_EXIT_CONSOLE%\" exit 1\nexit /b 1\n\n:mainEnd\nif \"%OS%\"==\"Windows_NT\" endlocal\n\n:omega\n"
  },
  {
    "path": "local.properties",
    "content": "## This file is automatically generated by Android Studio.\n# Do not modify this file -- YOUR CHANGES WILL BE ERASED!\n#\n# This file should *NOT* be checked into Version Control Systems,\n# as it contains information specific to your local configuration.\n#\n# Location of the SDK. This is only used by Gradle.\n# For customization when using a Version Control System, please read the\n# header note.\nsdk.dir=D\\:\\\\as\\\\sdk-install"
  },
  {
    "path": "settings.gradle",
    "content": "include ':app',':vitamio',':DanmakuFlameMaster'\n"
  }
]