Showing preview only (2,518K chars total). Download the full file or copy to clipboard to get everything.
Repository: yangguangfu520/MobilePlayer1020
Branch: master
Commit: 336b8a53d83b
Files: 817
Total size: 2.2 MB
Directory structure:
gitextract_qndc5fgf/
├── .gitignore
├── AgoraDemo/
│ ├── .gitignore
│ ├── build.gradle
│ ├── libs/
│ │ ├── agora-rtc-sdk.jar
│ │ ├── android-async-http-1.4.8.jar
│ │ ├── crasheye.jar
│ │ └── fastjson.jar
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── io/
│ │ └── agora/
│ │ └── demo/
│ │ └── agora/
│ │ └── ApplicationTest.java
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── io/
│ │ └── agora/
│ │ └── demo/
│ │ └── agora/
│ │ ├── AgoraApplication.java
│ │ ├── BaseActivity.java
│ │ ├── BaseEngineEventHandlerActivity.java
│ │ ├── ChannelActivity.java
│ │ ├── EntryActivity.java
│ │ ├── LoginActivity.java
│ │ ├── MessageHandler.java
│ │ └── util/
│ │ ├── LoggingUtils.java
│ │ └── NetworkConnectivityUtils.java
│ └── res/
│ ├── drawable-xhdpi/
│ │ ├── button_selector_hung_up.xml
│ │ ├── go_micro_button_background.xml
│ │ ├── go_video_button_background.xml
│ │ ├── room_leave_button_background.xml
│ │ ├── shape_theme.xml
│ │ └── shape_transparent.xml
│ ├── layout/
│ │ ├── actionbar.xml
│ │ ├── activity_entry.xml
│ │ ├── activity_login.xml
│ │ ├── activity_room.xml
│ │ └── viewlet_remote_user.xml
│ ├── menu/
│ │ └── menu_main.xml
│ ├── values/
│ │ ├── color.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── values-zh/
│ └── strings.xml
├── Android-MaterialRefreshLayout-master/
│ ├── .gitignore
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── com/
│ │ └── cjj/
│ │ └── android_materialrefreshlayout/
│ │ ├── AutoRefreshActivity.java
│ │ ├── BaseActivity.java
│ │ ├── LoadMoreActivity.java
│ │ ├── OverLayActivity.java
│ │ ├── ScrollViewActivity.java
│ │ ├── SimpleActivity.java
│ │ ├── SunActivity.java
│ │ ├── SwipeRefreshLayoutActivity.java
│ │ └── WaveActivity.java
│ └── res/
│ ├── layout/
│ │ ├── activity_base.xml
│ │ ├── activity_listview.xml
│ │ ├── activity_main.xml
│ │ ├── activity_scrollview.xml
│ │ ├── activity_simple.xml
│ │ ├── fragment_list.xml
│ │ ├── list_item.xml
│ │ └── toolbar_layout.xml
│ ├── menu/
│ │ └── menu_main.xml
│ ├── values/
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ ├── values-v19/
│ │ ├── dimens.xml
│ │ └── styles.xml
│ ├── values-v21/
│ │ └── styles.xml
│ └── values-w820dp/
│ └── dimens.xml
├── Android应用源码音乐实时跳动频谱显示Demo/
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── com/
│ │ └── terry/
│ │ └── AudioFx/
│ │ ├── AudioFxActivity.java
│ │ └── BaseVisualizerView.java
│ └── res/
│ ├── layout/
│ │ └── main.xml
│ └── values/
│ └── strings.xml
├── EventBus/
│ ├── .gitignore
│ ├── build.gradle
│ └── src/
│ └── org/
│ └── greenrobot/
│ └── eventbus/
│ ├── AsyncPoster.java
│ ├── BackgroundPoster.java
│ ├── EventBus.java
│ ├── EventBusBuilder.java
│ ├── EventBusException.java
│ ├── HandlerPoster.java
│ ├── NoSubscriberEvent.java
│ ├── PendingPost.java
│ ├── PendingPostQueue.java
│ ├── Subscribe.java
│ ├── SubscriberExceptionEvent.java
│ ├── SubscriberMethod.java
│ ├── SubscriberMethodFinder.java
│ ├── Subscription.java
│ ├── ThreadMode.java
│ ├── meta/
│ │ ├── AbstractSubscriberInfo.java
│ │ ├── SimpleSubscriberInfo.java
│ │ ├── SubscriberInfo.java
│ │ ├── SubscriberInfoIndex.java
│ │ └── SubscriberMethodInfo.java
│ └── util/
│ ├── AsyncExecutor.java
│ ├── ErrorDialogConfig.java
│ ├── ErrorDialogFragmentFactory.java
│ ├── ErrorDialogFragments.java
│ ├── ErrorDialogManager.java
│ ├── ExceptionToResourceMapping.java
│ ├── HasExecutionScope.java
│ └── ThrowableFailureEvent.java
├── EventBus3.0_Sample/
│ ├── .gitignore
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── com/
│ │ └── harvic/
│ │ ├── other/
│ │ │ ├── FirstEvent.java
│ │ │ ├── SecondEvent.java
│ │ │ └── ThirdEvent.java
│ │ └── tryeventbus2/
│ │ ├── MainActivity.java
│ │ └── SecondActivity.java
│ └── res/
│ ├── layout/
│ │ ├── activity_main.xml
│ │ └── activity_second.xml
│ ├── menu/
│ │ ├── main.xml
│ │ └── second.xml
│ ├── values/
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ ├── values-v11/
│ │ └── styles.xml
│ ├── values-v14/
│ │ └── styles.xml
│ └── values-w820dp/
│ └── dimens.xml
├── JieCaoVideoPlayer-develop/
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── fm/
│ │ └── jiecao/
│ │ └── jiecaovideoplayer/
│ │ └── ApplicationTest.java
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── assets/
│ │ │ └── jcvd.html
│ │ ├── java/
│ │ │ └── fm/
│ │ │ └── jiecao/
│ │ │ └── jiecaovideoplayer/
│ │ │ ├── AutoTinyActivity.java
│ │ │ ├── AutoTinyListActivity.java
│ │ │ ├── AutoTinyNormalActivity.java
│ │ │ ├── CustomView/
│ │ │ │ ├── JCVideoPlayerStandardAutoComplete.java
│ │ │ │ ├── JCVideoPlayerStandardFresco.java
│ │ │ │ ├── JCVideoPlayerStandardShowShareButtonAfterFullscreen.java
│ │ │ │ ├── JCVideoPlayerStandardShowTextureViewAfterAutoComplete.java
│ │ │ │ └── JCVideoPlayerStandardShowTitleAfterFullscreen.java
│ │ │ ├── DemoApplication.java
│ │ │ ├── ListViewActivity.java
│ │ │ ├── ListViewMultiHolderActivity.java
│ │ │ ├── ListViewNormalActivity.java
│ │ │ ├── ListViewViewpagerActivity.java
│ │ │ ├── MainActivity.java
│ │ │ ├── PlayDirectlyActivity.java
│ │ │ ├── RecyclerViewNormalActivity.java
│ │ │ ├── RecyclerViewVideoAdapter.java
│ │ │ ├── UIActivity.java
│ │ │ ├── UIBigChangeActivity.java
│ │ │ ├── UIImageLoaderActivity.java
│ │ │ ├── UISmallChangeActivity.java
│ │ │ ├── VideoConstant.java
│ │ │ ├── VideoListAdapter.java
│ │ │ └── WebViewActivity.java
│ │ └── res/
│ │ ├── drawable/
│ │ │ ├── share_selector.xml
│ │ │ └── skin_seek_progress.xml
│ │ ├── layout/
│ │ │ ├── activity_auto_tiny.xml
│ │ │ ├── activity_auto_tiny_list.xml
│ │ │ ├── activity_directly_play.xml
│ │ │ ├── activity_listview.xml
│ │ │ ├── activity_listview_content.xml
│ │ │ ├── activity_listview_viewpager.xml
│ │ │ ├── activity_loadimage.xml
│ │ │ ├── activity_main.xml
│ │ │ ├── activity_recyclerview_content.xml
│ │ │ ├── activity_ui.xml
│ │ │ ├── activity_ui_big_change.xml
│ │ │ ├── activity_ui_small_change.xml
│ │ │ ├── activity_webview.xml
│ │ │ ├── header_auto_tiny_normal.xml
│ │ │ ├── item_textview.xml
│ │ │ ├── item_videoview.xml
│ │ │ ├── layout_list.xml
│ │ │ ├── layout_standard_fresco.xml
│ │ │ └── layout_standard_with_share_button.xml
│ │ ├── values/
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── values-w820dp/
│ │ └── dimens.xml
│ └── test/
│ └── java/
│ └── fm/
│ └── jiecao/
│ └── jiecaovideoplayer/
│ └── ExampleUnitTest.java
├── MaterialRefresh_library/
│ ├── .gitignore
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── com/
│ │ └── cjj/
│ │ ├── CircleProgressBar.java
│ │ ├── MaterialFoodView.java
│ │ ├── MaterialFooterView.java
│ │ ├── MaterialHeadListener.java
│ │ ├── MaterialHeadView.java
│ │ ├── MaterialHeaderView.java
│ │ ├── MaterialProgressDrawable.java
│ │ ├── MaterialRefreshLayout.java
│ │ ├── MaterialRefreshListener.java
│ │ ├── MaterialWaveView.java
│ │ ├── SunFaceView.java
│ │ ├── SunLayout.java
│ │ ├── SunLineView.java
│ │ └── Util.java
│ └── res/
│ └── values/
│ ├── attrs.xml
│ ├── attrs_circle_progressbar.xml
│ ├── colors.xml
│ └── strings.xml
├── PhotoView-master/
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── uk/
│ │ └── co/
│ │ └── senab/
│ │ └── photoview/
│ │ └── sample/
│ │ ├── ActivityTransitionActivity.java
│ │ ├── ActivityTransitionToActivity.java
│ │ ├── HackyDrawerLayout.java
│ │ ├── HackyViewPager.java
│ │ ├── ImageAdapter.java
│ │ ├── ImageViewHolder.java
│ │ ├── LauncherActivity.java
│ │ ├── PicassoSampleActivity.java
│ │ ├── RotationSampleActivity.java
│ │ ├── SimpleSampleActivity.java
│ │ └── ViewPagerActivity.java
│ └── res/
│ ├── layout/
│ │ ├── activity_launcher.xml
│ │ ├── activity_main.xml
│ │ ├── activity_simple.xml
│ │ ├── activity_transition.xml
│ │ ├── activity_transition_to.xml
│ │ ├── activity_view_pager.xml
│ │ ├── item_image.xml
│ │ └── item_list_item.xml
│ ├── menu/
│ │ └── main_menu.xml
│ └── values/
│ ├── colors.xml
│ ├── strings.xml
│ ├── styles.xml
│ └── transitions.xml
├── PhotoView_library/
│ ├── LICENSE
│ ├── build.gradle
│ ├── gradle.properties
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ └── java/
│ └── uk/
│ └── co/
│ └── senab/
│ └── photoview/
│ ├── Compat.java
│ ├── DefaultOnDoubleTapListener.java
│ ├── IPhotoView.java
│ ├── PhotoView.java
│ ├── PhotoViewAttacher.java
│ ├── gestures/
│ │ ├── CupcakeGestureDetector.java
│ │ ├── EclairGestureDetector.java
│ │ ├── FroyoGestureDetector.java
│ │ ├── GestureDetector.java
│ │ ├── OnGestureListener.java
│ │ └── VersionedGestureDetector.java
│ ├── log/
│ │ ├── LogManager.java
│ │ ├── Logger.java
│ │ └── LoggerDefault.java
│ └── scrollerproxy/
│ ├── GingerScroller.java
│ ├── IcsScroller.java
│ ├── PreGingerScroller.java
│ └── ScrollerProxy.java
├── README.md
├── RecyclerViewDemo/
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── com/
│ │ └── atguigu/
│ │ └── recyclerviewdemo/
│ │ └── ExampleInstrumentedTest.java
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── atguigu/
│ │ │ └── recyclerviewdemo/
│ │ │ ├── DividerItemDecoration.java
│ │ │ ├── MainActivity.java
│ │ │ └── RecyclerDemoAdapter.java
│ │ └── res/
│ │ ├── drawable/
│ │ │ └── divider_bg.xml
│ │ ├── layout/
│ │ │ ├── activity_main.xml
│ │ │ └── item.xml
│ │ ├── values/
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── values-w820dp/
│ │ └── dimens.xml
│ └── test/
│ └── java/
│ └── com/
│ └── atguigu/
│ └── recyclerviewdemo/
│ └── ExampleUnitTest.java
├── SpeechDemo2/
│ ├── .gitignore
│ ├── build.gradle
│ ├── libs/
│ │ ├── Msc.jar
│ │ └── Sunflower.jar
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── com/
│ │ └── atguigu/
│ │ └── speechdemo2/
│ │ └── ExampleInstrumentedTest.java
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── assets/
│ │ │ └── iflytek/
│ │ │ └── recognize.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── atguigu/
│ │ │ └── speechdemo2/
│ │ │ ├── JsonParser.java
│ │ │ └── MainActivity.java
│ │ └── res/
│ │ ├── layout/
│ │ │ └── activity_main.xml
│ │ ├── values/
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── values-w820dp/
│ │ └── dimens.xml
│ └── test/
│ └── java/
│ └── com/
│ └── atguigu/
│ └── speechdemo2/
│ └── ExampleUnitTest.java
├── StartAllVideoPlayer/
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── com/
│ │ └── atguigu/
│ │ └── startallvideoplayer/
│ │ └── ExampleInstrumentedTest.java
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── atguigu/
│ │ │ └── startallvideoplayer/
│ │ │ └── MainActivity.java
│ │ └── res/
│ │ ├── layout/
│ │ │ └── activity_main.xml
│ │ ├── values/
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── values-w820dp/
│ │ └── dimens.xml
│ └── test/
│ └── java/
│ └── com/
│ └── atguigu/
│ └── startallvideoplayer/
│ └── ExampleUnitTest.java
├── SurfaceViewDemo/
│ ├── .gitignore
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── com/
│ │ └── example/
│ │ └── videotest/
│ │ ├── Constants.java
│ │ ├── MainActivity.java
│ │ ├── MediaPlayUtil.java
│ │ └── SurfaceViewTestActivity.java
│ └── res/
│ ├── layout/
│ │ ├── activity_main.xml
│ │ └── activity_surface_view_test.xml
│ ├── values/
│ │ ├── strings.xml
│ │ └── styles.xml
│ ├── values-v11/
│ │ └── styles.xml
│ └── values-v14/
│ └── styles.xml
├── app/
│ ├── .gitignore
│ ├── build.gradle
│ ├── libs/
│ │ ├── Msc.jar
│ │ ├── Sunflower.jar
│ │ └── picasso-2.5.2.jar
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── com/
│ │ └── atguigu/
│ │ └── mobileplayer1020/
│ │ └── ExampleInstrumentedTest.java
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── aidl/
│ │ │ └── com/
│ │ │ └── atguigu/
│ │ │ └── mobileplayer1020/
│ │ │ └── IMusicPlayerService.aidl
│ │ ├── assets/
│ │ │ └── iflytek/
│ │ │ └── recognize.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── atguigu/
│ │ │ └── mobileplayer1020/
│ │ │ ├── MainActivity.java
│ │ │ ├── WelcomeActivity.java
│ │ │ ├── activity/
│ │ │ │ ├── PicassoSampleActivity.java
│ │ │ │ ├── SearchActivity.java
│ │ │ │ ├── SystemAudioPlayerActivity.java
│ │ │ │ ├── SystemVideoPlayerActivity.java
│ │ │ │ └── VitamioVideoPlayerActivity.java
│ │ │ ├── adapter/
│ │ │ │ ├── LocalVideoAdapter.java
│ │ │ │ ├── NetAudioFragmentAdapter.java
│ │ │ │ ├── NetVideoAdapter.java
│ │ │ │ ├── RecyclerFragmentAdapter.java
│ │ │ │ └── SearchAdapter.java
│ │ │ ├── app/
│ │ │ │ └── MyApplication.java
│ │ │ ├── base/
│ │ │ │ └── BaseFragment.java
│ │ │ ├── bean/
│ │ │ │ ├── LyricBean.java
│ │ │ │ ├── MediaItem.java
│ │ │ │ ├── NetAudioBean.java
│ │ │ │ └── SearchBean.java
│ │ │ ├── fragment/
│ │ │ │ ├── LocalAudioFragment.java
│ │ │ │ ├── LocalVideoFragment.java
│ │ │ │ ├── NetAudioFragment.java
│ │ │ │ ├── NetVideoFragment.java
│ │ │ │ └── RecyclerViewFragment.java
│ │ │ ├── service/
│ │ │ │ └── MusicPlayerService.java
│ │ │ ├── utils/
│ │ │ │ ├── CacheUtils.java
│ │ │ │ ├── Constant.java
│ │ │ │ ├── DensityUtil.java
│ │ │ │ ├── JsonParser.java
│ │ │ │ ├── LyricParaser.java
│ │ │ │ └── Utils.java
│ │ │ └── view/
│ │ │ ├── BaseVisualizerView.java
│ │ │ ├── LyricShowView.java
│ │ │ ├── TitleBarView.java
│ │ │ ├── VideoView.java
│ │ │ └── VitamioVideoView.java
│ │ └── res/
│ │ ├── drawable/
│ │ │ ├── animation_list.xml
│ │ │ ├── audio_progress_horizontal.xml
│ │ │ ├── btn_audio_next_selector.xml
│ │ │ ├── btn_audio_pause_selector.xml
│ │ │ ├── btn_audio_playmode_all_selector.xml
│ │ │ ├── btn_audio_playmode_normal_selector.xml
│ │ │ ├── btn_audio_playmode_single_selector.xml
│ │ │ ├── btn_audio_pre_selector.xml
│ │ │ ├── btn_audio_start_selector.xml
│ │ │ ├── btn_exit_selector.xml
│ │ │ ├── btn_next_selector.xml
│ │ │ ├── btn_pause_selector.xml
│ │ │ ├── btn_pre_selector.xml
│ │ │ ├── btn_screen_default_selector.xml
│ │ │ ├── btn_screen_full_selector.xml
│ │ │ ├── btn_start_selector.xml
│ │ │ ├── btn_swich_lyric_selector.xml
│ │ │ ├── btn_swiche_player_selector.xml
│ │ │ ├── btn_voice_selector.xml
│ │ │ ├── iv_item_picture_popup_selector.xml
│ │ │ ├── progress_horizontal.xml
│ │ │ ├── rb_local_audio_selector.xml
│ │ │ ├── rb_local_video_selector.xml
│ │ │ ├── rb_net_audio_selector.xml
│ │ │ ├── rb_net_video_selector.xml
│ │ │ ├── rb_textcolor_selector.xml
│ │ │ ├── shape_red.xml
│ │ │ ├── shape_sousuo_bg.xml
│ │ │ ├── shape_sousuo_bg_pressed.xml
│ │ │ ├── shenhe_cai_pic_night_selector.xml
│ │ │ ├── shenhe_ding_pic_selector.xml
│ │ │ ├── text_color_selector.xml
│ │ │ ├── tv_search_drawable.xml
│ │ │ ├── tv_search_selector.xml
│ │ │ └── tv_search_textcolor.xml
│ │ ├── layout/
│ │ │ ├── activity_main.xml
│ │ │ ├── activity_picasso_sample.xml
│ │ │ ├── activity_search.xml
│ │ │ ├── activity_system_audio_player.xml
│ │ │ ├── activity_system_video_player.xml
│ │ │ ├── activity_test_b.xml
│ │ │ ├── activity_vitamio_video_player.xml
│ │ │ ├── activity_welcome.xml
│ │ │ ├── ad_middle.xml
│ │ │ ├── all_ad_item.xml
│ │ │ ├── all_gif_item.xml
│ │ │ ├── all_image_item.xml
│ │ │ ├── all_text_item.xml
│ │ │ ├── all_video_item.xml
│ │ │ ├── buffer.xml
│ │ │ ├── common_bottom.xml
│ │ │ ├── common_user_info.xml
│ │ │ ├── fragment_local_video.xml
│ │ │ ├── fragment_net_audio.xml
│ │ │ ├── fragment_net_video.xml
│ │ │ ├── fragment_recyclerview.xml
│ │ │ ├── gif_middle.xml
│ │ │ ├── image_middle.xml
│ │ │ ├── item_local_video.xml
│ │ │ ├── item_net_video.xml
│ │ │ ├── loading.xml
│ │ │ ├── mediacontroller.xml
│ │ │ ├── text_middle.xml
│ │ │ ├── titlebar.xml
│ │ │ └── video_middle.xml
│ │ ├── values/
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── values-w820dp/
│ │ └── dimens.xml
│ └── test/
│ └── java/
│ └── com/
│ └── atguigu/
│ └── mobileplayer1020/
│ └── ExampleUnitTest.java
├── binderService/
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── aidl/
│ │ └── com/
│ │ └── yanguangfu/
│ │ └── binder/
│ │ └── aidl/
│ │ ├── AIDLActivity.aidl
│ │ ├── AIDLService.aidl
│ │ └── Rect1.aidl
│ ├── java/
│ │ └── com/
│ │ └── yanguangfu/
│ │ └── binder/
│ │ ├── MainActivity.java
│ │ ├── MyService.java
│ │ └── aidl/
│ │ └── Rect1.java
│ └── res/
│ ├── layout/
│ │ └── activity_main.xml
│ └── values/
│ └── strings.xml
├── build.gradle
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── jcvideoplayer-lib/
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── fm/
│ │ └── jiecao/
│ │ └── jcvideoplayer_lib/
│ │ └── ApplicationTest.java
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── java/
│ │ │ └── fm/
│ │ │ └── jiecao/
│ │ │ └── jcvideoplayer_lib/
│ │ │ ├── JCMediaManager.java
│ │ │ ├── JCMediaPlayerListener.java
│ │ │ ├── JCResizeImageView.java
│ │ │ ├── JCResizeTextureView.java
│ │ │ ├── JCUserAction.java
│ │ │ ├── JCUserActionStandard.java
│ │ │ ├── JCUtils.java
│ │ │ ├── JCVideoPlayer.java
│ │ │ ├── JCVideoPlayerManager.java
│ │ │ ├── JCVideoPlayerSimple.java
│ │ │ └── JCVideoPlayerStandard.java
│ │ └── res/
│ │ ├── anim/
│ │ │ ├── quit_fullscreen.xml
│ │ │ └── start_fullscreen.xml
│ │ ├── drawable/
│ │ │ ├── jc_click_back_tiny_selector.xml
│ │ │ ├── jc_click_error_selector.xml
│ │ │ ├── jc_click_pause_selector.xml
│ │ │ ├── jc_click_play_selector.xml
│ │ │ ├── jc_dialog_progress.xml
│ │ │ ├── jc_dialog_progress_bg.xml
│ │ │ ├── jc_loading.xml
│ │ │ ├── jc_progress.xml
│ │ │ ├── jc_seek_progress.xml
│ │ │ ├── jc_seek_thumb.xml
│ │ │ ├── jc_seek_thumb_normal.xml
│ │ │ ├── jc_seek_thumb_pressed.xml
│ │ │ ├── jc_title_bg.xml
│ │ │ └── jc_volume_progress_bg.xml
│ │ ├── layout/
│ │ │ ├── jc_layout_base.xml
│ │ │ ├── jc_layout_standard.xml
│ │ │ ├── jc_progress_dialog.xml
│ │ │ └── jc_volume_dialog.xml
│ │ ├── values/
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ ├── values-pt/
│ │ │ └── strings.xml
│ │ ├── values-tr/
│ │ │ └── strings.xml
│ │ └── values-zh/
│ │ └── strings.xml
│ └── test/
│ └── java/
│ └── fm/
│ └── jiecao/
│ └── jcvideoplayer_lib/
│ └── ExampleUnitTest.java
├── settings.gradle
├── speechDemo/
│ ├── build.gradle
│ ├── libs/
│ │ ├── Msc.jar
│ │ └── Sunflower.jar
│ ├── lint.xml
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── assets/
│ │ ├── call.bnf
│ │ ├── grammar_sample.abnf
│ │ ├── iflytek/
│ │ │ └── recognize.xml
│ │ ├── keys
│ │ └── userwords
│ ├── java/
│ │ └── com/
│ │ └── iflytek/
│ │ ├── ise/
│ │ │ └── result/
│ │ │ ├── FinalResult.java
│ │ │ ├── ReadSentenceResult.java
│ │ │ ├── ReadSyllableResult.java
│ │ │ ├── ReadWordResult.java
│ │ │ ├── Result.java
│ │ │ ├── entity/
│ │ │ │ ├── Phone.java
│ │ │ │ ├── Sentence.java
│ │ │ │ ├── Syll.java
│ │ │ │ └── Word.java
│ │ │ ├── util/
│ │ │ │ ├── ResultFormatUtil.java
│ │ │ │ └── ResultTranslateUtil.java
│ │ │ └── xml/
│ │ │ └── XmlResultParser.java
│ │ ├── speech/
│ │ │ ├── setting/
│ │ │ │ ├── IatSettings.java
│ │ │ │ ├── IseSettings.java
│ │ │ │ ├── TtsSettings.java
│ │ │ │ └── UnderstanderSettings.java
│ │ │ └── util/
│ │ │ ├── ApkInstaller.java
│ │ │ ├── FucUtil.java
│ │ │ ├── JsonParser.java
│ │ │ ├── SettingTextWatcher.java
│ │ │ └── XmlParser.java
│ │ └── voicedemo/
│ │ ├── AsrDemo.java
│ │ ├── IatDemo.java
│ │ ├── IseDemo.java
│ │ ├── MainActivity.java
│ │ ├── SpeechApp.java
│ │ ├── TtsDemo.java
│ │ └── UnderstanderDemo.java
│ └── res/
│ ├── drawable/
│ │ ├── list_bg_color.xml
│ │ └── main_setting_btn_np.xml
│ ├── layout/
│ │ ├── iatdemo.xml
│ │ ├── isedemo.xml
│ │ ├── isrdemo.xml
│ │ ├── list_items.xml
│ │ ├── main.xml
│ │ ├── title.xml
│ │ ├── ttsdemo.xml
│ │ └── understander.xml
│ ├── values/
│ │ ├── colors.xml
│ │ ├── dimen.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── xml/
│ ├── iat_setting.xml
│ ├── ise_settings.xml
│ ├── tts_setting.xml
│ └── understand_setting.xml
├── vitamio/
│ ├── .classpath
│ ├── .gitignore
│ ├── .project
│ ├── .settings/
│ │ └── org.eclipse.jdt.core.prefs
│ ├── AndroidManifest.xml
│ ├── README.md
│ ├── build.gradle
│ ├── gen/
│ │ └── io/
│ │ └── vov/
│ │ └── vitamio/
│ │ ├── BuildConfig.java
│ │ └── R.java
│ ├── proguard-project.txt
│ ├── project.properties
│ ├── res/
│ │ ├── drawable/
│ │ │ ├── mediacontroller_button.xml
│ │ │ ├── scrubber_control_selector_holo.xml
│ │ │ └── scrubber_progress_horizontal_holo_dark.xml
│ │ ├── layout/
│ │ │ └── mediacontroller.xml
│ │ └── values/
│ │ ├── colors.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── src/
│ └── io/
│ └── vov/
│ └── vitamio/
│ ├── EGL.java
│ ├── MediaFile.java
│ ├── MediaFormat.java
│ ├── MediaMetadataRetriever.java
│ ├── MediaPlayer.java
│ ├── MediaScanner.java
│ ├── MediaScannerClient.java
│ ├── Metadata.java
│ ├── ThumbnailUtils.java
│ ├── VIntent.java
│ ├── Vitamio.java
│ ├── VitamioLicense.java
│ ├── activity/
│ │ └── InitActivity.java
│ ├── provider/
│ │ ├── MediaStore.java
│ │ └── MiniThumbFile.java
│ ├── utils/
│ │ ├── Base64.java
│ │ ├── CPU.java
│ │ ├── ContextUtils.java
│ │ ├── Crypto.java
│ │ ├── Device.java
│ │ ├── FileUtils.java
│ │ ├── IOUtils.java
│ │ ├── Log.java
│ │ ├── ScreenResolution.java
│ │ └── StringUtils.java
│ └── widget/
│ ├── CenterLayout.java
│ ├── MediaController.java
│ ├── OutlineTextView.java
│ └── VideoView.java
├── vitamio-sample/
│ ├── .classpath
│ ├── .gitignore
│ ├── .project
│ ├── .settings/
│ │ └── org.eclipse.jdt.core.prefs
│ ├── AndroidManifest.xml
│ ├── README.md
│ ├── build.gradle
│ ├── gen/
│ │ └── io/
│ │ └── vov/
│ │ └── vitamio/
│ │ ├── R.java
│ │ └── demo/
│ │ ├── BuildConfig.java
│ │ └── R.java
│ ├── libs/
│ │ └── umeng-analytics-v5.6.1.jar
│ ├── lint.xml
│ ├── proguard-project.txt
│ ├── project.properties
│ ├── res/
│ │ ├── layout/
│ │ │ ├── media_metadata.xml
│ │ │ ├── mediaplayer_1.xml
│ │ │ ├── mediaplayer_2.xml
│ │ │ ├── mediaplayer_3.xml
│ │ │ ├── subtitle1.xml
│ │ │ ├── subtitle2.xml
│ │ │ ├── videobuffer.xml
│ │ │ └── videoview.xml
│ │ └── values/
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── src/
│ └── io/
│ └── vov/
│ └── vitamio/
│ └── demo/
│ ├── MediaMetadataRetrieverDemo.java
│ ├── MediaPlayerDemo.java
│ ├── MediaPlayerDemo_Audio.java
│ ├── MediaPlayerDemo_Video.java
│ ├── MediaPlayerDemo_setSurface.java
│ ├── MediaPlayerSubtitle.java
│ ├── VideoSubtitleList.java
│ ├── VideoViewBuffer.java
│ ├── VideoViewDemo.java
│ ├── VideoViewSubtitle.java
│ └── VitamioListActivity.java
├── voicedialog/
│ ├── .gitignore
│ ├── build.gradle
│ ├── libs/
│ │ ├── Msc.jar
│ │ └── Sunflower.jar
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── com/
│ │ └── atguigu/
│ │ └── voicedialog/
│ │ └── ApplicationTest.java
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── assets/
│ │ │ └── iflytek/
│ │ │ └── recognize.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── atguigu/
│ │ │ └── voicedialog/
│ │ │ ├── ConversationInfo.java
│ │ │ ├── MainActivity.java
│ │ │ ├── MyApplication.java
│ │ │ ├── ResouesUtils.java
│ │ │ ├── SpeechBean.java
│ │ │ └── SpeechUtils.java
│ │ └── res/
│ │ ├── layout/
│ │ │ ├── activity_main.xml
│ │ │ └── listview_item.xml
│ │ ├── values/
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── values-w820dp/
│ │ └── dimens.xml
│ └── test/
│ └── java/
│ └── com/
│ └── atguigu/
│ └── voicedialog/
│ └── ExampleUnitTest.java
├── xUtils3-master/
│ ├── .gitignore
│ ├── build.gradle
│ ├── debug.keystore
│ ├── proguard-rules.pro
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── org/
│ │ └── xutils/
│ │ └── sample/
│ │ ├── BaseActivity.java
│ │ ├── BaseFragment.java
│ │ ├── BigImageActivity.java
│ │ ├── DbFragment.java
│ │ ├── DownloadActivity.java
│ │ ├── HttpFragment.java
│ │ ├── ImageFragment.java
│ │ ├── MainActivity.java
│ │ ├── MyApplication.java
│ │ ├── db/
│ │ │ ├── Child.java
│ │ │ └── Parent.java
│ │ ├── download/
│ │ │ ├── DefaultDownloadViewHolder.java
│ │ │ ├── DownloadCallback.java
│ │ │ ├── DownloadInfo.java
│ │ │ ├── DownloadManager.java
│ │ │ ├── DownloadState.java
│ │ │ ├── DownloadStateConverter.java
│ │ │ └── DownloadViewHolder.java
│ │ └── http/
│ │ ├── BaiduParams.java
│ │ ├── BaiduResponse.java
│ │ ├── JsonDemoParams.java
│ │ ├── JsonDemoParamsBuilder.java
│ │ └── JsonResponseParser.java
│ └── res/
│ ├── layout/
│ │ ├── activity_big_image.xml
│ │ ├── activity_download.xml
│ │ ├── activity_main.xml
│ │ ├── download_item.xml
│ │ ├── fragment_db.xml
│ │ ├── fragment_http.xml
│ │ ├── fragment_image.xml
│ │ └── image_item.xml
│ ├── menu/
│ │ └── menu_main.xml
│ ├── values/
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ ├── values-v21/
│ │ └── styles.xml
│ └── values-w820dp/
│ └── dimens.xml
└── xutils/
├── .gitignore
├── build.gradle
├── docs/
│ ├── 1.快速使用.md
│ ├── 2.任务和回调.md
│ ├── 3.网络请求.md
│ ├── 4.图片绑定.md
│ ├── 5.Sqlite数据库使用.md
│ └── 6.View注入.md
└── src/
└── main/
├── AndroidManifest.xml
├── java/
│ └── org/
│ └── xutils/
│ ├── DbManager.java
│ ├── HttpManager.java
│ ├── ImageManager.java
│ ├── ViewInjector.java
│ ├── cache/
│ │ ├── DiskCacheEntity.java
│ │ ├── DiskCacheFile.java
│ │ ├── LruCache.java
│ │ └── LruDiskCache.java
│ ├── common/
│ │ ├── Callback.java
│ │ ├── TaskController.java
│ │ ├── task/
│ │ │ ├── AbsTask.java
│ │ │ ├── Priority.java
│ │ │ ├── PriorityExecutor.java
│ │ │ ├── PriorityRunnable.java
│ │ │ ├── TaskControllerImpl.java
│ │ │ └── TaskProxy.java
│ │ └── util/
│ │ ├── DensityUtil.java
│ │ ├── DoubleKeyValueMap.java
│ │ ├── FileUtil.java
│ │ ├── IOUtil.java
│ │ ├── KeyValue.java
│ │ ├── LogUtil.java
│ │ ├── MD5.java
│ │ ├── ParameterizedTypeUtil.java
│ │ └── ProcessLock.java
│ ├── config/
│ │ └── DbConfigs.java
│ ├── db/
│ │ ├── CursorUtils.java
│ │ ├── DbManagerImpl.java
│ │ ├── DbModelSelector.java
│ │ ├── Selector.java
│ │ ├── annotation/
│ │ │ ├── Column.java
│ │ │ └── Table.java
│ │ ├── converter/
│ │ │ ├── BooleanColumnConverter.java
│ │ │ ├── ByteArrayColumnConverter.java
│ │ │ ├── ByteColumnConverter.java
│ │ │ ├── CharColumnConverter.java
│ │ │ ├── ColumnConverter.java
│ │ │ ├── ColumnConverterFactory.java
│ │ │ ├── DateColumnConverter.java
│ │ │ ├── DoubleColumnConverter.java
│ │ │ ├── FloatColumnConverter.java
│ │ │ ├── IntegerColumnConverter.java
│ │ │ ├── LongColumnConverter.java
│ │ │ ├── ShortColumnConverter.java
│ │ │ ├── SqlDateColumnConverter.java
│ │ │ └── StringColumnConverter.java
│ │ ├── sqlite/
│ │ │ ├── ColumnDbType.java
│ │ │ ├── SqlInfo.java
│ │ │ ├── SqlInfoBuilder.java
│ │ │ └── WhereBuilder.java
│ │ └── table/
│ │ ├── ColumnEntity.java
│ │ ├── ColumnUtils.java
│ │ ├── DbBase.java
│ │ ├── DbModel.java
│ │ ├── TableEntity.java
│ │ └── TableUtils.java
│ ├── ex/
│ │ ├── BaseException.java
│ │ ├── DbException.java
│ │ ├── FileLockedException.java
│ │ ├── HttpException.java
│ │ └── HttpRedirectException.java
│ ├── http/
│ │ ├── BaseParams.java
│ │ ├── HttpManagerImpl.java
│ │ ├── HttpMethod.java
│ │ ├── HttpTask.java
│ │ ├── ProgressHandler.java
│ │ ├── RequestParams.java
│ │ ├── RequestParamsHelper.java
│ │ ├── RequestTrackerWrapper.java
│ │ ├── annotation/
│ │ │ ├── HttpRequest.java
│ │ │ └── HttpResponse.java
│ │ ├── app/
│ │ │ ├── DefaultParamsBuilder.java
│ │ │ ├── HttpRetryHandler.java
│ │ │ ├── InputStreamResponseParser.java
│ │ │ ├── ParamsBuilder.java
│ │ │ ├── RedirectHandler.java
│ │ │ ├── RequestInterceptListener.java
│ │ │ ├── RequestTracker.java
│ │ │ └── ResponseParser.java
│ │ ├── body/
│ │ │ ├── BodyItemWrapper.java
│ │ │ ├── FileBody.java
│ │ │ ├── InputStreamBody.java
│ │ │ ├── MultipartBody.java
│ │ │ ├── ProgressBody.java
│ │ │ ├── RequestBody.java
│ │ │ ├── StringBody.java
│ │ │ └── UrlEncodedParamsBody.java
│ │ ├── cookie/
│ │ │ ├── CookieEntity.java
│ │ │ └── DbCookieStore.java
│ │ ├── loader/
│ │ │ ├── BooleanLoader.java
│ │ │ ├── ByteArrayLoader.java
│ │ │ ├── FileLoader.java
│ │ │ ├── IntegerLoader.java
│ │ │ ├── JSONArrayLoader.java
│ │ │ ├── JSONObjectLoader.java
│ │ │ ├── Loader.java
│ │ │ ├── LoaderFactory.java
│ │ │ ├── ObjectLoader.java
│ │ │ └── StringLoader.java
│ │ └── request/
│ │ ├── AssetsRequest.java
│ │ ├── HttpRequest.java
│ │ ├── LocalFileRequest.java
│ │ ├── UriRequest.java
│ │ └── UriRequestFactory.java
│ ├── image/
│ │ ├── AsyncDrawable.java
│ │ ├── GifDrawable.java
│ │ ├── ImageAnimationHelper.java
│ │ ├── ImageDecoder.java
│ │ ├── ImageLoader.java
│ │ ├── ImageManagerImpl.java
│ │ ├── ImageOptions.java
│ │ ├── MemCacheKey.java
│ │ ├── ReusableBitmapDrawable.java
│ │ └── ReusableDrawable.java
│ ├── view/
│ │ ├── EventListenerManager.java
│ │ ├── ViewFinder.java
│ │ ├── ViewInfo.java
│ │ ├── ViewInjectorImpl.java
│ │ └── annotation/
│ │ ├── ContentView.java
│ │ ├── Event.java
│ │ └── ViewInject.java
│ └── x.java
└── java_compat/
└── android/
└── backport/
└── webp/
└── WebPFactory.java
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
.gradle
.idea
build
*.iml
/local.properties
/bin
================================================
FILE: AgoraDemo/.gitignore
================================================
/build
================================================
FILE: AgoraDemo/build.gradle
================================================
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "io.agora.demo.agora"
minSdkVersion 14
targetSdkVersion 21
versionCode 20150915
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
// sourceSets {
// main {
// jniLibs.srcDirs = ['../../libs']
// }
// }
}
dependencies {
compile fileTree(include: ['*.jar'], dir: '../../libs')
compile 'com.android.support:appcompat-v7:21.0.3'
compile files('libs/agora-rtc-sdk.jar')
compile files('libs/android-async-http-1.4.8.jar')
compile files('libs/crasheye.jar')
compile files('libs/fastjson.jar')
}
================================================
FILE: AgoraDemo/proguard-rules.pro
================================================
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /Users/apple/Library/Android/sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
================================================
FILE: AgoraDemo/src/androidTest/java/io/agora/demo/agora/ApplicationTest.java
================================================
package io.agora.demo.agora;
import android.app.Application;
import android.test.ApplicationTestCase;
/**
* <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
*/
public class ApplicationTest extends ApplicationTestCase<Application> {
public ApplicationTest() {
super(Application.class);
}
}
================================================
FILE: AgoraDemo/src/main/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.agora.demo.agora">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_LOGS"/>
<application
android:name=".AgoraApplication"
android:icon="@drawable/app_icon_96"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar">
<activity
android:name="io.agora.demo.agora.EntryActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden|screenSize"
android:launchMode="singleTop"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="io.agora.demo.agora.LoginActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity
android:name="io.agora.demo.agora.ChannelActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
</application>
</manifest>
================================================
FILE: AgoraDemo/src/main/java/io/agora/demo/agora/AgoraApplication.java
================================================
package io.agora.demo.agora;
import android.app.Application;
import android.content.Context;
import android.util.Log;
import com.xsj.crasheye.Crasheye;
import io.agora.rtc.RtcEngine;
/**
* Created by apple on 15/9/9.
*/
public class AgoraApplication extends Application {
private RtcEngine rtcEngine;
private MessageHandler messageHandler;
@Override
public void onCreate(){
super.onCreate();
Crasheye.initWithNativeHandle(this, "06798b00");
messageHandler = new MessageHandler();
}
/**
* Test vendor key: 6D7A26A1D3554A54A9F43BE6797FE3E2
* @param vendorKey
*/
public void setRtcEngine(String vendorKey){
if(rtcEngine==null) {
rtcEngine = RtcEngine.create(getApplicationContext(), vendorKey, messageHandler);
}
}
public RtcEngine getRtcEngine(){
return rtcEngine;
}
public void setEngineEventHandlerActivity(BaseEngineEventHandlerActivity engineEventHandlerActivity){
messageHandler.setActivity(engineEventHandlerActivity);
}
}
================================================
FILE: AgoraDemo/src/main/java/io/agora/demo/agora/BaseActivity.java
================================================
package io.agora.demo.agora;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import io.agora.demo.agora.util.LoggingUtils;
/**
* Provide basic func for all activities used in App
*
* Created by on 9/12/15.
*/
public class BaseActivity extends FragmentActivity{
@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
}
protected void onPause() {
super.onPause();
}
protected void onResume() {
super.onResume();
}
// Global view click listener
private View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
onUserInteraction(view);
}
};
public View.OnClickListener getViewClickListener(){
return onClickListener;
}
/**
* Central point of handling all view click events
* @param view
*/
public void onUserInteraction(View view){
}
public void log(Object obj) {
// You can use filter *** to filter out message
LoggingUtils.error(getClass().getName(),
String.format("*** %s ***",
obj == null ? "--!--"
: obj.toString()));
}
}
================================================
FILE: AgoraDemo/src/main/java/io/agora/demo/agora/BaseEngineEventHandlerActivity.java
================================================
package io.agora.demo.agora;
import io.agora.rtc.IRtcEngineEventHandler;
/**
*
* A handler activity act as a bridge to take callbacks from @MessageHandler.
* Subclasses should override these key methods.
*
* Created by on 9/13/15.
*/
public class BaseEngineEventHandlerActivity extends BaseActivity {
public void onJoinChannelSuccess(String channel, int uid, int elapsed) {
}
public void onRejoinChannelSuccess(String channel, int uid, int elapsed) {
}
public void onError(int err) {
}
public void onCameraReady() {
}
public void onAudioQuality(int uid, int quality, short delay, short lost) {
}
public void onAudioTransportQuality(int uid, short delay, short lost) {
}
public void onVideoTransportQuality(int uid, short delay, short lost) {
}
public void onLeaveChannel(IRtcEngineEventHandler.RtcStats stats) {
}
public void onUpdateSessionStats(IRtcEngineEventHandler.RtcStats stats) {
}
public void onRecap(byte[] recap) {
}
public void onAudioVolumeIndication(IRtcEngineEventHandler.AudioVolumeInfo[] speakers, int totalVolume) {
}
public void onNetworkQuality(int quality) {
}
public void onUserJoined(int uid, int elapsed) {
}
public void onUserOffline(int uid) {
}
public void onUserMuteAudio(int uid, boolean muted) {
}
public void onUserMuteVideo(int uid, boolean muted) {
}
public void onAudioRecorderException(int nLastTimeStamp) {
}
public void onRemoteVideoStat(int uid, int frameCount, int delay, int receivedBytes) {
}
public void onLocalVideoStat(int sentBytes, int sentFrames) {
}
public void onFirstRemoteVideoFrame(int uid, int width, int height, int elapsed) {
}
public void onFirstLocalVideoFrame(int width, int height, int elapsed) {
}
public void onFirstRemoteVideoDecoded(int uid, int width, int height, int elapsed) {
}
public void onConnectionLost() {
}
public void onMediaEngineEvent(int code) {
}
}
================================================
FILE: AgoraDemo/src/main/java/io/agora/demo/agora/ChannelActivity.java
================================================
package io.agora.demo.agora;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.SurfaceView;
import android.view.View;
import android.view.WindowManager;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import io.agora.demo.agora.util.NetworkConnectivityUtils;
import io.agora.rtc.IRtcEngineEventHandler;
import io.agora.rtc.RtcEngine;
import io.agora.rtc.video.VideoCanvas;
/**
* some refs:
* <p/>
* 1. http://stackoverflow.com/questions/6026625/layout-design-surfaceview-doesnt-display
* 2. http://stackoverflow.com/questions/1096618/android-surfaceview-scrolling/2216788#2216788
*/
/**
* Created by apple on 15/9/9.
*/
public class ChannelActivity extends BaseEngineEventHandlerActivity {
public final static int CALLING_TYPE_VIDEO = 0x100;
public final static int CALLING_TYPE_VOICE = 0x101;
public final static String EXTRA_CALLING_TYPE = "EXTRA_CALLING_TYPE";
public final static String EXTRA_VENDOR_KEY = "EXTRA_VENDOR_KEY";
public final static String EXTRA_CHANNEL_ID = "EXTRA_CHANNEL_ID";
private int mCallingType;
private SurfaceView mLocalView;
private String vendorKey = "";
private String channelId = "";
private TextView mDuration;
private TextView mByteCounts;
private View mCameraEnabler;
private View mCameraSwitcher;
private LinearLayout mRemoteUserContainer;
private AlertDialog alertDialog;
private int time = 0;
private int mLastRxBytes = 0;
private int mLastTxBytes = 0;
private int mLastDuration = 0;
private int mRemoteUserViewWidth = 0;
RtcEngine rtcEngine;
@Override
public void onCreate(Bundle savedInstance) {
super.onCreate(savedInstance);
setContentView(R.layout.activity_room);
// keep screen on - turned on
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
mRemoteUserViewWidth = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 80, getResources().getDisplayMetrics());
mCallingType = getIntent().getIntExtra(EXTRA_CALLING_TYPE, CALLING_TYPE_VOICE /*default is voice call*/);
setupRtcEngine();
initViews();
setupTime();
if (CALLING_TYPE_VIDEO == mCallingType) {
// video call
View simulateClick = new View(getApplicationContext());
simulateClick.setId(R.id.wrapper_action_video_calling);
this.onUserInteraction(simulateClick);
} else if (CALLING_TYPE_VOICE == mCallingType) {
// voice call
View simulateClick = new View(getApplicationContext());
simulateClick.setId(R.id.wrapper_action_voice_calling);
this.onUserInteraction(simulateClick);
}
// check network
if (!NetworkConnectivityUtils.isConnectedToNetwork(getApplicationContext())) {
onError(104);
}
}
void setupChannel() {
String channelId = getIntent().getStringExtra(EXTRA_CHANNEL_ID);
this.channelId = channelId;
this.rtcEngine.joinChannel(
this.vendorKey,
this.channelId,
"" /*optionalInfo*/,
new Random().nextInt(Math.abs((int) System.currentTimeMillis()))/*optionalUid*/);
((TextView) findViewById(R.id.channel_id)).setText(String.format(getString(R.string.title_channel), channelId));
}
void setupRtcEngine() {
String vendorKey = getIntent().getStringExtra(EXTRA_VENDOR_KEY);
this.vendorKey = vendorKey;
// setup engine
((AgoraApplication) getApplication()).setRtcEngine(vendorKey);
rtcEngine = ((AgoraApplication) getApplication()).getRtcEngine();
// LogUtil.log.d(getApplicationContext().getExternalFilesDir(null).toString() + "/agorasdk.log");
rtcEngine.setLogFile(getApplicationContext().getExternalFilesDir(null).toString() + "/agorasdk.log");
// setup engine event activity
((AgoraApplication) getApplication()).setEngineEventHandlerActivity(this);
rtcEngine.enableVideo();
}
void ensureLocalViewIsCreated() {
if (this.mLocalView == null) {
// local view has not been added before
FrameLayout localViewContainer = (FrameLayout) findViewById(R.id.user_local_view);
SurfaceView localView = rtcEngine.CreateRendererView(getApplicationContext());
this.mLocalView = localView;
localViewContainer.addView(localView, new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT));
rtcEngine.enableVideo();
rtcEngine.setupLocalVideo(new VideoCanvas(this.mLocalView));
}
}
/**
* Initialize views and its listeners
*/
void initViews() {
// muter
CheckBox muter = (CheckBox) findViewById(R.id.action_muter);
muter.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean mutes) {
rtcEngine.muteLocalAudioStream(mutes);
compoundButton.setBackgroundResource(mutes ? R.drawable.ic_room_mute_pressed:R.drawable.ic_room_mute);
}
});
// speaker
CheckBox speaker = (CheckBox) findViewById(R.id.action_speaker);
speaker.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean usesSpeaker) {
rtcEngine.setEnableSpeakerphone(usesSpeaker);
compoundButton.setBackgroundResource(usesSpeaker ? R.drawable.ic_room_loudspeaker : R.drawable.ic_room_loudspeaker_pressed);
}
});
// camera enabler
CheckBox cameraEnabler = (CheckBox) findViewById(R.id.action_camera_enabler);
cameraEnabler.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean disablesCamera) {
rtcEngine.muteLocalVideoStream(disablesCamera);
if (disablesCamera) {
findViewById(R.id.user_local_voice_bg).setVisibility(View.VISIBLE);
rtcEngine.muteLocalVideoStream(true);
} else {
findViewById(R.id.user_local_voice_bg).setVisibility(View.GONE);
rtcEngine.muteLocalVideoStream(false);
}
compoundButton.setBackgroundResource(disablesCamera ? R.drawable.ic_room_button_close_pressed : R.drawable.ic_room_button_close);
}
});
// camera switcher
CheckBox cameraSwitch = (CheckBox) findViewById(R.id.action_camera_switcher);
cameraSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean switches) {
rtcEngine.switchCamera();
compoundButton.setBackgroundResource(switches ? R.drawable.ic_room_button_change_pressed : R.drawable.ic_room_button_change);
}
});
// setup states of action buttons
muter.setChecked(false);
speaker.setChecked(true);
cameraEnabler.setChecked(false);
cameraSwitch.setChecked(false);
findViewById(R.id.wrapper_action_video_calling).setOnClickListener(getViewClickListener());
findViewById(R.id.wrapper_action_voice_calling).setOnClickListener(getViewClickListener());
findViewById(R.id.action_hung_up).setOnClickListener(getViewClickListener());
findViewById(R.id.action_back).setOnClickListener(getViewClickListener());
mDuration = (TextView) findViewById(R.id.stat_time);
mByteCounts = (TextView) findViewById(R.id.stat_bytes);
mCameraEnabler = findViewById(R.id.wrapper_action_camera_enabler);
mCameraSwitcher = findViewById(R.id.wrapper_action_camera_switcher);
mRemoteUserContainer = (LinearLayout) findViewById(R.id.user_remote_views);
setRemoteUserViewVisibility(false);
}
void setRemoteUserViewVisibility(boolean isVisible) {
findViewById(R.id.user_remote_views).getLayoutParams().height =
isVisible ? (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 80, getResources().getDisplayMetrics())
: 0;
}
void removeBackgroundOfCallingWrapper() {
findViewById(R.id.wrapper_action_video_calling).setBackgroundResource(R.drawable.shape_transparent);
findViewById(R.id.wrapper_action_voice_calling).setBackgroundResource(R.drawable.shape_transparent);
}
void setupTime() {
TimerTask task = new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
time++;
if (time >= 3600) {
mDuration.setText(String.format("%d:%02d:%02d", time / 3600, (time % 3600) / 60, (time % 60)));
} else {
mDuration.setText(String.format("%02d:%02d", (time % 3600) / 60, (time % 60)));
}
}
});
}
};
Timer timer = new Timer();
timer.schedule(task, 1000, 1000);
}
/**
* 切换视频音频通话时,更新 view 的显示。只是更新重用的 view,并不新添加。
*
* @param callingType
*/
void updateRemoteUserViews(int callingType) {
int visibility = View.GONE;
if (CALLING_TYPE_VIDEO == callingType) {
visibility = View.GONE;
} else if (CALLING_TYPE_VOICE == callingType) {
visibility = View.VISIBLE;
}
for (int i = 0, size = mRemoteUserContainer.getChildCount(); i < size; i++) {
View singleRemoteView = mRemoteUserContainer.getChildAt(i);
singleRemoteView.findViewById(R.id.remote_user_voice_container).setVisibility(visibility);
if (CALLING_TYPE_VIDEO == callingType) {
// re-setup remote video
FrameLayout remoteVideoUser = (FrameLayout) singleRemoteView.findViewById(R.id.viewlet_remote_video_user);
// ensure remote video view setup
if(remoteVideoUser.getChildCount()>0) {
final SurfaceView remoteView = (SurfaceView) remoteVideoUser.getChildAt(0);
if(remoteView!=null) {
remoteView.setZOrderOnTop(true);
remoteView.setZOrderMediaOverlay(true);
int savedUid = (Integer) remoteVideoUser.getTag();
log("saved uid: " + savedUid);
rtcEngine.setupRemoteVideo(new VideoCanvas(remoteView, VideoCanvas.RENDER_MODE_ADAPTIVE, savedUid));
}
}
}
}
}
@Override
public void onUserInteraction(View view) {
switch (view.getId()) {
default:
super.onUserInteraction(view);
break;
case R.id.wrapper_action_video_calling: {
mCallingType = CALLING_TYPE_VIDEO;
mCameraEnabler.setVisibility(View.VISIBLE);
mCameraSwitcher.setVisibility(View.VISIBLE);
removeBackgroundOfCallingWrapper();
findViewById(R.id.wrapper_action_video_calling).setBackgroundResource(R.drawable.ic_room_button_yellow_bg);
findViewById(R.id.user_local_voice_bg).setVisibility(View.GONE);
// enable video call
ensureLocalViewIsCreated();
rtcEngine.enableVideo();
rtcEngine.muteLocalVideoStream(false);
rtcEngine.muteLocalAudioStream(false);
rtcEngine.muteAllRemoteVideoStreams(false);
// join video call
if (mRemoteUserContainer.getChildCount() == 0) {
this.setupChannel();
}
new android.os.Handler().postDelayed(new Runnable() {
@Override
public void run() {
updateRemoteUserViews(CALLING_TYPE_VIDEO);
}
},500);
// ensure video camera enabler states
CheckBox cameraEnabler = (CheckBox) findViewById(R.id.action_camera_enabler);
cameraEnabler.setChecked(false);
}
break;
case R.id.wrapper_action_voice_calling: {
mCallingType = CALLING_TYPE_VOICE;
mCameraEnabler.setVisibility(View.GONE);
mCameraSwitcher.setVisibility(View.GONE);
removeBackgroundOfCallingWrapper();
findViewById(R.id.wrapper_action_voice_calling).setBackgroundResource(R.drawable.ic_room_button_yellow_bg);
// show background for voice call
findViewById(R.id.user_local_voice_bg).setVisibility(View.VISIBLE);
ensureLocalViewIsCreated();
// disable video call when necessary
rtcEngine.disableVideo();
rtcEngine.muteLocalVideoStream(true);
rtcEngine.muteAllRemoteVideoStreams(true);
// join voice call
if (mRemoteUserContainer.getChildCount() == 0) {
this.setupChannel();
}
new android.os.Handler().postDelayed(new Runnable() {
@Override
public void run() {
updateRemoteUserViews(CALLING_TYPE_VOICE);
}
},500);
}
break;
case R.id.action_hung_up:
case R.id.action_back: {
onBackPressed();
}
break;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return true;
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
@Override
public void onBackPressed() {
new Thread(new Runnable() {
@Override
public void run() {
rtcEngine.leaveChannel();
}
}).run();
// keep screen on - turned off
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
public void onUpdateSessionStats(final IRtcEngineEventHandler.RtcStats stats) {
runOnUiThread(new Runnable() {
@Override
public void run() {
// bytes
mByteCounts.setText(((stats.txBytes + stats.rxBytes - mLastTxBytes - mLastRxBytes) / 1024 / (stats.totalDuration - mLastDuration + 1)) + "KB/s");
// remember data from this call back
mLastRxBytes = stats.rxBytes;
mLastTxBytes = stats.txBytes;
mLastDuration = stats.totalDuration;
}
});
}
public synchronized void onFirstRemoteVideoDecoded(final int uid, int width, int height, final int elapsed) {
log("onFirstRemoteVideoDecoded: uid: " + uid + ", width: " + width + ", height: " + height);
runOnUiThread(new Runnable() {
@Override
public void run() {
View remoteUserView = mRemoteUserContainer.findViewById(Math.abs(uid));
// ensure container is added
if (remoteUserView == null) {
LayoutInflater layoutInflater = getLayoutInflater();
View singleRemoteUser = layoutInflater.inflate(R.layout.viewlet_remote_user, null);
singleRemoteUser.setId(Math.abs(uid));
TextView username = (TextView) singleRemoteUser.findViewById(R.id.remote_user_name);
username.setText(String.valueOf(uid));
mRemoteUserContainer.addView(singleRemoteUser, new LinearLayout.LayoutParams(mRemoteUserViewWidth, mRemoteUserViewWidth));
remoteUserView = singleRemoteUser;
}
FrameLayout remoteVideoUser = (FrameLayout) remoteUserView.findViewById(R.id.viewlet_remote_video_user);
remoteVideoUser.removeAllViews();
remoteVideoUser.setTag(uid);
// ensure remote video view setup
final SurfaceView remoteView = RtcEngine.CreateRendererView(getApplicationContext());
remoteVideoUser.addView(remoteView, new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT));
remoteView.setZOrderOnTop(true);
remoteView.setZOrderMediaOverlay(true);
rtcEngine.enableVideo();
int successCode = rtcEngine.setupRemoteVideo(new VideoCanvas(remoteView, VideoCanvas.RENDER_MODE_ADAPTIVE, uid));
if (successCode < 0) {
new android.os.Handler().postDelayed(new Runnable() {
@Override
public void run() {
rtcEngine.setupRemoteVideo(new VideoCanvas(remoteView, VideoCanvas.RENDER_MODE_ADAPTIVE, uid));
remoteView.invalidate();
}
}, 500);
}
if (remoteUserView != null && CALLING_TYPE_VIDEO == mCallingType) {
remoteUserView.findViewById(R.id.remote_user_voice_container).setVisibility(View.GONE);
} else {
remoteUserView.findViewById(R.id.remote_user_voice_container).setVisibility(View.VISIBLE);
}
// app hints before you join
TextView appNotification = (TextView) findViewById(R.id.app_notification);
appNotification.setText("");
setRemoteUserViewVisibility(true);
}
});
}
public synchronized void onUserJoined(final int uid, int elapsed) {
log("onUserJoined: uid: " + uid);
View existedUser = mRemoteUserContainer.findViewById(Math.abs(uid));
if (existedUser != null) {
// user view already added
return;
}
runOnUiThread(new Runnable() {
@Override
public void run() {
// Handle the case onFirstRemoteVideoDecoded() is called before onUserJoined()
View singleRemoteUser = mRemoteUserContainer.findViewById(Math.abs(uid));
if (singleRemoteUser != null) {
return;
}
LayoutInflater layoutInflater = getLayoutInflater();
singleRemoteUser = layoutInflater.inflate(R.layout.viewlet_remote_user, null);
singleRemoteUser.setId(Math.abs(uid));
TextView username = (TextView) singleRemoteUser.findViewById(R.id.remote_user_name);
username.setText(String.valueOf(uid));
mRemoteUserContainer.addView(singleRemoteUser, new LinearLayout.LayoutParams(mRemoteUserViewWidth, mRemoteUserViewWidth));
// app hints before you join
TextView appNotification = (TextView) findViewById(R.id.app_notification);
appNotification.setText("");
setRemoteUserViewVisibility(true);
}
});
}
public void onUserOffline(final int uid) {
log("onUserOffline: uid: " + uid);
if(isFinishing()){
return;
}
if(mRemoteUserContainer==null){
return;
}
runOnUiThread(new Runnable() {
@Override
public void run() {
View userViewToRemove = mRemoteUserContainer.findViewById(Math.abs(uid));
mRemoteUserContainer.removeView(userViewToRemove);
// no joined users any more
if (mRemoteUserContainer.getChildCount() == 0) {
setRemoteUserViewVisibility(false);
TextView appNotification = (TextView) findViewById(R.id.app_notification);
appNotification.setText(R.string.room_prepare);
}
}
});
}
@Override
public void finish() {
if(alertDialog!=null){
alertDialog.dismiss();
}
super.finish();
}
@Override
public void onLeaveChannel(IRtcEngineEventHandler.RtcStats stats) {
try {
finish();
}catch (Exception e){
e.printStackTrace();
}
}
public void onUserMuteVideo(final int uid, final boolean muted) {
log("onUserMuteVideo uid: " + uid + ", muted: " + muted);
if(isFinishing()){
return;
}
if(mRemoteUserContainer==null){
return;
}
runOnUiThread(new Runnable() {
@Override
public void run() {
View remoteView = mRemoteUserContainer.findViewById(Math.abs(uid));
remoteView.findViewById(R.id.remote_user_voice_container).setVisibility(
(CALLING_TYPE_VOICE==mCallingType || (CALLING_TYPE_VIDEO==mCallingType && muted))
? View.VISIBLE
: View.GONE);
remoteView.invalidate();
}
});
}
@Override
public synchronized void onError(int err) {
if(isFinishing()){
return;
}
// incorrect vendor key
if(101==err){
runOnUiThread(new Runnable() {
@Override
public void run() {
if(alertDialog!=null){
return;
}
alertDialog= new AlertDialog.Builder(ChannelActivity.this).setCancelable(false)
.setMessage(getString(R.string.error_101))
.setPositiveButton(getString(R.string.error_confirm), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Go to login
Intent toLogin = new Intent(ChannelActivity.this, LoginActivity.class);
toLogin.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(toLogin);
rtcEngine.leaveChannel();
}
}).setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
dialogInterface.dismiss();
}
})
.create();
alertDialog.show();
}
});
}
// no network connection
if (104 == err) {
runOnUiThread(new Runnable() {
@Override
public void run() {
TextView appNotification = (TextView) findViewById(R.id.app_notification);
appNotification.setText(R.string.network_error);
}
});
}
}
public static String humanReadableByteCount(long bytes, boolean si) {
int unit = si ? 1000 : 1024;
if (bytes < unit) return bytes + " B";
int exp = (int) (Math.log(bytes) / Math.log(unit));
String pre = (si ? "kMGTPE" : "KMGTPE").charAt(exp - 1) + (si ? "" : "i");
return String.format("%.1f %sB", bytes / Math.pow(unit, exp), pre);
}
@Override
protected void onDestroy() {
super.onDestroy();
((AgoraApplication) getApplication()).setEngineEventHandlerActivity(null);
}
}
================================================
FILE: AgoraDemo/src/main/java/io/agora/demo/agora/EntryActivity.java
================================================
package io.agora.demo.agora;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.Handler;
import android.view.Window;
/**
* Launcher screen of app
*/
public class EntryActivity extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_entry);
enterAppWithDelay(2000);
}
@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
}
// move to login screen in delayInMillis
private void enterAppWithDelay(long delayInMillis){
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent=new Intent(EntryActivity.this,LoginActivity.class);
startActivity(intent);
finish();
}
},delayInMillis);
}
}
================================================
FILE: AgoraDemo/src/main/java/io/agora/demo/agora/LoginActivity.java
================================================
package io.agora.demo.agora;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.Window;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
/**
* Created by apple on 15/9/9.
*/
public class LoginActivity extends BaseActivity {
private EditText mVendorKey;
private EditText mChannelID;
@Override
public void onCreate(Bundle savedInstance) {
super.requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstance);
new RequestTask().execute("http://192.168.99.253:8970/agora.inner.test.key.txt"); // just update inner testing vendor key
setContentView(R.layout.activity_login);
initViews();
}
private void initViews() {
// bind listeners
findViewById(R.id.action_video_calling).setOnClickListener(getViewClickListener());
findViewById(R.id.action_voice_calling).setOnClickListener(getViewClickListener());
this.mVendorKey = (EditText) findViewById(R.id.input_vendor_key);
this.mChannelID = (EditText) findViewById(R.id.input_room_number);
// please your own key, the test key is unavailable soon.
this.mVendorKey.setText(getSharedPreferences(getClass().getName(), Context.MODE_PRIVATE).getString(ChannelActivity.EXTRA_VENDOR_KEY, "5a04ec409d984031bd0ebd417efd7f8f"));
this.mChannelID.setText(getSharedPreferences(getClass().getName(), Context.MODE_PRIVATE).getString(ChannelActivity.EXTRA_CHANNEL_ID, "88888888"));
}
@Override
public void onUserInteraction(View view) {
// Ensure inputs are valid;
if(!validateInput()){
return ;
}
switch (view.getId()) {
default:
super.onUserInteraction(view);
// Voice calling
case R.id.action_voice_calling: {
Intent intent = new Intent(LoginActivity.this, ChannelActivity.class);
intent.putExtra(ChannelActivity.EXTRA_CALLING_TYPE, ChannelActivity.CALLING_TYPE_VOICE);
intent.putExtra(ChannelActivity.EXTRA_VENDOR_KEY, mVendorKey.getText().toString());
intent.putExtra(ChannelActivity.EXTRA_CHANNEL_ID, mChannelID.getText().toString());
startActivity(intent);
// finish();
}
break;
// Video calling
case R.id.action_video_calling: {
Intent intent = new Intent(LoginActivity.this, ChannelActivity.class);
intent.putExtra(ChannelActivity.EXTRA_CALLING_TYPE, ChannelActivity.CALLING_TYPE_VIDEO);
intent.putExtra(ChannelActivity.EXTRA_VENDOR_KEY, mVendorKey.getText().toString());
intent.putExtra(ChannelActivity.EXTRA_CHANNEL_ID, mChannelID.getText().toString());
startActivity(intent);
// finish();
}
break;
}
// remember the vendor key and channel ID
getSharedPreferences(getClass().getName(), Context.MODE_PRIVATE)
.edit()
.putString(ChannelActivity.EXTRA_VENDOR_KEY, mVendorKey.getText().toString())
.putString(ChannelActivity.EXTRA_CHANNEL_ID, mChannelID.getText().toString())
.apply();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
boolean validateInput() {
String vendorKey = mVendorKey.getText().toString();
String roomNumber = mChannelID.getText().toString();
// validate vendor key
if (TextUtils.isEmpty(vendorKey)) {
Toast.makeText(getApplicationContext(), R.string.key_required, Toast.LENGTH_SHORT).show();
return false;
}
// validate room number - cannot be empty
if (TextUtils.isEmpty(roomNumber)) {
Toast.makeText(getApplicationContext(), R.string.room_required, Toast.LENGTH_SHORT).show();
return false;
}
// validate room number - should be digits only
if(!TextUtils.isDigitsOnly(roomNumber)){
Toast.makeText(getApplicationContext(), R.string.room_required, Toast.LENGTH_SHORT).show();
return false;
}
return true;
}
class RequestTask extends AsyncTask<String, String, String> {
String responseString = null;
@Override
protected String doInBackground(String... uri) {
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response;
try {
response = httpclient.execute(new HttpGet(uri[0]));
StatusLine statusLine = response.getStatusLine();
if(statusLine != null && statusLine.getStatusCode() == HttpStatus.SC_OK){
ByteArrayOutputStream out = new ByteArrayOutputStream();
response.getEntity().writeTo(out);
responseString = out.toString();
out.close();
} else{
//Closes the connection.
response.getEntity().getContent().close();
throw new IOException(statusLine.getReasonPhrase());
}
} catch (ClientProtocolException e) {
//TODO Handle problems..
} catch (IOException e) {
//TODO Handle problems..
}
return responseString;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
//Do anything with response..
if (responseString != null) {
mVendorKey.setText(responseString.replaceAll("\\s+",""), TextView.BufferType.EDITABLE);
}
}
}
}
================================================
FILE: AgoraDemo/src/main/java/io/agora/demo/agora/MessageHandler.java
================================================
package io.agora.demo.agora;
import io.agora.rtc.IRtcEngineEventHandler;
/**
* Created by apple on 15/9/10.
*/
public class MessageHandler extends IRtcEngineEventHandler {
private BaseEngineEventHandlerActivity mHandlerActivity;
//显示房间内其他用户的视频
@Override
public void onFirstRemoteVideoDecoded(int uid, int width, int height, int elapsed) {
BaseEngineEventHandlerActivity activity = getActivity();
if (activity != null) {
activity.onFirstRemoteVideoDecoded(uid, width, height, elapsed);
}
}
//用户进入
@Override
public void onUserJoined(int uid, int elapsed){
BaseEngineEventHandlerActivity activity = getActivity();
if (activity != null) {
activity.onUserJoined(uid, elapsed);
}
}
//用户退出
@Override
public void onUserOffline(int uid, int reason) {
BaseEngineEventHandlerActivity activity = getActivity();
if (activity != null) {
activity.onUserOffline(uid);
}
}
//监听其他用户是否关闭视频
@Override
public void onUserMuteVideo(int uid,boolean muted){
BaseEngineEventHandlerActivity activity = getActivity();
if (activity != null) {
activity.onUserMuteVideo(uid, muted);
}
}
//更新聊天数据
@Override
public void onRtcStats(RtcStats stats){
BaseEngineEventHandlerActivity activity = getActivity();
if (activity != null) {
activity.onUpdateSessionStats(stats);
}
}
@Override
public void onLeaveChannel(RtcStats stats) {
BaseEngineEventHandlerActivity activity = getActivity();
if (activity != null) {
activity.onLeaveChannel(stats);
}
}
@Override
public void onError(int err) {
BaseEngineEventHandlerActivity activity = getActivity();
if (activity != null) {
activity.onError(err);
}
}
public void setActivity(BaseEngineEventHandlerActivity activity) {
this.mHandlerActivity = activity;
}
public BaseEngineEventHandlerActivity getActivity(){
return mHandlerActivity;
}
}
================================================
FILE: AgoraDemo/src/main/java/io/agora/demo/agora/util/LoggingUtils.java
================================================
/*-
* Authors : harry
*
* Created Date : Jun 13, 2013
*
* Beauty Bond Inc. All rights reserved.
*
*/
package io.agora.demo.agora.util;
import android.util.Log;
import io.agora.demo.agora.BuildConfig;
/**
* This util offers flexible logging for development of Android application. We
* will need log information when the application is in working process. But it
* is not recommended to provide log information when the application is
* released. Thus the wrapper of Log will help. The principal is to offer a
* switch to turn on and off and any time to control if the log information is
* visible.
*/
public class LoggingUtils {
public static void debug (String tag, String msg) {
if (BuildConfig.DEBUG) {
msg = msg == null ? "" : msg;
Log.d(tag, msg);
}
}
public static void error (String tag, String msg) {
if (BuildConfig.DEBUG) {
msg = msg == null ? "" : msg;
Log.e(tag, msg);
}
}
public static void warning (String tag, String msg) {
if (BuildConfig.DEBUG) {
msg = msg == null ? "" : msg;
Log.w(tag, msg);
}
}
}
================================================
FILE: AgoraDemo/src/main/java/io/agora/demo/agora/util/NetworkConnectivityUtils.java
================================================
/**
* Created by harry on Nov 24, 2011 Copyright : FOCUSONE Inc. All Rights
* Reserved.
*/
package io.agora.demo.agora.util;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.NetworkInfo.State;
/**
* This utils helps to do the following: 1) If device is connected to mobile
* network 2) If device is connected to wifi 3) If device is connected, either
* to mobile network or wifi.
*
* @author harry
*/
public class NetworkConnectivityUtils {
/**
* Log
*/
private static final String TAG = NetworkConnectivityUtils.class.getSimpleName ();
public static boolean isConnectedToMobile (Context context) {
ConnectivityManager conMan = (ConnectivityManager) context.getSystemService (Context.CONNECTIVITY_SERVICE);
// mobile
State mobile = conMan.getNetworkInfo (0).getState ();
LoggingUtils.debug (TAG,
"checking if device is connected to mobile network");
return mobile == State.CONNECTED;
}
public static boolean isConnectedToWifi (Context context) {
ConnectivityManager conMan = (ConnectivityManager) context.getSystemService (Context.CONNECTIVITY_SERVICE);
// wifi
State wifi = conMan.getNetworkInfo (1).getState ();
LoggingUtils.debug (TAG, "checking if device is connected to wifi");
return wifi == State.CONNECTED;
}
/**
* This is a simple way to check if you are CONNECTED or is CONNECTING to
* network. NOTE: you need to set <uses-permission
* android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
* in your AndroidManifest.xml
*
* @param context a context used to getSystemInfo
* @return
*/
public static boolean isConnectedToNetwork (Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService (Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo ();
boolean isConnected = netInfo != null && netInfo.isConnected ();
LoggingUtils.debug (TAG, "device is connected to network : "
+ isConnected);
return isConnected;
}
private NetworkConnectivityUtils() {
}
}
================================================
FILE: AgoraDemo/src/main/res/drawable-xhdpi/button_selector_hung_up.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<!--扬声器-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false" android:drawable="@drawable/ic_room_button_red"/>
<item android:state_pressed="true" android:drawable="@drawable/ic_room_button_red_pressed"/>
</selector>
================================================
FILE: AgoraDemo/src/main/res/drawable-xhdpi/go_micro_button_background.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false" android:drawable="@drawable/ic_go_button_yellow"/>
<item android:state_pressed="true" android:drawable="@drawable/ic_go_button_yellow_pressed"/>
</selector>
================================================
FILE: AgoraDemo/src/main/res/drawable-xhdpi/go_video_button_background.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false" android:drawable="@drawable/ic_go_button_blue"/>
<item android:state_pressed="true" android:drawable="@drawable/ic_go_button_blue_pressed"/>
</selector>
================================================
FILE: AgoraDemo/src/main/res/drawable-xhdpi/room_leave_button_background.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false" android:drawable="@drawable/ic_room_button_red"/>
<item android:state_pressed="true" android:drawable="@drawable/ic_room_button_red_pressed"/>
</selector>
================================================
FILE: AgoraDemo/src/main/res/drawable-xhdpi/shape_theme.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="@color/white"/>
</shape>
================================================
FILE: AgoraDemo/src/main/res/drawable-xhdpi/shape_transparent.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#00000000" />
</shape>
================================================
FILE: AgoraDemo/src/main/res/layout/actionbar.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/acitonbar_title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:gravity="center"/>
</RelativeLayout>
================================================
FILE: AgoraDemo/src/main/res/layout/activity_entry.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/ic_splash_pic">
<ImageView
android:layout_width="wrap_content"
android:background="@drawable/ic_splash_pic"
android:layout_centerInParent="true"
android:layout_height="wrap_content" />
</RelativeLayout>
================================================
FILE: AgoraDemo/src/main/res/layout/activity_login.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/ic_go_bg"
android:focusable="true"
android:focusableInTouchMode="true">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="20dp">
<!--logo-->
<TextView
android:id="@+id/go_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:drawableLeft="@drawable/ic_go_logo"
android:drawablePadding="10dp"
android:gravity="center"
android:textSize="16sp"
android:textColor="@color/white"
android:text="@string/app_conf" />
<!--vendor key-->
<EditText
android:id="@+id/input_vendor_key"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="60dp"
android:layout_toRightOf="@+id/go_key_image"
android:background="@drawable/ic_go_input"
android:drawableLeft="@drawable/ic_go_input_cell_key"
android:drawablePadding="10dp"
android:gravity="center_vertical"
android:hint="@string/key_input"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:ellipsize="end"
android:singleLine="true" />
<!--room #-->
<EditText
android:id="@+id/input_room_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:inputType="numberDecimal"
android:layout_toRightOf="@+id/go_room_image"
android:background="@drawable/ic_go_input"
android:drawableLeft="@drawable/ic_go_input_cell_computer"
android:drawablePadding="10dp"
android:gravity="center_vertical"
android:hint="@string/room_input"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:ellipsize="end"
android:singleLine="true" />
<LinearLayout
android:layout_marginTop="15dp"
android:layout_width="match_parent"
android:minHeight="80dp"
android:gravity="center_vertical"
android:layout_height="wrap_content"
android:orientation="horizontal">
<!--Button for video calling-->
<RelativeLayout
android:id="@+id/action_video_calling"
android:layout_weight="1.0"
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="@drawable/ic_go_button_blue">
<ImageView
android:id="@+id/go_button_video_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_centerHorizontal="true"
android:background="@drawable/ic_go_button_cell_video"/>
<TextView
android:id="@+id/go_button_video_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:textSize="16sp"
android:layout_below="@+id/go_button_video_image"
android:layout_centerHorizontal="true"
android:text="@string/video_enter"
android:textColor="@color/white"/>
<ImageView
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_marginTop="15dp"
android:layout_marginLeft="5dp"
android:layout_below="@+id/go_button_video_image"
android:layout_toRightOf="@+id/go_button_video_text"
android:background="@drawable/ic_go_button_cell_arrow"/>
</RelativeLayout>
<!--Button for voice calling-->
<RelativeLayout
android:id="@+id/action_voice_calling"
android:layout_weight="1.0"
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="@drawable/ic_go_button_yellow">
<ImageView
android:id="@+id/go_button_micro_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_centerHorizontal="true"
android:background="@drawable/ic_go_button_cell_micro"/>
<TextView
android:id="@+id/go_button_micro_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="9dp"
android:textSize="16sp"
android:layout_below="@+id/go_button_micro_image"
android:layout_centerHorizontal="true"
android:text="@string/micro_enter"
android:textColor="@color/white"/>
<ImageView
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_marginTop="12dp"
android:layout_marginLeft="5dp"
android:layout_below="@+id/go_button_micro_image"
android:layout_toRightOf="@+id/go_button_micro_text"
android:background="@drawable/ic_go_button_cell_arrow"/>
</RelativeLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
</RelativeLayout>
================================================
FILE: AgoraDemo/src/main/res/layout/activity_room.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/custom_title_bar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:layout_alignParentTop="true"
android:background="@drawable/ic_room_button_rectangle_blue"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="15dp"
android:paddingRight="15dp">
<TextView
android:id="@+id/action_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:drawableLeft="@drawable/ic_navi_button_back"
android:drawablePadding="5dp"
android:textColor="@color/white"
android:textSize="14sp" />
<TextView
android:id="@+id/channel_id"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:layout_centerVertical="true"
android:gravity="center"
android:textColor="@color/white"
android:textSize="18sp" />
</RelativeLayout>
<!--4 actions buttons-->
<LinearLayout
android:id="@+id/top_actions_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/custom_title_bar"
android:background="@drawable/ic_room_rectangle"
android:minHeight="50dp"
android:orientation="horizontal"
android:paddingBottom="5dp"
android:paddingTop="5dp"
android:visibility="visible">
<!--静音-->
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_horizontal"
android:orientation="vertical">
<CheckBox
android:id="@+id/action_muter"
android:layout_width="35dp"
android:layout_height="35dp"
android:checked="true"
android:button="@drawable/shape_transparent"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:gravity="center"
android:text="@string/room_button_one"
android:textColor="@color/white"
android:textSize="10sp" />
</LinearLayout>
<!--扬声器-->
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_horizontal"
android:orientation="vertical">
<CheckBox
android:id="@+id/action_speaker"
android:layout_width="35dp"
android:layout_height="35dp"
android:checked="false"
android:button="@drawable/shape_transparent" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:gravity="center"
android:text="@string/room_button_two"
android:textColor="@color/white"
android:textSize="10sp" />
</LinearLayout>
<!--关闭摄像头-->
<LinearLayout
android:id="@+id/wrapper_action_camera_enabler"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_horizontal"
android:orientation="vertical">
<CheckBox
android:id="@+id/action_camera_enabler"
android:layout_width="35dp"
android:checked="true"
android:layout_height="35dp"
android:button="@drawable/shape_transparent"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:gravity="center"
android:text="@string/room_button_three"
android:textColor="@color/white"
android:textSize="10sp" />
</LinearLayout>
<!--切换摄像头-->
<LinearLayout
android:id="@+id/wrapper_action_camera_switcher"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_horizontal"
android:orientation="vertical">
<CheckBox
android:id="@+id/action_camera_switcher"
android:layout_width="35dp"
android:layout_height="35dp"
android:checked="true"
android:button="@drawable/shape_transparent" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:gravity="center"
android:text="@string/room_button_four"
android:textColor="@color/white"
android:textSize="10sp" />
</LinearLayout>
</LinearLayout>
<!--视频通话 语音通话切换部分-->
<FrameLayout
android:id="@+id/bottom_actions_container"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:background="@drawable/ic_room_button_rectangle_blue"
android:padding="6dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/ic_room_button_black_bg"
android:gravity="center_horizontal"
android:orientation="horizontal">
<!--button wrapper-->
<LinearLayout
android:id="@+id/wrapper_action_video_calling"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center">
<View
android:layout_width="1dp"
android:layout_height="0dp"
android:layout_weight="1" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_room_button_video" />
<!--视频通话按钮-->
<TextView
android:id="@+id/action_enable_video_call"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:background="@drawable/shape_transparent"
android:gravity="center_vertical"
android:text="@string/video_button"
android:textColor="@color/white"
android:textSize="16sp" />
<View
android:layout_width="1dp"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:id="@+id/wrapper_action_voice_calling"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal">
<View
android:layout_width="1dp"
android:layout_height="0dp"
android:layout_weight="1" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_room_button_audio" />
<!--语音通话按钮-->
<TextView
android:id="@+id/action_enable_voice_call"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:background="@drawable/shape_transparent"
android:gravity="center_vertical"
android:text="@string/micro_button"
android:textColor="@color/white"
android:textSize="16sp" />
<View
android:layout_width="1dp"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
</FrameLayout>
<!--本地通话 和 远程通话用户头像列表-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/bottom_actions_container"
android:layout_below="@id/top_actions_container">
<FrameLayout
android:id="@+id/user_local_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/yellow" />
<ImageView
android:id="@+id/user_local_voice_bg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
android:scaleType="centerCrop"
android:src="@drawable/ic_room_bg" />
<LinearLayout
android:id="@+id/user_remote_views"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_alignParentBottom="true"
android:orientation="horizontal" />
<LinearLayout
android:id="@+id/wrapper_session_stats"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginTop="20dp"
android:background="@drawable/ic_room_bg_talk_time"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="5dp">
<TextView
android:id="@+id/stat_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textColor="@color/yellow"
android:textSize="10sp"
android:textStyle="bold" />
<TextView
android:id="@+id/stat_bytes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="10sp"
android:textStyle="bold" />
</LinearLayout>
<TextView
android:id="@+id/app_notification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="@string/room_prepare"
android:textColor="@color/white"
android:textSize="18sp" />
<Button
android:id="@+id/action_hung_up"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_above="@id/user_remote_views"
android:layout_centerHorizontal="true"
android:layout_marginBottom="15dp"
android:background="@drawable/button_selector_hung_up" />
</RelativeLayout>
</RelativeLayout>
================================================
FILE: AgoraDemo/src/main/res/layout/viewlet_remote_user.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/viewlet_remote_video_user"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
<LinearLayout
android:id="@+id/remote_user_voice_container"
android:gravity="center_vertical"
android:background="@color/remote_user_bg"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<ImageView
android:layout_gravity="center_horizontal"
android:id="@+id/remote_user_voice_icon"
android:scaleType="centerInside"
android:src="@drawable/ic_room_cell_microphone"
android:layout_width="30dp"
android:layout_height="30dp" />
<TextView
android:id="@+id/remote_user_name"
android:padding="2dp"
android:textColor="@color/white"
android:textSize="10sp"
android:gravity="center"
android:singleLine="true"
android:ellipsize="end"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>
================================================
FILE: AgoraDemo/src/main/res/menu/menu_main.xml
================================================
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never" />
</menu>
================================================
FILE: AgoraDemo/src/main/res/values/color.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="transparent">#00000000</color>
<color name="white">#FFFFFF</color>
<color name="yellow">#DCBA75</color>
<color name="black">#000</color>
<color name="remote_user_bg">#3B3E4D</color>
</resources>
================================================
FILE: AgoraDemo/src/main/res/values/strings.xml
================================================
<resources>
<string name="app_name">AgoraDemo</string>
<string name="app_conf">AgoraDemo</string>
<string name="title_channel">Room %s</string>
<string name="action_settings">Settings</string>
<string name="key_input">Enter Vendor Key</string>
<string name="room_input">Enter Room No.</string>
<string name="video_enter">Join Video Call</string>
<string name="micro_enter">Join Voice Call</string>
<string name="video_button">Video Call</string>
<string name="micro_button">Voice Call</string>
<string name="key_required">Key can not be empty</string>
<string name="room_required">Room No. can not be empty and must be digits</string>
<string name="room_button_one">Mute</string>
<string name="room_button_two">Speaker</string>
<string name="room_button_three">Camera Off</string>
<string name="room_button_four">Switch Camera</string>
<string name="room_prepare">Waiting for attendees</string>
<string name="network_error">No network connection, please check your network</string>
<string name="error_101">Invalid vendor key</string>
<string name="error_confirm">Done</string>
</resources>
================================================
FILE: AgoraDemo/src/main/res/values/styles.xml
================================================
<resources>
<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<!-- ActionBar styles -->
<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
<item name="android:background">@drawable/shape_theme</item>
</style>
</resources>
================================================
FILE: AgoraDemo/src/main/res/values-zh/strings.xml
================================================
<resources>
<string name="app_name">AgoraDemo</string>
<string name="app_conf">Agora会议室</string>
<string name="title_channel">房间%s</string>
<string name="action_settings">设置</string>
<string name="key_input">输入厂商Key</string>
<string name="room_input">输入房间号码</string>
<string name="video_enter">进入视频通话</string>
<string name="micro_enter">进入语音通话</string>
<string name="video_button">视频通话</string>
<string name="micro_button">语音通话</string>
<string name="key_required">Key不能为空</string>
<string name="room_required">房间号不能为空, 且需要是数字</string>
<string name="room_button_one">静音</string>
<string name="room_button_two">扬声器</string>
<string name="room_button_three">关闭摄像头</string>
<string name="room_button_four">切换摄像头</string>
<string name="room_prepare">房间等待好友加入</string>
<string name="network_error">网络无法连接,请检查网络</string>
<string name="error_101">无效的厂商Key</string>
<string name="error_confirm">确定</string>
</resources>
================================================
FILE: Android-MaterialRefreshLayout-master/.gitignore
================================================
/build
/bin
================================================
FILE: Android-MaterialRefreshLayout-master/build.gradle
================================================
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.cjj.android_materialrefreshlayout"
minSdkVersion 11
targetSdkVersion 21
versionCode 2
versionName "2.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
}
}
dependencies {
compile project(':MaterialRefresh_library')
// compile 'com.cjj.materialrefeshlayout:library:1.3.0'
compile 'com.android.support:recyclerview-v7:23.1.1'
compile 'com.android.support:cardview-v7:23.1.1'
}
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.cjj.android_materialrefreshlayout" >
<application
android:allowBackup="true"
android:icon="@drawable/a"
android:label="@string/app_name"
android:theme="@style/BaseTheme" >
<activity
android:name=".ScrollViewActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".AutoRefreshActivity"/>
<activity android:name=".LoadMoreActivity"/>
<activity android:name=".SimpleActivity"/>
<activity android:name=".WaveActivity"/>
<activity android:name=".SunActivity"/>
<activity android:name=".OverLayActivity"/>
</application>
</manifest>
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/AutoRefreshActivity.java
================================================
package com.cjj.android_materialrefreshlayout;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.Toast;
import com.cjj.MaterialRefreshLayout;
import com.cjj.MaterialRefreshListener;
/**
* Created by Administrator on 2015/9/10.
*/
public class AutoRefreshActivity extends BaseActivity {
private MaterialRefreshLayout materialRefreshLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listview);
String[] array = new String[50];
for (int i = 0; i < array.length; i++) {
array[i] = "啊哈哈哈哈哈,啊哈哈 " + i;
}
final ListView listView = (ListView) findViewById(R.id.lv);
listView.setAdapter(new android.widget.ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, array));
materialRefreshLayout = (MaterialRefreshLayout) findViewById(R.id.refresh);
materialRefreshLayout.setLoadMore(true);
materialRefreshLayout.finishRefreshLoadMore();
materialRefreshLayout.setMaterialRefreshListener(new MaterialRefreshListener() {
@Override
public void onRefresh(final MaterialRefreshLayout materialRefreshLayout) {
materialRefreshLayout.postDelayed(new Runnable() {
@Override
public void run() {
materialRefreshLayout.finishRefresh();
}
}, 3000);
}
@Override
public void onfinish() {
Toast.makeText(AutoRefreshActivity.this, "finish", Toast.LENGTH_LONG).show();
}
@Override
public void onRefreshLoadMore(MaterialRefreshLayout materialRefreshLayout) {
Toast.makeText(AutoRefreshActivity.this, "load more", Toast.LENGTH_LONG).show();
}
});
materialRefreshLayout.autoRefresh();
}
}
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/BaseActivity.java
================================================
package com.cjj.android_materialrefreshlayout;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.LinearLayout;
/**
* Created by Administrator on 2015/9/6.
*/
public class BaseActivity extends AppCompatActivity {
private LinearLayout rootLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_base);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();
localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags);
}
initToolbar();
}
private void initToolbar() {
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null) {
setSupportActionBar(toolbar);
}
}
@Override
public void setContentView(int layoutId) {
setContentView(View.inflate(this, layoutId, null));
}
@Override
public void setContentView(View view) {
rootLayout = (LinearLayout) findViewById(R.id.root_layout);
if (rootLayout == null) return;
rootLayout.addView(view, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
initToolbar();
}
}
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/LoadMoreActivity.java
================================================
package com.cjj.android_materialrefreshlayout;
import android.content.Context;
import android.support.annotation.Nullable;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.Toast;
import com.cjj.MaterialRefreshLayout;
import com.cjj.MaterialRefreshListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class LoadMoreActivity extends BaseActivity {
private MaterialRefreshLayout materialRefreshLayout;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_list);
initsToolbar();
materialRefreshLayout = (MaterialRefreshLayout) findViewById(R.id.refresh);
materialRefreshLayout.setMaterialRefreshListener(new MaterialRefreshListener() {
@Override
public void onRefresh(final MaterialRefreshLayout materialRefreshLayout) {
materialRefreshLayout.postDelayed(new Runnable() {
@Override
public void run() {
materialRefreshLayout.finishRefresh();
}
}, 3000);
}
@Override
public void onfinish() {
Toast.makeText(LoadMoreActivity.this, "finish", Toast.LENGTH_LONG).show();
}
@Override
public void onRefreshLoadMore(final MaterialRefreshLayout materialRefreshLayout) {
Toast.makeText(LoadMoreActivity.this, "load more", Toast.LENGTH_LONG).show();
materialRefreshLayout.postDelayed(new Runnable() {
@Override
public void run() {
materialRefreshLayout.finishRefreshLoadMore();
}
}, 3000);
}
});
RecyclerView rv = (RecyclerView) findViewById(R.id.recyclerview);
setupRecyclerView(rv);
}
private void initsToolbar() {
Toolbar toolbar = (Toolbar) this.findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setOnMenuItemClickListener(onMenuItemClick);
}
private Toolbar.OnMenuItemClickListener onMenuItemClick = new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.style0:
materialRefreshLayout.setWaveColor(0xff8BC34A);
materialRefreshLayout.setIsOverLay(false);
materialRefreshLayout.setWaveShow(true);
materialRefreshLayout.setShowProgressBg(true);
materialRefreshLayout.setProgressColors(getResources().getIntArray(R.array.material_colors));
materialRefreshLayout.setShowArrow(true);
break;
case R.id.style1:
break;
// case R.id.style2:
// materialRefreshLayout.setWaveColor(0x90ffffff);
// materialRefreshLayout.setIsOverLay(true);
// materialRefreshLayout.setWaveShow(true);
// materialRefreshLayout.setShowProgressBg(true);
// materialRefreshLayout.setProgressColors(getResources().getIntArray(R.array.material_colors));
// materialRefreshLayout.setShowArrow(true);
// break;
// case R.id.style3:
// materialRefreshLayout.setWaveColor(0xff8BC34A);
// materialRefreshLayout.setIsOverLay(false);
// materialRefreshLayout.setWaveShow(true);
// materialRefreshLayout.setShowProgressBg(true);
// materialRefreshLayout.setProgressColors(getResources().getIntArray(R.array.material_colors));
// materialRefreshLayout.setShowArrow(true);
// break;
}
return true;
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
private void setupRecyclerView(RecyclerView recyclerView) {
recyclerView.setLayoutManager(new LinearLayoutManager(recyclerView.getContext()));
recyclerView.setAdapter(new SimpleStringRecyclerViewAdapter(LoadMoreActivity.this));
recyclerView.setItemAnimator(new DefaultItemAnimator());
}
private List<String> getRandomSublist(String[] array, int amount) {
ArrayList<String> list = new ArrayList<>(amount);
Random random = new Random();
while (list.size() < amount) {
list.add(array[random.nextInt(array.length)]);
}
return list;
}
public static class SimpleStringRecyclerViewAdapter
extends RecyclerView.Adapter<SimpleStringRecyclerViewAdapter.ViewHolder> {
public static class ViewHolder extends RecyclerView.ViewHolder {
public final ImageView mImageView;
public ViewHolder(View view) {
super(view);
mImageView = (ImageView) view.findViewById(R.id.avatar);
}
}
public SimpleStringRecyclerViewAdapter(Context context) {
super();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.list_item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
if (position == 0) {
holder.mImageView.setImageResource(R.drawable.a6);
} else if (position == 1) {
holder.mImageView.setImageResource(R.drawable.a5);
}
}
@Override
public int getItemCount() {
return 3;
}
}
}
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/OverLayActivity.java
================================================
package com.cjj.android_materialrefreshlayout;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.Toast;
import com.cjj.MaterialRefreshLayout;
import com.cjj.MaterialRefreshListener;
/**
* Created by cjj on 2016/2/24.
*/
public class OverLayActivity extends BaseActivity {
private MaterialRefreshLayout materialRefreshLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listview);
String[] array = new String[50];
for (int i = 0; i < array.length; i++) {
array[i] = "啊哈哈哈哈哈 " + i;
}
final ListView listView = (ListView) findViewById(R.id.lv);
listView.setAdapter(new android.widget.ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, array));
materialRefreshLayout = (MaterialRefreshLayout) findViewById(R.id.refresh);
materialRefreshLayout.setSunStyle(true);
materialRefreshLayout.setIsOverLay(true);
materialRefreshLayout.setMaterialRefreshListener(new MaterialRefreshListener() {
@Override
public void onRefresh(final MaterialRefreshLayout materialRefreshLayout) {
materialRefreshLayout.postDelayed(new Runnable() {
@Override
public void run() {
materialRefreshLayout.finishRefresh();
}
}, 3000);
}
@Override
public void onfinish() {
Toast.makeText(OverLayActivity.this, "finish", Toast.LENGTH_LONG).show();
}
});
}
}
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/ScrollViewActivity.java
================================================
package com.cjj.android_materialrefreshlayout;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import com.cjj.MaterialRefreshLayout;
import com.cjj.MaterialRefreshListener;
/**
* Created by Administrator on 2015/9/10.
*/
public class ScrollViewActivity extends BaseActivity implements View.OnClickListener {
private MaterialRefreshLayout materialRefreshLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scrollview);
materialRefreshLayout = (MaterialRefreshLayout) findViewById(R.id.refresh);
materialRefreshLayout.setMaterialRefreshListener(new MaterialRefreshListener() {
@Override
public void onRefresh(final MaterialRefreshLayout materialRefreshLayout) {
materialRefreshLayout.postDelayed(new Runnable() {
@Override
public void run() {
materialRefreshLayout.finishRefresh();
}
}, 3000);
materialRefreshLayout.finishRefreshLoadMore();
}
@Override
public void onfinish() {
Toast.makeText(ScrollViewActivity.this, "finish", Toast.LENGTH_LONG).show();
}
});
}
@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.simple:
startActivity(new Intent(this,SimpleActivity.class));
break;
case R.id.wave:
startActivity(new Intent(this,WaveActivity.class));
break;
case R.id.rv:
Intent intent = new Intent(this,LoadMoreActivity.class);
startActivity(intent);
break;
case R.id.lv:
Intent intent2 = new Intent(this,AutoRefreshActivity.class);
startActivity(intent2);
break;
case R.id.sun:
startActivity(new Intent(this,SunActivity.class));
break;
case R.id.overLay:
startActivity(new Intent(this,OverLayActivity.class));
break;
}
}
}
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/SimpleActivity.java
================================================
package com.cjj.android_materialrefreshlayout;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.Toast;
import com.cjj.MaterialRefreshLayout;
import com.cjj.MaterialRefreshListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* Created by cjj on 2016/2/24.
*/
public class SimpleActivity extends BaseActivity {
private MaterialRefreshLayout materialRefreshLayout;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_simple);
initsToolbar();
materialRefreshLayout = (MaterialRefreshLayout) findViewById(R.id.refresh);
materialRefreshLayout.setMaterialRefreshListener(new MaterialRefreshListener() {
@Override
public void onRefresh(final MaterialRefreshLayout materialRefreshLayout) {
materialRefreshLayout.postDelayed(new Runnable() {
@Override
public void run() {
materialRefreshLayout.finishRefresh();
}
}, 3000);
materialRefreshLayout.finishRefreshLoadMore();
}
@Override
public void onfinish() {
Toast.makeText(SimpleActivity.this, "finish", Toast.LENGTH_LONG).show();
}
});
RecyclerView rv = (RecyclerView) findViewById(R.id.recyclerview);
setupRecyclerView(rv);
}
private void initsToolbar() {
Toolbar toolbar = (Toolbar) this.findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
private void setupRecyclerView(RecyclerView recyclerView) {
recyclerView.setLayoutManager(new LinearLayoutManager(recyclerView.getContext()));
recyclerView.setAdapter(new SimpleStringRecyclerViewAdapter(SimpleActivity.this));
recyclerView.setItemAnimator(new DefaultItemAnimator());
}
private List<String> getRandomSublist(String[] array, int amount) {
ArrayList<String> list = new ArrayList<>(amount);
Random random = new Random();
while (list.size() < amount) {
list.add(array[random.nextInt(array.length)]);
}
return list;
}
public static class SimpleStringRecyclerViewAdapter
extends RecyclerView.Adapter<SimpleStringRecyclerViewAdapter.ViewHolder> {
public static class ViewHolder extends RecyclerView.ViewHolder {
public final ImageView mImageView;
public ViewHolder(View view) {
super(view);
mImageView = (ImageView) view.findViewById(R.id.avatar);
}
}
public SimpleStringRecyclerViewAdapter(Context context) {
super();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.list_item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
if (position == 0) {
holder.mImageView.setImageResource(R.drawable.a6);
} else if (position == 1) {
holder.mImageView.setImageResource(R.drawable.a5);
}
}
@Override
public int getItemCount() {
return 3;
}
}
}
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/SunActivity.java
================================================
package com.cjj.android_materialrefreshlayout;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.Toast;
import com.cjj.MaterialRefreshLayout;
import com.cjj.MaterialRefreshListener;
/**
* Created by cjj on 2016/2/24.
*/
public class SunActivity extends BaseActivity{
private MaterialRefreshLayout materialRefreshLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listview);
String[] array = new String[50];
for (int i = 0; i < array.length; i++) {
array[i] = "啊哈哈哈哈哈 " + i;
}
final ListView listView = (ListView) findViewById(R.id.lv);
listView.setAdapter(new android.widget.ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, array));
materialRefreshLayout = (MaterialRefreshLayout) findViewById(R.id.refresh);
materialRefreshLayout.setSunStyle(true);
materialRefreshLayout.setMaterialRefreshListener(new MaterialRefreshListener() {
@Override
public void onRefresh(final MaterialRefreshLayout materialRefreshLayout) {
materialRefreshLayout.postDelayed(new Runnable() {
@Override
public void run() {
materialRefreshLayout.finishRefresh();
}
}, 3000);
}
@Override
public void onfinish() {
Toast.makeText(SunActivity.this, "finish", Toast.LENGTH_LONG).show();
}
});
}
}
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/SwipeRefreshLayoutActivity.java
================================================
package com.cjj.android_materialrefreshlayout;
/**
* Created by Administrator on 2015/9/10.
*/
public class SwipeRefreshLayoutActivity {
}
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/WaveActivity.java
================================================
package com.cjj.android_materialrefreshlayout;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.Toast;
import com.cjj.MaterialRefreshLayout;
import com.cjj.MaterialRefreshListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* Created by cjj on 2016/2/24.
*/
public class WaveActivity extends BaseActivity {
private MaterialRefreshLayout materialRefreshLayout;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_simple);
initsToolbar();
materialRefreshLayout = (MaterialRefreshLayout) findViewById(R.id.refresh);
materialRefreshLayout.setWaveShow(true);
materialRefreshLayout.setWaveColor(Color.parseColor("#60ff2020"));
materialRefreshLayout.setMaterialRefreshListener(new MaterialRefreshListener() {
@Override
public void onRefresh(final MaterialRefreshLayout materialRefreshLayout) {
materialRefreshLayout.postDelayed(new Runnable() {
@Override
public void run() {
materialRefreshLayout.finishRefresh();
}
}, 3000);
materialRefreshLayout.finishRefreshLoadMore();
}
@Override
public void onfinish() {
Toast.makeText(WaveActivity.this, "finish", Toast.LENGTH_LONG).show();
}
});
RecyclerView rv = (RecyclerView) findViewById(R.id.recyclerview);
setupRecyclerView(rv);
}
private void initsToolbar() {
Toolbar toolbar = (Toolbar) this.findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
private void setupRecyclerView(RecyclerView recyclerView) {
recyclerView.setLayoutManager(new LinearLayoutManager(recyclerView.getContext()));
recyclerView.setAdapter(new SimpleStringRecyclerViewAdapter(WaveActivity.this));
recyclerView.setItemAnimator(new DefaultItemAnimator());
}
private List<String> getRandomSublist(String[] array, int amount) {
ArrayList<String> list = new ArrayList<>(amount);
Random random = new Random();
while (list.size() < amount) {
list.add(array[random.nextInt(array.length)]);
}
return list;
}
public static class SimpleStringRecyclerViewAdapter
extends RecyclerView.Adapter<SimpleStringRecyclerViewAdapter.ViewHolder> {
public static class ViewHolder extends RecyclerView.ViewHolder {
public final ImageView mImageView;
public ViewHolder(View view) {
super(view);
mImageView = (ImageView) view.findViewById(R.id.avatar);
}
}
public SimpleStringRecyclerViewAdapter(Context context) {
super();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.list_item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
if (position == 0) {
holder.mImageView.setImageResource(R.drawable.a6);
} else if (position == 1) {
holder.mImageView.setImageResource(R.drawable.a5);
}
}
@Override
public int getItemCount() {
return 3;
}
}
}
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/res/layout/activity_base.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/toolbar_layout" />
</LinearLayout>
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/res/layout/activity_listview.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<com.cjj.MaterialRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/refresh"
app:wave_color="#20ff2020"
app:progress_show_circle_backgroud="true"
app:overlay="false"
app:wave_show="true"
app:progress_backgroud_color="#FFFAFAFA"
app:progress_colors="@array/material_colors"
app:wave_height_type="normal"
app:progress_show_arrow="true"
>
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="wrap_content"></ListView>
</com.cjj.MaterialRefreshLayout>
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/res/layout/activity_main.xml
================================================
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<TextView android:text="@string/hello_world" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/res/layout/activity_scrollview.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<com.cjj.MaterialRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/refresh"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:overlay="false"
app:progress_backgroud_color="#FFFAFAFA"
app:progress_colors="@array/material_colors"
app:progress_show_arrow="true"
app:progress_show_circle_backgroud="true"
app:wave_color="#60ff2020"
app:wave_height_type="normal"
app:wave_show="true"
>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:id="@+id/simple"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:background="#ff2020"
android:onClick="onClick"
android:text="simple"
android:textColor="#fff"/>
<Button
android:id="@+id/wave"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:background="#ff2020"
android:onClick="onClick"
android:text="wave"
android:textColor="#fff"/>
<Button
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:background="#ff2020"
android:onClick="onClick"
android:text="loadMore"
android:textColor="#fff"/>
<Button
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:background="#ff2020"
android:onClick="onClick"
android:text="autoFresh"
android:textColor="#fff"/>
<Button
android:id="@+id/sun"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:background="#ff2020"
android:onClick="onClick"
android:text="sun"
android:textColor="#fff"/>
<Button
android:id="@+id/overLay"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:background="#ff2020"
android:onClick="onClick"
android:text="overLay"
android:textColor="#fff"/>
</LinearLayout>
</ScrollView>
</com.cjj.MaterialRefreshLayout>
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/res/layout/activity_simple.xml
================================================
<?xml version="1.0" encoding="utf-8"?><!--
~ Copyright (C) 2015 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<com.cjj.MaterialRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/refresh"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:overlay="true"
app:progress_colors="@array/material_colors"
app:progress_size_type="normal"
app:wave_height_type="normal"
app:wave_show="false"
>
<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</com.cjj.MaterialRefreshLayout>
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/res/layout/fragment_list.xml
================================================
<?xml version="1.0" encoding="utf-8"?><!--
~ Copyright (C) 2015 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<com.cjj.MaterialRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/refresh"
app:overlay="true"
app:isLoadMore="true"
app:progress_size_type="normal"
app:wave_color="#90ffffff"
app:wave_show="true"
app:progress_colors="@array/material_colors"
app:wave_height_type="normal"
>
<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</com.cjj.MaterialRefreshLayout>
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/res/layout/list_item.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2015 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:gravity="center_vertical">
<ImageView
android:src="@drawable/dd"
android:id="@+id/avatar"
android:scaleType="centerCrop"
android:layout_width="match_parent"
android:layout_height="250dp"
/>
</android.support.v7.widget.CardView>
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/res/layout/toolbar_layout.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/toolbar_padding_top"
android:background="#ff2020"
android:minHeight="?attr/actionBarSize"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/res/menu/menu_main.xml
================================================
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
<item android:id="@+id/style0"
android:title="wave"
android:orderInCategory="70"
app:showAsAction="never" />
<item android:id="@+id/style1"
android:title="overlay"
android:orderInCategory="80"
app:showAsAction="never" />
<item android:id="@+id/style2"
android:title="invasive"
android:orderInCategory="90"
app:showAsAction="never" />
<item android:id="@+id/style3" android:title="noninvasive"
android:orderInCategory="100" app:showAsAction="never" />
</menu>
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/res/values/colors.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="primary_color">#ff2020</color>
</resources>
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/res/values/dimens.xml
================================================
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="toolbar_padding_top">0dp</dimen>
</resources>
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/res/values/strings.xml
================================================
<resources>
<string name="app_name">MaterialRefreshLayout</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<integer-array name="material_colors">
<item>@color/material_red</item>
<item>@color/material_blue</item>
<item>@color/material_yellow</item>
</integer-array>
</resources>
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/res/values/styles.xml
================================================
<resources>
<!-- Base application theme. -->
<style name="BaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">#E91E63</item>
<item name="colorPrimaryDark">#E91E63</item>
<item name="colorAccent">#9C27B0</item>
</style>
</resources>
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/res/values-v19/dimens.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="toolbar_padding_top">25dp</dimen>
</resources>
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/res/values-v19/styles.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Base application theme. -->
<style name="CJJTheme" parent="BaseTheme">
<!-- 建议在BaseActivity中代码声明 -->
<!--<item name="android:windowTranslucentStatus">true</item>-->
<item name="android:windowContentOverlay">@null</item>
</style>
</resources>
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/res/values-v21/styles.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CJJTheme" parent="BaseTheme">
<item name="android:navigationBarColor">#E91E63</item>
</style>
</resources>
================================================
FILE: Android-MaterialRefreshLayout-master/src/main/res/values-w820dp/dimens.xml
================================================
<resources>
<!-- Example customization of dimensions originally defined in res/values/dimens.xml
(such as screen margins) for screens with more than 820dp of available width. This
would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). -->
<dimen name="activity_horizontal_margin">64dp</dimen>
</resources>
================================================
FILE: Android应用源码音乐实时跳动频谱显示Demo/build.gradle
================================================
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.terry.AudioFx"
minSdkVersion 15
targetSdkVersion 22
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
================================================
FILE: Android应用源码音乐实时跳动频谱显示Demo/src/main/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.terry.AudioFx"
android:versionCode="1"
android:versionName="1.0" >
<application
android:icon="@drawable/icon"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".AudioFxActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.RECORD_AUDIO" ></uses-permission>
</manifest>
================================================
FILE: Android应用源码音乐实时跳动频谱显示Demo/src/main/java/com/terry/AudioFx/AudioFxActivity.java
================================================
package com.terry.AudioFx;
import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.audiofx.Visualizer;
import android.os.Bundle;
public class AudioFxActivity extends Activity
{
private static final String TAG = "AudioFxActivity";
private MediaPlayer mMediaPlayer;
private Visualizer mVisualizer;
private BaseVisualizerView mBaseVisualizerView;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
setContentView(R.layout.main);
mBaseVisualizerView = (BaseVisualizerView) findViewById(R.id.visualizerview);
mMediaPlayer = MediaPlayer.create(this, R.raw.z8806c);
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mMediaPlayer.start();
setupVisualizerFxAndUi();
}
});
mMediaPlayer.setLooping(true);
}
/**
* 生成一个VisualizerView对象,使音频频谱的波段能够反映到 VisualizerView上
*/
private void setupVisualizerFxAndUi()
{
int audioSessionid = mMediaPlayer.getAudioSessionId();
System.out.println("audioSessionid=="+audioSessionid);
mVisualizer = new Visualizer(audioSessionid);
// 参数内必须是2的位数
mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
// 设置允许波形表示,并且捕获它
mBaseVisualizerView.setVisualizer(mVisualizer);
mVisualizer.setEnabled(true);
}
@Override
protected void onPause()
{
super.onPause();
if (isFinishing() && mMediaPlayer != null)
{
mVisualizer.release();
mMediaPlayer.release();
mMediaPlayer = null;
}
}
}
================================================
FILE: Android应用源码音乐实时跳动频谱显示Demo/src/main/java/com/terry/AudioFx/BaseVisualizerView.java
================================================
package com.terry.AudioFx;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Cap;
import android.graphics.Paint.Join;
import android.media.audiofx.Visualizer;
import android.util.AttributeSet;
import android.view.View;
public class BaseVisualizerView extends View implements Visualizer.OnDataCaptureListener{
private static final int DN_W = 480;
private static final int DN_H = 160;
private static final int DN_SL =14;
private static final int DN_SW = 6;
private int hgap = 0;
private int vgap = 0;
private int levelStep = 0;
private float strokeWidth = 0;
private float strokeLength = 0;
/**
* It is the max level.
*/
protected final static int MAX_LEVEL = 13;
/**
* It is the cylinder number.
*/
protected final static int CYLINDER_NUM = 20;
/**
* It is the visualizer.
*/
protected Visualizer mVisualizer = null;
/**
* It is the paint which is used to draw to visual effect.
*/
protected Paint mPaint = null;
/**
* It is the buffer of fft.
*/
protected byte[] mData = new byte[CYLINDER_NUM];
boolean mDataEn = true;
/**
* It constructs the base visualizer view.
* @param context It is the context of the view owner.
*/
public BaseVisualizerView(Context context) {
super(context);
initView();
}
private void initView() {
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setColor(Color.GREEN);
// mPaint.setColor(0xFFd60d25);
mPaint.setStrokeJoin(Join.ROUND);
mPaint.setStrokeCap(Cap.ROUND);
}
public BaseVisualizerView(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
float w, h, xr, yr;
w = right - left;
h = bottom - top;
xr = w / (float)DN_W;
yr = h / (float)DN_H;
strokeWidth = DN_SW * yr;
strokeLength = DN_SL * xr;
hgap = (int)((w - strokeLength * CYLINDER_NUM) / (CYLINDER_NUM + 1) );
vgap = (int)(h / (MAX_LEVEL + 2));
mPaint.setStrokeWidth(strokeWidth);
}
protected void drawCylinder(Canvas canvas, float x, byte value) {
if (value < 0) value = 0;
for (int i = 0; i < value; i++) {
float y = getHeight() - i * vgap - vgap;
canvas.drawLine(x, y, x + strokeLength, y, mPaint);
}
}
@Override
public void onDraw(Canvas canvas) {
for (int i = 0; i < CYLINDER_NUM; i ++) {
drawCylinder(canvas, strokeWidth / 2 + hgap + i * (hgap + strokeLength), mData[i]);
}
}
/**
* It sets the visualizer of the view. DO set the viaulizer to null when exit the program.
* @parma visualizer It is the visualizer to set.
*/
public void setVisualizer(Visualizer visualizer) {
if (visualizer != null) {
if (!visualizer.getEnabled()) {
visualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[0]);
}
levelStep = 128 / MAX_LEVEL;
visualizer.setDataCaptureListener(this, Visualizer.getMaxCaptureRate() / 2, false, true);
} else {
if (mVisualizer != null) {
mVisualizer.setEnabled(false);
mVisualizer.release();
}
}
mVisualizer = visualizer;
}
@Override
public void onFftDataCapture(Visualizer visualizer, byte[] fft,
int samplingRate) {
byte[] model = new byte[fft.length / 2 + 1];
if (mDataEn) {
model[0] = (byte) Math.abs(fft[1]);
int j = 1;
for (int i = 2; i < fft.length;) {
model[j] = (byte) Math.hypot(fft[i], fft[i + 1]);
i += 2;
j++;
}
} else {
for (int i = 0; i < CYLINDER_NUM; i ++) {
model[i] = 0;
}
}
for (int i = 0; i < CYLINDER_NUM; i ++) {
final byte a = (byte)(Math.abs(model[CYLINDER_NUM - i]) / levelStep);
final byte b = mData[i];
if (a > b) {
mData[i] = a;
} else {
if (b > 0) {
mData[i]--;
}
}
}
postInvalidate();
}
@Override
public void onWaveFormDataCapture(Visualizer visualizer, byte[] waveform,
int samplingRate) {
// Do nothing.
}
/**
* It enables or disables the data processs.
* @param en If this value is true it enables the data process..
*/
public void enableDataProcess(boolean en) {
mDataEn = en;
}
}
================================================
FILE: Android应用源码音乐实时跳动频谱显示Demo/src/main/res/layout/main.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<com.terry.AudioFx.BaseVisualizerView
android:id="@+id/visualizerview"
android:layout_width="fill_parent"
android:layout_height="100dp"
/>
</LinearLayout>
================================================
FILE: Android应用源码音乐实时跳动频谱显示Demo/src/main/res/values/strings.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, AudioFxActivity!</string>
<string name="app_name">android跳动频谱</string>
</resources>
================================================
FILE: EventBus/.gitignore
================================================
/build
================================================
FILE: EventBus/build.gradle
================================================
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'signing'
apply plugin: 'idea'
archivesBaseName = 'eventbus'
group = 'org.greenrobot'
version = '3.0.0'
sourceCompatibility = 1.7
def isSnapshot = version.endsWith('-SNAPSHOT')
def sonatypeRepositoryUrl
if(isSnapshot) {
sonatypeRepositoryUrl = "https://oss.sonatype.org/content/repositories/snapshots/"
} else {
sonatypeRepositoryUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
}
repositories {
mavenCentral()
}
// Still unsupported, see http://issues.gradle.org/browse/GRADLE-784
// Like this, it won't appear at all in the POM
configurations {
provided
deployerJars
}
dependencies {
provided 'com.google.android:android:4.1.1.4'
provided 'com.google.android:android-test:4.1.1.4'
provided 'com.google.android:annotations:4.1.1.4'
provided 'com.google.android:support-v4:r7'
// deployerJars 'org.apache.maven.wagon:wagon-webdav-jackrabbit:2.4'
deployerJars 'org.apache.maven.wagon:wagon-webdav:1.0-beta-2'
}
sourceSets {
main {
compileClasspath += configurations.provided
java {
srcDir 'src'
// exclude 'de/greenrobot/event/util/**'
}
}
}
idea {
module {
scopes.PROVIDED.plus += [configurations.provided]
}
}
javadoc {
failOnError = false
classpath += configurations.provided
title = "EventBus ${version} API"
options.bottom = 'Available under the Apache License, Version 2.0 - <i>Copyright © 2012-2016 <a href="http://greenrobot.org">greenrobot.org</a>. All Rights Reserved.</i>'
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from 'build/docs/javadoc'
}
task sourcesJar(type: Jar) {
from sourceSets.main.allSource
classifier = 'sources'
}
artifacts {
archives jar
archives javadocJar
archives sourcesJar
}
signing {
if(project.hasProperty('signing.keyId') && project.hasProperty('signing.password') &&
project.hasProperty('signing.secretKeyRingFile')) {
sign configurations.archives
} else {
println "Signing information missing/incomplete for ${project.name}"
}
}
uploadArchives {
repositories {
mavenDeployer {
if(project.hasProperty('preferedRepo') && project.hasProperty('preferedUsername')
&& project.hasProperty('preferedPassword')) {
configuration = configurations.deployerJars
repository(url: preferedRepo) {
authentication(userName: preferedUsername, password: preferedPassword)
}
} else if(project.hasProperty('sonatypeUsername') && project.hasProperty('sonatypePassword')) {
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
repository(url: sonatypeRepositoryUrl) {
authentication(userName: sonatypeUsername, password: sonatypePassword)
}
} else {
println "Settings sonatypeUsername/sonatypePassword missing/incomplete for ${project.name}"
}
pom.project {
name 'EventBus'
packaging 'jar'
description 'EventBus is a publish/subscribe event bus optimized for Android .'
url 'http://greenrobot.org/eventbus/'
scm {
url 'https://github.com/greenrobot/EventBus'
connection 'scm:git@github.com:greenrobot/EventBus.git'
developerConnection 'scm:git@github.com:greenrobot/EventBus.git'
}
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
distribution 'repo'
}
}
developers {
developer {
id 'greenrobot'
name 'greenrobot'
}
}
issueManagement {
system 'GitHub Issues'
url 'https://github.com/greenrobot/EventBus/issues'
}
organization {
name 'greenrobot'
url 'http://greenrobot.org'
}
}
}
}
}
================================================
FILE: EventBus/src/org/greenrobot/eventbus/AsyncPoster.java
================================================
/*
* Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.greenrobot.eventbus;
/**
* Posts events in background.
*
* @author Markus
*/
class AsyncPoster implements Runnable {
private final PendingPostQueue queue;
private final EventBus eventBus;
AsyncPoster(EventBus eventBus) {
this.eventBus = eventBus;
queue = new PendingPostQueue();
}
public void enqueue(Subscription subscription, Object event) {
PendingPost pendingPost = PendingPost.obtainPendingPost(subscription, event);
queue.enqueue(pendingPost);
eventBus.getExecutorService().execute(this);
}
@Override
public void run() {
PendingPost pendingPost = queue.poll();
if(pendingPost == null) {
throw new IllegalStateException("No pending post available");
}
eventBus.invokeSubscriber(pendingPost);
}
}
================================================
FILE: EventBus/src/org/greenrobot/eventbus/BackgroundPoster.java
================================================
/*
* Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.greenrobot.eventbus;
import android.util.Log;
/**
* Posts events in background.
*
* @author Markus
*/
final class BackgroundPoster implements Runnable {
private final PendingPostQueue queue;
private final EventBus eventBus;
private volatile boolean executorRunning;
BackgroundPoster(EventBus eventBus) {
this.eventBus = eventBus;
queue = new PendingPostQueue();
}
public void enqueue(Subscription subscription, Object event) {
PendingPost pendingPost = PendingPost.obtainPendingPost(subscription, event);
synchronized (this) {
queue.enqueue(pendingPost);
if (!executorRunning) {
executorRunning = true;
eventBus.getExecutorService().execute(this);
}
}
}
@Override
public void run() {
try {
try {
while (true) {
PendingPost pendingPost = queue.poll(1000);
if (pendingPost == null) {
synchronized (this) {
// Check again, this time in synchronized
pendingPost = queue.poll();
if (pendingPost == null) {
executorRunning = false;
return;
}
}
}
eventBus.invokeSubscriber(pendingPost);
}
} catch (InterruptedException e) {
Log.w("Event", Thread.currentThread().getName() + " was interruppted", e);
}
} finally {
executorRunning = false;
}
}
}
================================================
FILE: EventBus/src/org/greenrobot/eventbus/EventBus.java
================================================
/*
* Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.greenrobot.eventbus;
import android.os.Looper;
import android.util.Log;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutorService;
/**
* EventBus is a central publish/subscribe event system for Android. Events are posted ({@link #post(Object)}) to the
* bus, which delivers it to subscribers that have a matching handler method for the event type. To receive events,
* subscribers must register themselves to the bus using {@link #register(Object)}. Once registered, subscribers
* receive events until {@link #unregister(Object)} is called. Event handling methods must be annotated by
* {@link Subscribe}, must be public, return nothing (void), and have exactly one parameter
* (the event).
*
* @author Markus Junginger, greenrobot
*/
public class EventBus {
/** Log tag, apps may override it. */
public static String TAG = "EventBus";
static volatile EventBus defaultInstance;
private static final EventBusBuilder DEFAULT_BUILDER = new EventBusBuilder();
private static final Map<Class<?>, List<Class<?>>> eventTypesCache = new HashMap<>();
private final Map<Class<?>, CopyOnWriteArrayList<Subscription>> subscriptionsByEventType;
private final Map<Object, List<Class<?>>> typesBySubscriber;
private final Map<Class<?>, Object> stickyEvents;
private final ThreadLocal<PostingThreadState> currentPostingThreadState = new ThreadLocal<PostingThreadState>() {
@Override
protected PostingThreadState initialValue() {
return new PostingThreadState();
}
};
private final HandlerPoster mainThreadPoster;
private final BackgroundPoster backgroundPoster;
private final AsyncPoster asyncPoster;
private final SubscriberMethodFinder subscriberMethodFinder;
private final ExecutorService executorService;
private final boolean throwSubscriberException;
private final boolean logSubscriberExceptions;
private final boolean logNoSubscriberMessages;
private final boolean sendSubscriberExceptionEvent;
private final boolean sendNoSubscriberEvent;
private final boolean eventInheritance;
private final int indexCount;
/** Convenience singleton for apps using a process-wide EventBus instance. */
public static EventBus getDefault() {
if (defaultInstance == null) {
synchronized (EventBus.class) {
if (defaultInstance == null) {
defaultInstance = new EventBus();
}
}
}
return defaultInstance;
}
public static EventBusBuilder builder() {
return new EventBusBuilder();
}
/** For unit test primarily. */
public static void clearCaches() {
SubscriberMethodFinder.clearCaches();
eventTypesCache.clear();
}
/**
* Creates a new EventBus instance; each instance is a separate scope in which events are delivered. To use a
* central bus, consider {@link #getDefault()}.
*/
public EventBus() {
this(DEFAULT_BUILDER);
}
EventBus(EventBusBuilder builder) {
subscriptionsByEventType = new HashMap<>();
typesBySubscriber = new HashMap<>();
stickyEvents = new ConcurrentHashMap<>();
mainThreadPoster = new HandlerPoster(this, Looper.getMainLooper(), 10);
backgroundPoster = new BackgroundPoster(this);
asyncPoster = new AsyncPoster(this);
indexCount = builder.subscriberInfoIndexes != null ? builder.subscriberInfoIndexes.size() : 0;
subscriberMethodFinder = new SubscriberMethodFinder(builder.subscriberInfoIndexes,
builder.strictMethodVerification, builder.ignoreGeneratedIndex);
logSubscriberExceptions = builder.logSubscriberExceptions;
logNoSubscriberMessages = builder.logNoSubscriberMessages;
sendSubscriberExceptionEvent = builder.sendSubscriberExceptionEvent;
sendNoSubscriberEvent = builder.sendNoSubscriberEvent;
throwSubscriberException = builder.throwSubscriberException;
eventInheritance = builder.eventInheritance;
executorService = builder.executorService;
}
/**
* Registers the given subscriber to receive events. Subscribers must call {@link #unregister(Object)} once they
* are no longer interested in receiving events.
* <p/>
* Subscribers have event handling methods that must be annotated by {@link Subscribe}.
* The {@link Subscribe} annotation also allows configuration like {@link
* ThreadMode} and priority.
*/
public void register(Object subscriber) {
Class<?> subscriberClass = subscriber.getClass();
List<SubscriberMethod> subscriberMethods = subscriberMethodFinder.findSubscriberMethods(subscriberClass);
synchronized (this) {
for (SubscriberMethod subscriberMethod : subscriberMethods) {
subscribe(subscriber, subscriberMethod);
}
}
}
// Must be called in synchronized block
private void subscribe(Object subscriber, SubscriberMethod subscriberMethod) {
Class<?> eventType = subscriberMethod.eventType;
Subscription newSubscription = new Subscription(subscriber, subscriberMethod);
CopyOnWriteArrayList<Subscription> subscriptions = subscriptionsByEventType.get(eventType);
if (subscriptions == null) {
subscriptions = new CopyOnWriteArrayList<>();
subscriptionsByEventType.put(eventType, subscriptions);
} else {
if (subscriptions.contains(newSubscription)) {
throw new EventBusException("Subscriber " + subscriber.getClass() + " already registered to event "
+ eventType);
}
}
int size = subscriptions.size();
for (int i = 0; i <= size; i++) {
if (i == size || subscriberMethod.priority > subscriptions.get(i).subscriberMethod.priority) {
subscriptions.add(i, newSubscription);
break;
}
}
List<Class<?>> subscribedEvents = typesBySubscriber.get(subscriber);
if (subscribedEvents == null) {
subscribedEvents = new ArrayList<>();
typesBySubscriber.put(subscriber, subscribedEvents);
}
subscribedEvents.add(eventType);
if (subscriberMethod.sticky) {
if (eventInheritance) {
// Existing sticky events of all subclasses of eventType have to be considered.
// Note: Iterating over all events may be inefficient with lots of sticky events,
// thus data structure should be changed to allow a more efficient lookup
// (e.g. an additional map storing sub classes of super classes: Class -> List<Class>).
Set<Map.Entry<Class<?>, Object>> entries = stickyEvents.entrySet();
for (Map.Entry<Class<?>, Object> entry : entries) {
Class<?> candidateEventType = entry.getKey();
if (eventType.isAssignableFrom(candidateEventType)) {
Object stickyEvent = entry.getValue();
checkPostStickyEventToSubscription(newSubscription, stickyEvent);
}
}
} else {
Object stickyEvent = stickyEvents.get(eventType);
checkPostStickyEventToSubscription(newSubscription, stickyEvent);
}
}
}
private void checkPostStickyEventToSubscription(Subscription newSubscription, Object stickyEvent) {
if (stickyEvent != null) {
// If the subscriber is trying to abort the event, it will fail (event is not tracked in posting state)
// --> Strange corner case, which we don't take care of here.
postToSubscription(newSubscription, stickyEvent, Looper.getMainLooper() == Looper.myLooper());
}
}
public synchronized boolean isRegistered(Object subscriber) {
return typesBySubscriber.containsKey(subscriber);
}
/** Only updates subscriptionsByEventType, not typesBySubscriber! Caller must update typesBySubscriber. */
private void unsubscribeByEventType(Object subscriber, Class<?> eventType) {
List<Subscription> subscriptions = subscriptionsByEventType.get(eventType);
if (subscriptions != null) {
int size = subscriptions.size();
for (int i = 0; i < size; i++) {
Subscription subscription = subscriptions.get(i);
if (subscription.subscriber == subscriber) {
subscription.active = false;
subscriptions.remove(i);
i--;
size--;
}
}
}
}
/** Unregisters the given subscriber from all event classes. */
public synchronized void unregister(Object subscriber) {
List<Class<?>> subscribedTypes = typesBySubscriber.get(subscriber);
if (subscribedTypes != null) {
for (Class<?> eventType : subscribedTypes) {
unsubscribeByEventType(subscriber, eventType);
}
typesBySubscriber.remove(subscriber);
} else {
Log.w(TAG, "Subscriber to unregister was not registered before: " + subscriber.getClass());
}
}
/** Posts the given event to the event bus. */
public void post(Object event) {
PostingThreadState postingState = currentPostingThreadState.get();
List<Object> eventQueue = postingState.eventQueue;
eventQueue.add(event);
if (!postingState.isPosting) {
postingState.isMainThread = Looper.getMainLooper() == Looper.myLooper();
postingState.isPosting = true;
if (postingState.canceled) {
throw new EventBusException("Internal error. Abort state was not reset");
}
try {
while (!eventQueue.isEmpty()) {
postSingleEvent(eventQueue.remove(0), postingState);
}
} finally {
postingState.isPosting = false;
postingState.isMainThread = false;
}
}
}
/**
* Called from a subscriber's event handling method, further event delivery will be canceled. Subsequent
* subscribers
* won't receive the event. Events are usually canceled by higher priority subscribers (see
* {@link Subscribe#priority()}). Canceling is restricted to event handling methods running in posting thread
* {@link ThreadMode#POSTING}.
*/
public void cancelEventDelivery(Object event) {
PostingThreadState postingState = currentPostingThreadState.get();
if (!postingState.isPosting) {
throw new EventBusException(
"This method may only be called from inside event handling methods on the posting thread");
} else if (event == null) {
throw new EventBusException("Event may not be null");
} else if (postingState.event != event) {
throw new EventBusException("Only the currently handled event may be aborted");
} else if (postingState.subscription.subscriberMethod.threadMode != ThreadMode.POSTING) {
throw new EventBusException(" event handlers may only abort the incoming event");
}
postingState.canceled = true;
}
/**
* Posts the given event to the event bus and holds on to the event (because it is sticky). The most recent sticky
* event of an event's type is kept in memory for future access by subscribers using {@link Subscribe#sticky()}.
*/
public void postSticky(Object event) {
synchronized (stickyEvents) {
stickyEvents.put(event.getClass(), event);
}
// Should be posted after it is putted, in case the subscriber wants to remove immediately
post(event);
}
/**
* Gets the most recent sticky event for the given type.
*
* @see #postSticky(Object)
*/
public <T> T getStickyEvent(Class<T> eventType) {
synchronized (stickyEvents) {
return eventType.cast(stickyEvents.get(eventType));
}
}
/**
* Remove and gets the recent sticky event for the given event type.
*
* @see #postSticky(Object)
*/
public <T> T removeStickyEvent(Class<T> eventType) {
synchronized (stickyEvents) {
return eventType.cast(stickyEvents.remove(eventType));
}
}
/**
* Removes the sticky event if it equals to the given event.
*
* @return true if the events matched and the sticky event was removed.
*/
public boolean removeStickyEvent(Object event) {
synchronized (stickyEvents) {
Class<?> eventType = event.getClass();
Object existingEvent = stickyEvents.get(eventType);
if (event.equals(existingEvent)) {
stickyEvents.remove(eventType);
return true;
} else {
return false;
}
}
}
/**
* Removes all sticky events.
*/
public void removeAllStickyEvents() {
synchronized (stickyEvents) {
stickyEvents.clear();
}
}
public boolean hasSubscriberForEvent(Class<?> eventClass) {
List<Class<?>> eventTypes = lookupAllEventTypes(eventClass);
if (eventTypes != null) {
int countTypes = eventTypes.size();
for (int h = 0; h < countTypes; h++) {
Class<?> clazz = eventTypes.get(h);
CopyOnWriteArrayList<Subscription> subscriptions;
synchronized (this) {
subscriptions = subscriptionsByEventType.get(clazz);
}
if (subscriptions != null && !subscriptions.isEmpty()) {
return true;
}
}
}
return false;
}
private void postSingleEvent(Object event, PostingThreadState postingState) throws Error {
Class<?> eventClass = event.getClass();
boolean subscriptionFound = false;
if (eventInheritance) {
List<Class<?>> eventTypes = lookupAllEventTypes(eventClass);
int countTypes = eventTypes.size();
for (int h = 0; h < countTypes; h++) {
Class<?> clazz = eventTypes.get(h);
subscriptionFound |= postSingleEventForEventType(event, postingState, clazz);
}
} else {
subscriptionFound = postSingleEventForEventType(event, postingState, eventClass);
}
if (!subscriptionFound) {
if (logNoSubscriberMessages) {
Log.d(TAG, "No subscribers registered for event " + eventClass);
}
if (sendNoSubscriberEvent && eventClass != NoSubscriberEvent.class &&
eventClass != SubscriberExceptionEvent.class) {
post(new NoSubscriberEvent(this, event));
}
}
}
private boolean postSingleEventForEventType(Object event, PostingThreadState postingState, Class<?> eventClass) {
CopyOnWriteArrayList<Subscription> subscriptions;
synchronized (this) {
subscriptions = subscriptionsByEventType.get(eventClass);
}
if (subscriptions != null && !subscriptions.isEmpty()) {
for (Subscription subscription : subscriptions) {
postingState.event = event;
postingState.subscription = subscription;
boolean aborted = false;
try {
postToSubscription(subscription, event, postingState.isMainThread);
aborted = postingState.canceled;
} finally {
postingState.event = null;
postingState.subscription = null;
postingState.canceled = false;
}
if (aborted) {
break;
}
}
return true;
}
return false;
}
private void postToSubscription(Subscription subscription, Object event, boolean isMainThread) {
switch (subscription.subscriberMethod.threadMode) {
case POSTING:
invokeSubscriber(subscription, event);
break;
case MAIN:
if (isMainThread) {
invokeSubscriber(subscription, event);
} else {
mainThreadPoster.enqueue(subscription, event);
}
break;
case BACKGROUND:
if (isMainThread) {
backgroundPoster.enqueue(subscription, event);
} else {
invokeSubscriber(subscription, event);
}
break;
case ASYNC:
asyncPoster.enqueue(subscription, event);
break;
default:
throw new IllegalStateException("Unknown thread mode: " + subscription.subscriberMethod.threadMode);
}
}
/** Looks up all Class objects including super classes and interfaces. Should also work for interfaces. */
private static List<Class<?>> lookupAllEventTypes(Class<?> eventClass) {
synchronized (eventTypesCache) {
List<Class<?>> eventTypes = eventTypesCache.get(eventClass);
if (eventTypes == null) {
eventTypes = new ArrayList<>();
Class<?> clazz = eventClass;
while (clazz != null) {
eventTypes.add(clazz);
addInterfaces(eventTypes, clazz.getInterfaces());
clazz = clazz.getSuperclass();
}
eventTypesCache.put(eventClass, eventTypes);
}
return eventTypes;
}
}
/** Recurses through super interfaces. */
static void addInterfaces(List<Class<?>> eventTypes, Class<?>[] interfaces) {
for (Class<?> interfaceClass : interfaces) {
if (!eventTypes.contains(interfaceClass)) {
eventTypes.add(interfaceClass);
addInterfaces(eventTypes, interfaceClass.getInterfaces());
}
}
}
/**
* Invokes the subscriber if the subscriptions is still active. Skipping subscriptions prevents race conditions
* between {@link #unregister(Object)} and event delivery. Otherwise the event might be delivered after the
* subscriber unregistered. This is particularly important for main thread delivery and registrations bound to the
* live cycle of an Activity or Fragment.
*/
void invokeSubscriber(PendingPost pendingPost) {
Object event = pendingPost.event;
Subscription subscription = pendingPost.subscription;
PendingPost.releasePendingPost(pendingPost);
if (subscription.active) {
invokeSubscriber(subscription, event);
}
}
void invokeSubscriber(Subscription subscription, Object event) {
try {
subscription.subscriberMethod.method.invoke(subscription.subscriber, event);
} catch (InvocationTargetException e) {
handleSubscriberException(subscription, event, e.getCause());
} catch (IllegalAccessException e) {
throw new IllegalStateException("Unexpected exception", e);
}
}
private void handleSubscriberException(Subscription subscription, Object event, Throwable cause) {
if (event instanceof SubscriberExceptionEvent) {
if (logSubscriberExceptions) {
// Don't send another SubscriberExceptionEvent to avoid infinite event recursion, just log
Log.e(TAG, "SubscriberExceptionEvent subscriber " + subscription.subscriber.getClass()
+ " threw an exception", cause);
SubscriberExceptionEvent exEvent = (SubscriberExceptionEvent) event;
Log.e(TAG, "Initial event " + exEvent.causingEvent + " caused exception in "
+ exEvent.causingSubscriber, exEvent.throwable);
}
} else {
if (throwSubscriberException) {
throw new EventBusException("Invoking subscriber failed", cause);
}
if (logSubscriberExceptions) {
Log.e(TAG, "Could not dispatch event: " + event.getClass() + " to subscribing class "
+ subscription.subscriber.getClass(), cause);
}
if (sendSubscriberExceptionEvent) {
SubscriberExceptionEvent exEvent = new SubscriberExceptionEvent(this, cause, event,
subscription.subscriber);
post(exEvent);
}
}
}
/** For ThreadLocal, much faster to set (and get multiple values). */
final static class PostingThreadState {
final List<Object> eventQueue = new ArrayList<Object>();
boolean isPosting;
boolean isMainThread;
Subscription subscription;
Object event;
boolean canceled;
}
ExecutorService getExecutorService() {
return executorService;
}
// Just an idea: we could provide a callback to post() to be notified, an alternative would be events, of course...
/* public */interface PostCallback {
void onPostCompleted(List<SubscriberExceptionEvent> exceptionEvents);
}
@Override
public String toString() {
return "EventBus[indexCount=" + indexCount + ", eventInheritance=" + eventInheritance + "]";
}
}
================================================
FILE: EventBus/src/org/greenrobot/eventbus/EventBusBuilder.java
================================================
/*
* Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.greenrobot.eventbus;
import org.greenrobot.eventbus.meta.SubscriberInfoIndex;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* Creates EventBus instances with custom parameters and also allows to install a custom default EventBus instance.
* Create a new builder using {@link EventBus#builder()}.
*/
public class EventBusBuilder {
private final static ExecutorService DEFAULT_EXECUTOR_SERVICE = Executors.newCachedThreadPool();
boolean logSubscriberExceptions = true;
boolean logNoSubscriberMessages = true;
boolean sendSubscriberExceptionEvent = true;
boolean sendNoSubscriberEvent = true;
boolean throwSubscriberException;
boolean eventInheritance = true;
boolean ignoreGeneratedIndex;
boolean strictMethodVerification;
ExecutorService executorService = DEFAULT_EXECUTOR_SERVICE;
List<Class<?>> skipMethodVerificationForClasses;
List<SubscriberInfoIndex> subscriberInfoIndexes;
EventBusBuilder() {
}
/** Default: true */
public EventBusBuilder logSubscriberExceptions(boolean logSubscriberExceptions) {
this.logSubscriberExceptions = logSubscriberExceptions;
return this;
}
/** Default: true */
public EventBusBuilder logNoSubscriberMessages(boolean logNoSubscriberMessages) {
this.logNoSubscriberMessages = logNoSubscriberMessages;
return this;
}
/** Default: true */
public EventBusBuilder sendSubscriberExceptionEvent(boolean sendSubscriberExceptionEvent) {
this.sendSubscriberExceptionEvent = sendSubscriberExceptionEvent;
return this;
}
/** Default: true */
public EventBusBuilder sendNoSubscriberEvent(boolean sendNoSubscriberEvent) {
this.sendNoSubscriberEvent = sendNoSubscriberEvent;
return this;
}
/**
* Fails if an subscriber throws an exception (default: false).
* <p/>
* Tip: Use this with BuildConfig.DEBUG to let the app crash in DEBUG mode (only). This way, you won't miss
* exceptions during development.
*/
public EventBusBuilder throwSubscriberException(boolean throwSubscriberException) {
this.throwSubscriberException = throwSubscriberException;
return this;
}
/**
* By default, EventBus considers the event class hierarchy (subscribers to super classes will be notified).
* Switching this feature off will improve posting of events. For simple event classes extending Object directly,
* we measured a speed up of 20% for event posting. For more complex event hierarchies, the speed up should be
* >20%.
* <p/>
* However, keep in mind that event posting usually consumes just a small proportion of CPU time inside an app,
* unless it is posting at high rates, e.g. hundreds/thousands of events per second.
*/
public EventBusBuilder eventInheritance(boolean eventInheritance) {
this.eventInheritance = eventInheritance;
return this;
}
/**
* Provide a custom thread pool to EventBus used for async and background event delivery. This is an advanced
* setting to that can break things: ensure the given ExecutorService won't get stuck to avoid undefined behavior.
*/
public EventBusBuilder executorService(ExecutorService executorService) {
this.executorService = executorService;
return this;
}
/**
* Method name verification is done for methods starting with onEvent to avoid typos; using this method you can
* exclude subscriber classes from this check. Also disables checks for method modifiers (public, not static nor
* abstract).
*/
public EventBusBuilder skipMethodVerificationFor(Class<?> clazz) {
if (skipMethodVerificationForClasses == null) {
skipMethodVerificationForClasses = new ArrayList<>();
}
skipMethodVerificationForClasses.add(clazz);
return this;
}
/** Forces the use of reflection even if there's a generated index (default: false). */
public EventBusBuilder ignoreGeneratedIndex(boolean ignoreGeneratedIndex) {
this.ignoreGeneratedIndex = ignoreGeneratedIndex;
return this;
}
/** Enables strict method verification (default: false). */
public EventBusBuilder strictMethodVerification(boolean strictMethodVerification) {
this.strictMethodVerification = strictMethodVerification;
return this;
}
/** Adds an index generated by EventBus' annotation preprocessor. */
public EventBusBuilder addIndex(SubscriberInfoIndex index) {
if(subscriberInfoIndexes == null) {
subscriberInfoIndexes = new ArrayList<>();
}
subscriberInfoIndexes.add(index);
return this;
}
/**
* Installs the default EventBus returned by {@link EventBus#getDefault()} using this builders' values. Must be
* done only once before the first usage of the default EventBus.
*
* @throws EventBusException if there's already a default EventBus instance in place
*/
public EventBus installDefaultEventBus() {
synchronized (EventBus.class) {
if (EventBus.defaultInstance != null) {
throw new EventBusException("Default instance already exists." +
" It may be only set once before it's used the first time to ensure consistent behavior.");
}
EventBus.defaultInstance = build();
return EventBus.defaultInstance;
}
}
/** Builds an EventBus based on the current configuration. */
public EventBus build() {
return new EventBus(this);
}
}
================================================
FILE: EventBus/src/org/greenrobot/eventbus/EventBusException.java
================================================
/*
* Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.greenrobot.eventbus;
/**
* An {@link RuntimeException} thrown in cases something went wrong inside EventBus.
*
* @author Markus
*
*/
public class EventBusException extends RuntimeException {
private static final long serialVersionUID = -2912559384646531479L;
public EventBusException(String detailMessage) {
super(detailMessage);
}
public EventBusException(Throwable throwable) {
super(throwable);
}
public EventBusException(String detailMessage, Throwable throwable) {
super(detailMessage, throwable);
}
}
================================================
FILE: EventBus/src/org/greenrobot/eventbus/HandlerPoster.java
================================================
/*
* Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.greenrobot.eventbus;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.SystemClock;
final class HandlerPoster extends Handler {
private final PendingPostQueue queue;
private final int maxMillisInsideHandleMessage;
private final EventBus eventBus;
private boolean handlerActive;
HandlerPoster(EventBus eventBus, Looper looper, int maxMillisInsideHandleMessage) {
super(looper);
this.eventBus = eventBus;
this.maxMillisInsideHandleMessage = maxMillisInsideHandleMessage;
queue = new PendingPostQueue();
}
void enqueue(Subscription subscription, Object event) {
PendingPost pendingPost = PendingPost.obtainPendingPost(subscription, event);
synchronized (this) {
queue.enqueue(pendingPost);
if (!handlerActive) {
handlerActive = true;
if (!sendMessage(obtainMessage())) {
throw new EventBusException("Could not send handler message");
}
}
}
}
@Override
public void handleMessage(Message msg) {
boolean rescheduled = false;
try {
long started = SystemClock.uptimeMillis();
while (true) {
PendingPost pendingPost = queue.poll();
if (pendingPost == null) {
synchronized (this) {
// Check again, this time in synchronized
pendingPost = queue.poll();
if (pendingPost == null) {
handlerActive = false;
return;
}
}
}
eventBus.invokeSubscriber(pendingPost);
long timeInMethod = SystemClock.uptimeMillis() - started;
if (timeInMethod >= maxMillisInsideHandleMessage) {
if (!sendMessage(obtainMessage())) {
throw new EventBusException("Could not send handler message");
}
rescheduled = true;
return;
}
}
} finally {
handlerActive = rescheduled;
}
}
}
================================================
FILE: EventBus/src/org/greenrobot/eventbus/NoSubscriberEvent.java
================================================
/*
* Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.greenrobot.eventbus;
/**
* This Event is posted by EventBus when no subscriber is found for a posted event.
*
* @author Markus
*/
public final class NoSubscriberEvent {
/** The {@link EventBus} instance to with the original event was posted to. */
public final EventBus eventBus;
/** The original event that could not be delivered to any subscriber. */
public final Object originalEvent;
public NoSubscriberEvent(EventBus eventBus, Object originalEvent) {
this.eventBus = eventBus;
this.originalEvent = originalEvent;
}
}
================================================
FILE: EventBus/src/org/greenrobot/eventbus/PendingPost.java
================================================
/*
* Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.greenrobot.eventbus;
import java.util.ArrayList;
import java.util.List;
final class PendingPost {
private final static List<PendingPost> pendingPostPool = new ArrayList<PendingPost>();
Object event;
Subscription subscription;
PendingPost next;
private PendingPost(Object event, Subscription subscription) {
this.event = event;
this.subscription = subscription;
}
static PendingPost obtainPendingPost(Subscription subscription, Object event) {
synchronized (pendingPostPool) {
int size = pendingPostPool.size();
if (size > 0) {
PendingPost pendingPost = pendingPostPool.remove(size - 1);
pendingPost.event = event;
pendingPost.subscription = subscription;
pendingPost.next = null;
return pendingPost;
}
}
return new PendingPost(event, subscription);
}
static void releasePendingPost(PendingPost pendingPost) {
pendingPost.event = null;
pendingPost.subscription = null;
pendingPost.next = null;
synchronized (pendingPostPool) {
// Don't let the pool grow indefinitely
if (pendingPostPool.size() < 10000) {
pendingPostPool.add(pendingPost);
}
}
}
}
================================================
FILE: EventBus/src/org/greenrobot/eventbus/PendingPostQueue.java
================================================
/*
* Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.greenrobot.eventbus;
final class PendingPostQueue {
private PendingPost head;
private PendingPost tail;
synchronized void enqueue(PendingPost pendingPost) {
if (pendingPost == null) {
throw new NullPointerException("null cannot be enqueued");
}
if (tail != null) {
tail.next = pendingPost;
tail = pendingPost;
} else if (head == null) {
head = tail = pendingPost;
} else {
throw new IllegalStateException("Head present, but no tail");
}
notifyAll();
}
synchronized PendingPost poll() {
PendingPost pendingPost = head;
if (head != null) {
head = head.next;
if (head == null) {
tail = null;
}
}
return pendingPost;
}
synchronized PendingPost poll(int maxMillisToWait) throws InterruptedException {
if (head == null) {
wait(maxMillisToWait);
}
return poll();
}
}
================================================
FILE: EventBus/src/org/greenrobot/eventbus/Subscribe.java
================================================
/*
* Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.greenrobot.eventbus;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface Subscribe {
ThreadMode threadMode() default ThreadMode.POSTING;
/**
* If true, delivers the most recent sticky event (posted with
* {@link EventBus#postSticky(Object)}) to this subscriber (if event available).
*/
boolean sticky() default false;
/** Subscriber priority to influence the order of event delivery.
* Within the same delivery thread ({@link ThreadMode}), higher priority subscribers will receive events before
* others with a lower priority. The default priority is 0. Note: the priority does *NOT* affect the order of
* delivery among subscribers with different {@link ThreadMode}s! */
int priority() default 0;
}
================================================
FILE: EventBus/src/org/greenrobot/eventbus/SubscriberExceptionEvent.java
================================================
/*
* Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.greenrobot.eventbus;
/**
* This Event is posted by EventBus when an exception occurs inside a subscriber's event handling method.
*
* @author Markus
*/
public final class SubscriberExceptionEvent {
/** The {@link EventBus} instance to with the original event was posted to. */
public final EventBus eventBus;
/** The Throwable thrown by a subscriber. */
public final Throwable throwable;
/** The original event that could not be delivered to any subscriber. */
public final Object causingEvent;
/** The subscriber that threw the Throwable. */
public final Object causingSubscriber;
public SubscriberExceptionEvent(EventBus eventBus, Throwable throwable, Object causingEvent,
Object causingSubscriber) {
this.eventBus = eventBus;
this.throwable = throwable;
this.causingEvent = causingEvent;
this.causingSubscriber = causingSubscriber;
}
}
================================================
FILE: EventBus/src/org/greenrobot/eventbus/SubscriberMethod.java
================================================
/*
* Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.greenrobot.eventbus;
import java.lang.reflect.Method;
/** Used internally by EventBus and generated subscriber indexes. */
public class SubscriberMethod {
final Method method;
final ThreadMode threadMode;
final Class<?> eventType;
final int priority;
final boolean sticky;
/** Used for efficient comparison */
String methodString;
public SubscriberMethod(Method method, Class<?> eventType, ThreadMode threadMode, int priority, boolean sticky) {
this.method = method;
this.threadMode = threadMode;
this.eventType = eventType;
this.priority = priority;
this.sticky = sticky;
}
@Override
public boolean equals(Object other) {
if (other == this) {
return true;
} else if (other instanceof SubscriberMethod) {
checkMethodString();
SubscriberMethod otherSubscriberMethod = (SubscriberMethod)other;
otherSubscriberMethod.checkMethodString();
// Don't use method.equals because of http://code.google.com/p/android/issues/detail?id=7811#c6
return methodString.equals(otherSubscriberMethod.methodString);
} else {
return false;
}
}
private synchronized void checkMethodString() {
if (methodString == null) {
// Method.toString has more overhead, just take relevant parts of the method
StringBuilder builder = new StringBuilder(64);
builder.append(method.getDeclaringClass().getName());
builder.append('#').append(method.getName());
builder.append('(').append(eventType.getName());
methodString = builder.toString();
}
}
@Override
public int hashCode() {
return method.hashCode();
}
}
================================================
FILE: EventBus/src/org/greenrobot/eventbus/SubscriberMethodFinder.java
================================================
/*
* Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.greenrobot.eventbus;
import org.greenrobot.eventbus.meta.SubscriberInfo;
import org.greenrobot.eventbus.meta.SubscriberInfoIndex;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
class SubscriberMethodFinder {
/*
* In newer class files, compilers may add methods. Those are called bridge or synthetic methods.
* EventBus must ignore both. There modifiers are not public but defined in the Java class file format:
* http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.6-200-A.1
*/
private static final int BRIDGE = 0x40;
private static final int SYNTHETIC = 0x1000;
private static final int MODIFIERS_IGNORE = Modifier.ABSTRACT | Modifier.STATIC | BRIDGE | SYNTHETIC;
private static final Map<Class<?>, List<SubscriberMethod>> METHOD_CACHE = new ConcurrentHashMap<>();
private List<SubscriberInfoIndex> subscriberInfoIndexes;
private final boolean strictMethodVerification;
private final boolean ignoreGeneratedIndex;
private static final int POOL_SIZE = 4;
private static final FindState[] FIND_STATE_POOL = new FindState[POOL_SIZE];
SubscriberMethodFinder(List<SubscriberInfoIndex> subscriberInfoIndexes, boolean strictMethodVerification,
boolean ignoreGeneratedIndex) {
this.subscriberInfoIndexes = subscriberInfoIndexes;
this.strictMethodVerification = strictMethodVerification;
this.ignoreGeneratedIndex = ignoreGeneratedIndex;
}
List<SubscriberMethod> findSubscriberMethods(Class<?> subscriberClass) {
List<SubscriberMethod> subscriberMethods = METHOD_CACHE.get(subscriberClass);
if (subscriberMethods != null) {
return subscriberMethods;
}
if (ignoreGeneratedIndex) {
subscriberMethods = findUsingReflection(subscriberClass);
} else {
subscriberMethods = findUsingInfo(subscriberClass);
}
if (subscriberMethods.isEmpty()) {
throw new EventBusException("Subscriber " + subscriberClass
+ " and its super classes have no public methods with the @Subscribe annotation");
} else {
METHOD_CACHE.put(subscriberClass, subscriberMethods);
return subscriberMethods;
}
}
private List<SubscriberMethod> findUsingInfo(Class<?> subscriberClass) {
FindState findState = prepareFindState();
findState.initForSubscriber(subscriberClass);
while (findState.clazz != null) {
findState.subscriberInfo = getSubscriberInfo(findState);
if (findState.subscriberInfo != null) {
SubscriberMethod[] array = findState.subscriberInfo.getSubscriberMethods();
for (SubscriberMethod subscriberMethod : array) {
if (findState.checkAdd(subscriberMethod.method, subscriberMethod.eventType)) {
findState.subscriberMethods.add(subscriberMethod);
}
}
} else {
findUsingReflectionInSingleClass(findState);
}
findState.moveToSuperclass();
}
return getMethodsAndRelease(findState);
}
private List<SubscriberMethod> getMethodsAndRelease(FindState findState) {
List<SubscriberMethod> subscriberMethods = new ArrayList<>(findState.subscriberMethods);
findState.recycle();
synchronized (FIND_STATE_POOL) {
for (int i = 0; i < POOL_SIZE; i++) {
if (FIND_STATE_POOL[i] == null) {
FIND_STATE_POOL[i] = findState;
break;
}
}
}
return subscriberMethods;
}
private FindState prepareFindState() {
synchronized (FIND_STATE_POOL) {
for (int i = 0; i < POOL_SIZE; i++) {
FindState state = FIND_STATE_POOL[i];
if (state != null) {
FIND_STATE_POOL[i] = null;
return state;
}
}
}
return new FindState();
}
private SubscriberInfo getSubscriberInfo(FindState findState) {
if (findState.subscriberInfo != null && findState.subscriberInfo.getSuperSubscriberInfo() != null) {
SubscriberInfo superclassInfo = findState.subscriberInfo.getSuperSubscriberInfo();
if (findState.clazz == superclassInfo.getSubscriberClass()) {
return superclassInfo;
}
}
if (subscriberInfoIndexes != null) {
for (SubscriberInfoIndex index : subscriberInfoIndexes) {
SubscriberInfo info = index.getSubscriberInfo(findState.clazz);
if (info != null) {
return info;
}
}
}
return null;
}
private List<SubscriberMethod> findUsingReflection(Class<?> subscriberClass) {
FindState findState = prepareFindState();
findState.initForSubscriber(subscriberClass);
while (findState.clazz != null) {
findUsingReflectionInSingleClass(findState);
findState.moveToSuperclass();
}
return getMethodsAndRelease(findState);
}
private void findUsingReflectionInSingleClass(FindState findState) {
Method[] methods;
try {
// This is faster than getMethods, especially when subscribers are fat classes like Activities
methods = findState.clazz.getDeclaredMethods();
} catch (Throwable th) {
// Workaround for java.lang.NoClassDefFoundError, see https://github.com/greenrobot/EventBus/issues/149
methods = findState.clazz.getMethods();
findState.skipSuperClasses = true;
}
for (Method method : methods) {
int modifiers = method.getModifiers();
if ((modifiers & Modifier.PUBLIC) != 0 && (modifiers & MODIFIERS_IGNORE) == 0) {
Class<?>[] parameterTypes = method.getParameterTypes();
if (parameterTypes.length == 1) {
Subscribe subscribeAnnotation = method.getAnnotation(Subscribe.class);
if (subscribeAnnotation != null) {
Class<?> eventType = parameterTypes[0];
if (findState.checkAdd(method, eventType)) {
ThreadMode threadMode = subscribeAnnotation.threadMode();
findState.subscriberMethods.add(new SubscriberMethod(method, eventType, threadMode,
subscribeAnnotation.priority(), subscribeAnnotation.sticky()));
}
}
} else if (strictMethodVerification && method.isAnnotationPresent(Subscribe.class)) {
String methodName = method.getDeclaringClass().getName() + "." + method.getName();
throw new EventBusException("@Subscribe method " + methodName +
"must have exactly 1 parameter but has " + parameterTypes.length);
}
} else if (strictMethodVerification && method.isAnnotationPresent(Subscribe.class)) {
String methodName = method.getDeclaringClass().getName() + "." + method.getName();
throw new EventBusException(methodName +
" is a illegal @Subscribe method: must be public, non-static, and non-abstract");
}
}
}
static void clearCaches() {
METHOD_CACHE.clear();
}
static class FindState {
final List<SubscriberMethod> subscriberMethods = new ArrayList<>();
final Map<Class, Object> anyMethodByEventType = new HashMap<>();
final Map<String, Class> subscriberClassByMethodKey = new HashMap<>();
final StringBuilder methodKeyBuilder = new StringBuilder(128);
Class<?> subscriberClass;
Class<?> clazz;
boolean skipSuperClasses;
SubscriberInfo subscriberInfo;
void initForSubscriber(Class<?> subscriberClass) {
this.subscriberClass = clazz = subscriberClass;
skipSuperClasses = false;
subscriberInfo = null;
}
void recycle() {
subscriberMethods.clear();
anyMethodByEventType.clear();
subscriberClassByMethodKey.clear();
methodKeyBuilder.setLength(0);
subscriberClass = null;
clazz = null;
skipSuperClasses = false;
subscriberInfo = null;
}
boolean checkAdd(Method method, Class<?> eventType) {
// 2 level check: 1st level with event type only (fast), 2nd level with complete signature when required.
// Usually a subscriber doesn't have methods listening to the same event type.
Object existing = anyMethodByEventType.put(eventType, method);
if (existing == null) {
return true;
} else {
if (existing instanceof Method) {
if (!checkAddWithMethodSignature((Method) existing, eventType)) {
// Paranoia check
throw new IllegalStateException();
}
// Put any non-Method object to "consume" the existing Method
anyMethodByEventType.put(eventType, this);
}
return checkAddWithMethodSignature(method, eventType);
}
}
private boolean checkAddWithMethodSignature(Method method, Class<?> eventType) {
methodKeyBuilder.setLength(0);
methodKeyBuilder.append(method.getName());
methodKeyBuilder.append('>').append(eventType.getName());
String methodKey = methodKeyBuilder.toString();
Class<?> methodClass = method.getDeclaringClass();
Class<?> methodClassOld = subscriberClassByMethodKey.put(methodKey, methodClass);
if (methodClassOld == null || methodClassOld.isAssignableFrom(methodClass)) {
// Only add if not already found in a sub class
return true;
} else {
// Revert the put, old class is further down the class hierarchy
subscriberClassByMethodKey.put(methodKey, methodClassOld);
return false;
}
}
void moveToSuperclass() {
if (skipSuperClasses) {
clazz = null;
} else {
clazz = clazz.getSuperclass();
String clazzName = clazz.getName();
/** Skip system classes, this just degrades performance. */
if (clazzName.startsWith("java.") || clazzName.startsWith("javax.") || clazzName.startsWith("android.")) {
clazz = null;
}
}
}
}
}
================================================
FILE: EventBus/src/org/greenrobot/eventbus/Subscription.java
================================================
/*
* Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.greenrobot.eventbus;
final class Subscription {
final Object subscriber;
final SubscriberMethod subscriberMethod;
/**
* Becomes false as soon as {@link EventBus#unregister(Object)} is called, which is checked by queued event delivery
* {@link EventBus#invokeSubscriber(PendingPost)} to prevent race conditions.
*/
volatile boolean active;
Subscription(Object subscriber, Subscribe
gitextract_qndc5fgf/
├── .gitignore
├── AgoraDemo/
│ ├── .gitignore
│ ├── build.gradle
│ ├── libs/
│ │ ├── agora-rtc-sdk.jar
│ │ ├── android-async-http-1.4.8.jar
│ │ ├── crasheye.jar
│ │ └── fastjson.jar
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── io/
│ │ └── agora/
│ │ └── demo/
│ │ └── agora/
│ │ └── ApplicationTest.java
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── io/
│ │ └── agora/
│ │ └── demo/
│ │ └── agora/
│ │ ├── AgoraApplication.java
│ │ ├── BaseActivity.java
│ │ ├── BaseEngineEventHandlerActivity.java
│ │ ├── ChannelActivity.java
│ │ ├── EntryActivity.java
│ │ ├── LoginActivity.java
│ │ ├── MessageHandler.java
│ │ └── util/
│ │ ├── LoggingUtils.java
│ │ └── NetworkConnectivityUtils.java
│ └── res/
│ ├── drawable-xhdpi/
│ │ ├── button_selector_hung_up.xml
│ │ ├── go_micro_button_background.xml
│ │ ├── go_video_button_background.xml
│ │ ├── room_leave_button_background.xml
│ │ ├── shape_theme.xml
│ │ └── shape_transparent.xml
│ ├── layout/
│ │ ├── actionbar.xml
│ │ ├── activity_entry.xml
│ │ ├── activity_login.xml
│ │ ├── activity_room.xml
│ │ └── viewlet_remote_user.xml
│ ├── menu/
│ │ └── menu_main.xml
│ ├── values/
│ │ ├── color.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── values-zh/
│ └── strings.xml
├── Android-MaterialRefreshLayout-master/
│ ├── .gitignore
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── com/
│ │ └── cjj/
│ │ └── android_materialrefreshlayout/
│ │ ├── AutoRefreshActivity.java
│ │ ├── BaseActivity.java
│ │ ├── LoadMoreActivity.java
│ │ ├── OverLayActivity.java
│ │ ├── ScrollViewActivity.java
│ │ ├── SimpleActivity.java
│ │ ├── SunActivity.java
│ │ ├── SwipeRefreshLayoutActivity.java
│ │ └── WaveActivity.java
│ └── res/
│ ├── layout/
│ │ ├── activity_base.xml
│ │ ├── activity_listview.xml
│ │ ├── activity_main.xml
│ │ ├── activity_scrollview.xml
│ │ ├── activity_simple.xml
│ │ ├── fragment_list.xml
│ │ ├── list_item.xml
│ │ └── toolbar_layout.xml
│ ├── menu/
│ │ └── menu_main.xml
│ ├── values/
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ ├── values-v19/
│ │ ├── dimens.xml
│ │ └── styles.xml
│ ├── values-v21/
│ │ └── styles.xml
│ └── values-w820dp/
│ └── dimens.xml
├── Android应用源码音乐实时跳动频谱显示Demo/
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── com/
│ │ └── terry/
│ │ └── AudioFx/
│ │ ├── AudioFxActivity.java
│ │ └── BaseVisualizerView.java
│ └── res/
│ ├── layout/
│ │ └── main.xml
│ └── values/
│ └── strings.xml
├── EventBus/
│ ├── .gitignore
│ ├── build.gradle
│ └── src/
│ └── org/
│ └── greenrobot/
│ └── eventbus/
│ ├── AsyncPoster.java
│ ├── BackgroundPoster.java
│ ├── EventBus.java
│ ├── EventBusBuilder.java
│ ├── EventBusException.java
│ ├── HandlerPoster.java
│ ├── NoSubscriberEvent.java
│ ├── PendingPost.java
│ ├── PendingPostQueue.java
│ ├── Subscribe.java
│ ├── SubscriberExceptionEvent.java
│ ├── SubscriberMethod.java
│ ├── SubscriberMethodFinder.java
│ ├── Subscription.java
│ ├── ThreadMode.java
│ ├── meta/
│ │ ├── AbstractSubscriberInfo.java
│ │ ├── SimpleSubscriberInfo.java
│ │ ├── SubscriberInfo.java
│ │ ├── SubscriberInfoIndex.java
│ │ └── SubscriberMethodInfo.java
│ └── util/
│ ├── AsyncExecutor.java
│ ├── ErrorDialogConfig.java
│ ├── ErrorDialogFragmentFactory.java
│ ├── ErrorDialogFragments.java
│ ├── ErrorDialogManager.java
│ ├── ExceptionToResourceMapping.java
│ ├── HasExecutionScope.java
│ └── ThrowableFailureEvent.java
├── EventBus3.0_Sample/
│ ├── .gitignore
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── com/
│ │ └── harvic/
│ │ ├── other/
│ │ │ ├── FirstEvent.java
│ │ │ ├── SecondEvent.java
│ │ │ └── ThirdEvent.java
│ │ └── tryeventbus2/
│ │ ├── MainActivity.java
│ │ └── SecondActivity.java
│ └── res/
│ ├── layout/
│ │ ├── activity_main.xml
│ │ └── activity_second.xml
│ ├── menu/
│ │ ├── main.xml
│ │ └── second.xml
│ ├── values/
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ ├── values-v11/
│ │ └── styles.xml
│ ├── values-v14/
│ │ └── styles.xml
│ └── values-w820dp/
│ └── dimens.xml
├── JieCaoVideoPlayer-develop/
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── fm/
│ │ └── jiecao/
│ │ └── jiecaovideoplayer/
│ │ └── ApplicationTest.java
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── assets/
│ │ │ └── jcvd.html
│ │ ├── java/
│ │ │ └── fm/
│ │ │ └── jiecao/
│ │ │ └── jiecaovideoplayer/
│ │ │ ├── AutoTinyActivity.java
│ │ │ ├── AutoTinyListActivity.java
│ │ │ ├── AutoTinyNormalActivity.java
│ │ │ ├── CustomView/
│ │ │ │ ├── JCVideoPlayerStandardAutoComplete.java
│ │ │ │ ├── JCVideoPlayerStandardFresco.java
│ │ │ │ ├── JCVideoPlayerStandardShowShareButtonAfterFullscreen.java
│ │ │ │ ├── JCVideoPlayerStandardShowTextureViewAfterAutoComplete.java
│ │ │ │ └── JCVideoPlayerStandardShowTitleAfterFullscreen.java
│ │ │ ├── DemoApplication.java
│ │ │ ├── ListViewActivity.java
│ │ │ ├── ListViewMultiHolderActivity.java
│ │ │ ├── ListViewNormalActivity.java
│ │ │ ├── ListViewViewpagerActivity.java
│ │ │ ├── MainActivity.java
│ │ │ ├── PlayDirectlyActivity.java
│ │ │ ├── RecyclerViewNormalActivity.java
│ │ │ ├── RecyclerViewVideoAdapter.java
│ │ │ ├── UIActivity.java
│ │ │ ├── UIBigChangeActivity.java
│ │ │ ├── UIImageLoaderActivity.java
│ │ │ ├── UISmallChangeActivity.java
│ │ │ ├── VideoConstant.java
│ │ │ ├── VideoListAdapter.java
│ │ │ └── WebViewActivity.java
│ │ └── res/
│ │ ├── drawable/
│ │ │ ├── share_selector.xml
│ │ │ └── skin_seek_progress.xml
│ │ ├── layout/
│ │ │ ├── activity_auto_tiny.xml
│ │ │ ├── activity_auto_tiny_list.xml
│ │ │ ├── activity_directly_play.xml
│ │ │ ├── activity_listview.xml
│ │ │ ├── activity_listview_content.xml
│ │ │ ├── activity_listview_viewpager.xml
│ │ │ ├── activity_loadimage.xml
│ │ │ ├── activity_main.xml
│ │ │ ├── activity_recyclerview_content.xml
│ │ │ ├── activity_ui.xml
│ │ │ ├── activity_ui_big_change.xml
│ │ │ ├── activity_ui_small_change.xml
│ │ │ ├── activity_webview.xml
│ │ │ ├── header_auto_tiny_normal.xml
│ │ │ ├── item_textview.xml
│ │ │ ├── item_videoview.xml
│ │ │ ├── layout_list.xml
│ │ │ ├── layout_standard_fresco.xml
│ │ │ └── layout_standard_with_share_button.xml
│ │ ├── values/
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── values-w820dp/
│ │ └── dimens.xml
│ └── test/
│ └── java/
│ └── fm/
│ └── jiecao/
│ └── jiecaovideoplayer/
│ └── ExampleUnitTest.java
├── MaterialRefresh_library/
│ ├── .gitignore
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── com/
│ │ └── cjj/
│ │ ├── CircleProgressBar.java
│ │ ├── MaterialFoodView.java
│ │ ├── MaterialFooterView.java
│ │ ├── MaterialHeadListener.java
│ │ ├── MaterialHeadView.java
│ │ ├── MaterialHeaderView.java
│ │ ├── MaterialProgressDrawable.java
│ │ ├── MaterialRefreshLayout.java
│ │ ├── MaterialRefreshListener.java
│ │ ├── MaterialWaveView.java
│ │ ├── SunFaceView.java
│ │ ├── SunLayout.java
│ │ ├── SunLineView.java
│ │ └── Util.java
│ └── res/
│ └── values/
│ ├── attrs.xml
│ ├── attrs_circle_progressbar.xml
│ ├── colors.xml
│ └── strings.xml
├── PhotoView-master/
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── uk/
│ │ └── co/
│ │ └── senab/
│ │ └── photoview/
│ │ └── sample/
│ │ ├── ActivityTransitionActivity.java
│ │ ├── ActivityTransitionToActivity.java
│ │ ├── HackyDrawerLayout.java
│ │ ├── HackyViewPager.java
│ │ ├── ImageAdapter.java
│ │ ├── ImageViewHolder.java
│ │ ├── LauncherActivity.java
│ │ ├── PicassoSampleActivity.java
│ │ ├── RotationSampleActivity.java
│ │ ├── SimpleSampleActivity.java
│ │ └── ViewPagerActivity.java
│ └── res/
│ ├── layout/
│ │ ├── activity_launcher.xml
│ │ ├── activity_main.xml
│ │ ├── activity_simple.xml
│ │ ├── activity_transition.xml
│ │ ├── activity_transition_to.xml
│ │ ├── activity_view_pager.xml
│ │ ├── item_image.xml
│ │ └── item_list_item.xml
│ ├── menu/
│ │ └── main_menu.xml
│ └── values/
│ ├── colors.xml
│ ├── strings.xml
│ ├── styles.xml
│ └── transitions.xml
├── PhotoView_library/
│ ├── LICENSE
│ ├── build.gradle
│ ├── gradle.properties
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ └── java/
│ └── uk/
│ └── co/
│ └── senab/
│ └── photoview/
│ ├── Compat.java
│ ├── DefaultOnDoubleTapListener.java
│ ├── IPhotoView.java
│ ├── PhotoView.java
│ ├── PhotoViewAttacher.java
│ ├── gestures/
│ │ ├── CupcakeGestureDetector.java
│ │ ├── EclairGestureDetector.java
│ │ ├── FroyoGestureDetector.java
│ │ ├── GestureDetector.java
│ │ ├── OnGestureListener.java
│ │ └── VersionedGestureDetector.java
│ ├── log/
│ │ ├── LogManager.java
│ │ ├── Logger.java
│ │ └── LoggerDefault.java
│ └── scrollerproxy/
│ ├── GingerScroller.java
│ ├── IcsScroller.java
│ ├── PreGingerScroller.java
│ └── ScrollerProxy.java
├── README.md
├── RecyclerViewDemo/
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── com/
│ │ └── atguigu/
│ │ └── recyclerviewdemo/
│ │ └── ExampleInstrumentedTest.java
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── atguigu/
│ │ │ └── recyclerviewdemo/
│ │ │ ├── DividerItemDecoration.java
│ │ │ ├── MainActivity.java
│ │ │ └── RecyclerDemoAdapter.java
│ │ └── res/
│ │ ├── drawable/
│ │ │ └── divider_bg.xml
│ │ ├── layout/
│ │ │ ├── activity_main.xml
│ │ │ └── item.xml
│ │ ├── values/
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── values-w820dp/
│ │ └── dimens.xml
│ └── test/
│ └── java/
│ └── com/
│ └── atguigu/
│ └── recyclerviewdemo/
│ └── ExampleUnitTest.java
├── SpeechDemo2/
│ ├── .gitignore
│ ├── build.gradle
│ ├── libs/
│ │ ├── Msc.jar
│ │ └── Sunflower.jar
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── com/
│ │ └── atguigu/
│ │ └── speechdemo2/
│ │ └── ExampleInstrumentedTest.java
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── assets/
│ │ │ └── iflytek/
│ │ │ └── recognize.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── atguigu/
│ │ │ └── speechdemo2/
│ │ │ ├── JsonParser.java
│ │ │ └── MainActivity.java
│ │ └── res/
│ │ ├── layout/
│ │ │ └── activity_main.xml
│ │ ├── values/
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── values-w820dp/
│ │ └── dimens.xml
│ └── test/
│ └── java/
│ └── com/
│ └── atguigu/
│ └── speechdemo2/
│ └── ExampleUnitTest.java
├── StartAllVideoPlayer/
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── com/
│ │ └── atguigu/
│ │ └── startallvideoplayer/
│ │ └── ExampleInstrumentedTest.java
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── atguigu/
│ │ │ └── startallvideoplayer/
│ │ │ └── MainActivity.java
│ │ └── res/
│ │ ├── layout/
│ │ │ └── activity_main.xml
│ │ ├── values/
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── values-w820dp/
│ │ └── dimens.xml
│ └── test/
│ └── java/
│ └── com/
│ └── atguigu/
│ └── startallvideoplayer/
│ └── ExampleUnitTest.java
├── SurfaceViewDemo/
│ ├── .gitignore
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── com/
│ │ └── example/
│ │ └── videotest/
│ │ ├── Constants.java
│ │ ├── MainActivity.java
│ │ ├── MediaPlayUtil.java
│ │ └── SurfaceViewTestActivity.java
│ └── res/
│ ├── layout/
│ │ ├── activity_main.xml
│ │ └── activity_surface_view_test.xml
│ ├── values/
│ │ ├── strings.xml
│ │ └── styles.xml
│ ├── values-v11/
│ │ └── styles.xml
│ └── values-v14/
│ └── styles.xml
├── app/
│ ├── .gitignore
│ ├── build.gradle
│ ├── libs/
│ │ ├── Msc.jar
│ │ ├── Sunflower.jar
│ │ └── picasso-2.5.2.jar
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── com/
│ │ └── atguigu/
│ │ └── mobileplayer1020/
│ │ └── ExampleInstrumentedTest.java
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── aidl/
│ │ │ └── com/
│ │ │ └── atguigu/
│ │ │ └── mobileplayer1020/
│ │ │ └── IMusicPlayerService.aidl
│ │ ├── assets/
│ │ │ └── iflytek/
│ │ │ └── recognize.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── atguigu/
│ │ │ └── mobileplayer1020/
│ │ │ ├── MainActivity.java
│ │ │ ├── WelcomeActivity.java
│ │ │ ├── activity/
│ │ │ │ ├── PicassoSampleActivity.java
│ │ │ │ ├── SearchActivity.java
│ │ │ │ ├── SystemAudioPlayerActivity.java
│ │ │ │ ├── SystemVideoPlayerActivity.java
│ │ │ │ └── VitamioVideoPlayerActivity.java
│ │ │ ├── adapter/
│ │ │ │ ├── LocalVideoAdapter.java
│ │ │ │ ├── NetAudioFragmentAdapter.java
│ │ │ │ ├── NetVideoAdapter.java
│ │ │ │ ├── RecyclerFragmentAdapter.java
│ │ │ │ └── SearchAdapter.java
│ │ │ ├── app/
│ │ │ │ └── MyApplication.java
│ │ │ ├── base/
│ │ │ │ └── BaseFragment.java
│ │ │ ├── bean/
│ │ │ │ ├── LyricBean.java
│ │ │ │ ├── MediaItem.java
│ │ │ │ ├── NetAudioBean.java
│ │ │ │ └── SearchBean.java
│ │ │ ├── fragment/
│ │ │ │ ├── LocalAudioFragment.java
│ │ │ │ ├── LocalVideoFragment.java
│ │ │ │ ├── NetAudioFragment.java
│ │ │ │ ├── NetVideoFragment.java
│ │ │ │ └── RecyclerViewFragment.java
│ │ │ ├── service/
│ │ │ │ └── MusicPlayerService.java
│ │ │ ├── utils/
│ │ │ │ ├── CacheUtils.java
│ │ │ │ ├── Constant.java
│ │ │ │ ├── DensityUtil.java
│ │ │ │ ├── JsonParser.java
│ │ │ │ ├── LyricParaser.java
│ │ │ │ └── Utils.java
│ │ │ └── view/
│ │ │ ├── BaseVisualizerView.java
│ │ │ ├── LyricShowView.java
│ │ │ ├── TitleBarView.java
│ │ │ ├── VideoView.java
│ │ │ └── VitamioVideoView.java
│ │ └── res/
│ │ ├── drawable/
│ │ │ ├── animation_list.xml
│ │ │ ├── audio_progress_horizontal.xml
│ │ │ ├── btn_audio_next_selector.xml
│ │ │ ├── btn_audio_pause_selector.xml
│ │ │ ├── btn_audio_playmode_all_selector.xml
│ │ │ ├── btn_audio_playmode_normal_selector.xml
│ │ │ ├── btn_audio_playmode_single_selector.xml
│ │ │ ├── btn_audio_pre_selector.xml
│ │ │ ├── btn_audio_start_selector.xml
│ │ │ ├── btn_exit_selector.xml
│ │ │ ├── btn_next_selector.xml
│ │ │ ├── btn_pause_selector.xml
│ │ │ ├── btn_pre_selector.xml
│ │ │ ├── btn_screen_default_selector.xml
│ │ │ ├── btn_screen_full_selector.xml
│ │ │ ├── btn_start_selector.xml
│ │ │ ├── btn_swich_lyric_selector.xml
│ │ │ ├── btn_swiche_player_selector.xml
│ │ │ ├── btn_voice_selector.xml
│ │ │ ├── iv_item_picture_popup_selector.xml
│ │ │ ├── progress_horizontal.xml
│ │ │ ├── rb_local_audio_selector.xml
│ │ │ ├── rb_local_video_selector.xml
│ │ │ ├── rb_net_audio_selector.xml
│ │ │ ├── rb_net_video_selector.xml
│ │ │ ├── rb_textcolor_selector.xml
│ │ │ ├── shape_red.xml
│ │ │ ├── shape_sousuo_bg.xml
│ │ │ ├── shape_sousuo_bg_pressed.xml
│ │ │ ├── shenhe_cai_pic_night_selector.xml
│ │ │ ├── shenhe_ding_pic_selector.xml
│ │ │ ├── text_color_selector.xml
│ │ │ ├── tv_search_drawable.xml
│ │ │ ├── tv_search_selector.xml
│ │ │ └── tv_search_textcolor.xml
│ │ ├── layout/
│ │ │ ├── activity_main.xml
│ │ │ ├── activity_picasso_sample.xml
│ │ │ ├── activity_search.xml
│ │ │ ├── activity_system_audio_player.xml
│ │ │ ├── activity_system_video_player.xml
│ │ │ ├── activity_test_b.xml
│ │ │ ├── activity_vitamio_video_player.xml
│ │ │ ├── activity_welcome.xml
│ │ │ ├── ad_middle.xml
│ │ │ ├── all_ad_item.xml
│ │ │ ├── all_gif_item.xml
│ │ │ ├── all_image_item.xml
│ │ │ ├── all_text_item.xml
│ │ │ ├── all_video_item.xml
│ │ │ ├── buffer.xml
│ │ │ ├── common_bottom.xml
│ │ │ ├── common_user_info.xml
│ │ │ ├── fragment_local_video.xml
│ │ │ ├── fragment_net_audio.xml
│ │ │ ├── fragment_net_video.xml
│ │ │ ├── fragment_recyclerview.xml
│ │ │ ├── gif_middle.xml
│ │ │ ├── image_middle.xml
│ │ │ ├── item_local_video.xml
│ │ │ ├── item_net_video.xml
│ │ │ ├── loading.xml
│ │ │ ├── mediacontroller.xml
│ │ │ ├── text_middle.xml
│ │ │ ├── titlebar.xml
│ │ │ └── video_middle.xml
│ │ ├── values/
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── values-w820dp/
│ │ └── dimens.xml
│ └── test/
│ └── java/
│ └── com/
│ └── atguigu/
│ └── mobileplayer1020/
│ └── ExampleUnitTest.java
├── binderService/
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── aidl/
│ │ └── com/
│ │ └── yanguangfu/
│ │ └── binder/
│ │ └── aidl/
│ │ ├── AIDLActivity.aidl
│ │ ├── AIDLService.aidl
│ │ └── Rect1.aidl
│ ├── java/
│ │ └── com/
│ │ └── yanguangfu/
│ │ └── binder/
│ │ ├── MainActivity.java
│ │ ├── MyService.java
│ │ └── aidl/
│ │ └── Rect1.java
│ └── res/
│ ├── layout/
│ │ └── activity_main.xml
│ └── values/
│ └── strings.xml
├── build.gradle
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── jcvideoplayer-lib/
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── fm/
│ │ └── jiecao/
│ │ └── jcvideoplayer_lib/
│ │ └── ApplicationTest.java
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── java/
│ │ │ └── fm/
│ │ │ └── jiecao/
│ │ │ └── jcvideoplayer_lib/
│ │ │ ├── JCMediaManager.java
│ │ │ ├── JCMediaPlayerListener.java
│ │ │ ├── JCResizeImageView.java
│ │ │ ├── JCResizeTextureView.java
│ │ │ ├── JCUserAction.java
│ │ │ ├── JCUserActionStandard.java
│ │ │ ├── JCUtils.java
│ │ │ ├── JCVideoPlayer.java
│ │ │ ├── JCVideoPlayerManager.java
│ │ │ ├── JCVideoPlayerSimple.java
│ │ │ └── JCVideoPlayerStandard.java
│ │ └── res/
│ │ ├── anim/
│ │ │ ├── quit_fullscreen.xml
│ │ │ └── start_fullscreen.xml
│ │ ├── drawable/
│ │ │ ├── jc_click_back_tiny_selector.xml
│ │ │ ├── jc_click_error_selector.xml
│ │ │ ├── jc_click_pause_selector.xml
│ │ │ ├── jc_click_play_selector.xml
│ │ │ ├── jc_dialog_progress.xml
│ │ │ ├── jc_dialog_progress_bg.xml
│ │ │ ├── jc_loading.xml
│ │ │ ├── jc_progress.xml
│ │ │ ├── jc_seek_progress.xml
│ │ │ ├── jc_seek_thumb.xml
│ │ │ ├── jc_seek_thumb_normal.xml
│ │ │ ├── jc_seek_thumb_pressed.xml
│ │ │ ├── jc_title_bg.xml
│ │ │ └── jc_volume_progress_bg.xml
│ │ ├── layout/
│ │ │ ├── jc_layout_base.xml
│ │ │ ├── jc_layout_standard.xml
│ │ │ ├── jc_progress_dialog.xml
│ │ │ └── jc_volume_dialog.xml
│ │ ├── values/
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ ├── values-pt/
│ │ │ └── strings.xml
│ │ ├── values-tr/
│ │ │ └── strings.xml
│ │ └── values-zh/
│ │ └── strings.xml
│ └── test/
│ └── java/
│ └── fm/
│ └── jiecao/
│ └── jcvideoplayer_lib/
│ └── ExampleUnitTest.java
├── settings.gradle
├── speechDemo/
│ ├── build.gradle
│ ├── libs/
│ │ ├── Msc.jar
│ │ └── Sunflower.jar
│ ├── lint.xml
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── assets/
│ │ ├── call.bnf
│ │ ├── grammar_sample.abnf
│ │ ├── iflytek/
│ │ │ └── recognize.xml
│ │ ├── keys
│ │ └── userwords
│ ├── java/
│ │ └── com/
│ │ └── iflytek/
│ │ ├── ise/
│ │ │ └── result/
│ │ │ ├── FinalResult.java
│ │ │ ├── ReadSentenceResult.java
│ │ │ ├── ReadSyllableResult.java
│ │ │ ├── ReadWordResult.java
│ │ │ ├── Result.java
│ │ │ ├── entity/
│ │ │ │ ├── Phone.java
│ │ │ │ ├── Sentence.java
│ │ │ │ ├── Syll.java
│ │ │ │ └── Word.java
│ │ │ ├── util/
│ │ │ │ ├── ResultFormatUtil.java
│ │ │ │ └── ResultTranslateUtil.java
│ │ │ └── xml/
│ │ │ └── XmlResultParser.java
│ │ ├── speech/
│ │ │ ├── setting/
│ │ │ │ ├── IatSettings.java
│ │ │ │ ├── IseSettings.java
│ │ │ │ ├── TtsSettings.java
│ │ │ │ └── UnderstanderSettings.java
│ │ │ └── util/
│ │ │ ├── ApkInstaller.java
│ │ │ ├── FucUtil.java
│ │ │ ├── JsonParser.java
│ │ │ ├── SettingTextWatcher.java
│ │ │ └── XmlParser.java
│ │ └── voicedemo/
│ │ ├── AsrDemo.java
│ │ ├── IatDemo.java
│ │ ├── IseDemo.java
│ │ ├── MainActivity.java
│ │ ├── SpeechApp.java
│ │ ├── TtsDemo.java
│ │ └── UnderstanderDemo.java
│ └── res/
│ ├── drawable/
│ │ ├── list_bg_color.xml
│ │ └── main_setting_btn_np.xml
│ ├── layout/
│ │ ├── iatdemo.xml
│ │ ├── isedemo.xml
│ │ ├── isrdemo.xml
│ │ ├── list_items.xml
│ │ ├── main.xml
│ │ ├── title.xml
│ │ ├── ttsdemo.xml
│ │ └── understander.xml
│ ├── values/
│ │ ├── colors.xml
│ │ ├── dimen.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── xml/
│ ├── iat_setting.xml
│ ├── ise_settings.xml
│ ├── tts_setting.xml
│ └── understand_setting.xml
├── vitamio/
│ ├── .classpath
│ ├── .gitignore
│ ├── .project
│ ├── .settings/
│ │ └── org.eclipse.jdt.core.prefs
│ ├── AndroidManifest.xml
│ ├── README.md
│ ├── build.gradle
│ ├── gen/
│ │ └── io/
│ │ └── vov/
│ │ └── vitamio/
│ │ ├── BuildConfig.java
│ │ └── R.java
│ ├── proguard-project.txt
│ ├── project.properties
│ ├── res/
│ │ ├── drawable/
│ │ │ ├── mediacontroller_button.xml
│ │ │ ├── scrubber_control_selector_holo.xml
│ │ │ └── scrubber_progress_horizontal_holo_dark.xml
│ │ ├── layout/
│ │ │ └── mediacontroller.xml
│ │ └── values/
│ │ ├── colors.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── src/
│ └── io/
│ └── vov/
│ └── vitamio/
│ ├── EGL.java
│ ├── MediaFile.java
│ ├── MediaFormat.java
│ ├── MediaMetadataRetriever.java
│ ├── MediaPlayer.java
│ ├── MediaScanner.java
│ ├── MediaScannerClient.java
│ ├── Metadata.java
│ ├── ThumbnailUtils.java
│ ├── VIntent.java
│ ├── Vitamio.java
│ ├── VitamioLicense.java
│ ├── activity/
│ │ └── InitActivity.java
│ ├── provider/
│ │ ├── MediaStore.java
│ │ └── MiniThumbFile.java
│ ├── utils/
│ │ ├── Base64.java
│ │ ├── CPU.java
│ │ ├── ContextUtils.java
│ │ ├── Crypto.java
│ │ ├── Device.java
│ │ ├── FileUtils.java
│ │ ├── IOUtils.java
│ │ ├── Log.java
│ │ ├── ScreenResolution.java
│ │ └── StringUtils.java
│ └── widget/
│ ├── CenterLayout.java
│ ├── MediaController.java
│ ├── OutlineTextView.java
│ └── VideoView.java
├── vitamio-sample/
│ ├── .classpath
│ ├── .gitignore
│ ├── .project
│ ├── .settings/
│ │ └── org.eclipse.jdt.core.prefs
│ ├── AndroidManifest.xml
│ ├── README.md
│ ├── build.gradle
│ ├── gen/
│ │ └── io/
│ │ └── vov/
│ │ └── vitamio/
│ │ ├── R.java
│ │ └── demo/
│ │ ├── BuildConfig.java
│ │ └── R.java
│ ├── libs/
│ │ └── umeng-analytics-v5.6.1.jar
│ ├── lint.xml
│ ├── proguard-project.txt
│ ├── project.properties
│ ├── res/
│ │ ├── layout/
│ │ │ ├── media_metadata.xml
│ │ │ ├── mediaplayer_1.xml
│ │ │ ├── mediaplayer_2.xml
│ │ │ ├── mediaplayer_3.xml
│ │ │ ├── subtitle1.xml
│ │ │ ├── subtitle2.xml
│ │ │ ├── videobuffer.xml
│ │ │ └── videoview.xml
│ │ └── values/
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── src/
│ └── io/
│ └── vov/
│ └── vitamio/
│ └── demo/
│ ├── MediaMetadataRetrieverDemo.java
│ ├── MediaPlayerDemo.java
│ ├── MediaPlayerDemo_Audio.java
│ ├── MediaPlayerDemo_Video.java
│ ├── MediaPlayerDemo_setSurface.java
│ ├── MediaPlayerSubtitle.java
│ ├── VideoSubtitleList.java
│ ├── VideoViewBuffer.java
│ ├── VideoViewDemo.java
│ ├── VideoViewSubtitle.java
│ └── VitamioListActivity.java
├── voicedialog/
│ ├── .gitignore
│ ├── build.gradle
│ ├── libs/
│ │ ├── Msc.jar
│ │ └── Sunflower.jar
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── com/
│ │ └── atguigu/
│ │ └── voicedialog/
│ │ └── ApplicationTest.java
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── assets/
│ │ │ └── iflytek/
│ │ │ └── recognize.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── atguigu/
│ │ │ └── voicedialog/
│ │ │ ├── ConversationInfo.java
│ │ │ ├── MainActivity.java
│ │ │ ├── MyApplication.java
│ │ │ ├── ResouesUtils.java
│ │ │ ├── SpeechBean.java
│ │ │ └── SpeechUtils.java
│ │ └── res/
│ │ ├── layout/
│ │ │ ├── activity_main.xml
│ │ │ └── listview_item.xml
│ │ ├── values/
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── values-w820dp/
│ │ └── dimens.xml
│ └── test/
│ └── java/
│ └── com/
│ └── atguigu/
│ └── voicedialog/
│ └── ExampleUnitTest.java
├── xUtils3-master/
│ ├── .gitignore
│ ├── build.gradle
│ ├── debug.keystore
│ ├── proguard-rules.pro
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── org/
│ │ └── xutils/
│ │ └── sample/
│ │ ├── BaseActivity.java
│ │ ├── BaseFragment.java
│ │ ├── BigImageActivity.java
│ │ ├── DbFragment.java
│ │ ├── DownloadActivity.java
│ │ ├── HttpFragment.java
│ │ ├── ImageFragment.java
│ │ ├── MainActivity.java
│ │ ├── MyApplication.java
│ │ ├── db/
│ │ │ ├── Child.java
│ │ │ └── Parent.java
│ │ ├── download/
│ │ │ ├── DefaultDownloadViewHolder.java
│ │ │ ├── DownloadCallback.java
│ │ │ ├── DownloadInfo.java
│ │ │ ├── DownloadManager.java
│ │ │ ├── DownloadState.java
│ │ │ ├── DownloadStateConverter.java
│ │ │ └── DownloadViewHolder.java
│ │ └── http/
│ │ ├── BaiduParams.java
│ │ ├── BaiduResponse.java
│ │ ├── JsonDemoParams.java
│ │ ├── JsonDemoParamsBuilder.java
│ │ └── JsonResponseParser.java
│ └── res/
│ ├── layout/
│ │ ├── activity_big_image.xml
│ │ ├── activity_download.xml
│ │ ├── activity_main.xml
│ │ ├── download_item.xml
│ │ ├── fragment_db.xml
│ │ ├── fragment_http.xml
│ │ ├── fragment_image.xml
│ │ └── image_item.xml
│ ├── menu/
│ │ └── menu_main.xml
│ ├── values/
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ ├── values-v21/
│ │ └── styles.xml
│ └── values-w820dp/
│ └── dimens.xml
└── xutils/
├── .gitignore
├── build.gradle
├── docs/
│ ├── 1.快速使用.md
│ ├── 2.任务和回调.md
│ ├── 3.网络请求.md
│ ├── 4.图片绑定.md
│ ├── 5.Sqlite数据库使用.md
│ └── 6.View注入.md
└── src/
└── main/
├── AndroidManifest.xml
├── java/
│ └── org/
│ └── xutils/
│ ├── DbManager.java
│ ├── HttpManager.java
│ ├── ImageManager.java
│ ├── ViewInjector.java
│ ├── cache/
│ │ ├── DiskCacheEntity.java
│ │ ├── DiskCacheFile.java
│ │ ├── LruCache.java
│ │ └── LruDiskCache.java
│ ├── common/
│ │ ├── Callback.java
│ │ ├── TaskController.java
│ │ ├── task/
│ │ │ ├── AbsTask.java
│ │ │ ├── Priority.java
│ │ │ ├── PriorityExecutor.java
│ │ │ ├── PriorityRunnable.java
│ │ │ ├── TaskControllerImpl.java
│ │ │ └── TaskProxy.java
│ │ └── util/
│ │ ├── DensityUtil.java
│ │ ├── DoubleKeyValueMap.java
│ │ ├── FileUtil.java
│ │ ├── IOUtil.java
│ │ ├── KeyValue.java
│ │ ├── LogUtil.java
│ │ ├── MD5.java
│ │ ├── ParameterizedTypeUtil.java
│ │ └── ProcessLock.java
│ ├── config/
│ │ └── DbConfigs.java
│ ├── db/
│ │ ├── CursorUtils.java
│ │ ├── DbManagerImpl.java
│ │ ├── DbModelSelector.java
│ │ ├── Selector.java
│ │ ├── annotation/
│ │ │ ├── Column.java
│ │ │ └── Table.java
│ │ ├── converter/
│ │ │ ├── BooleanColumnConverter.java
│ │ │ ├── ByteArrayColumnConverter.java
│ │ │ ├── ByteColumnConverter.java
│ │ │ ├── CharColumnConverter.java
│ │ │ ├── ColumnConverter.java
│ │ │ ├── ColumnConverterFactory.java
│ │ │ ├── DateColumnConverter.java
│ │ │ ├── DoubleColumnConverter.java
│ │ │ ├── FloatColumnConverter.java
│ │ │ ├── IntegerColumnConverter.java
│ │ │ ├── LongColumnConverter.java
│ │ │ ├── ShortColumnConverter.java
│ │ │ ├── SqlDateColumnConverter.java
│ │ │ └── StringColumnConverter.java
│ │ ├── sqlite/
│ │ │ ├── ColumnDbType.java
│ │ │ ├── SqlInfo.java
│ │ │ ├── SqlInfoBuilder.java
│ │ │ └── WhereBuilder.java
│ │ └── table/
│ │ ├── ColumnEntity.java
│ │ ├── ColumnUtils.java
│ │ ├── DbBase.java
│ │ ├── DbModel.java
│ │ ├── TableEntity.java
│ │ └── TableUtils.java
│ ├── ex/
│ │ ├── BaseException.java
│ │ ├── DbException.java
│ │ ├── FileLockedException.java
│ │ ├── HttpException.java
│ │ └── HttpRedirectException.java
│ ├── http/
│ │ ├── BaseParams.java
│ │ ├── HttpManagerImpl.java
│ │ ├── HttpMethod.java
│ │ ├── HttpTask.java
│ │ ├── ProgressHandler.java
│ │ ├── RequestParams.java
│ │ ├── RequestParamsHelper.java
│ │ ├── RequestTrackerWrapper.java
│ │ ├── annotation/
│ │ │ ├── HttpRequest.java
│ │ │ └── HttpResponse.java
│ │ ├── app/
│ │ │ ├── DefaultParamsBuilder.java
│ │ │ ├── HttpRetryHandler.java
│ │ │ ├── InputStreamResponseParser.java
│ │ │ ├── ParamsBuilder.java
│ │ │ ├── RedirectHandler.java
│ │ │ ├── RequestInterceptListener.java
│ │ │ ├── RequestTracker.java
│ │ │ └── ResponseParser.java
│ │ ├── body/
│ │ │ ├── BodyItemWrapper.java
│ │ │ ├── FileBody.java
│ │ │ ├── InputStreamBody.java
│ │ │ ├── MultipartBody.java
│ │ │ ├── ProgressBody.java
│ │ │ ├── RequestBody.java
│ │ │ ├── StringBody.java
│ │ │ └── UrlEncodedParamsBody.java
│ │ ├── cookie/
│ │ │ ├── CookieEntity.java
│ │ │ └── DbCookieStore.java
│ │ ├── loader/
│ │ │ ├── BooleanLoader.java
│ │ │ ├── ByteArrayLoader.java
│ │ │ ├── FileLoader.java
│ │ │ ├── IntegerLoader.java
│ │ │ ├── JSONArrayLoader.java
│ │ │ ├── JSONObjectLoader.java
│ │ │ ├── Loader.java
│ │ │ ├── LoaderFactory.java
│ │ │ ├── ObjectLoader.java
│ │ │ └── StringLoader.java
│ │ └── request/
│ │ ├── AssetsRequest.java
│ │ ├── HttpRequest.java
│ │ ├── LocalFileRequest.java
│ │ ├── UriRequest.java
│ │ └── UriRequestFactory.java
│ ├── image/
│ │ ├── AsyncDrawable.java
│ │ ├── GifDrawable.java
│ │ ├── ImageAnimationHelper.java
│ │ ├── ImageDecoder.java
│ │ ├── ImageLoader.java
│ │ ├── ImageManagerImpl.java
│ │ ├── ImageOptions.java
│ │ ├── MemCacheKey.java
│ │ ├── ReusableBitmapDrawable.java
│ │ └── ReusableDrawable.java
│ ├── view/
│ │ ├── EventListenerManager.java
│ │ ├── ViewFinder.java
│ │ ├── ViewInfo.java
│ │ ├── ViewInjectorImpl.java
│ │ └── annotation/
│ │ ├── ContentView.java
│ │ ├── Event.java
│ │ └── ViewInject.java
│ └── x.java
└── java_compat/
└── android/
└── backport/
└── webp/
└── WebPFactory.java
Showing preview only (362K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4537 symbols across 411 files)
FILE: AgoraDemo/src/androidTest/java/io/agora/demo/agora/ApplicationTest.java
class ApplicationTest (line 9) | public class ApplicationTest extends ApplicationTestCase<Application> {
method ApplicationTest (line 10) | public ApplicationTest() {
FILE: AgoraDemo/src/main/java/io/agora/demo/agora/AgoraApplication.java
class AgoraApplication (line 14) | public class AgoraApplication extends Application {
method onCreate (line 19) | @Override
method setRtcEngine (line 32) | public void setRtcEngine(String vendorKey){
method getRtcEngine (line 39) | public RtcEngine getRtcEngine(){
method setEngineEventHandlerActivity (line 44) | public void setEngineEventHandlerActivity(BaseEngineEventHandlerActivi...
FILE: AgoraDemo/src/main/java/io/agora/demo/agora/BaseActivity.java
class BaseActivity (line 15) | public class BaseActivity extends FragmentActivity{
method onCreate (line 18) | @Override
method onPause (line 23) | protected void onPause() {
method onResume (line 27) | protected void onResume() {
method onClick (line 34) | @Override
method getViewClickListener (line 41) | public View.OnClickListener getViewClickListener(){
method onUserInteraction (line 49) | public void onUserInteraction(View view){
method log (line 53) | public void log(Object obj) {
FILE: AgoraDemo/src/main/java/io/agora/demo/agora/BaseEngineEventHandlerActivity.java
class BaseEngineEventHandlerActivity (line 12) | public class BaseEngineEventHandlerActivity extends BaseActivity {
method onJoinChannelSuccess (line 15) | public void onJoinChannelSuccess(String channel, int uid, int elapsed) {
method onRejoinChannelSuccess (line 18) | public void onRejoinChannelSuccess(String channel, int uid, int elapse...
method onError (line 21) | public void onError(int err) {
method onCameraReady (line 24) | public void onCameraReady() {
method onAudioQuality (line 27) | public void onAudioQuality(int uid, int quality, short delay, short lo...
method onAudioTransportQuality (line 30) | public void onAudioTransportQuality(int uid, short delay, short lost) {
method onVideoTransportQuality (line 33) | public void onVideoTransportQuality(int uid, short delay, short lost) {
method onLeaveChannel (line 36) | public void onLeaveChannel(IRtcEngineEventHandler.RtcStats stats) {
method onUpdateSessionStats (line 39) | public void onUpdateSessionStats(IRtcEngineEventHandler.RtcStats stats) {
method onRecap (line 42) | public void onRecap(byte[] recap) {
method onAudioVolumeIndication (line 45) | public void onAudioVolumeIndication(IRtcEngineEventHandler.AudioVolume...
method onNetworkQuality (line 48) | public void onNetworkQuality(int quality) {
method onUserJoined (line 51) | public void onUserJoined(int uid, int elapsed) {
method onUserOffline (line 54) | public void onUserOffline(int uid) {
method onUserMuteAudio (line 57) | public void onUserMuteAudio(int uid, boolean muted) {
method onUserMuteVideo (line 60) | public void onUserMuteVideo(int uid, boolean muted) {
method onAudioRecorderException (line 63) | public void onAudioRecorderException(int nLastTimeStamp) {
method onRemoteVideoStat (line 66) | public void onRemoteVideoStat(int uid, int frameCount, int delay, int ...
method onLocalVideoStat (line 69) | public void onLocalVideoStat(int sentBytes, int sentFrames) {
method onFirstRemoteVideoFrame (line 72) | public void onFirstRemoteVideoFrame(int uid, int width, int height, in...
method onFirstLocalVideoFrame (line 75) | public void onFirstLocalVideoFrame(int width, int height, int elapsed) {
method onFirstRemoteVideoDecoded (line 78) | public void onFirstRemoteVideoDecoded(int uid, int width, int height, ...
method onConnectionLost (line 81) | public void onConnectionLost() {
method onMediaEngineEvent (line 84) | public void onMediaEngineEvent(int code) {
FILE: AgoraDemo/src/main/java/io/agora/demo/agora/ChannelActivity.java
class ChannelActivity (line 40) | public class ChannelActivity extends BaseEngineEventHandlerActivity {
method onCreate (line 71) | @Override
method setupChannel (line 109) | void setupChannel() {
method setupRtcEngine (line 123) | void setupRtcEngine() {
method ensureLocalViewIsCreated (line 143) | void ensureLocalViewIsCreated() {
method initViews (line 163) | void initViews() {
method setRemoteUserViewVisibility (line 252) | void setRemoteUserViewVisibility(boolean isVisible) {
method removeBackgroundOfCallingWrapper (line 260) | void removeBackgroundOfCallingWrapper() {
method setupTime (line 265) | void setupTime() {
method updateRemoteUserViews (line 296) | void updateRemoteUserViews(int callingType) {
method onUserInteraction (line 332) | @Override
method onCreateOptionsMenu (line 420) | @Override
method onConfigurationChanged (line 425) | @Override
method onBackPressed (line 431) | @Override
method onUpdateSessionStats (line 446) | public void onUpdateSessionStats(final IRtcEngineEventHandler.RtcStats...
method onFirstRemoteVideoDecoded (line 466) | public synchronized void onFirstRemoteVideoDecoded(final int uid, int ...
method onUserJoined (line 533) | public synchronized void onUserJoined(final int uid, int elapsed) {
method onUserOffline (line 575) | public void onUserOffline(final int uid) {
method finish (line 607) | @Override
method onLeaveChannel (line 617) | @Override
method onUserMuteVideo (line 626) | public void onUserMuteVideo(final int uid, final boolean muted) {
method onError (line 653) | @Override
method humanReadableByteCount (line 717) | public static String humanReadableByteCount(long bytes, boolean si) {
method onDestroy (line 725) | @Override
FILE: AgoraDemo/src/main/java/io/agora/demo/agora/EntryActivity.java
class EntryActivity (line 12) | public class EntryActivity extends BaseActivity {
method onCreate (line 14) | @Override
method onConfigurationChanged (line 26) | @Override
method enterAppWithDelay (line 33) | private void enterAppWithDelay(long delayInMillis){
FILE: AgoraDemo/src/main/java/io/agora/demo/agora/LoginActivity.java
class LoginActivity (line 29) | public class LoginActivity extends BaseActivity {
method onCreate (line 34) | @Override
method initViews (line 48) | private void initViews() {
method onUserInteraction (line 63) | @Override
method onConfigurationChanged (line 115) | @Override
method validateInput (line 122) | boolean validateInput() {
class RequestTask (line 150) | class RequestTask extends AsyncTask<String, String, String> {
method doInBackground (line 155) | @Override
method onPostExecute (line 180) | @Override
FILE: AgoraDemo/src/main/java/io/agora/demo/agora/MessageHandler.java
class MessageHandler (line 8) | public class MessageHandler extends IRtcEngineEventHandler {
method onFirstRemoteVideoDecoded (line 13) | @Override
method onUserJoined (line 24) | @Override
method onUserOffline (line 35) | @Override
method onUserMuteVideo (line 46) | @Override
method onRtcStats (line 57) | @Override
method onLeaveChannel (line 68) | @Override
method onError (line 78) | @Override
method setActivity (line 87) | public void setActivity(BaseEngineEventHandlerActivity activity) {
method getActivity (line 92) | public BaseEngineEventHandlerActivity getActivity(){
FILE: AgoraDemo/src/main/java/io/agora/demo/agora/util/LoggingUtils.java
class LoggingUtils (line 25) | public class LoggingUtils {
method debug (line 27) | public static void debug (String tag, String msg) {
method error (line 35) | public static void error (String tag, String msg) {
method warning (line 43) | public static void warning (String tag, String msg) {
FILE: AgoraDemo/src/main/java/io/agora/demo/agora/util/NetworkConnectivityUtils.java
class NetworkConnectivityUtils (line 20) | public class NetworkConnectivityUtils {
method isConnectedToMobile (line 27) | public static boolean isConnectedToMobile (Context context) {
method isConnectedToWifi (line 38) | public static boolean isConnectedToWifi (Context context) {
method isConnectedToNetwork (line 57) | public static boolean isConnectedToNetwork (Context context) {
method NetworkConnectivityUtils (line 67) | private NetworkConnectivityUtils() {
FILE: Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/AutoRefreshActivity.java
class AutoRefreshActivity (line 13) | public class AutoRefreshActivity extends BaseActivity {
method onCreate (line 16) | @Override
FILE: Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/BaseActivity.java
class BaseActivity (line 16) | public class BaseActivity extends AppCompatActivity {
method onCreate (line 20) | @Override
method initToolbar (line 31) | private void initToolbar() {
method setContentView (line 38) | @Override
method setContentView (line 43) | @Override
FILE: Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/LoadMoreActivity.java
class LoadMoreActivity (line 25) | public class LoadMoreActivity extends BaseActivity {
method onCreate (line 28) | @Override
method initsToolbar (line 73) | private void initsToolbar() {
method onMenuItemClick (line 80) | @Override
method onCreateOptionsMenu (line 119) | @Override
method setupRecyclerView (line 125) | private void setupRecyclerView(RecyclerView recyclerView) {
method getRandomSublist (line 131) | private List<String> getRandomSublist(String[] array, int amount) {
class SimpleStringRecyclerViewAdapter (line 140) | public static class SimpleStringRecyclerViewAdapter
class ViewHolder (line 144) | public static class ViewHolder extends RecyclerView.ViewHolder {
method ViewHolder (line 148) | public ViewHolder(View view) {
method SimpleStringRecyclerViewAdapter (line 156) | public SimpleStringRecyclerViewAdapter(Context context) {
method onCreateViewHolder (line 160) | @Override
method onBindViewHolder (line 167) | @Override
method getItemCount (line 177) | @Override
FILE: Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/OverLayActivity.java
class OverLayActivity (line 13) | public class OverLayActivity extends BaseActivity {
method onCreate (line 17) | @Override
FILE: Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/ScrollViewActivity.java
class ScrollViewActivity (line 14) | public class ScrollViewActivity extends BaseActivity implements View.OnC...
method onCreate (line 16) | @Override
method onClick (line 43) | @Override
FILE: Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/SimpleActivity.java
class SimpleActivity (line 27) | public class SimpleActivity extends BaseActivity {
method onCreate (line 31) | @Override
method initsToolbar (line 63) | private void initsToolbar() {
method onCreateOptionsMenu (line 69) | @Override
method setupRecyclerView (line 75) | private void setupRecyclerView(RecyclerView recyclerView) {
method getRandomSublist (line 81) | private List<String> getRandomSublist(String[] array, int amount) {
class SimpleStringRecyclerViewAdapter (line 90) | public static class SimpleStringRecyclerViewAdapter
class ViewHolder (line 94) | public static class ViewHolder extends RecyclerView.ViewHolder {
method ViewHolder (line 98) | public ViewHolder(View view) {
method SimpleStringRecyclerViewAdapter (line 106) | public SimpleStringRecyclerViewAdapter(Context context) {
method onCreateViewHolder (line 110) | @Override
method onBindViewHolder (line 117) | @Override
method getItemCount (line 127) | @Override
FILE: Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/SunActivity.java
class SunActivity (line 13) | public class SunActivity extends BaseActivity{
method onCreate (line 17) | @Override
FILE: Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/SwipeRefreshLayoutActivity.java
class SwipeRefreshLayoutActivity (line 6) | public class SwipeRefreshLayoutActivity {
FILE: Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/WaveActivity.java
class WaveActivity (line 28) | public class WaveActivity extends BaseActivity {
method onCreate (line 31) | @Override
method initsToolbar (line 67) | private void initsToolbar() {
method onCreateOptionsMenu (line 73) | @Override
method setupRecyclerView (line 79) | private void setupRecyclerView(RecyclerView recyclerView) {
method getRandomSublist (line 85) | private List<String> getRandomSublist(String[] array, int amount) {
class SimpleStringRecyclerViewAdapter (line 94) | public static class SimpleStringRecyclerViewAdapter
class ViewHolder (line 98) | public static class ViewHolder extends RecyclerView.ViewHolder {
method ViewHolder (line 102) | public ViewHolder(View view) {
method SimpleStringRecyclerViewAdapter (line 110) | public SimpleStringRecyclerViewAdapter(Context context) {
method onCreateViewHolder (line 114) | @Override
method onBindViewHolder (line 121) | @Override
method getItemCount (line 131) | @Override
FILE: Android应用源码音乐实时跳动频谱显示Demo/src/main/java/com/terry/AudioFx/AudioFxActivity.java
class AudioFxActivity (line 9) | public class AudioFxActivity extends Activity
method onCreate (line 20) | public void onCreate(Bundle savedInstanceState)
method setupVisualizerFxAndUi (line 51) | private void setupVisualizerFxAndUi()
method onPause (line 64) | @Override
FILE: Android应用源码音乐实时跳动频谱显示Demo/src/main/java/com/terry/AudioFx/BaseVisualizerView.java
class BaseVisualizerView (line 13) | public class BaseVisualizerView extends View implements Visualizer.OnDat...
method BaseVisualizerView (line 56) | public BaseVisualizerView(Context context) {
method initView (line 62) | private void initView() {
method BaseVisualizerView (line 71) | public BaseVisualizerView(Context context, AttributeSet attrs) {
method onLayout (line 76) | @Override
method drawCylinder (line 94) | protected void drawCylinder(Canvas canvas, float x, byte value) {
method onDraw (line 102) | @Override
method setVisualizer (line 113) | public void setVisualizer(Visualizer visualizer) {
method onFftDataCapture (line 131) | @Override
method onWaveFormDataCapture (line 164) | @Override
method enableDataProcess (line 174) | public void enableDataProcess(boolean en) {
FILE: EventBus/src/org/greenrobot/eventbus/AsyncPoster.java
class AsyncPoster (line 24) | class AsyncPoster implements Runnable {
method AsyncPoster (line 29) | AsyncPoster(EventBus eventBus) {
method enqueue (line 34) | public void enqueue(Subscription subscription, Object event) {
method run (line 40) | @Override
FILE: EventBus/src/org/greenrobot/eventbus/BackgroundPoster.java
class BackgroundPoster (line 25) | final class BackgroundPoster implements Runnable {
method BackgroundPoster (line 32) | BackgroundPoster(EventBus eventBus) {
method enqueue (line 37) | public void enqueue(Subscription subscription, Object event) {
method run (line 48) | @Override
FILE: EventBus/src/org/greenrobot/eventbus/EventBus.java
class EventBus (line 41) | public class EventBus {
method initialValue (line 56) | @Override
method getDefault (line 78) | public static EventBus getDefault() {
method builder (line 89) | public static EventBusBuilder builder() {
method clearCaches (line 94) | public static void clearCaches() {
method EventBus (line 103) | public EventBus() {
method EventBus (line 107) | EventBus(EventBusBuilder builder) {
method register (line 134) | public void register(Object subscriber) {
method subscribe (line 145) | private void subscribe(Object subscriber, SubscriberMethod subscriberM...
method checkPostStickyEventToSubscription (line 195) | private void checkPostStickyEventToSubscription(Subscription newSubscr...
method isRegistered (line 203) | public synchronized boolean isRegistered(Object subscriber) {
method unsubscribeByEventType (line 208) | private void unsubscribeByEventType(Object subscriber, Class<?> eventT...
method unregister (line 225) | public synchronized void unregister(Object subscriber) {
method post (line 238) | public void post(Object event) {
method cancelEventDelivery (line 267) | public void cancelEventDelivery(Object event) {
method postSticky (line 287) | public void postSticky(Object event) {
method getStickyEvent (line 300) | public <T> T getStickyEvent(Class<T> eventType) {
method removeStickyEvent (line 311) | public <T> T removeStickyEvent(Class<T> eventType) {
method removeStickyEvent (line 322) | public boolean removeStickyEvent(Object event) {
method removeAllStickyEvents (line 338) | public void removeAllStickyEvents() {
method hasSubscriberForEvent (line 344) | public boolean hasSubscriberForEvent(Class<?> eventClass) {
method postSingleEvent (line 362) | private void postSingleEvent(Object event, PostingThreadState postingS...
method postSingleEventForEventType (line 386) | private boolean postSingleEventForEventType(Object event, PostingThrea...
method postToSubscription (line 413) | private void postToSubscription(Subscription subscription, Object even...
method lookupAllEventTypes (line 441) | private static List<Class<?>> lookupAllEventTypes(Class<?> eventClass) {
method addInterfaces (line 459) | static void addInterfaces(List<Class<?>> eventTypes, Class<?>[] interf...
method invokeSubscriber (line 474) | void invokeSubscriber(PendingPost pendingPost) {
method invokeSubscriber (line 483) | void invokeSubscriber(Subscription subscription, Object event) {
method handleSubscriberException (line 493) | private void handleSubscriberException(Subscription subscription, Obje...
class PostingThreadState (line 520) | final static class PostingThreadState {
method getExecutorService (line 529) | ExecutorService getExecutorService() {
type PostCallback (line 534) | interface PostCallback {
method onPostCompleted (line 535) | void onPostCompleted(List<SubscriberExceptionEvent> exceptionEvents);
method toString (line 538) | @Override
FILE: EventBus/src/org/greenrobot/eventbus/EventBusBuilder.java
class EventBusBuilder (line 29) | public class EventBusBuilder {
method EventBusBuilder (line 44) | EventBusBuilder() {
method logSubscriberExceptions (line 48) | public EventBusBuilder logSubscriberExceptions(boolean logSubscriberEx...
method logNoSubscriberMessages (line 54) | public EventBusBuilder logNoSubscriberMessages(boolean logNoSubscriber...
method sendSubscriberExceptionEvent (line 60) | public EventBusBuilder sendSubscriberExceptionEvent(boolean sendSubscr...
method sendNoSubscriberEvent (line 66) | public EventBusBuilder sendNoSubscriberEvent(boolean sendNoSubscriberE...
method throwSubscriberException (line 77) | public EventBusBuilder throwSubscriberException(boolean throwSubscribe...
method eventInheritance (line 91) | public EventBusBuilder eventInheritance(boolean eventInheritance) {
method executorService (line 101) | public EventBusBuilder executorService(ExecutorService executorService) {
method skipMethodVerificationFor (line 111) | public EventBusBuilder skipMethodVerificationFor(Class<?> clazz) {
method ignoreGeneratedIndex (line 120) | public EventBusBuilder ignoreGeneratedIndex(boolean ignoreGeneratedInd...
method strictMethodVerification (line 126) | public EventBusBuilder strictMethodVerification(boolean strictMethodVe...
method addIndex (line 132) | public EventBusBuilder addIndex(SubscriberInfoIndex index) {
method installDefaultEventBus (line 146) | public EventBus installDefaultEventBus() {
method build (line 158) | public EventBus build() {
FILE: EventBus/src/org/greenrobot/eventbus/EventBusException.java
class EventBusException (line 24) | public class EventBusException extends RuntimeException {
method EventBusException (line 28) | public EventBusException(String detailMessage) {
method EventBusException (line 32) | public EventBusException(Throwable throwable) {
method EventBusException (line 36) | public EventBusException(String detailMessage, Throwable throwable) {
FILE: EventBus/src/org/greenrobot/eventbus/HandlerPoster.java
class HandlerPoster (line 23) | final class HandlerPoster extends Handler {
method HandlerPoster (line 30) | HandlerPoster(EventBus eventBus, Looper looper, int maxMillisInsideHan...
method enqueue (line 37) | void enqueue(Subscription subscription, Object event) {
method handleMessage (line 50) | @Override
FILE: EventBus/src/org/greenrobot/eventbus/NoSubscriberEvent.java
class NoSubscriberEvent (line 23) | public final class NoSubscriberEvent {
method NoSubscriberEvent (line 30) | public NoSubscriberEvent(EventBus eventBus, Object originalEvent) {
FILE: EventBus/src/org/greenrobot/eventbus/PendingPost.java
class PendingPost (line 21) | final class PendingPost {
method PendingPost (line 28) | private PendingPost(Object event, Subscription subscription) {
method obtainPendingPost (line 33) | static PendingPost obtainPendingPost(Subscription subscription, Object...
method releasePendingPost (line 47) | static void releasePendingPost(PendingPost pendingPost) {
FILE: EventBus/src/org/greenrobot/eventbus/PendingPostQueue.java
class PendingPostQueue (line 19) | final class PendingPostQueue {
method enqueue (line 23) | synchronized void enqueue(PendingPost pendingPost) {
method poll (line 38) | synchronized PendingPost poll() {
method poll (line 49) | synchronized PendingPost poll(int maxMillisToWait) throws InterruptedE...
FILE: EventBus/src/org/greenrobot/eventbus/SubscriberExceptionEvent.java
class SubscriberExceptionEvent (line 23) | public final class SubscriberExceptionEvent {
method SubscriberExceptionEvent (line 36) | public SubscriberExceptionEvent(EventBus eventBus, Throwable throwable...
FILE: EventBus/src/org/greenrobot/eventbus/SubscriberMethod.java
class SubscriberMethod (line 21) | public class SubscriberMethod {
method SubscriberMethod (line 30) | public SubscriberMethod(Method method, Class<?> eventType, ThreadMode ...
method equals (line 38) | @Override
method checkMethodString (line 53) | private synchronized void checkMethodString() {
method hashCode (line 64) | @Override
FILE: EventBus/src/org/greenrobot/eventbus/SubscriberMethodFinder.java
class SubscriberMethodFinder (line 29) | class SubscriberMethodFinder {
method SubscriberMethodFinder (line 48) | SubscriberMethodFinder(List<SubscriberInfoIndex> subscriberInfoIndexes...
method findSubscriberMethods (line 55) | List<SubscriberMethod> findSubscriberMethods(Class<?> subscriberClass) {
method findUsingInfo (line 75) | private List<SubscriberMethod> findUsingInfo(Class<?> subscriberClass) {
method getMethodsAndRelease (line 95) | private List<SubscriberMethod> getMethodsAndRelease(FindState findStat...
method prepareFindState (line 109) | private FindState prepareFindState() {
method getSubscriberInfo (line 122) | private SubscriberInfo getSubscriberInfo(FindState findState) {
method findUsingReflection (line 140) | private List<SubscriberMethod> findUsingReflection(Class<?> subscriber...
method findUsingReflectionInSingleClass (line 150) | private void findUsingReflectionInSingleClass(FindState findState) {
method clearCaches (line 187) | static void clearCaches() {
class FindState (line 191) | static class FindState {
method initForSubscriber (line 202) | void initForSubscriber(Class<?> subscriberClass) {
method recycle (line 208) | void recycle() {
method checkAdd (line 219) | boolean checkAdd(Method method, Class<?> eventType) {
method checkAddWithMethodSignature (line 238) | private boolean checkAddWithMethodSignature(Method method, Class<?> ...
method moveToSuperclass (line 256) | void moveToSuperclass() {
FILE: EventBus/src/org/greenrobot/eventbus/Subscription.java
class Subscription (line 18) | final class Subscription {
method Subscription (line 27) | Subscription(Object subscriber, SubscriberMethod subscriberMethod) {
method equals (line 33) | @Override
method hashCode (line 44) | @Override
FILE: EventBus/src/org/greenrobot/eventbus/ThreadMode.java
type ThreadMode (line 25) | public enum ThreadMode {
FILE: EventBus/src/org/greenrobot/eventbus/meta/AbstractSubscriberInfo.java
class AbstractSubscriberInfo (line 25) | public abstract class AbstractSubscriberInfo implements SubscriberInfo {
method AbstractSubscriberInfo (line 30) | protected AbstractSubscriberInfo(Class subscriberClass, Class<? extend...
method getSubscriberClass (line 37) | @Override
method getSuperSubscriberInfo (line 42) | @Override
method shouldCheckSuperclass (line 54) | @Override
method createSubscriberMethod (line 59) | protected SubscriberMethod createSubscriberMethod(String methodName, C...
method createSubscriberMethod (line 63) | protected SubscriberMethod createSubscriberMethod(String methodName, C...
method createSubscriberMethod (line 67) | protected SubscriberMethod createSubscriberMethod(String methodName, C...
FILE: EventBus/src/org/greenrobot/eventbus/meta/SimpleSubscriberInfo.java
class SimpleSubscriberInfo (line 23) | public class SimpleSubscriberInfo extends AbstractSubscriberInfo {
method SimpleSubscriberInfo (line 27) | public SimpleSubscriberInfo(Class subscriberClass, boolean shouldCheck...
method getSubscriberMethods (line 32) | @Override
FILE: EventBus/src/org/greenrobot/eventbus/meta/SubscriberInfo.java
type SubscriberInfo (line 21) | public interface SubscriberInfo {
method getSubscriberClass (line 22) | Class<?> getSubscriberClass();
method getSubscriberMethods (line 24) | SubscriberMethod[] getSubscriberMethods();
method getSuperSubscriberInfo (line 26) | SubscriberInfo getSuperSubscriberInfo();
method shouldCheckSuperclass (line 28) | boolean shouldCheckSuperclass();
FILE: EventBus/src/org/greenrobot/eventbus/meta/SubscriberInfoIndex.java
type SubscriberInfoIndex (line 21) | public interface SubscriberInfoIndex {
method getSubscriberInfo (line 22) | SubscriberInfo getSubscriberInfo(Class<?> subscriberClass);
FILE: EventBus/src/org/greenrobot/eventbus/meta/SubscriberMethodInfo.java
class SubscriberMethodInfo (line 20) | public class SubscriberMethodInfo {
method SubscriberMethodInfo (line 27) | public SubscriberMethodInfo(String methodName, Class<?> eventType, Thr...
method SubscriberMethodInfo (line 36) | public SubscriberMethodInfo(String methodName, Class<?> eventType) {
method SubscriberMethodInfo (line 40) | public SubscriberMethodInfo(String methodName, Class<?> eventType, Thr...
FILE: EventBus/src/org/greenrobot/eventbus/util/AsyncExecutor.java
class AsyncExecutor (line 33) | public class AsyncExecutor {
class Builder (line 35) | public static class Builder {
method Builder (line 40) | private Builder() {
method threadPool (line 43) | public Builder threadPool(Executor threadPool) {
method failureEventType (line 48) | public Builder failureEventType(Class<?> failureEventType) {
method eventBus (line 53) | public Builder eventBus(EventBus eventBus) {
method build (line 58) | public AsyncExecutor build() {
method buildForActivityScope (line 62) | public AsyncExecutor buildForActivityScope(Activity activity) {
method buildForScope (line 66) | public AsyncExecutor buildForScope(Object executionContext) {
type RunnableEx (line 81) | public interface RunnableEx {
method run (line 82) | void run() throws Exception;
method builder (line 85) | public static Builder builder() {
method create (line 89) | public static AsyncExecutor create() {
method AsyncExecutor (line 98) | private AsyncExecutor(Executor threadPool, EventBus eventBus, Class<?>...
method execute (line 111) | public void execute(final RunnableEx runnable) {
FILE: EventBus/src/org/greenrobot/eventbus/util/ErrorDialogConfig.java
class ErrorDialogConfig (line 24) | public class ErrorDialogConfig {
method ErrorDialogConfig (line 36) | public ErrorDialogConfig(Resources resources, int defaultTitleId, int ...
method addMapping (line 43) | public ErrorDialogConfig addMapping(Class<? extends Throwable> clazz, ...
method getMessageIdForThrowable (line 48) | public int getMessageIdForThrowable(final Throwable throwable) {
method setDefaultDialogIconId (line 58) | public void setDefaultDialogIconId(int defaultDialogIconId) {
method setDefaultEventTypeOnDialogClosed (line 62) | public void setDefaultEventTypeOnDialogClosed(Class<?> defaultEventTyp...
method disableExceptionLogging (line 66) | public void disableExceptionLogging() {
method setTagForLoggingExceptions (line 70) | public void setTagForLoggingExceptions(String tagForLoggingExceptions) {
method setEventBus (line 74) | public void setEventBus(EventBus eventBus) {
method getEventBus (line 79) | EventBus getEventBus() {
FILE: EventBus/src/org/greenrobot/eventbus/util/ErrorDialogFragmentFactory.java
class ErrorDialogFragmentFactory (line 28) | public abstract class ErrorDialogFragmentFactory<T> {
method ErrorDialogFragmentFactory (line 31) | protected ErrorDialogFragmentFactory(ErrorDialogConfig config) {
method prepareErrorFragment (line 38) | protected T prepareErrorFragment(ThrowableFailureEvent event, boolean ...
method createErrorFragment (line 73) | protected abstract T createErrorFragment(ThrowableFailureEvent event, ...
method getTitleFor (line 76) | protected String getTitleFor(ThrowableFailureEvent event, Bundle argum...
method getMessageFor (line 81) | protected String getMessageFor(ThrowableFailureEvent event, Bundle arg...
class Support (line 86) | public static class Support extends ErrorDialogFragmentFactory<Fragmen...
method Support (line 88) | public Support(ErrorDialogConfig config) {
method createErrorFragment (line 92) | protected Fragment createErrorFragment(ThrowableFailureEvent event, ...
class Honeycomb (line 100) | @TargetApi(Build.VERSION_CODES.HONEYCOMB)
method Honeycomb (line 103) | public Honeycomb(ErrorDialogConfig config) {
method createErrorFragment (line 107) | protected android.app.Fragment createErrorFragment(ThrowableFailureE...
FILE: EventBus/src/org/greenrobot/eventbus/util/ErrorDialogFragments.java
class ErrorDialogFragments (line 32) | public class ErrorDialogFragments {
method createDialog (line 39) | public static Dialog createDialog(Context context, Bundle arguments, O...
method handleOnClick (line 50) | public static void handleOnClick(DialogInterface dialog, int which, Ac...
class Honeycomb (line 67) | @TargetApi(Build.VERSION_CODES.HONEYCOMB)
method onCreateDialog (line 69) | @Override
method onClick (line 74) | @Override
class Support (line 80) | public static class Support extends DialogFragment implements OnClickL...
method onCreateDialog (line 81) | @Override
method onClick (line 86) | @Override
FILE: EventBus/src/org/greenrobot/eventbus/util/ErrorDialogManager.java
class ErrorDialogManager (line 46) | public class ErrorDialogManager {
class SupportManagerFragment (line 48) | public static class SupportManagerFragment extends Fragment {
method onCreate (line 55) | @Override
method onResume (line 63) | @Override
method onPause (line 75) | @Override
method onEventMainThread (line 81) | public void onEventMainThread(ThrowableFailureEvent event) {
method attachTo (line 103) | public static void attachTo(Activity activity, Object executionScope...
class HoneycombManagerFragment (line 118) | @TargetApi(Build.VERSION_CODES.HONEYCOMB)
method onResume (line 125) | @Override
method onPause (line 132) | @Override
method onEventMainThread (line 138) | public void onEventMainThread(ThrowableFailureEvent event) {
method attachTo (line 162) | public static void attachTo(Activity activity, Object executionScope...
method attachTo (line 190) | public static void attachTo(Activity activity) {
method attachTo (line 195) | public static void attachTo(Activity activity, boolean finishAfterDial...
method attachTo (line 200) | public static void attachTo(Activity activity, boolean finishAfterDial...
method attachTo (line 205) | public static void attachTo(Activity activity, Object executionScope, ...
method isSupportActivity (line 216) | private static boolean isSupportActivity(Activity activity) {
method checkLogException (line 241) | protected static void checkLogException(ThrowableFailureEvent event) {
method isInExecutionScope (line 251) | private static boolean isInExecutionScope(Object executionScope, Throw...
FILE: EventBus/src/org/greenrobot/eventbus/util/ExceptionToResourceMapping.java
class ExceptionToResourceMapping (line 34) | public class ExceptionToResourceMapping {
method ExceptionToResourceMapping (line 38) | public ExceptionToResourceMapping() {
method mapThrowable (line 43) | public Integer mapThrowable(final Throwable throwable) {
method mapThrowableFlat (line 65) | protected Integer mapThrowableFlat(Throwable throwable) {
method addMapping (line 85) | public ExceptionToResourceMapping addMapping(Class<? extends Throwable...
FILE: EventBus/src/org/greenrobot/eventbus/util/HasExecutionScope.java
type HasExecutionScope (line 19) | public interface HasExecutionScope {
method getExecutionScope (line 20) | Object getExecutionScope();
method setExecutionScope (line 22) | void setExecutionScope(Object executionScope);
FILE: EventBus/src/org/greenrobot/eventbus/util/ThrowableFailureEvent.java
class ThrowableFailureEvent (line 22) | public class ThrowableFailureEvent implements HasExecutionScope {
method ThrowableFailureEvent (line 27) | public ThrowableFailureEvent(Throwable throwable) {
method ThrowableFailureEvent (line 36) | public ThrowableFailureEvent(Throwable throwable, boolean suppressErro...
method getThrowable (line 41) | public Throwable getThrowable() {
method isSuppressErrorUi (line 45) | public boolean isSuppressErrorUi() {
method getExecutionScope (line 49) | public Object getExecutionScope() {
method setExecutionScope (line 53) | public void setExecutionScope(Object executionContext) {
FILE: EventBus3.0_Sample/src/main/java/com/harvic/other/FirstEvent.java
class FirstEvent (line 3) | public class FirstEvent {
method FirstEvent (line 6) | public FirstEvent(String msg) {
method getMsg (line 10) | public String getMsg(){
FILE: EventBus3.0_Sample/src/main/java/com/harvic/other/SecondEvent.java
class SecondEvent (line 3) | public class SecondEvent{
method SecondEvent (line 6) | public SecondEvent(String msg) {
method getMsg (line 10) | public String getMsg(){
FILE: EventBus3.0_Sample/src/main/java/com/harvic/other/ThirdEvent.java
class ThirdEvent (line 3) | public class ThirdEvent {
method ThirdEvent (line 6) | public ThirdEvent(String msg) {
method getMsg (line 10) | public String getMsg(){
FILE: EventBus3.0_Sample/src/main/java/com/harvic/tryeventbus2/MainActivity.java
class MainActivity (line 20) | public class MainActivity extends Activity {
method onCreate (line 27) | @Override
method testOnEventMainThread (line 51) | @Subscribe(threadMode = ThreadMode.MAIN,sticky = false,priority = 80)
method onEventMainThread (line 59) | @Subscribe(threadMode = ThreadMode.MAIN,sticky = true,priority = 71)
method onEventBackgroundThread (line 66) | @Subscribe(threadMode = ThreadMode.BACKGROUND)
method onEventAsync (line 72) | @Subscribe(threadMode = ThreadMode.ASYNC)
method onEvent (line 80) | @Subscribe(threadMode = ThreadMode.POSTING)
method onDestroy (line 87) | @Override
FILE: EventBus3.0_Sample/src/main/java/com/harvic/tryeventbus2/SecondActivity.java
class SecondActivity (line 14) | public class SecondActivity extends Activity {
method onCreate (line 17) | @Override
FILE: JieCaoVideoPlayer-develop/src/androidTest/java/fm/jiecao/jiecaovideoplayer/ApplicationTest.java
class ApplicationTest (line 9) | public class ApplicationTest extends ApplicationTestCase<Application> {
method ApplicationTest (line 10) | public ApplicationTest() {
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/AutoTinyActivity.java
class AutoTinyActivity (line 14) | public class AutoTinyActivity extends AppCompatActivity implements View....
method onCreate (line 18) | @Override
method onClick (line 35) | @Override
method onOptionsItemSelected (line 47) | @Override
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/AutoTinyListActivity.java
class AutoTinyListActivity (line 15) | public class AutoTinyListActivity extends AppCompatActivity {
method onCreate (line 20) | @Override
method onBackPressed (line 46) | @Override
method onPause (line 54) | @Override
method onOptionsItemSelected (line 60) | @Override
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/AutoTinyNormalActivity.java
class AutoTinyNormalActivity (line 26) | public class AutoTinyNormalActivity extends AppCompatActivity implements...
method onCreate (line 30) | @Override
method onBackPressed (line 65) | @Override
method onPause (line 73) | @Override
method onOptionsItemSelected (line 79) | @Override
method onScrollStateChanged (line 89) | @Override
method onScroll (line 94) | @Override
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/CustomView/JCVideoPlayerStandardAutoComplete.java
class JCVideoPlayerStandardAutoComplete (line 12) | public class JCVideoPlayerStandardAutoComplete extends JCVideoPlayerStan...
method JCVideoPlayerStandardAutoComplete (line 13) | public JCVideoPlayerStandardAutoComplete(Context context) {
method JCVideoPlayerStandardAutoComplete (line 17) | public JCVideoPlayerStandardAutoComplete(Context context, AttributeSet...
method onAutoCompletion (line 21) | @Override
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/CustomView/JCVideoPlayerStandardFresco.java
class JCVideoPlayerStandardFresco (line 35) | public class JCVideoPlayerStandardFresco extends JCVideoPlayer {
method JCVideoPlayerStandardFresco (line 49) | public JCVideoPlayerStandardFresco(Context context) {
method JCVideoPlayerStandardFresco (line 53) | public JCVideoPlayerStandardFresco(Context context, AttributeSet attrs) {
method init (line 57) | @Override
method setUp (line 74) | @Override
method getLayoutId (line 97) | @Override
method setUiWitStateAndScreen (line 102) | @Override
method onTouch (line 135) | @Override
method onClick (line 169) | @Override
method showWifiDialog (line 203) | @Override
method onStartTrackingTouch (line 225) | @Override
method onStopTrackingTouch (line 231) | @Override
method startPlayLogic (line 237) | private void startPlayLogic() {
method onClickUiToggle (line 243) | private void onClickUiToggle() {
method setProgressAndTime (line 277) | @Override
method resetProgressAndTime (line 284) | @Override
method changeUiToNormal (line 292) | public void changeUiToNormal() {
method changeUiToPreparingShow (line 309) | public void changeUiToPreparingShow() {
method changeUiToPreparingClear (line 325) | private void changeUiToPreparingClear() {
method changeUiToPlayingShow (line 341) | private void changeUiToPlayingShow() {
method changeUiToPlayingClear (line 359) | private void changeUiToPlayingClear() {
method changeUiToPauseShow (line 375) | private void changeUiToPauseShow() {
method changeUiToPauseClear (line 393) | private void changeUiToPauseClear() {
method changeUiToPlayingBufferingShow (line 409) | private void changeUiToPlayingBufferingShow() {
method changeUiToPlayingBufferingClear (line 425) | private void changeUiToPlayingBufferingClear() {
method changeUiToCompleteShow (line 443) | private void changeUiToCompleteShow() {
method changeUiToCompleteClear (line 461) | private void changeUiToCompleteClear() {
method changeUiToError (line 479) | private void changeUiToError() {
method setAllControlsVisible (line 497) | private void setAllControlsVisible(int topCon, int bottomCon, int star...
method updateStartImage (line 508) | private void updateStartImage() {
method showProgressDialog (line 524) | @Override
method dismissProgressDialog (line 559) | @Override
method showVolumeDialog (line 571) | @Override
method dismissVolumeDialog (line 595) | @Override
method startDismissControlViewTimer (line 603) | private void startDismissControlViewTimer() {
method cancelDismissControlViewTimer (line 610) | private void cancelDismissControlViewTimer() {
class DismissControlViewTimerTask (line 620) | protected class DismissControlViewTimerTask extends TimerTask {
method run (line 622) | @Override
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/CustomView/JCVideoPlayerStandardShowShareButtonAfterFullscreen.java
class JCVideoPlayerStandardShowShareButtonAfterFullscreen (line 16) | public class JCVideoPlayerStandardShowShareButtonAfterFullscreen extends...
method JCVideoPlayerStandardShowShareButtonAfterFullscreen (line 20) | public JCVideoPlayerStandardShowShareButtonAfterFullscreen(Context con...
method JCVideoPlayerStandardShowShareButtonAfterFullscreen (line 24) | public JCVideoPlayerStandardShowShareButtonAfterFullscreen(Context con...
method init (line 28) | @Override
method getLayoutId (line 36) | @Override
method onClick (line 41) | @Override
method setUp (line 49) | @Override
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/CustomView/JCVideoPlayerStandardShowTextureViewAfterAutoComplete.java
class JCVideoPlayerStandardShowTextureViewAfterAutoComplete (line 13) | public class JCVideoPlayerStandardShowTextureViewAfterAutoComplete exten...
method JCVideoPlayerStandardShowTextureViewAfterAutoComplete (line 14) | public JCVideoPlayerStandardShowTextureViewAfterAutoComplete(Context c...
method JCVideoPlayerStandardShowTextureViewAfterAutoComplete (line 18) | public JCVideoPlayerStandardShowTextureViewAfterAutoComplete(Context c...
method setUiWitStateAndScreen (line 22) | @Override
method onClickUiToggle (line 30) | @Override
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/CustomView/JCVideoPlayerStandardShowTitleAfterFullscreen.java
class JCVideoPlayerStandardShowTitleAfterFullscreen (line 13) | public class JCVideoPlayerStandardShowTitleAfterFullscreen extends JCVid...
method JCVideoPlayerStandardShowTitleAfterFullscreen (line 14) | public JCVideoPlayerStandardShowTitleAfterFullscreen(Context context) {
method JCVideoPlayerStandardShowTitleAfterFullscreen (line 18) | public JCVideoPlayerStandardShowTitleAfterFullscreen(Context context, ...
method setUp (line 22) | @Override
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/DemoApplication.java
class DemoApplication (line 20) | public class DemoApplication extends Application {
method onCreate (line 22) | @Override
method initUniversalImageLoader (line 33) | private void initUniversalImageLoader() {
method getDefaultDisplayImageOption (line 46) | public static DisplayImageOptions getDefaultDisplayImageOption() {
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/ListViewActivity.java
class ListViewActivity (line 14) | public class ListViewActivity extends AppCompatActivity implements View....
method onCreate (line 17) | @Override
method onClick (line 39) | @Override
method onOptionsItemSelected (line 57) | @Override
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/ListViewMultiHolderActivity.java
class ListViewMultiHolderActivity (line 23) | public class ListViewMultiHolderActivity extends AppCompatActivity {
method onCreate (line 27) | @Override
class VideoListAdapter (line 44) | public class VideoListAdapter extends BaseAdapter {
method VideoListAdapter (line 51) | public VideoListAdapter(Context context) {
method getCount (line 56) | @Override
method getItem (line 61) | @Override
method getItemId (line 66) | @Override
method getView (line 71) | @Override
method getItemViewType (line 110) | @Override
method getViewTypeCount (line 115) | @Override
class VideoHolder (line 120) | class VideoHolder {
class TextViewHolder (line 124) | class TextViewHolder {
method onBackPressed (line 129) | @Override
method onPause (line 137) | @Override
method onOptionsItemSelected (line 143) | @Override
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/ListViewNormalActivity.java
class ListViewNormalActivity (line 16) | public class ListViewNormalActivity extends AppCompatActivity {
method onCreate (line 23) | @Override
method onBackPressed (line 41) | @Override
method onResume (line 49) | @Override
method onPause (line 56) | @Override
method onOptionsItemSelected (line 63) | @Override
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/ListViewViewpagerActivity.java
class ListViewViewpagerActivity (line 20) | public class ListViewViewpagerActivity extends AppCompatActivity impleme...
method onCreate (line 21) | @Override
method onPause (line 50) | @Override
method onPageScrolled (line 56) | @Override
method onPageSelected (line 61) | @Override
method onPageScrollStateChanged (line 66) | @Override
class MyAdapter (line 71) | public class MyAdapter extends PagerAdapter {
method MyAdapter (line 75) | public MyAdapter(List<View> lists) {
method getCount (line 79) | @Override
method isViewFromObject (line 85) | @Override
method destroyItem (line 91) | @Override
method instantiateItem (line 96) | @Override
method onBackPressed (line 103) | @Override
method onOptionsItemSelected (line 111) | @Override
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/MainActivity.java
class MainActivity (line 24) | public class MainActivity extends AppCompatActivity implements View.OnCl...
method onCreate (line 35) | @Override
method onResume (line 71) | @Override
method onPause (line 78) | @Override
method onBackPressed (line 85) | @Override
method onClick (line 93) | @Override
class MyUserActionStandard (line 117) | class MyUserActionStandard implements JCUserActionStandard {
method onEvent (line 119) | @Override
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/PlayDirectlyActivity.java
class PlayDirectlyActivity (line 17) | public class PlayDirectlyActivity extends AppCompatActivity implements V...
method onCreate (line 20) | @Override
method onClick (line 39) | @Override
method onBackPressed (line 51) | @Override
method onPause (line 59) | @Override
method onOptionsItemSelected (line 65) | @Override
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/RecyclerViewNormalActivity.java
class RecyclerViewNormalActivity (line 18) | public class RecyclerViewNormalActivity extends AppCompatActivity {
method onCreate (line 22) | @Override
method onBackPressed (line 55) | @Override
method onPause (line 63) | @Override
method onOptionsItemSelected (line 69) | @Override
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/RecyclerViewVideoAdapter.java
class RecyclerViewVideoAdapter (line 15) | public class RecyclerViewVideoAdapter extends RecyclerView.Adapter<Recyc...
method RecyclerViewVideoAdapter (line 21) | public RecyclerViewVideoAdapter(Context context) {
method onCreateViewHolder (line 25) | @Override
method onBindViewHolder (line 33) | @Override
method getItemCount (line 45) | @Override
class MyViewHolder (line 50) | class MyViewHolder extends RecyclerView.ViewHolder {
method MyViewHolder (line 53) | public MyViewHolder(View itemView) {
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/UIActivity.java
class UIActivity (line 15) | public class UIActivity extends AppCompatActivity implements View.OnClic...
method onCreate (line 18) | @Override
method onClick (line 38) | @Override
method onOptionsItemSelected (line 54) | @Override
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/UIBigChangeActivity.java
class UIBigChangeActivity (line 13) | public class UIBigChangeActivity extends AppCompatActivity {
method onCreate (line 14) | @Override
method onBackPressed (line 27) | @Override
method onPause (line 35) | @Override
method onOptionsItemSelected (line 41) | @Override
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/UIImageLoaderActivity.java
class UIImageLoaderActivity (line 26) | public class UIImageLoaderActivity extends AppCompatActivity {
method onCreate (line 30) | @Override
class BitmapCache (line 85) | public class BitmapCache implements com.android.volley.toolbox.ImageLo...
method BitmapCache (line 88) | public BitmapCache() {
method getBitmap (line 97) | @Override
method putBitmap (line 102) | @Override
method onBackPressed (line 108) | @Override
method onPause (line 116) | @Override
method onOptionsItemSelected (line 122) | @Override
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/UISmallChangeActivity.java
class UISmallChangeActivity (line 19) | public class UISmallChangeActivity extends AppCompatActivity {
method onCreate (line 25) | @Override
method onBackPressed (line 65) | @Override
method onPause (line 73) | @Override
method onOptionsItemSelected (line 79) | @Override
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/VideoConstant.java
class VideoConstant (line 6) | public class VideoConstant {
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/VideoListAdapter.java
class VideoListAdapter (line 19) | public class VideoListAdapter extends BaseAdapter {
method VideoListAdapter (line 26) | public VideoListAdapter(Context context) {
method getCount (line 30) | @Override
method getItem (line 35) | @Override
method getItemId (line 40) | @Override
method getView (line 45) | @Override
class ViewHolder (line 70) | class ViewHolder {
FILE: JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/WebViewActivity.java
class WebViewActivity (line 22) | public class WebViewActivity extends AppCompatActivity {
method onCreate (line 25) | @Override
class JCCallBack (line 40) | public class JCCallBack {
method adViewJieCaoVideoPlayer (line 42) | @JavascriptInterface
method onBackPressed (line 66) | @Override
method onPause (line 74) | @Override
method onOptionsItemSelected (line 80) | @Override
FILE: JieCaoVideoPlayer-develop/src/test/java/fm/jiecao/jiecaovideoplayer/ExampleUnitTest.java
class ExampleUnitTest (line 10) | public class ExampleUnitTest {
method addition_isCorrect (line 11) | @Test
FILE: MaterialRefresh_library/src/main/java/com/cjj/CircleProgressBar.java
class CircleProgressBar (line 38) | public class CircleProgressBar extends ImageView implements MaterialHead...
method CircleProgressBar (line 75) | public CircleProgressBar(Context context) {
method CircleProgressBar (line 81) | public CircleProgressBar(Context context, AttributeSet attrs) {
method CircleProgressBar (line 87) | public CircleProgressBar(Context context, AttributeSet attrs, int defS...
method init (line 93) | private void init(Context context, AttributeSet attrs, int defStyleAtt...
method setProgressBackGroundColor (line 142) | public void setProgressBackGroundColor(int color) {
method setTextColor (line 147) | public void setTextColor(int color) {
method elevationSupported (line 151) | private boolean elevationSupported() {
method onMeasure (line 155) | @Override
method getProgressStokeWidth (line 164) | public int getProgressStokeWidth() {
method setProgressStokeWidth (line 168) | public void setProgressStokeWidth(int mProgressStokeWidth) {
method onLayout (line 174) | @Override
method onDraw (line 223) | @Override
method setImageResource (line 234) | @Override
method isShowArrow (line 240) | public boolean isShowArrow() {
method setShowArrow (line 244) | public void setShowArrow(boolean showArrow) {
method setImageURI (line 250) | @Override
method setImageDrawable (line 255) | @Override
method setAnimationListener (line 259) | public void setAnimationListener(Animation.AnimationListener listener) {
method onAnimationStart (line 263) | @Override
method onAnimationEnd (line 271) | @Override
method setColorSchemeResources (line 287) | public void setColorSchemeResources(int... colorResIds) {
method setColorSchemeColors (line 303) | public void setColorSchemeColors(int... colors) {
method setBackgroundColor (line 313) | public void setBackgroundColor(int colorRes) {
method isShowProgressText (line 320) | public boolean isShowProgressText() {
method setShowProgressText (line 324) | public void setShowProgressText(boolean mIfDrawText) {
method getMax (line 328) | public int getMax() {
method setMax (line 332) | public void setMax(int max) {
method getProgress (line 336) | public int getProgress() {
method setProgress (line 340) | public void setProgress(int progress) {
method circleBackgroundEnabled (line 349) | public boolean circleBackgroundEnabled() {
method setCircleBackgroundEnabled (line 353) | public void setCircleBackgroundEnabled(boolean enableCircleBackground) {
method getVisibility (line 358) | @Override
method setVisibility (line 363) | @Override
method onAttachedToWindow (line 379) | @Override
method onDetachedFromWindow (line 388) | @Override
method onComlete (line 397) | @Override
method onBegin (line 405) | @Override
method onPull (line 411) | @Override
method onRelease (line 417) | @Override
method onRefreshing (line 422) | @Override
class OvalShadow (line 430) | private class OvalShadow extends OvalShape {
method OvalShadow (line 436) | public OvalShadow(int shadowRadius, int circleDiameter) {
method draw (line 448) | @Override
FILE: MaterialRefresh_library/src/main/java/com/cjj/MaterialFoodView.java
class MaterialFoodView (line 13) | public class MaterialFoodView extends FrameLayout implements MaterialHea...
method MaterialFoodView (line 28) | public MaterialFoodView(Context context) {
method MaterialFoodView (line 32) | public MaterialFoodView(Context context, AttributeSet attrs) {
method MaterialFoodView (line 36) | public MaterialFoodView(Context context, AttributeSet attrs, int defSt...
method init (line 42) | protected void init(AttributeSet attrs, int defStyle) {
method getWaveColor (line 48) | public int getWaveColor() {
method setWaveColor (line 52) | public void setWaveColor(int waveColor) {
method setProgressSize (line 59) | public void setProgressSize(int progressSize) {
method setProgressBg (line 63) | public void setProgressBg(int progressBg) {
method setIsProgressBg (line 67) | public void setIsProgressBg(boolean isShowProgressBg) {
method setProgressTextColor (line 71) | public void setProgressTextColor(int textColor) {
method setProgressColors (line 75) | public void setProgressColors(int[] colors) {
method setTextType (line 79) | public void setTextType(int textType) {
method setProgressValue (line 83) | public void setProgressValue(int value) {
method setProgressValueMax (line 96) | public void setProgressValueMax(int value) {
method setProgressStokeWidth (line 100) | public void setProgressStokeWidth(int w) {
method showProgressArrow (line 104) | public void showProgressArrow(boolean isShowArrow) {
method onAttachedToWindow (line 108) | @Override
method onComlete (line 131) | @Override
method onBegin (line 146) | @Override
method onPull (line 158) | @Override
method onRelease (line 172) | @Override
method onRefreshing (line 177) | @Override
FILE: MaterialRefresh_library/src/main/java/com/cjj/MaterialFooterView.java
class MaterialFooterView (line 9) | public class MaterialFooterView extends FrameLayout implements MaterialH...
method MaterialFooterView (line 23) | public MaterialFooterView(Context context) {
method MaterialFooterView (line 27) | public MaterialFooterView(Context context, AttributeSet attrs) {
method MaterialFooterView (line 31) | public MaterialFooterView(Context context, AttributeSet attrs, int def...
method init (line 37) | protected void init(AttributeSet attrs, int defStyle) {
method getWaveColor (line 43) | public int getWaveColor() {
method setWaveColor (line 47) | public void setWaveColor(int waveColor) {
method setProgressSize (line 54) | public void setProgressSize(int progressSize) {
method setProgressBg (line 58) | public void setProgressBg(int progressBg) {
method setIsProgressBg (line 64) | public void setIsProgressBg(boolean isShowProgressBg) {
method setProgressTextColor (line 70) | public void setProgressTextColor(int textColor) {
method setProgressColors (line 74) | public void setProgressColors(int[] colors) {
method setTextType (line 80) | public void setTextType(int textType) {
method setProgressValue (line 84) | public void setProgressValue(int value) {
method setProgressValueMax (line 97) | public void setProgressValueMax(int value) {
method setProgressStokeWidth (line 101) | public void setProgressStokeWidth(int w) {
method showProgressArrow (line 107) | public void showProgressArrow(boolean isShowArrow) {
method onAttachedToWindow (line 113) | @Override
method onComlete (line 139) | @Override
method onBegin (line 154) | @Override
method onPull (line 166) | @Override
method onRelease (line 180) | @Override
method onRefreshing (line 185) | @Override
FILE: MaterialRefresh_library/src/main/java/com/cjj/MaterialHeadListener.java
type MaterialHeadListener (line 17) | public interface MaterialHeadListener {
method onComlete (line 18) | void onComlete(MaterialRefreshLayout materialRefreshLayout);
method onBegin (line 19) | void onBegin(MaterialRefreshLayout materialRefreshLayout);
method onPull (line 20) | void onPull(MaterialRefreshLayout materialRefreshLayout, float fraction);
method onRelease (line 21) | void onRelease(MaterialRefreshLayout materialRefreshLayout, float frac...
method onRefreshing (line 22) | void onRefreshing(MaterialRefreshLayout materialRefreshLayout);
FILE: MaterialRefresh_library/src/main/java/com/cjj/MaterialHeadView.java
class MaterialHeadView (line 13) | public class MaterialHeadView extends FrameLayout implements MaterialHea...
method MaterialHeadView (line 28) | public MaterialHeadView(Context context) {
method MaterialHeadView (line 32) | public MaterialHeadView(Context context, AttributeSet attrs) {
method MaterialHeadView (line 36) | public MaterialHeadView(Context context, AttributeSet attrs, int defSt...
method init (line 42) | protected void init(AttributeSet attrs, int defStyle) {
method getWaveColor (line 48) | public int getWaveColor() {
method setWaveColor (line 52) | public void setWaveColor(int waveColor) {
method setProgressSize (line 60) | public void setProgressSize(int progressSize)
method setProgressBg (line 65) | public void setProgressBg(int progressBg)
method setIsProgressBg (line 70) | public void setIsProgressBg(boolean isShowProgressBg)
method setProgressTextColor (line 75) | public void setProgressTextColor(int textColor)
method setProgressColors (line 80) | public void setProgressColors(int[] colors)
method setTextType (line 85) | public void setTextType(int textType)
method setProgressValue (line 90) | public void setProgressValue(int value)
method setProgressValueMax (line 104) | public void setProgressValueMax(int value)
method setProgressStokeWidth (line 109) | public void setProgressStokeWidth(int w)
method showProgressArrow (line 114) | public void showProgressArrow(boolean isShowArrow)
method onAttachedToWindow (line 119) | @Override
method onComlete (line 142) | @Override
method onBegin (line 158) | @Override
method onPull (line 170) | @Override
method onRelease (line 186) | @Override
method onRefreshing (line 191) | @Override
FILE: MaterialRefresh_library/src/main/java/com/cjj/MaterialHeaderView.java
class MaterialHeaderView (line 10) | public class MaterialHeaderView extends FrameLayout implements MaterialH...
method MaterialHeaderView (line 26) | public MaterialHeaderView(Context context) {
method MaterialHeaderView (line 30) | public MaterialHeaderView(Context context, AttributeSet attrs) {
method MaterialHeaderView (line 34) | public MaterialHeaderView(Context context, AttributeSet attrs, int def...
method init (line 40) | protected void init(AttributeSet attrs, int defStyle) {
method getWaveColor (line 46) | public int getWaveColor() {
method setWaveColor (line 50) | public void setWaveColor(int waveColor) {
method setProgressSize (line 57) | public void setProgressSize(int progressSize) {
method setProgressBg (line 65) | public void setProgressBg(int progressBg) {
method setIsProgressBg (line 71) | public void setIsProgressBg(boolean isShowProgressBg) {
method setProgressTextColor (line 77) | public void setProgressTextColor(int textColor) {
method setProgressColors (line 81) | public void setProgressColors(int[] colors) {
method setTextType (line 87) | public void setTextType(int textType) {
method setProgressValue (line 91) | public void setProgressValue(int value) {
method setProgressValueMax (line 104) | public void setProgressValueMax(int value) {
method setProgressStokeWidth (line 108) | public void setProgressStokeWidth(int w) {
method showProgressArrow (line 114) | public void showProgressArrow(boolean isShowArrow) {
method onAttachedToWindow (line 120) | @Override
method onComlete (line 144) | @Override
method onBegin (line 158) | @Override
method onPull (line 170) | @Override
method onRelease (line 184) | @Override
method onRefreshing (line 189) | @Override
FILE: MaterialRefresh_library/src/main/java/com/cjj/MaterialProgressDrawable.java
class MaterialProgressDrawable (line 43) | public class MaterialProgressDrawable extends Drawable implements Animat...
method invalidateDrawable (line 92) | @Override
method scheduleDrawable (line 97) | @Override
method unscheduleDrawable (line 102) | @Override
method MaterialProgressDrawable (line 120) | public MaterialProgressDrawable(Context context, View animExcutor) {
method setSizeParameters (line 131) | public void setSizeParameters(double progressCircleWidth, double progr...
method updateSizes (line 149) | public void updateSizes(@ProgressDrawableSize int size) {
method showArrow (line 165) | public void showArrow(boolean show) {
method setArrowScale (line 172) | public void setArrowScale(float scale) {
method setStartEndTrim (line 182) | public void setStartEndTrim(float startAngle, float endAngle) {
method setProgressRotation (line 192) | public void setProgressRotation(float rotation) {
method setBackgroundColor (line 199) | public void setBackgroundColor(int color) {
method setColorSchemeColors (line 210) | public void setColorSchemeColors(int... colors) {
method getIntrinsicHeight (line 215) | @Override
method getIntrinsicWidth (line 220) | @Override
method draw (line 225) | @Override
method getAlpha (line 234) | public int getAlpha() {
method setAlpha (line 238) | @Override
method setColorFilter (line 243) | @Override
method getRotation (line 248) | @SuppressWarnings("unused")
method setRotation (line 253) | @SuppressWarnings("unused")
method getOpacity (line 259) | @Override
method isRunning (line 264) | @Override
method start (line 269) | @Override
method stop (line 288) | @Override
method applyFinishTranslation (line 297) | private void applyFinishTranslation(float interpolatedTime, Ring ring) {
method setupAnimators (line 311) | private void setupAnimators() {
method showArrowOnFirstStart (line 389) | public void showArrowOnFirstStart(boolean showArrowOnFirstStart) {
class Ring (line 397) | private static class Ring {
method Ring (line 426) | public Ring(Callback callback) {
method setBackgroundColor (line 437) | public void setBackgroundColor(int color) {
method setArrowDimensions (line 447) | public void setArrowDimensions(float width, float height) {
method draw (line 455) | public void draw(Canvas c, Rect bounds) {
method drawTriangle (line 476) | private void drawTriangle(Canvas c, float startAngle, float sweepAng...
method setColors (line 514) | public void setColors(int[] colors) {
method setColorIndex (line 524) | public void setColorIndex(int index) {
method goToNextColor (line 532) | public void goToNextColor() {
method setColorFilter (line 536) | public void setColorFilter(ColorFilter filter) {
method getAlpha (line 544) | public int getAlpha() {
method setAlpha (line 551) | public void setAlpha(int alpha) {
method getStrokeWidth (line 555) | @SuppressWarnings("unused")
method setStrokeWidth (line 563) | public void setStrokeWidth(float strokeWidth) {
method getStartTrim (line 569) | @SuppressWarnings("unused")
method setStartTrim (line 574) | @SuppressWarnings("unused")
method getStartingStartTrim (line 580) | public float getStartingStartTrim() {
method getStartingEndTrim (line 584) | public float getStartingEndTrim() {
method getEndTrim (line 588) | @SuppressWarnings("unused")
method setEndTrim (line 593) | @SuppressWarnings("unused")
method getRotation (line 599) | @SuppressWarnings("unused")
method setRotation (line 604) | @SuppressWarnings("unused")
method setInsets (line 610) | public void setInsets(int width, int height) {
method getInsets (line 621) | @SuppressWarnings("unused")
method getCenterRadius (line 626) | public double getCenterRadius() {
method setCenterRadius (line 634) | public void setCenterRadius(double centerRadius) {
method setShowArrow (line 641) | public void setShowArrow(boolean show) {
method setArrowScale (line 651) | public void setArrowScale(float scale) {
method getStartingRotation (line 661) | public float getStartingRotation() {
method storeOriginals (line 669) | public void storeOriginals() {
method resetOriginals (line 678) | public void resetOriginals() {
method invalidateSelf (line 687) | private void invalidateSelf() {
class EndCurveInterpolator (line 695) | private static class EndCurveInterpolator extends AccelerateDecelerate...
method getInterpolation (line 696) | @Override
class StartCurveInterpolator (line 705) | private static class StartCurveInterpolator extends AccelerateDecelera...
method getInterpolation (line 706) | @Override
FILE: MaterialRefresh_library/src/main/java/com/cjj/MaterialRefreshLayout.java
class MaterialRefreshLayout (line 20) | public class MaterialRefreshLayout extends FrameLayout {
method MaterialRefreshLayout (line 62) | public MaterialRefreshLayout(Context context) {
method MaterialRefreshLayout (line 66) | public MaterialRefreshLayout(Context context, AttributeSet attrs) {
method MaterialRefreshLayout (line 70) | public MaterialRefreshLayout(Context context, AttributeSet attrs, int ...
method init (line 75) | private void init(Context context, AttributeSet attrs, int defstyleAtt...
method onAttachedToWindow (line 126) | @Override
method onInterceptTouchEvent (line 187) | @Override
method soveLoadMoreLogic (line 218) | private void soveLoadMoreLogic() {
method onTouchEvent (line 228) | @Override
method setSunStyle (line 317) | public void setSunStyle(boolean isSunStyle) {
method autoRefresh (line 321) | public void autoRefresh() {
method autoRefreshLoadMore (line 355) | public void autoRefreshLoadMore() {
method updateListener (line 368) | public void updateListener() {
method setLoadMore (line 383) | public void setLoadMore(boolean isLoadMore) {
method setProgressColors (line 387) | public void setProgressColors(int[] colors) {
method setShowArrow (line 391) | public void setShowArrow(boolean showArrow) {
method setShowProgressBg (line 395) | public void setShowProgressBg(boolean showProgressBg) {
method setWaveColor (line 399) | public void setWaveColor(int waveColor) {
method setWaveShow (line 403) | public void setWaveShow(boolean isShowWave) {
method setIsOverLay (line 407) | public void setIsOverLay(boolean isOverLay) {
method createAnimatorTranslationY (line 416) | public void createAnimatorTranslationY(final View v, final float h, fi...
method canChildScrollUp (line 436) | public boolean canChildScrollUp() {
method canChildScrollDown (line 454) | public boolean canChildScrollDown() {
method setWaveHigher (line 476) | public void setWaveHigher() {
method finishRefreshing (line 483) | public void finishRefreshing() {
method finishRefresh (line 506) | public void finishRefresh() {
method finishRefreshLoadMore (line 515) | public void finishRefreshLoadMore() {
method setHeaderView (line 528) | private void setHeaderView(final View headerView) {
method setHeader (line 532) | public void setHeader(final View headerView) {
method setFooderView (line 536) | public void setFooderView(final View fooderView) {
method setWaveHeight (line 541) | public void setWaveHeight(float waveHeight) {
method setHeaderHeight (line 545) | public void setHeaderHeight(float headHeight) {
method setMaterialRefreshListener (line 549) | public void setMaterialRefreshListener(MaterialRefreshListener refresh...
FILE: MaterialRefresh_library/src/main/java/com/cjj/MaterialRefreshListener.java
class MaterialRefreshListener (line 3) | public abstract class MaterialRefreshListener {
method onfinish (line 4) | public void onfinish(){}
method onRefresh (line 5) | public abstract void onRefresh(MaterialRefreshLayout materialRefreshLa...
method onRefreshLoadMore (line 6) | public void onRefreshLoadMore(MaterialRefreshLayout materialRefreshLay...
FILE: MaterialRefresh_library/src/main/java/com/cjj/MaterialWaveView.java
class MaterialWaveView (line 14) | public class MaterialWaveView extends View implements MaterialHeadListen...
method MaterialWaveView (line 23) | public MaterialWaveView(Context context) {
method MaterialWaveView (line 27) | public MaterialWaveView(Context context, AttributeSet attrs) {
method MaterialWaveView (line 31) | public MaterialWaveView(Context context, AttributeSet attrs, int defSt...
method init (line 36) | private void init() {
method getColor (line 43) | public int getColor() {
method setColor (line 47) | public void setColor(int color) {
method getHeadHeight (line 52) | public int getHeadHeight() {
method setHeadHeight (line 56) | public void setHeadHeight(int headHeight) {
method getWaveHeight (line 60) | public int getWaveHeight() {
method setWaveHeight (line 64) | public void setWaveHeight(int waveHeight) {
method getDefaulWaveHeight (line 68) | public int getDefaulWaveHeight() {
method setDefaulWaveHeight (line 72) | public void setDefaulWaveHeight(int defaulWaveHeight) {
method getDefaulHeadHeight (line 76) | public int getDefaulHeadHeight() {
method setDefaulHeadHeight (line 80) | public void setDefaulHeadHeight(int defaulHeadHeight) {
method onDraw (line 84) | @Override
method onComlete (line 96) | @Override
method onBegin (line 113) | @Override
method onPull (line 118) | @Override
method onRelease (line 125) | @Override
method onRefreshing (line 130) | @Override
FILE: MaterialRefresh_library/src/main/java/com/cjj/SunFaceView.java
class SunFaceView (line 17) | public class SunFaceView extends View {
method SunFaceView (line 33) | public SunFaceView(Context context) {
method SunFaceView (line 37) | public SunFaceView(Context context, AttributeSet attrs) {
method SunFaceView (line 41) | public SunFaceView(Context context, AttributeSet attrs, int defStyleAt...
method init (line 46) | private void init() {
method setSunRadius (line 66) | public void setSunRadius(int sunRadius) {
method setEyesSize (line 75) | public void setEyesSize(int eyesSize){
method setMouthStro (line 84) | public void setMouthStro(int mouthStro){
method setPerView (line 95) | public void setPerView(int sunRadius ,float per){
method setSunColor (line 114) | public void setSunColor(int sunColor) {
method onSizeChanged (line 119) | @Override
method onMeasure (line 139) | @Override
method onDraw (line 165) | @Override
method drawCircle (line 175) | private void drawCircle(Canvas canvas) {
method changeDp (line 194) | public int changeDp(int value) {
FILE: MaterialRefresh_library/src/main/java/com/cjj/SunLayout.java
class SunLayout (line 16) | public class SunLayout extends FrameLayout implements MaterialHeadListen...
method SunLayout (line 39) | public SunLayout(Context context) {
method SunLayout (line 43) | public SunLayout(Context context, AttributeSet attrs) {
method SunLayout (line 47) | public SunLayout(Context context, AttributeSet attrs, int defStyleAttr) {
method init (line 52) | private void init() {
method setSunRadius (line 89) | public void setSunRadius(int sunRadius) {
method setSunColor (line 100) | public void setSunColor(int sunColor) {
method setEyesSize (line 110) | public void setEyesSize(int eyesSize) {
method setLineLevel (line 120) | public void setLineLevel(int level) {
method setLineColor (line 130) | public void setLineColor(int lineColor) {
method setLineWidth (line 140) | public void setLineWidth(int lineWidth) {
method setLineHeight (line 150) | public void setLineHeight(int lineHeight) {
method setMouthStro (line 160) | public void setMouthStro(int mouthStro) {
method startSunLineAnim (line 171) | public void startSunLineAnim(View v) {
method cancelSunLineAnim (line 185) | public void cancelSunLineAnim() {
method onComlete (line 191) | @Override
method onBegin (line 198) | @Override
method onPull (line 205) | @Override
method onRelease (line 219) | @Override
method onRefreshing (line 224) | @Override
FILE: MaterialRefresh_library/src/main/java/com/cjj/SunLineView.java
class SunLineView (line 19) | public class SunLineView extends View {
method SunLineView (line 37) | public SunLineView(Context context) {
method SunLineView (line 41) | public SunLineView(Context context, AttributeSet attrs) {
method SunLineView (line 45) | public SunLineView(Context context, AttributeSet attrs, int defStyleAt...
method init (line 50) | private void init() {
method setLineColor (line 72) | public void setLineColor(int lineColor){
method setLineWidth (line 77) | public void setLineWidth(int lineWidth){
method setLineHeight (line 82) | public void setLineHeight(int lineHeight){
method setSunRadius (line 93) | public void setSunRadius(int sunRadius) {
method setLineLevel (line 98) | public void setLineLevel(int level){
method onSizeChanged (line 104) | @Override
method onMeasure (line 127) | @Override
method onDraw (line 153) | @Override
method drawLines (line 164) | private void drawLines(Canvas canvas) {
method changeDp (line 175) | public int changeDp(int value) {
FILE: MaterialRefresh_library/src/main/java/com/cjj/Util.java
class Util (line 5) | public class Util {
method dip2px (line 7) | public static int dip2px(Context context, float dpValue) {
method px2dip (line 12) | public static int px2dip(Context context, float pxValue) {
method limitValue (line 17) | public static float limitValue(float a, float b) {
FILE: PhotoView-master/src/main/java/uk/co/senab/photoview/sample/ActivityTransitionActivity.java
class ActivityTransitionActivity (line 28) | public class ActivityTransitionActivity extends AppCompatActivity {
method onCreate (line 30) | @Override
method transition (line 46) | private void transition(View view) {
FILE: PhotoView-master/src/main/java/uk/co/senab/photoview/sample/ActivityTransitionToActivity.java
class ActivityTransitionToActivity (line 10) | public class ActivityTransitionToActivity extends AppCompatActivity {
method onCreate (line 12) | @Override
FILE: PhotoView-master/src/main/java/uk/co/senab/photoview/sample/HackyDrawerLayout.java
class HackyDrawerLayout (line 19) | public class HackyDrawerLayout extends DrawerLayout {
method HackyDrawerLayout (line 21) | public HackyDrawerLayout(Context context) {
method onInterceptTouchEvent (line 25) | @Override
FILE: PhotoView-master/src/main/java/uk/co/senab/photoview/sample/HackyViewPager.java
class HackyViewPager (line 21) | public class HackyViewPager extends ViewPager {
method HackyViewPager (line 23) | public HackyViewPager(Context context) {
method HackyViewPager (line 27) | public HackyViewPager(Context context, AttributeSet attrs) {
method onInterceptTouchEvent (line 31) | @Override
FILE: PhotoView-master/src/main/java/uk/co/senab/photoview/sample/ImageAdapter.java
class ImageAdapter (line 10) | public class ImageAdapter extends RecyclerView.Adapter<ImageViewHolder> {
method ImageAdapter (line 14) | public ImageAdapter(Listener listener) {
method onCreateViewHolder (line 18) | @Override
method onBindViewHolder (line 30) | @Override
method getItemCount (line 35) | @Override
type Listener (line 40) | public interface Listener {
method onImageClicked (line 41) | void onImageClicked(View view);
FILE: PhotoView-master/src/main/java/uk/co/senab/photoview/sample/ImageViewHolder.java
class ImageViewHolder (line 12) | public class ImageViewHolder extends RecyclerView.ViewHolder {
method inflate (line 14) | public static ImageViewHolder inflate(ViewGroup parent) {
method ImageViewHolder (line 22) | public ImageViewHolder(View view) {
method bind (line 27) | private void bind(String title) {
FILE: PhotoView-master/src/main/java/uk/co/senab/photoview/sample/LauncherActivity.java
class LauncherActivity (line 29) | public class LauncherActivity extends AppCompatActivity {
method onCreate (line 33) | @Override
class ItemAdapter (line 43) | private static class ItemAdapter extends RecyclerView.Adapter<ItemView...
method onCreateViewHolder (line 44) | @Override
method onBindViewHolder (line 49) | @Override
method getItemCount (line 82) | @Override
class ItemViewHolder (line 88) | private static class ItemViewHolder extends RecyclerView.ViewHolder {
method newInstance (line 90) | public static ItemViewHolder newInstance(ViewGroup parent) {
method ItemViewHolder (line 98) | public ItemViewHolder(View view) {
method bind (line 103) | private void bind(String title) {
FILE: PhotoView-master/src/main/java/uk/co/senab/photoview/sample/PicassoSampleActivity.java
class PicassoSampleActivity (line 12) | public class PicassoSampleActivity extends AppCompatActivity {
method onCreate (line 14) | @Override
FILE: PhotoView-master/src/main/java/uk/co/senab/photoview/sample/RotationSampleActivity.java
class RotationSampleActivity (line 26) | public class RotationSampleActivity extends AppCompatActivity {
method onCreate (line 32) | @Override
method onPause (line 40) | @Override
method onCreateOptionsMenu (line 46) | @Override
method onOptionsItemSelected (line 58) | @Override
method toggleRotation (line 87) | private void toggleRotation() {
method rotateLoop (line 96) | private void rotateLoop() {
FILE: PhotoView-master/src/main/java/uk/co/senab/photoview/sample/SimpleSampleActivity.java
class SimpleSampleActivity (line 46) | public class SimpleSampleActivity extends AppCompatActivity {
method onCreate (line 60) | @Override
method onCreateOptionsMenu (line 80) | @Override
method onDestroy (line 86) | @Override
method onPrepareOptionsMenu (line 94) | @Override
method onOptionsItemSelected (line 103) | @Override
class PhotoTapListener (line 183) | private class PhotoTapListener implements OnPhotoTapListener {
method onPhotoTap (line 185) | @Override
method onOutsidePhotoTap (line 193) | @Override
method showToast (line 199) | private void showToast(CharSequence text) {
class MatrixChangeListener (line 208) | private class MatrixChangeListener implements OnMatrixChangedListener {
method onMatrixChanged (line 210) | @Override
class SingleFlingListener (line 216) | private class SingleFlingListener implements PhotoViewAttacher.OnSingl...
method onFling (line 218) | @Override
FILE: PhotoView-master/src/main/java/uk/co/senab/photoview/sample/ViewPagerActivity.java
class ViewPagerActivity (line 28) | public class ViewPagerActivity extends AppCompatActivity {
method onCreate (line 30) | @Override
class SamplePagerAdapter (line 40) | static class SamplePagerAdapter extends PagerAdapter {
method getCount (line 45) | @Override
method instantiateItem (line 50) | @Override
method destroyItem (line 61) | @Override
method isViewFromObject (line 66) | @Override
FILE: PhotoView_library/src/main/java/uk/co/senab/photoview/Compat.java
class Compat (line 25) | public class Compat {
method postOnAnimation (line 29) | public static void postOnAnimation(View view, Runnable runnable) {
method postOnAnimationJellyBean (line 37) | @TargetApi(16)
method getPointerIndex (line 42) | public static int getPointerIndex(int action) {
method getPointerIndexEclair (line 49) | @SuppressWarnings("deprecation")
method getPointerIndexHoneyComb (line 55) | @TargetApi(Build.VERSION_CODES.HONEYCOMB)
FILE: PhotoView_library/src/main/java/uk/co/senab/photoview/DefaultOnDoubleTapListener.java
class DefaultOnDoubleTapListener (line 13) | public class DefaultOnDoubleTapListener implements GestureDetector.OnDou...
method DefaultOnDoubleTapListener (line 22) | public DefaultOnDoubleTapListener(PhotoViewAttacher photoViewAttacher) {
method setPhotoViewAttacher (line 31) | public void setPhotoViewAttacher(PhotoViewAttacher newPhotoViewAttache...
method onSingleTapConfirmed (line 35) | @Override
method onDoubleTap (line 70) | @Override
method onDoubleTapEvent (line 94) | @Override
FILE: PhotoView_library/src/main/java/uk/co/senab/photoview/IPhotoView.java
type IPhotoView (line 26) | public interface IPhotoView {
method canZoom (line 38) | boolean canZoom();
method getDisplayRect (line 46) | RectF getDisplayRect();
method setDisplayMatrix (line 55) | boolean setDisplayMatrix(Matrix finalMatrix);
method getDisplayMatrix (line 63) | void getDisplayMatrix(Matrix matrix);
method getMinimumScale (line 69) | float getMinimumScale();
method getMediumScale (line 75) | float getMediumScale();
method getMaximumScale (line 81) | float getMaximumScale();
method getScale (line 88) | float getScale();
method getScaleType (line 95) | ImageView.ScaleType getScaleType();
method setAllowParentInterceptOnEdge (line 103) | void setAllowParentInterceptOnEdge(boolean allow);
method setMinimumScale (line 111) | void setMinimumScale(float minimumScale);
method setMediumScale (line 118) | void setMediumScale(float mediumScale);
method setMaximumScale (line 126) | void setMaximumScale(float maximumScale);
method setScaleLevels (line 136) | void setScaleLevels(float minimumScale, float mediumScale, float maxim...
method setOnLongClickListener (line 143) | void setOnLongClickListener(View.OnLongClickListener listener);
method setOnMatrixChangeListener (line 151) | void setOnMatrixChangeListener(PhotoViewAttacher.OnMatrixChangedListen...
method setOnPhotoTapListener (line 159) | void setOnPhotoTapListener(PhotoViewAttacher.OnPhotoTapListener listen...
method setOnViewTapListener (line 166) | void setOnViewTapListener(PhotoViewAttacher.OnViewTapListener listener);
method setRotationTo (line 173) | void setRotationTo(float rotationDegree);
method setRotationBy (line 180) | void setRotationBy(float rotationDegree);
method setScale (line 187) | void setScale(float scale);
method setScale (line 195) | void setScale(float scale, boolean animate);
method setScale (line 205) | void setScale(float scale, float focalX, float focalY, boolean animate);
method setScaleType (line 214) | void setScaleType(ImageView.ScaleType scaleType);
method setZoomable (line 222) | void setZoomable(boolean zoomable);
method getVisibleRectangleBitmap (line 230) | Bitmap getVisibleRectangleBitmap();
method setZoomTransitionDuration (line 238) | void setZoomTransitionDuration(int milliseconds);
method getIPhotoViewImplementation (line 246) | IPhotoView getIPhotoViewImplementation();
method setOnDoubleTapListener (line 254) | void setOnDoubleTapListener(GestureDetector.OnDoubleTapListener newOnD...
method setOnScaleChangeListener (line 261) | void setOnScaleChangeListener(PhotoViewAttacher.OnScaleChangeListener ...
method setOnSingleFlingListener (line 268) | void setOnSingleFlingListener(PhotoViewAttacher.OnSingleFlingListener ...
FILE: PhotoView_library/src/main/java/uk/co/senab/photoview/PhotoView.java
class PhotoView (line 32) | public class PhotoView extends ImageView implements IPhotoView {
method PhotoView (line 38) | public PhotoView(Context context) {
method PhotoView (line 42) | public PhotoView(Context context, AttributeSet attr) {
method PhotoView (line 46) | public PhotoView(Context context, AttributeSet attr, int defStyle) {
method init (line 52) | protected void init() {
method setRotationTo (line 63) | @Override
method setRotationBy (line 68) | @Override
method canZoom (line 73) | @Override
method getDisplayRect (line 78) | @Override
method getDisplayMatrix (line 83) | @Override
method setDisplayMatrix (line 88) | @Override
method getMinimumScale (line 93) | @Override
method getMediumScale (line 98) | @Override
method getMaximumScale (line 103) | @Override
method getScale (line 108) | @Override
method getScaleType (line 113) | @Override
method getImageMatrix (line 118) | @Override
method setAllowParentInterceptOnEdge (line 123) | @Override
method setMinimumScale (line 128) | @Override
method setMediumScale (line 133) | @Override
method setMaximumScale (line 138) | @Override
method setScaleLevels (line 143) | @Override
method setImageDrawable (line 148) | @Override
method setImageResource (line 157) | @Override
method setImageURI (line 165) | @Override
method setFrame (line 173) | @Override
method setOnMatrixChangeListener (line 182) | @Override
method setOnLongClickListener (line 187) | @Override
method setOnPhotoTapListener (line 192) | @Override
method setOnViewTapListener (line 197) | @Override
method setScale (line 202) | @Override
method setScale (line 207) | @Override
method setScale (line 212) | @Override
method setScaleType (line 217) | @Override
method setZoomable (line 226) | @Override
method getVisibleRectangleBitmap (line 231) | @Override
method setZoomTransitionDuration (line 236) | @Override
method getIPhotoViewImplementation (line 241) | @Override
method setOnDoubleTapListener (line 246) | @Override
method setOnScaleChangeListener (line 251) | @Override
method setOnSingleFlingListener (line 256) | @Override
method onDetachedFromWindow (line 261) | @Override
method onAttachedToWindow (line 268) | @Override
FILE: PhotoView_library/src/main/java/uk/co/senab/photoview/PhotoViewAttacher.java
class PhotoViewAttacher (line 50) | public class PhotoViewAttacher implements IPhotoView, View.OnTouchListener,
method checkZoomLevels (line 77) | private static void checkZoomLevels(float minZoom, float midZoom,
method hasDrawable (line 91) | private static boolean hasDrawable(ImageView imageView) {
method isSupportedScaleType (line 98) | private static boolean isSupportedScaleType(final ScaleType scaleType) {
method setImageViewScaleTypeMatrix (line 116) | private static void setImageViewScaleTypeMatrix(ImageView imageView) {
method PhotoViewAttacher (line 157) | public PhotoViewAttacher(ImageView imageView) {
method PhotoViewAttacher (line 161) | public PhotoViewAttacher(ImageView imageView, boolean zoomable) {
method setOnDoubleTapListener (line 218) | @Override
method setOnScaleChangeListener (line 227) | @Override
method setOnSingleFlingListener (line 232) | @Override
method canZoom (line 237) | @Override
method cleanup (line 248) | @SuppressWarnings("deprecation")
method getDisplayRect (line 283) | @Override
method setDisplayMatrix (line 289) | @Override
method setBaseRotation (line 311) | public void setBaseRotation(final float degrees) {
method setRotationTo (line 318) | @Override
method setRotationBy (line 324) | @Override
method getImageView (line 330) | public ImageView getImageView() {
method getMinimumScale (line 347) | @Override
method getMediumScale (line 352) | @Override
method getMaximumScale (line 357) | @Override
method getScale (line 362) | @Override
method getScaleType (line 367) | @Override
method onDrag (line 372) | @Override
method onFling (line 412) | @Override
method onGlobalLayout (line 428) | @Override
method onScale (line 463) | @Override
method onTouch (line 481) | @SuppressLint("ClickableViewAccessibility")
method setAllowParentInterceptOnEdge (line 541) | @Override
method setMinimumScale (line 546) | @Override
method setMediumScale (line 552) | @Override
method setMaximumScale (line 558) | @Override
method setScaleLevels (line 564) | @Override
method setOnLongClickListener (line 572) | @Override
method setOnMatrixChangeListener (line 577) | @Override
method setOnPhotoTapListener (line 582) | @Override
method getOnPhotoTapListener (line 587) | @Nullable
method setOnViewTapListener (line 592) | @Override
method getOnViewTapListener (line 597) | @Nullable
method setScale (line 602) | @Override
method setScale (line 607) | @Override
method setScale (line 619) | @Override
method setZoomInterpolator (line 648) | public void setZoomInterpolator(Interpolator interpolator) {
method setScaleType (line 652) | @Override
method setZoomable (line 662) | @Override
method update (line 668) | public void update() {
method getDisplayMatrix (line 689) | @Override
method getSuppMatrix (line 697) | public void getSuppMatrix(Matrix matrix) {
method getDrawMatrix (line 701) | private Matrix getDrawMatrix() {
method cancelFling (line 707) | private void cancelFling() {
method getImageMatrix (line 714) | public Matrix getImageMatrix() {
method checkAndDisplayMatrix (line 721) | private void checkAndDisplayMatrix() {
method checkImageViewScaleType (line 727) | private void checkImageViewScaleType() {
method checkMatrixBounds (line 742) | private boolean checkMatrixBounds() {
method getDisplayRect (line 810) | private RectF getDisplayRect(Matrix matrix) {
method getVisibleRectangleBitmap (line 825) | public Bitmap getVisibleRectangleBitmap() {
method setZoomTransitionDuration (line 830) | @Override
method getIPhotoViewImplementation (line 837) | @Override
method getValue (line 849) | private float getValue(Matrix matrix, int whichValue) {
method resetMatrix (line 857) | private void resetMatrix() {
method setImageViewMatrix (line 864) | private void setImageViewMatrix(Matrix matrix) {
method updateBaseMatrix (line 886) | private void updateBaseMatrix(Drawable d) {
method getImageViewWidth (line 952) | private int getImageViewWidth(ImageView imageView) {
method getImageViewHeight (line 958) | private int getImageViewHeight(ImageView imageView) {
type OnMatrixChangedListener (line 970) | public interface OnMatrixChangedListener {
method onMatrixChanged (line 977) | void onMatrixChanged(RectF rect);
type OnScaleChangeListener (line 985) | public interface OnScaleChangeListener {
method onScaleChange (line 993) | void onScaleChange(float scaleFactor, float focusX, float focusY);
type OnPhotoTapListener (line 1002) | public interface OnPhotoTapListener {
method onPhotoTap (line 1014) | void onPhotoTap(View view, float x, float y);
method onOutsidePhotoTap (line 1019) | void onOutsidePhotoTap();
type OnViewTapListener (line 1028) | public interface OnViewTapListener {
method onViewTap (line 1038) | void onViewTap(View view, float x, float y);
type OnSingleFlingListener (line 1047) | public interface OnSingleFlingListener {
method onFling (line 1058) | boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, flo...
class AnimatedZoomRunnable (line 1061) | private class AnimatedZoomRunnable implements Runnable {
method AnimatedZoomRunnable (line 1067) | public AnimatedZoomRunnable(final float currentZoom, final float tar...
method run (line 1076) | @Override
method interpolate (line 1095) | private float interpolate() {
class FlingRunnable (line 1103) | private class FlingRunnable implements Runnable {
method FlingRunnable (line 1108) | public FlingRunnable(Context context) {
method cancelFling (line 1112) | public void cancelFling() {
method fling (line 1119) | public void fling(int viewWidth, int viewHeight, int velocityX,
method run (line 1161) | @Override
FILE: PhotoView_library/src/main/java/uk/co/senab/photoview/gestures/CupcakeGestureDetector.java
class CupcakeGestureDetector (line 25) | public class CupcakeGestureDetector implements GestureDetector {
method setOnGestureListener (line 34) | @Override
method CupcakeGestureDetector (line 39) | public CupcakeGestureDetector(Context context) {
method getActiveX (line 49) | float getActiveX(MotionEvent ev) {
method getActiveY (line 53) | float getActiveY(MotionEvent ev) {
method isScaling (line 57) | @Override
method isDragging (line 62) | @Override
method onTouchEvent (line 67) | @Override
FILE: PhotoView_library/src/main/java/uk/co/senab/photoview/gestures/EclairGestureDetector.java
class EclairGestureDetector (line 24) | @TargetApi(5)
method EclairGestureDetector (line 31) | public EclairGestureDetector(Context context) {
method getActiveX (line 35) | @Override
method getActiveY (line 44) | @Override
method onTouchEvent (line 53) | @Override
FILE: PhotoView_library/src/main/java/uk/co/senab/photoview/gestures/FroyoGestureDetector.java
class FroyoGestureDetector (line 23) | @TargetApi(8)
method FroyoGestureDetector (line 28) | public FroyoGestureDetector(Context context) {
method isScaling (line 57) | @Override
method onTouchEvent (line 62) | @Override
FILE: PhotoView_library/src/main/java/uk/co/senab/photoview/gestures/GestureDetector.java
type GestureDetector (line 20) | public interface GestureDetector {
method onTouchEvent (line 22) | boolean onTouchEvent(MotionEvent ev);
method isScaling (line 24) | boolean isScaling();
method isDragging (line 26) | boolean isDragging();
method setOnGestureListener (line 28) | void setOnGestureListener(OnGestureListener listener);
FILE: PhotoView_library/src/main/java/uk/co/senab/photoview/gestures/OnGestureListener.java
type OnGestureListener (line 18) | public interface OnGestureListener {
method onDrag (line 20) | void onDrag(float dx, float dy);
method onFling (line 22) | void onFling(float startX, float startY, float velocityX,
method onScale (line 25) | void onScale(float scaleFactor, float focusX, float focusY);
FILE: PhotoView_library/src/main/java/uk/co/senab/photoview/gestures/VersionedGestureDetector.java
class VersionedGestureDetector (line 22) | public final class VersionedGestureDetector {
method newInstance (line 24) | public static GestureDetector newInstance(Context context,
FILE: PhotoView_library/src/main/java/uk/co/senab/photoview/log/LogManager.java
class LogManager (line 23) | public final class LogManager {
method setLogger (line 27) | public static void setLogger(Logger newLogger) {
method getLogger (line 31) | public static Logger getLogger() {
FILE: PhotoView_library/src/main/java/uk/co/senab/photoview/log/Logger.java
type Logger (line 21) | public interface Logger {
method v (line 23) | int v(String tag, String msg);
method v (line 25) | int v(String tag, String msg, Throwable tr);
method d (line 27) | int d(String tag, String msg);
method d (line 29) | int d(String tag, String msg, Throwable tr);
method i (line 31) | int i(String tag, String msg);
method i (line 33) | int i(String tag, String msg, Throwable tr);
method w (line 35) | int w(String tag, String msg);
method w (line 37) | int w(String tag, String msg, Throwable tr);
method e (line 39) | int e(String tag, String msg);
method e (line 41) | int e(String tag, String msg, Throwable tr);
FILE: PhotoView_library/src/main/java/uk/co/senab/photoview/log/LoggerDefault.java
class LoggerDefault (line 23) | public class LoggerDefault implements Logger {
method v (line 25) | @Override
method v (line 30) | @Override
method d (line 35) | @Override
method d (line 40) | @Override
method i (line 45) | @Override
method i (line 50) | @Override
method w (line 55) | @Override
method w (line 60) | @Override
method e (line 65) | @Override
method e (line 70) | @Override
FILE: PhotoView_library/src/main/java/uk/co/senab/photoview/scrollerproxy/GingerScroller.java
class GingerScroller (line 22) | @TargetApi(9)
method GingerScroller (line 27) | public GingerScroller(Context context) {
method computeScrollOffset (line 31) | @Override
method fling (line 36) | @Override
method forceFinished (line 42) | @Override
method isFinished (line 47) | @Override
method getCurrX (line 52) | @Override
method getCurrY (line 57) | @Override
FILE: PhotoView_library/src/main/java/uk/co/senab/photoview/scrollerproxy/IcsScroller.java
class IcsScroller (line 21) | @TargetApi(14)
method IcsScroller (line 24) | public IcsScroller(Context context) {
method computeScrollOffset (line 28) | @Override
FILE: PhotoView_library/src/main/java/uk/co/senab/photoview/scrollerproxy/PreGingerScroller.java
class PreGingerScroller (line 21) | public class PreGingerScroller extends ScrollerProxy {
method PreGingerScroller (line 25) | public PreGingerScroller(Context context) {
method computeScrollOffset (line 29) | @Override
method fling (line 34) | @Override
method forceFinished (line 40) | @Override
method isFinished (line 45) | public boolean isFinished() {
method getCurrX (line 49) | @Override
method getCurrY (line 54) | @Override
FILE: PhotoView_library/src/main/java/uk/co/senab/photoview/scrollerproxy/ScrollerProxy.java
class ScrollerProxy (line 22) | public abstract class ScrollerProxy {
method getScroller (line 24) | public static ScrollerProxy getScroller(Context context) {
method computeScrollOffset (line 34) | public abstract boolean computeScrollOffset();
method fling (line 36) | public abstract void fling(int startX, int startY, int velocityX, int ...
method forceFinished (line 39) | public abstract void forceFinished(boolean finished);
method isFinished (line 41) | public abstract boolean isFinished();
method getCurrX (line 43) | public abstract int getCurrX();
method getCurrY (line 45) | public abstract int getCurrY();
FILE: RecyclerViewDemo/src/androidTest/java/com/atguigu/recyclerviewdemo/ExampleInstrumentedTest.java
class ExampleInstrumentedTest (line 17) | @RunWith(AndroidJUnit4.class)
method useAppContext (line 19) | @Test
FILE: RecyclerViewDemo/src/main/java/com/atguigu/recyclerviewdemo/DividerItemDecoration.java
class DividerItemDecoration (line 18) | public class DividerItemDecoration extends RecyclerView.ItemDecoration {
method DividerItemDecoration (line 32) | public DividerItemDecoration(Context context, int orientation) {
method setOrientation (line 39) | public void setOrientation(int orientation) {
method onDraw (line 46) | @Override
method drawVertical (line 58) | public void drawVertical(Canvas c, RecyclerView parent) {
method drawHorizontal (line 75) | public void drawHorizontal(Canvas c, RecyclerView parent) {
method getItemOffsets (line 91) | @Override
FILE: RecyclerViewDemo/src/main/java/com/atguigu/recyclerviewdemo/MainActivity.java
class MainActivity (line 16) | public class MainActivity extends AppCompatActivity implements View.OnCl...
method findViews (line 33) | private void findViews() {
method onClick (line 55) | @Override
method onCreate (line 78) | @Override
method setAdapter (line 86) | private void setAdapter() {
FILE: RecyclerViewDemo/src/main/java/com/atguigu/recyclerviewdemo/RecyclerDemoAdapter.java
class RecyclerDemoAdapter (line 18) | public class RecyclerDemoAdapter extends RecyclerView.Adapter<RecyclerDe...
method RecyclerDemoAdapter (line 23) | public RecyclerDemoAdapter(Context context, ArrayList<String> datas) {
method getItemCount (line 32) | @Override
method onCreateViewHolder (line 45) | @Override
method onBindViewHolder (line 55) | @Override
method addData (line 72) | public void addData(int position,String data) {
method removewData (line 81) | public void removewData(int positon) {
class MyViewHolder (line 90) | class MyViewHolder extends RecyclerView.ViewHolder{
method MyViewHolder (line 94) | public MyViewHolder(View itemView) {
type OnItemClickListener (line 115) | public interface OnItemClickListener{
method onItemClick (line 120) | public void onItemClick(int postion);
method setOnItemClickListener (line 128) | public void setOnItemClickListener(OnItemClickListener listener) {
FILE: RecyclerViewDemo/src/test/java/com/atguigu/recyclerviewdemo/ExampleUnitTest.java
class ExampleUnitTest (line 12) | public class ExampleUnitTest {
method addition_isCorrect (line 13) | @Test
FILE: SpeechDemo2/src/androidTest/java/com/atguigu/speechdemo2/ExampleInstrumentedTest.java
class ExampleInstrumentedTest (line 17) | @RunWith(AndroidJUnit4.class)
method useAppContext (line 19) | @Test
FILE: SpeechDemo2/src/main/java/com/atguigu/speechdemo2/JsonParser.java
class JsonParser (line 10) | public class JsonParser {
method parseIatResult (line 12) | public static String parseIatResult(String json) {
method parseGrammarResult (line 37) | public static String parseGrammarResult(String json) {
method parseLocalGrammarResult (line 66) | public static String parseLocalGrammarResult(String json) {
FILE: SpeechDemo2/src/main/java/com/atguigu/speechdemo2/MainActivity.java
class MainActivity (line 26) | public class MainActivity extends AppCompatActivity {
method onCreate (line 35) | @Override
method textToVoice (line 59) | private void textToVoice() {
method onCompleted (line 80) | public void onCompleted(SpeechError error) {}
method onBufferProgress (line 84) | public void onBufferProgress(int percent, int beginPos, int endPos, St...
method onSpeakBegin (line 86) | public void onSpeakBegin() {}
method onSpeakPaused (line 88) | public void onSpeakPaused() {}
method onSpeakProgress (line 92) | public void onSpeakProgress(int percent, int beginPos, int endPos) {}
method onSpeakResumed (line 94) | public void onSpeakResumed() {}
method onEvent (line 96) | public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {}
method showDialogVoice (line 99) | private void showDialogVoice() {
class MyRecognizerDialogListener (line 115) | class MyRecognizerDialogListener implements RecognizerDialogListener {
method onResult (line 117) | @Override
method onError (line 144) | @Override
class MyInitListener (line 151) | class MyInitListener implements InitListener {
method onInit (line 153) | @Override
FILE: SpeechDemo2/src/test/java/com/atguigu/speechdemo2/ExampleUnitTest.java
class ExampleUnitTest (line 12) | public class ExampleUnitTest {
method addition_isCorrect (line 13) | @Test
FILE: StartAllVideoPlayer/src/androidTest/java/com/atguigu/startallvideoplayer/ExampleInstrumentedTest.java
class ExampleInstrumentedTest (line 17) | @RunWith(AndroidJUnit4.class)
method useAppContext (line 19) | @Test
FILE: StartAllVideoPlayer/src/main/java/com/atguigu/startallvideoplayer/MainActivity.java
class MainActivity (line 9) | public class MainActivity extends AppCompatActivity {
method onCreate (line 11) | @Override
method startAllVideo (line 17) | public void startAllVideo(View view) {
FILE: StartAllVideoPlayer/src/test/java/com/atguigu/startallvideoplayer/ExampleUnitTest.java
class ExampleUnitTest (line 12) | public class ExampleUnitTest {
method addition_isCorrect (line 13) | @Test
FILE: SurfaceViewDemo/src/main/java/com/example/videotest/Constants.java
class Constants (line 9) | public class Constants {
method getCanvas (line 18) | public static Canvas getCanvas() {
method setCanvas (line 22) | public static void setCanvas(Canvas canvas) {
FILE: SurfaceViewDemo/src/main/java/com/example/videotest/MainActivity.java
class MainActivity (line 17) | public class MainActivity extends Activity implements MediaPlayer.OnComp...
method onCreate (line 48) | @Override
method initVideoView (line 63) | public void initVideoView(){
method onStart (line 93) | @Override
method setVideoViewLayoutParams (line 106) | public void setVideoViewLayoutParams(int paramsType){
method onCompletion (line 130) | @Override
method onError (line 137) | @Override
method onPrepared (line 180) | @Override
method onTouch (line 193) | @Override
method onPause (line 203) | @Override
method onResume (line 215) | @Override
method onDestroy (line 226) | @Override
FILE: SurfaceViewDemo/src/main/java/com/example/videotest/MediaPlayUtil.java
class MediaPlayUtil (line 6) | public class MediaPlayUtil {
method getInitanse (line 19) | public static void getInitanse(String path){
FILE: SurfaceViewDemo/src/main/java/com/example/videotest/SurfaceViewTestActivity.java
class SurfaceViewTestActivity (line 39) | public class SurfaceViewTestActivity extends Activity implements MediaPl...
method onCreate (line 120) | @Override
method initViews (line 132) | public void initViews() {
class SurfaceCallback (line 162) | private class SurfaceCallback implements SurfaceHolder.Callback {
method surfaceChanged (line 163) | public void surfaceChanged(SurfaceHolder holder, int format, int wid...
method surfaceCreated (line 167) | public void surfaceCreated(SurfaceHolder holder) {
method surfaceDestroyed (line 173) | public void surfaceDestroyed(SurfaceHolder holder) {
method playVideo (line 187) | public void playVideo() {
method onPrepared (line 220) | @Override
method run (line 265) | public void run() {
class SeekBarChangeListener (line 292) | @SuppressWarnings("unused")
method onProgressChanged (line 295) | public void onProgressChanged(SeekBar seekBar, int progress, boolean...
method onStartTrackingTouch (line 307) | public void onStartTrackingTouch(SeekBar seekBar) {
method onStopTrackingTouch (line 312) | public void onStopTrackingTouch(SeekBar seekBar) {
method onClick (line 322) | public void onClick(View v) {
method onCompletion (line 391) | @Override
method onBufferingUpdate (line 402) | public void onBufferingUpdate(MediaPlayer mp, int percent) {
method onError (line 417) | @Override
method onResume (line 454) | protected void onResume() {
method onPause (line 474) | @Override
method onSaveInstanceState (line 492) | protected void onSaveInstanceState(Bundle outState) {
method onRestoreInstanceState (line 504) | protected void onRestoreInstanceState(Bundle savedInstanceState) {
method onConfigurationChanged (line 509) | public void onConfigurationChanged(Configuration newConfig) {
method onDestroy (line 516) | @Override
method getShowTime (line 545) | @SuppressLint("SimpleDateFormat")
method savaScreenShot (line 565) | public void savaScreenShot(long time) {
method changeVideoSize (line 626) | public void changeVideoSize() {
FILE: app/src/androidTest/java/com/atguigu/mobileplayer1020/ExampleInstrumentedTest.java
class ExampleInstrumentedTest (line 17) | @RunWith(AndroidJUnit4.class)
method useAppContext (line 19) | @Test
FILE: app/src/main/java/com/atguigu/mobileplayer1020/MainActivity.java
class MainActivity (line 27) | public class MainActivity extends AppCompatActivity {
method onCreate (line 47) | @Override
method initListenter (line 67) | private void initListenter() {
method switchFragment (line 103) | private void switchFragment(Fragment currentFragment) {
method initFragment (line 147) | private void initFragment() {
method onDestroy (line 157) | @Override
method isGrantExternalRW (line 169) | public static boolean isGrantExternalRW(Activity activity) {
method onResume (line 210) | @Override
method onPause (line 218) | @Override
method onBackPressed (line 227) | @Override
FILE: app/src/main/java/com/atguigu/mobileplayer1020/WelcomeActivity.java
class WelcomeActivity (line 9) | public class WelcomeActivity extends AppCompatActivity {
method onCreate (line 13) | @Override
method startMainActivity (line 32) | private void startMainActivity() {
method onTouchEvent (line 45) | @Override
method onDestroy (line 52) | @Override
FILE: app/src/main/java/com/atguigu/mobileplayer1020/activity/PicassoSampleActivity.java
class PicassoSampleActivity (line 18) | public class PicassoSampleActivity extends AppCompatActivity {
method onCreate (line 22) | @Override
FILE: app/src/main/java/com/atguigu/mobileplayer1020/activity/SearchActivity.java
class SearchActivity (line 40) | public class SearchActivity extends AppCompatActivity implements View.On...
method findViews (line 56) | private void findViews() {
method onCreate (line 69) | @Override
method onClick (line 76) | @Override
method gotoSearch (line 90) | private void gotoSearch() {
method getDataFromNet (line 110) | private void getDataFromNet(String url) {
method processData (line 136) | private void processData(String result) {
method showDialogVoice (line 148) | private void showDialogVoice() {
class MyRecognizerDialogListener (line 164) | class MyRecognizerDialogListener implements RecognizerDialogListener {
method onResult (line 166) | @Override
method onError (line 194) | @Override
class MyInitListener (line 201) | class MyInitListener implements InitListener {
method onInit (line 203) | @Override
FILE: app/src/main/java/com/atguigu/mobileplayer1020/activity/SystemAudioPlayerActivity.java
class SystemAudioPlayerActivity (line 38) | public class SystemAudioPlayerActivity extends AppCompatActivity impleme...
method findViews (line 72) | private void findViews() {
class MyOnSeekBarChangeListener (line 101) | class MyOnSeekBarChangeListener implements SeekBar.OnSeekBarChangeList...
method onProgressChanged (line 103) | @Override
method onStartTrackingTouch (line 115) | @Override
method onStopTrackingTouch (line 120) | @Override
method onClick (line 126) | @Override
method changePlaymode (line 174) | private void changePlaymode() {
method checkButtonStatu (line 199) | private void checkButtonStatu() {
method onServiceConnected (line 228) | @Override
method onServiceDisconnected (line 256) | @Override
method handleMessage (line 263) | @Override
method onCreate (line 303) | @Override
method initData (line 318) | private void initData() {
class MyReceiver (line 331) | class MyReceiver extends BroadcastReceiver {
method onReceive (line 333) | @Override
method showViewData (line 347) | @Subscribe(threadMode = ThreadMode.MAIN)
method setupVisualizerFxAndUi (line 395) | private void setupVisualizerFxAndUi() {
method onPause (line 412) | @Override
method onDestroy (line 420) | @Override
method startAndBindServide (line 437) | private void startAndBindServide() {
method getData (line 446) | private void getData() {
FILE: app/src/main/java/com/atguigu/mobileplayer1020/activity/SystemVideoPlayerActivity.java
class SystemVideoPlayerActivity (line 40) | public class SystemVideoPlayerActivity extends Activity implements View....
method findViews (line 143) | private void findViews() {
method onCreate (line 199) | @Override
method initData (line 215) | private void initData() {
class MySimpleOnGestureListener (line 239) | class MySimpleOnGestureListener extends GestureDetector.SimpleOnGestur...
method onLongPress (line 240) | @Override
method onDoubleTap (line 247) | @Override
method onSingleTapConfirmed (line 261) | @Override
method setVideoType (line 279) | private void setVideoType(int videoTypeDefault) {
method showMediaController (line 321) | private void showMediaController() {
method hideMediaController (line 331) | private void hideMediaController() {
method handleMessage (line 341) | @Override
method getSystemTime (line 412) | private String getSystemTime() {
class MyBroadcastReceiver (line 417) | class MyBroadcastReceiver extends BroadcastReceiver {
method onReceive (line 419) | @Override
method setBattery (line 433) | private void setBattery(int level) {
method onClick (line 460) | @Override
method showSwichPlayerDialog (line 500) | private void showSwichPlayerDialog() {
method startAndPause (line 518) | private void startAndPause() {
method onRestart (line 533) | @Override
method onStart (line 539) | @Override
method onResume (line 545) | @Override
method onPause (line 551) | @Override
method onStop (line 557) | @Override
method onDestroy (line 563) | @Override
method setData (line 578) | private void setData() {
method setLinstener (line 598) | private void setLinstener() {
class VoiceOnSeekBarChangeListener (line 641) | class VoiceOnSeekBarChangeListener implements SeekBar.OnSeekBarChangeL...
method onProgressChanged (line 643) | @Override
method onStartTrackingTouch (line 656) | @Override
method onStopTrackingTouch (line 667) | @Override
method updateVoiceProgress (line 673) | private void updateVoiceProgress(int progress) {
method updateVoice (line 691) | private void updateVoice(int progress) {
class VideoOnSeekBarChangeListener (line 708) | class VideoOnSeekBarChangeListener implements SeekBar.OnSeekBarChangeL...
method onProgressChanged (line 717) | @Override
method onStartTrackingTouch (line 731) | @Override
method onStopTrackingTouch (line 742) | @Override
class MyOnCompletionListener (line 748) | class MyOnCompletionListener implements MediaPlayer.OnCompletionListen...
method onCompletion (line 750) | @Override
method setPreVideo (line 759) | private void setPreVideo() {
method setNextVideo (line 789) | private void setNextVideo() {
method checkButtonStatus (line 825) | private void checkButtonStatus() {
method setButtonEnable (line 856) | private void setButtonEnable(boolean isEnable) {
class MyOnErrorListener (line 869) | class MyOnErrorListener implements MediaPlayer.OnErrorListener {
method onError (line 871) | @Override
method startVitamioVideoPlayer (line 888) | private void startVitamioVideoPlayer() {
class MyOnPreparedListener (line 915) | class MyOnPreparedListener implements MediaPlayer.OnPreparedListener {
method onPrepared (line 922) | @Override
method onTouchEvent (line 972) | @Override
method setBrightness (line 1036) | public void setBrightness(float brightness) {
method getData (line 1060) | private void getData() {
method onKeyDown (line 1069) | @Override
FILE: app/src/main/java/com/atguigu/mobileplayer1020/activity/VitamioVideoPlayerActivity.java
class VitamioVideoPlayerActivity (line 40) | public class VitamioVideoPlayerActivity extends Activity implements View...
method findViews (line 139) | private void findViews() {
method onCreate (line 195) | @Override
method initData (line 212) | private void initData() {
class MySimpleOnGestureListener (line 236) | class MySimpleOnGestureListener extends GestureDetector.SimpleOnGestur...
method onLongPress (line 237) | @Override
method onDoubleTap (line 244) | @Override
method onSingleTapConfirmed (line 258) | @Override
method setVideoType (line 276) | private void setVideoType(int videoTypeDefault) {
method showMediaController (line 318) | private void showMediaController() {
method hideMediaController (line 328) | private void hideMediaController() {
method handleMessage (line 338) | @Override
method getSystemTime (line 409) | private String getSystemTime() {
class MyBroadcastReceiver (line 414) | class MyBroadcastReceiver extends BroadcastReceiver {
method onReceive (line 416) | @Override
method setBattery (line 430) | private void setBattery(int level) {
method onClick (line 457) | @Override
method showSwichPlayerDialog (line 495) | private void showSwichPlayerDialog() {
method startSystemVideoPlayer (line 514) | private void startSystemVideoPlayer() {
method startAndPause (line 539) | private void startAndPause() {
method onRestart (line 554) | @Override
method onStart (line 560) | @Override
method onResume (line 566) | @Override
method onPause (line 572) | @Override
method onStop (line 578) | @Override
method onDestroy (line 584) | @Override
method setData (line 599) | private void setData() {
method setLinstener (line 619) | private void setLinstener() {
class VoiceOnSeekBarChangeListener (line 662) | class VoiceOnSeekBarChangeListener implements SeekBar.OnSeekBarChangeL...
method onProgressChanged (line 664) | @Override
method onStartTrackingTouch (line 677) | @Override
method onStopTrackingTouch (line 688) | @Override
method updateVoiceProgress (line 694) | private void updateVoiceProgress(int progress) {
method updateVoice (line 712) | private void updateVoice(int progress) {
class VideoOnSeekBarChangeListener (line 729) | class VideoOnSeekBarChangeListener implements SeekBar.OnSeekBarChangeL...
method onProgressChanged (line 738) | @Override
method onStartTrackingTouch (line 752) | @Override
method onStopTrackingTouch (line 763) | @Override
class MyOnCompletionListener (line 769) | class MyOnCompletionListener implements MediaPlayer.OnCompletionListen...
method onCompletion (line 771) | @Override
method setPreVideo (line 780) | private void setPreVideo() {
method setNextVideo (line 810) | private void setNextVideo() {
method checkButtonStatus (line 846) | private void checkButtonStatus() {
method setButtonEnable (line 877) | private void setButtonEnable(boolean isEnable) {
class MyOnErrorListener (line 890) | class MyOnErrorListener implements MediaPlayer.OnErrorListener {
method onError (line 892) | @Override
method showErrorDialog (line 900) | private void showErrorDialog() {
class MyOnPreparedListener (line 913) | class MyOnPreparedListener implements MediaPlayer.OnPreparedListener {
method onPrepared (line 920) | @Override
method onTouchEvent (line 970) | @Override
method getData (line 1010) | private void getData() {
method onKeyDown (line 1019) | @Override
FILE: app/src/main/java/com/atguigu/mobileplayer1020/adapter/LocalVideoAdapter.java
class LocalVideoAdapter (line 23) | public class LocalVideoAdapter extends BaseAdapter {
method LocalVideoAdapter (line 33) | public LocalVideoAdapter(Context mContext, ArrayList<MediaItem> mediaI...
method getCount (line 40) | @Override
method getItem (line 45) | @Override
method getItemId (line 50) | @Override
method getView (line 55) | @Override
class ViewHolder (line 88) | static class ViewHolder{
FILE: app/src/main/java/com/atguigu/mobileplayer1020/adapter/NetAudioFragmentAdapter.java
class NetAudioFragmentAdapter (line 34) | public class NetAudioFragmentAdapter extends BaseAdapter {
method NetAudioFragmentAdapter (line 65) | public NetAudioFragmentAdapter(Context mContext, List<NetAudioBean.Lis...
method getCount (line 74) | @Override
method getItemViewType (line 82) | @Override
method getViewTypeCount (line 104) | @Override
method getItem (line 109) | @Override
method getItemId (line 114) | @Override
method getView (line 119) | @Override
method initView (line 136) | private View initView(View convertView, int itemViewType, NetAudioBean...
class BaseViewHolder (line 216) | class BaseViewHolder{
method BaseViewHolder (line 228) | public BaseViewHolder (View convertView) {
method setData (line 247) | public void setData(NetAudioBean.ListBean mediaItem) {
class VideoHoder (line 279) | class VideoHoder extends BaseViewHolder{
method VideoHoder (line 289) | VideoHoder(View convertView) {
method setData (line 301) | public void setData(NetAudioBean.ListBean mediaItem) {
class ImageHolder (line 321) | class ImageHolder extends BaseViewHolder {
method ImageHolder (line 325) | ImageHolder(View convertView) {
method setData (line 333) | public void setData(NetAudioBean.ListBean mediaItem) {
class TextHolder (line 353) | class TextHolder extends BaseViewHolder {
method TextHolder (line 356) | TextHolder(View convertView) {
method setData (line 364) | public void setData(NetAudioBean.ListBean mediaItem) {
class GifHolder (line 372) | class GifHolder extends BaseViewHolder {
method GifHolder (line 377) | GifHolder(View convertView) {
method setData (line 396) | public void setData(NetAudioBean.ListBean mediaItem) {
class ADHolder (line 411) | static class ADHolder {
method ADHolder (line 416) | ADHolder(View convertView) {
FILE: app/src/main/java/com/atguigu/mobileplayer1020/adapter/NetVideoAdapter.java
class NetVideoAdapter (line 27) | public class NetVideoAdapter extends BaseAdapter {
method NetVideoAdapter (line 33) | public NetVideoAdapter(Context mContext, ArrayList<MediaItem> mediaIte...
method getCount (line 51) | @Override
method getItem (line 56) | @Override
method getItemId (line 61) | @Override
method getView (line 66) | @Override
class ViewHolder (line 111) | static class ViewHolder{
FILE: app/src/main/java/com/atguigu/mobileplayer1020/adapter/RecyclerFragmentAdapter.java
class RecyclerFragmentAdapter (line 36) | public class RecyclerFragmentAdapter extends RecyclerView.Adapter {
method RecyclerFragmentAdapter (line 66) | public RecyclerFragmentAdapter(Context mContext, List<NetAudioBean.Lis...
method getItemCount (line 71) | @Override
method getItemViewType (line 76) | @Override
method onCreateViewHolder (line 95) | @Override
method onBindViewHolder (line 127) | @Override
class BaseViewHolder (line 148) | class BaseViewHolder extends RecyclerView.ViewHolder{
method BaseViewHolder (line 160) | public BaseViewHolder(View convertView) {
method setData (line 203) | public void setData(NetAudioBean.ListBean mediaItem) {
class VideoHoder (line 235) | class VideoHoder extends BaseViewHolder {
method VideoHoder (line 245) | VideoHoder(View convertView) {
method setData (line 257) | public void setData(NetAudioBean.ListBean mediaItem) {
class ImageHolder (line 279) | class ImageHolder extends BaseViewHolder{
method ImageHolder (line 284) | ImageHolder(View convertView) {
method setData (line 292) | public void setData(NetAudioBean.ListBean mediaItem) {
class TextHolder (line 311) | class TextHolder extends BaseViewHolder{
method TextHolder (line 315) | TextHolder(View convertView) {
method setData (line 323) | public void setData(NetAudioBean.ListBean mediaItem) {
class GifHolder (line 330) | class GifHolder extends BaseViewHolder{
method GifHolder (line 336) | GifHolder(View convertView) {
method setData (line 355) | public void setData(NetAudioBean.ListBean mediaItem) {
class ADHolder (line 369) | class ADHolder extends RecyclerView.ViewHolder{
method ADHolder (line 375) | ADHolder(View convertView) {
FILE: app/src/main/java/com/atguigu/mobileplayer1020/adapter/SearchAdapter.java
class SearchAdapter (line 27) | public class SearchAdapter extends BaseAdapter {
method SearchAdapter (line 33) | public SearchAdapter(Context mContext, List<SearchBean.ItemsBean> item...
method getCount (line 51) | @Override
method getItem (line 56) | @Override
method getItemId (line 61) | @Override
method getView (line 66) | @Override
class ViewHolder (line 111) | static class ViewHolder{
FILE: app/src/main/java/com/atguigu/mobileplayer1020/app/MyApplication.java
class MyApplication (line 13) | public class MyApplication extends Application {
method onCreate (line 14) | @Override
FILE: app/src/main/java/com/atguigu/mobileplayer1020/base/BaseFragment.java
class BaseFragment (line 18) | public abstract class BaseFragment extends Fragment {
method onCreate (line 29) | @Override
method onCreateView (line 42) | @Nullable
method initView (line 55) | public abstract View initView() ;
method onActivityCreated (line 64) | @Override
method initData (line 75) | public void initData() {
method onHiddenChanged (line 85) | @Override
method onRefrshData (line 100) | public void onRefrshData() {
FILE: app/src/main/java/com/atguigu/mobileplayer1020/bean/LyricBean.java
class LyricBean (line 10) | public class LyricBean {
method getContent (line 25) | public String getContent() {
method setContent (line 29) | public void setContent(String content) {
method getTimePoint (line 33) | public long getTimePoint() {
method setTimePoint (line 37) | public void setTimePoint(long timePoint) {
method getSleepTime (line 41) | public long getSleepTime() {
method setSleepTime (line 45) | public void setSleepTime(long sleepTime) {
method toString (line 49) | @Override
FILE: app/src/main/java/com/atguigu/mobileplayer1020/bean/MediaItem.java
class MediaItem (line 11) | public class MediaItem implements Serializable{
method getHeightUrl (line 29) | public String getHeightUrl() {
method setHeightUrl (line 33) | public void setHeightUrl(String heightUrl) {
method getImageUrl (line 37) | public String getImageUrl() {
method setImageUrl (line 41) | public void setImageUrl(String imageUrl) {
method getDesc (line 45) | public String getDesc() {
method setDesc (line 49) | public void setDesc(String desc) {
method getName (line 53) | public String getName() {
method setName (line 57) | public void setName(String name) {
method getDuration (line 61) | public long getDuration() {
method setDuration (line 65) | public void setDuration(long duration) {
method getSize (line 69) | public long getSize() {
method setSize (line 73) | public void setSize(long size) {
method getData (line 77) | public String getData() {
method setData (line 81) | public void setData(String data) {
method getArtist (line 85) | public String getArtist() {
method setArtist (line 89) | public void setArtist(String artist) {
method toString (line 93) | @Override
FILE: app/src/main/java/com/atguigu/mobileplayer1020/bean/NetAudioBean.java
class NetAudioBean (line 11) | public class NetAudioBean {
method getInfo (line 21) | public InfoBean getInfo() {
method setInfo (line 25) | public void setInfo(InfoBean info) {
method getList (line 29) | public List<ListBean> getList() {
method setList (line 33) | public void setList(List<ListBean> list) {
class InfoBean (line 37) | public static class InfoBean {
method getCount (line 46) | public int getCount() {
method setCount (line 50) | public void setCount(int count) {
method getNp (line 54) | public int getNp() {
method setNp (line 58) | public void setNp(int np) {
class ListBean (line 63) | public static class ListBean {
method getStatus (line 104) | public int getStatus() {
method setStatus (line 108) | public void setStatus(int status) {
method getComment (line 112) | public String getComment() {
method setComment (line 116) | public void setComment(String comment) {
method getBookmark (line 120) | public String getBookmark() {
method setBookmark (line 124) | public void setBookmark(String bookmark) {
method getText (line 128) | public String getText() {
method setText (line 132) | public void setText(String text) {
method getGif (line 136) | public GifEntity getGif() {
method setGif (line 140) | public void setGif(GifEntity gif) {
method getUp (line 144) | public String getUp() {
method setUp (line 148) | public void setUp(String up) {
method getShare_url (line 152) | public String getShare_url() {
method setShare_url (line 156) | public void setShare_url(String share_url) {
method getDown (line 160) | public int getDown() {
method setDown (line 164) | public void setDown(int down) {
method getForward (line 168) | public int getForward() {
method setForward (line 172) | public void setForward(int forward) {
method getU (line 176) | public UEntity getU() {
method setU (line 180) | public void setU(UEntity u) {
method getPasstime (line 184) | public String getPasstime() {
method setPasstime (line 188) | public void setPasstime(String passtime) {
method getType (line 192) | public String getType() {
method setType (line 196) | public void setType(String type) {
method getId (line 200) | public String getId() {
method setId (line 204) | public void setId(String id) {
method getVideo (line 208) | public VideoEntity getVideo() {
method setVideo (line 212) | public void setVideo(VideoEntity video) {
method getTop_comment (line 216) | public TopCommentBean getTop_comment() {
method setTop_comment (line 220) | public void setTop_comment(TopCommentBean top_comment) {
method getImage (line 224) | public ImageEntity getImage() {
method setImage (line 228) | public void setImage(ImageEntity image) {
method getTags (line 232) | public List<TagsBean> getTags() {
method setTags (line 236) | public void setTags(List<TagsBean> tags) {
method getTop_comments (line 240) | public List<TopCommentsBean> getTop_comments() {
method setTop_comments (line 244) | public void setTop_comments(List<TopCommentsBean> top_comments) {
class GifEntity (line 248) | public static class GifEntity {
method getWidth (line 263) | public int getWidth() {
method setWidth (line 267) | public void setWidth(int width) {
method getHeight (line 271) | public int getHeight() {
method setHeight (line 275) | public void setHeight(int height) {
method getImages (line 279) | public List<String> getImages() {
method setImages (line 283) | public void setImages(List<String> images) {
method getGif_thumbnail (line 287) | public List<String> getGif_thumbnail() {
method setGif_thumbnail (line 291) | public void setGif_thumbnail(List<String> gif_thumbnail) {
method getDownload_url (line 295) | public List<String> getDownload_url() {
method setDownload_url (line 299) | public void setDownload_url(List<String> download_url) {
class UEntity (line 304) | public static class UEntity {
method getUid (line 327) | public String getUid() {
method setUid (line 331) | public void setUid(String uid) {
method isIs_vip (line 335) | public boolean isIs_vip() {
method setIs_vip (line 339) | public void setIs_vip(boolean is_vip) {
method isIs_v (line 343) | public boolean isIs_v() {
method setIs_v (line 347) | public void setIs_v(boolean is_v) {
method getRoom_url (line 351) | public String getRoom_url() {
method setRoom_url (line 355) | public void setRoom_url(String room_url) {
method getRoom_name (line 359) | public String getRoom_name() {
method setRoom_name (line 363) | public void setRoom_name(String room_name) {
method getRoom_role (line 367) | public String getRoom_role() {
method setRoom_role (line 371) | public void setRoom_role(String room_role) {
method getRoom_icon (line 375) | public String getRoom_icon() {
method setRoom_icon (line 379) | public void setRoom_icon(String room_icon) {
method getName (line 383) | public String getName() {
method setName (line 387) | public void setName(String name) {
method getHeader (line 391) | public List<String> getHeader() {
method setHeader (line 395) | public void setHeader(List<String> header) {
class VideoEntity (line 400) | public static class VideoEntity {
method getPlayfcount (line 423) | public int getPlayfcount() {
method setPlayfcount (line 427) | public void setPlayfcount(int playfcount) {
method getHeight (line 431) | public int getHeight() {
method setHeight (line 435) | public void setHeight(int height) {
method getWidth (line 439) | public int getWidth() {
method setWidth (line 443) | public void setWidth(int width) {
method getDuration (line 447) | public int getDuration() {
method setDuration (line 451) | public void setDuration(int duration) {
method getPlaycount (line 455) | public int getPlaycount() {
method setPlaycount (line 459) | public void setPlaycount(int playcount) {
method getVideo (line 463) | public List<String> getVideo() {
method setVideo (line 467) | public void setVideo(List<String> video) {
method getDownload (line 471) | public List<String> getDownload() {
method setDownload (line 475) | public void setDownload(List<String> download) {
method getThumbnail (line 479) | public List<String> getThumbnail() {
method setThumbnail (line 483) | public void setThumbnail(List<String> thumbnail) {
method getThumbnail_small (line 487) | public List<String> getThumbnail_small() {
method setThumbnail_small (line 491) | public void setThumbnail_small(List<String> thumbnail_small) {
class TopCommentBean (line 496) | public static class TopCommentBean {
method getVoicetime (line 525) | public int getVoicetime() {
method setVoicetime (line 529) | public void setVoicetime(int voicetime) {
method getStatus (line 533) | public int getStatus() {
method setStatus (line 537) | public void setStatus(int status) {
method getHate_count (line 541) | public int getHate_count() {
method setHate_count (line 545) | public void setHate_count(int hate_count) {
method getCmt_type (line 549) | public String getCmt_type() {
method setCmt_type (line 553) | public void setCmt_type(String cmt_type) {
method getPrecid (line 557) | public int getPrecid() {
method setPrecid (line 561) | public void setPrecid(int precid) {
method getContent (line 565) | public String getContent() {
method setContent (line 569) | public void setContent(String content) {
method getLike_count (line 573) | public int getLike_count() {
method setLike_count (line 577) | public void setLike_count(int like_count) {
method getU (line 581) | public UEntityX getU() {
method setU (line 585) | public void setU(UEntityX u) {
method getPreuid (line 589) | public int getPreuid() {
method setPreuid (line 593) | public void setPreuid(int preuid) {
method getPasstime (line 597) | public String getPasstime() {
method setPasstime (line 601) | public void setPasstime(String passtime) {
method getVoiceuri (line 605) | public String getVoiceuri() {
method setVoiceuri (line 609) | public void setVoiceuri(String voiceuri) {
method getId (line 613) | public int getId() {
method setId (line 617) | public void setId(int id) {
class UEntityX (line 621) | public static class UEntityX {
method getUid (line 644) | public String getUid() {
method setUid (line 648) | public void setUid(String uid) {
method isIs_vip (line 652) | public boolean isIs_vip() {
method setIs_vip (line 656) | public void setIs_vip(boolean is_vip) {
method getRoom_url (line 660) | public String getRoom_url() {
method setRoom_url (line 664) | public void setRoom_url(String room_url) {
method getSex (line 668) | public String getSex() {
method setSex (line 672) | public void setSex(String sex) {
method getRoom_name (line 676) | public String getRoom_name() {
method setRoom_name (line 680) | public void setRoom_name(String room_name) {
method getRoom_role (line 684) | public String getRoom_role() {
method setRoom_role (line 688) | public void setRoom_role(String room_role) {
method getRoom_icon (line 692) | public String getRoom_icon() {
method setRoom_icon (line 696) | public void setRoom_icon(String room_icon) {
method getName (line 700) | public String getName() {
method setName (line 704) | public void setName(String name) {
method getHeader (line 708) | public List<String> getHeader() {
method setHeader (line 712) | public void setHeader(List<String> header) {
class ImageEntity (line 718) | public static class ImageEntity {
method getHeight (line 737) | public int getHeight() {
method setHeight (line 741) | public void setHeight(int height) {
method getWidth (line 745) | public int getWidth() {
method setWidth (line 749) | public void setWidth(int width) {
method getMedium (line 753) | public List<?> getMedium() {
method setMedium (line 757) | public void setMedium(List<?> medium) {
method getBig (line 761) | public List<String> getBig() {
method setBig (line 765) | public void setBig(List<String> big) {
method getDownload_url (line 769) | public List<String> getDownload_url() {
method setDownload_url (line 773) | public void setDownload_url(List<String> download_url) {
method getSmall (line 777) | public List<?> getSmall() {
method setSmall (line 781) | public void setSmall(List<?> small) {
method getThumbnail_small (line 785) | public List<String> getThumbnail_small() {
method setThumbnail_small (line 789) | public void setThumbnail_small(List<String> thumbnail_small) {
class TagsBean (line 794) | public static class TagsBean {
method getId (line 803) | public int getId() {
method setId (line 807) | public void setId(int id) {
method getName (line 811) | public String getName() {
method setName (line 815) | public void setName(String name) {
class TopCommentsBean (line 820) | public static class TopCommentsBean {
method getVoicetime (line 849) | public int getVoicetime() {
method setVoicetime (line 853) | public void setVoicetime(int voicetime) {
method getStatus (line 857) | public int getStatus() {
method setStatus (line 861) | public void setStatus(int status) {
method getHate_count (line 865) | public int getHate_count() {
method setHate_count (line 869) | public void setHate_count(int hate_count) {
method getCmt_type (line 873) | public String getCmt_type() {
method setCmt_type (line 877) | public void setCmt_type(String cmt_type) {
method getPrecid (line 881) | public int getPrecid() {
method setPrecid (line 885) | public void setPrecid(int precid) {
method getContent (line 889) | public String getContent() {
method setContent (line 893) | public void setContent(String content) {
method getLike_count (line 897) | public int getLike_count() {
method setLike_count (line 901) | public void setLike_count(int like_count) {
method getU (line 905) | public UEntityXX getU() {
method setU (line 909) | public void setU(UEntityXX u) {
method getPreuid (line 913) | public int getPreuid() {
method setPreuid (line 917) | public void setPreuid(int preuid) {
method getPasstime (line 921) | public String getPasstime() {
method setPasstime (line 925) | public void setPasstime(String passtime) {
method getVoiceuri (line 929) | public String getVoiceuri() {
method setVoiceuri (line 933) | public void setVoiceuri(String voiceuri) {
method getId (line 937) | public int getId() {
method setId (line 941) | public void setId(int id) {
class UEntityXX (line 945) | public static class UEntityXX {
method getUid (line 968) | public String getUid() {
method setUid (line 972) | public void setUid(String uid) {
method isIs_vip (line 976) | public boolean isIs_vip() {
method setIs_vip (line 980) | public void setIs_vip(boolean is_vip) {
method getRoom_url (line 984) | public String getRoom_url() {
method setRoom_url (line 988) | public void setRoom_url(String room_url) {
method getSex (line 992) | public String getSex() {
method setSex (line 996) | public void setSex(String sex) {
method getRoom_name (line 1000) | public String getRoom_name() {
method setRoom_name (line 1004) | public void setRoom_name(String room_name) {
method getRoom_role (line 1008) | public String getRoom_role() {
method setRoom_role (line 1012) | public void setRoom_role(String room_role) {
method getRoom_icon (line 1016) | public String getRoom_icon() {
method setRoom_icon (line 1020) | public void setRoom_icon(String room_icon) {
method getName (line 1024) | public String getName() {
method setName (line 1028) | public void setName(String name) {
method getHeader (line 1032) | public List<String> getHeader() {
method setHeader (line 1036) | public void setHeader(List<String> header) {
FILE: app/src/main/java/com/atguigu/mobileplayer1020/bean/SearchBean.java
class SearchBean (line 11) | public class SearchBean {
method getFlag (line 30) | public String getFlag() {
method setFlag (line 34) | public void setFlag(String flag) {
method getPageNo (line 38) | public String getPageNo() {
method setPageNo (line 42) | public void setPageNo(String pageNo) {
method getPageSize (line 46) | public String getPageSize() {
method setPageSize (line 50) | public void setPageSize(String pageSize) {
method getWd (line 54) | public String getWd() {
method setWd (line 58) | public void setWd(String wd) {
method getTotal (line 62) | public String getTotal() {
method setTotal (line 66) | public void setTotal(String total) {
method getItems (line 70) | public List<ItemsBean> getItems() {
method setItems (line 74) | public void setItems(List<ItemsBean> items) {
class ItemsBean (line 78) | public static class ItemsBean {
method getItemID (line 113) | public String getItemID() {
method setItemID (line 117) | public void setItemID(String itemID) {
method getItemTitle (line 121) | public String getItemTitle() {
method setItemTitle (line 125) | public void setItemTitle(String itemTitle) {
method getItemType (line 129) | public String getItemType() {
method setItemType (line 133) | public void setItemType(String itemType) {
method getDetailUrl (line 137) | public String getDetailUrl() {
method setDetailUrl (line 141) | public void setDetailUrl(String detailUrl) {
method getPubTime (line 145) | public String getPubTime() {
method setPubTime (line 149) | public void setPubTime(String pubTime) {
method getKeywords (line 153) | public String getKeywords() {
method setKeywords (line 157) | public void setKeywords(String keywords) {
method getCategory (line 161) | public String getCategory() {
method setCategory (line 165) | public void setCategory(String category) {
method getGuid (line 169) | public String getGuid() {
method setGuid (line 173) | public void setGuid(String guid) {
method getVideoLength (line 177) | public String getVideoLength() {
method setVideoLength (line 181) | public void setVideoLength(String videoLength) {
method getSource (line 185) | public String getSource() {
method setSource (line 189) | public void setSource(String source) {
method getBrief (line 193) | public String getBrief() {
method setBrief (line 197) | public void setBrief(String brief) {
method getPhotoCount (line 201) | public String getPhotoCount() {
method setPhotoCount (line 205) | public void setPhotoCount(String photoCount) {
method getSub_column_id (line 209) | public String getSub_column_id() {
method setSub_column_id (line 213) | public void setSub_column_id(String sub_column_id) {
method getDatecheck (line 217) | public String getDatecheck() {
method setDatecheck (line 221) | public void setDatecheck(String datecheck) {
method getItemImage (line 225) | public ItemImageEntity getItemImage() {
method setItemImage (line 229) | public void setItemImage(ItemImageEntity itemImage) {
class ItemImageEntity (line 233) | public static class ItemImageEntity {
method getImgUrl1 (line 240) | public String getImgUrl1() {
method setImgUrl1 (line 244) | public void setImgUrl1(String imgUrl1) {
FILE: app/src/main/java/com/atguigu/mobileplayer1020/fragment/LocalAudioFragment.java
class LocalAudioFragment (line 30) | public class LocalAudioFragment extends BaseFragment {
method handleMessage (line 41) | @Override
method initView (line 62) | @Override
class MyOnItemClickListener (line 74) | class MyOnItemClickListener implements AdapterView.OnItemClickListener{
method onItemClick (line 76) | @Override
method initData (line 88) | @Override
method getDataFromLocal (line 99) | private void getDataFromLocal() {
method onRefrshData (line 154) | @Override
FILE: app/src/main/java/com/atguigu/mobileplayer1020/fragment/LocalVideoFragment.java
class LocalVideoFragment (line 31) | public class LocalVideoFragment extends BaseFragment {
method handleMessage (line 42) | @Override
method initView (line 63) | @Override
class MyOnItemClickListener (line 75) | class MyOnItemClickListener implements AdapterView.OnItemClickListener{
method onItemClick (line 77) | @Override
method initData (line 108) | @Override
method getDataFromLocal (line 119) | private void getDataFromLocal() {
method onRefrshData (line 174) | @Override
FILE: app/src/main/java/com/atguigu/mobileplayer1020/fragment/NetAudioFragment.java
class NetAudioFragment (line 34) | public class NetAudioFragment extends BaseFragment {
method initView (line 48) | @Override
method initData (line 82) | @Override
method onRefrshData (line 92) | @Override
method getDataFromNet (line 99) | private void getDataFromNet() {
method processData (line 126) | private void processData(String json) {
method onDestroyView (line 148) | @Override
FILE: app/src/main/java/com/atguigu/mobileplayer1020/fragment/NetVideoFragment.java
class NetVideoFragment (line 38) | public class NetVideoFragment extends BaseFragment {
method initView (line 54) | @Override
class MyMaterialRefreshListener (line 73) | class MyMaterialRefreshListener extends MaterialRefreshListener {
method onRefresh (line 75) | @Override
method onRefreshLoadMore (line 86) | @Override
class MyOnItemClickListener (line 95) | class MyOnItemClickListener implements AdapterView.OnItemClickListener{
method onItemClick (line 97) | @Override
method initData (line 113) | @Override
method getDataFromNet (line 128) | private void getDataFromNet() {
method processData (line 174) | private void processData(String json) {
method parsedJson (line 207) | private ArrayList<MediaItem> parsedJson(String json) {
method onRefrshData (line 245) | @Override
FILE: app/src/main/java/com/atguigu/mobileplayer1020/fragment/RecyclerViewFragment.java
class RecyclerViewFragment (line 32) | public class RecyclerViewFragment extends BaseFragment {
method initView (line 46) | @Override
method initData (line 80) | @Override
method onRefrshData (line 90) | @Override
method getDataFromNet (line 97) | private void getDataFromNet() {
method processData (line 124) | private void processData(String json) {
method onDestroyView (line 148) | @Override
FILE: app/src/main/java/com/atguigu/mobileplayer1020/service/MusicPlayerService.java
class MusicPlayerService (line 36) | public class MusicPlayerService extends Service {
method basicTypes (line 46) | @Override
method openAudio (line 51) | @Override
method start (line 56) | @Override
method pause (line 62) | @Override
method getAudioName (line 67) | @Override
method getArtistName (line 72) | @Override
method getCurrentPosition (line 77) | @Override
method getDuration (line 82) | @Override
method next (line 87) | @Override
method pre (line 93) | @Override
method getPlayMode (line 98) | @Override
method setPlayMode (line 103) | @Override
method isPlaying (line 108) | @Override
method seekTo (line 113) | @Override
method getAudioPath (line 118) | @Override
method getAudioSessionId (line 123) | @Override
method onBind (line 166) | @Nullable
method onCreate (line 172) | @Override
method getDataFromLocal (line 183) | private void getDataFromLocal() {
method openAudio (line 242) | void openAudio(int position) {
class MyOnErrorListener (line 275) | class MyOnErrorListener implements MediaPlayer.OnErrorListener {
method onError (line 277) | @Override
class MyOnCompletionListener (line 284) | class MyOnCompletionListener implements MediaPlayer.OnCompletionListen...
method onCompletion (line 287) | @Override
class MyOnPreparedListener (line 295) | class MyOnPreparedListener implements MediaPlayer.OnPreparedListener {
method onPrepared (line 297) | @Override
method notifyChange (line 306) | private void notifyChange(String action) {
method start (line 319) | void start() {
method pause (line 351) | void pause() {
method getAudioName (line 360) | String getAudioName() {
method getArtistName (line 370) | String getArtistName() {
method getCurrentPosition (line 381) | int getCurrentPosition() {
method getDuration (line 391) | int getDuration() {
method next (line 401) | void next() {
method openNextAudio (line 410) | private void openNextAudio() {
method setNextPostion (line 435) | private void setNextPostion() {
method pre (line 465) | void pre() {
method setPrePostion (line 472) | private void setPrePostion() {
method openPreAudio (line 497) | private void openPreAudio() {
method getPlayMode (line 525) | int getPlayMode() {
method setPlayMode (line 532) | void setPlayMode(int mode) {
FILE: app/src/main/java/com/atguigu/mobileplayer1020/utils/CacheUtils.java
class CacheUtils (line 14) | public class CacheUtils {
method getString (line 21) | public static String getString(Context mContext, String key) {
method putString (line 32) | public static void putString(Context mContext, String key, String valu...
method setPlaymode (line 43) | public static void setPlaymode(Context context, String key, int value) {
method getPlaymode (line 54) | public static int getPlaymode(Context context, String key) {
FILE: app/src/main/java/com/atguigu/mobileplayer1020/utils/Constant.java
class Constant (line 9) | public class Constant {
FILE: app/src/main/java/com/atguigu/mobileplayer1020/utils/DensityUtil.java
class DensityUtil (line 11) | public class DensityUtil {
method dip2px (line 16) | public static int dip2px(Context context, float dpValue) {
method px2dip (line 24) | public static int px2dip(Context context, float pxValue) {
FILE: app/src/main/java/com/atguigu/mobileplayer1020/utils/JsonParser.java
class JsonParser (line 10) | public class JsonParser {
method parseIatResult (line 12) | public static String parseIatResult(String json) {
method parseGrammarResult (line 37) | public static String parseGrammarResult(String json) {
method parseLocalGrammarResult (line 66) | public static String parseLocalGrammarResult(String json) {
FILE: app/src/main/java/com/atguigu/mobileplayer1020/utils/LyricParaser.java
class LyricParaser (line 20) | public class LyricParaser {
method getLyricBeens (line 26) | public ArrayList<LyricBean> getLyricBeens() {
method isExistsLyric (line 34) | public boolean isExistsLyric() {
method readFile (line 40) | public void readFile(File file) {
method getCharset (line 85) | public String getCharset(File file) {
class MyComparator (line 145) | class MyComparator implements Comparator<LyricBean> {
method compare (line 148) | @Override
method analyzeLyrc (line 167) | private String analyzeLyrc(String line) {
method stTimeToLong (line 231) | private long stTimeToLong(String timeStr) {
method getCountTag (line 262) | private int getCountTag(String line) {
FILE: app/src/main/java/com/atguigu/mobileplayer1020/utils/Utils.java
class Utils (line 9) | public class Utils {
method Utils (line 17) | public Utils() {
method stringForTime (line 30) | public String stringForTime(int timeMs) {
method isNetUrl (line 53) | public boolean isNetUrl(String url) {
method showNetSpeed (line 72) | public String showNetSpeed(Context context) {
FILE: app/src/main/java/com/atguigu/mobileplayer1020/view/BaseVisualizerView.java
class BaseVisualizerView (line 13) | public class BaseVisualizerView extends View implements Visualizer.OnDat...
method BaseVisualizerView (line 56) | public BaseVisualizerView(Context context) {
method initView (line 62) | private void initView() {
method BaseVisualizerView (line 71) | public BaseVisualizerView(Context context, AttributeSet attrs) {
method onLayout (line 76) | @Override
method drawCylinder (line 94) | protected void drawCylinder(Canvas canvas, float x, byte value) {
method onDraw (line 102) | @Override
method setVisualizer (line 113) | public void setVisualizer(Visualizer visualizer) {
method onFftDataCapture (line 131) | @Override
method onWaveFormDataCapture (line 164) | @Override
method enableDataProcess (line 174) | public void enableDataProcess(boolean en) {
FILE: app/src/main/java/com/atguigu/mobileplayer1020/view/LyricShowView.java
class LyricShowView (line 21) | public class LyricShowView extends TextView {
method LyricShowView (line 40) | public LyricShowView(Context context, AttributeSet attrs) {
method initView (line 49) | private void initView() {
method onSizeChanged (line 84) | @Override
method onDraw (line 96) | @Override
method setNextShowLyric (line 167) | public void setNextShowLyric(int currentPosition) {
method setLyrics (line 198) | public void setLyrics(ArrayList<LyricBean> lyricBeens) {
FILE: app/src/main/java/com/atguigu/mobileplayer1020/view/TitleBarView.java
class TitleBarView (line 22) | public class TitleBarView extends LinearLayout implements View.OnClickLi...
method TitleBarView (line 29) | public TitleBarView(Context context, AttributeSet attrs) {
method onFinishInflate (line 38) | @Override
method onClick (line 51) | @Override
FILE: app/src/main/java/com/atguigu/mobileplayer1020/view/VideoView.java
class VideoView (line 13) | public class VideoView extends android.widget.VideoView {
method VideoView (line 14) | public VideoView(Context context, AttributeSet attrs) {
method onMeasure (line 24) | @Override
method setViewSize (line 37) | public void setViewSize(int screenWidth, int screeHeight) {
FILE: app/src/main/java/com/atguigu/mobileplayer1020/view/VitamioVideoView.java
class VitamioVideoView (line 13) | public class VitamioVideoView extends io.vov.vitamio.widget.VideoView {
method VitamioVideoView (line 14) | public VitamioVideoView(Context context, AttributeSet attrs) {
method onMeasure (line 24) | @Override
method setViewSize (line 37) | public void setViewSize(int screenWidth, int screeHeight) {
FILE: app/src/test/java/com/atguigu/mobileplayer1020/ExampleUnitTest.java
class ExampleUnitTest (line 12) | public class ExampleUnitTest {
method addition_isCorrect (line 13) | @Test
FILE: binderService/src/main/java/com/yanguangfu/binder/MainActivity.java
class MainActivity (line 28) | public class MainActivity extends Activity implements OnClickListener {
method onCreate (line 36) | @Override
method setClickListener (line 50) | private void setClickListener() {
method initView (line 60) | private void initView() {
method onClick (line 67) | @Override
method performAction (line 124) | @Override
method onServiceConnected (line 138) | public void onServiceConnected(ComponentName className, IBinder servic...
method onServiceDisconnected (line 148) | public void onServiceDisconnected(ComponentName className) {
FILE: binderService/src/main/java/com/yanguangfu/binder/MyService.java
class MyService (line 18) | public class MyService extends Service {
method onCreate (line 24) | @Override
method onStart (line 30) | @Override
method onBind (line 36) | @Override
method onDestroy (line 43) | @Override
method onUnbind (line 50) | @Override
method onRebind (line 57) | public void onRebind(Intent intent) {
method getNames (line 62) | private String getNames(){
method getAges (line 67) | private int getAges(){
method invokCallBack (line 74) | @Override
method registerTestCall (line 86) | @Override
method getName (line 93) | @Override
method getAge (line 100) | @Override
FILE: binderService/src/main/java/com/yanguangfu/binder/aidl/Rect1.java
class Rect1 (line 6) | public class Rect1 implements Parcelable {
method createFromParcel (line 12) | public Rect1 createFromParcel(Parcel in) {
method newArray (line 16) | public Rect1[] newArray(int size) {
method Rect1 (line 21) | public Rect1() {
method Rect1 (line 24) | private Rect1(Parcel in) {
method readFromParcel (line 28) | public void readFromParcel(Parcel in) {
method describeContents (line 35) | @Override
method writeToParcel (line 40) | @Override
FILE: jcvideoplayer-lib/src/androidTest/java/fm/jiecao/jcvideoplayer_lib/ApplicationTest.java
class ApplicationTest (line 9) | public class ApplicationTest extends ApplicationTestCase<Application> {
method ApplicationTest (line 10) | public ApplicationTest() {
FILE: jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCMediaManager.java
class JCMediaManager (line 25) | public class JCMediaManager implements IMediaPlayer.OnPreparedListener, ...
method instance (line 48) | public static JCMediaManager instance() {
method JCMediaManager (line 55) | public JCMediaManager() {
method getVideoSize (line 63) | public Point getVideoSize() {
class MediaHandler (line 71) | public class MediaHandler extends Handler {
method MediaHandler (line 72) | public MediaHandler(Looper looper) {
method handleMessage (line 76) | @Override
method prepare (line 129) | public void prepare(final String url, final Map<String, String> mapHea...
method releaseMediaPlayer (line 138) | public void releaseMediaPlayer() {
method setDisplay (line 144) | public void setDisplay(Surface holder) {
method onPrepared (line 151) | @Override
method onCompletion (line 163) | @Override
method onBufferingUpdate (line 175) | @Override
method onSeekComplete (line 187) | @Override
method onError (line 199) | @Override
method onInfo (line 212) | @Override
method onVideoSizeChanged (line 225) | @Override
class FuckBean (line 240) | private class FuckBean {
method FuckBean (line 245) | FuckBean(String url, Map<String, String> mapHeadData, boolean loop) {
FILE: jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCMediaPlayerListener.java
type JCMediaPlayerListener (line 6) | public interface JCMediaPlayerListener {
method onPrepared (line 7) | void onPrepared();
method onCompletion (line 9) | void onCompletion();
method onAutoCompletion (line 11) | void onAutoCompletion();
method onBufferingUpdate (line 13) | void onBufferingUpdate(int percent);
method onSeekComplete (line 15) | void onSeekComplete();
method onError (line 17) | void onError(int what, int extra);
method onInfo (line 19) | void onInfo(int what, int extra);
method onVideoSizeChanged (line 21) | void onVideoSizeChanged();
method goBackThisListener (line 23) | void goBackThisListener();
method backToOtherListener (line 25) | boolean backToOtherListener();
method onScrollChange (line 27) | void onScrollChange();
method getScreenType (line 29) | int getScreenType();
method getUrl (line 31) | String getUrl();
method getState (line 33) | int getState();
method autoFullscreen (line 35) | void autoFullscreen(float x);
method autoQuitFullscreen (line 37) | void autoQuitFullscreen();
FILE: jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCResizeImageView.java
class JCResizeImageView (line 17) | public class JCResizeImageView extends ImageView {
method JCResizeImageView (line 24) | public JCResizeImageView(Context context) {
method JCResizeImageView (line 29) | public JCResizeImageView(Context context, AttributeSet attrs) {
method init (line 34) | protected void init() {
method setVideoSize (line 38) | public void setVideoSize(Point videoSize) {
method setRotation (line 45) | @Override
method onMeasure (line 53) | @Override
FILE: jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCResizeTextureView.java
class JCResizeTextureView (line 18) | public class JCResizeTextureView extends TextureView {
method JCResizeTextureView (line 26) | public JCResizeTextureView(Context context) {
method JCResizeTextureView (line 31) | public JCResizeTextureView(Context context, AttributeSet attrs) {
method getBitmap (line 36) | @Override
method getBitmap (line 45) | @Override
method getBitmap (line 54) | @Override
method init (line 63) | private void init() {
method setVideoSize (line 67) | public void setVideoSize(Point videoSize) {
method setRotation (line 74) | @Override
method setHasUpdated (line 85) | public void setHasUpdated() {
method onMeasure (line 89) | @Override
FILE: jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCUserAction.java
type JCUserAction (line 7) | public interface JCUserAction {
method onEvent (line 27) | void onEvent(int type, String url, int screen, Object... objects);
FILE: jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCUserActionStandard.java
type JCUserActionStandard (line 7) | public interface JCUserActionStandard extends JCUserAction {
FILE: jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCUtils.java
class JCUtils (line 18) | public class JCUtils {
method stringForTime (line 20) | public static String stringForTime(int timeMs) {
method isWifiConnected (line 43) | public static boolean isWifiConnected(Context context) {
method scanForActivity (line 55) | public static Activity scanForActivity(Context context) {
method getAppCompActivity (line 73) | public static AppCompatActivity getAppCompActivity(Context context) {
method dip2px (line 83) | public static int dip2px(Context context, float dpValue) {
FILE: jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCVideoPlayer.java
class JCVideoPlayer (line 45) | public abstract class JCVideoPlayer extends FrameLayout implements JCMed...
method JCVideoPlayer (line 116) | public JCVideoPlayer(Context context) {
method JCVideoPlayer (line 121) | public JCVideoPlayer(Context context, AttributeSet attrs) {
method init (line 126) | public void init(Context context) {
method setUp (line 151) | public boolean setUp(String url, int screen, Object... objects) {
method getScreenType (line 175) | @Override
method getUrl (line 180) | @Override
method getState (line 185) | @Override
method setUp (line 190) | public boolean setUp(String url, int screen, Map<String, String> mapHe...
method onClick (line 199) | @Override
method prepareVideo (line 247) | public void prepareVideo() {
method onTouch (line 262) | @Override
method addTextureView (line 346) | public void addTextureView() {
method setUiWitStateAndScreen (line 369) | public void setUiWitStateAndScreen(int state) {
method startProgressTimer (line 400) | public void startProgressTimer() {
method cancelProgressTimer (line 407) | public void cancelProgressTimer() {
method onPrepared (line 416) | @Override
method clearFullscreenLayout (line 430) | public void clearFullscreenLayout() {
method onAutoCompletion (line 444) | @Override
method onCompletion (line 455) | @Override
method backToOtherListener (line 481) | @Override
method autoFullscreen (line 524) | @Override
method autoQuitFullscreen (line 541) | @Override
method goBackThisListener (line 552) | @Override
method onBufferingUpdate (line 563) | @Override
method onSeekComplete (line 572) | @Override
method onError (line 576) | @Override
method onInfo (line 585) | @Override
method onVideoSizeChanged (line 608) | @Override
method onSurfaceTextureAvailable (line 615) | @Override
method onSurfaceTextureSizeChanged (line 622) | @Override
method onSurfaceTextureDestroyed (line 630) | @Override
method onSurfaceTextureUpdated (line 636) | @Override
method onProgressChanged (line 648) | @Override
method onStartTrackingTouch (line 652) | @Override
method onStopTrackingTouch (line 663) | @Override
method backPress (line 680) | public static boolean backPress() {
method startWindowFullscreen (line 688) | public void startWindowFullscreen() {
method startWindowTiny (line 733) | public void startWindowTiny() {
class ProgressTimerTask (line 766) | public class ProgressTimerTask extends TimerTask {
method run (line 767) | @Override
method getCurrentPositionWhenPlaying (line 783) | public int getCurrentPositionWhenPlaying() {
method getDuration (line 796) | public int getDuration() {
method setTextAndProgress (line 807) | public void setTextAndProgress(int secProgress) {
method setProgressAndTime (line 814) | public void setProgressAndTime(int progress, int secProgress, int curr...
method resetProgressAndTime (line 824) | public void resetProgressAndTime() {
method onAudioFocusChange (line 832) | @Override
method release (line 853) | public void release() {
method isCurrentMediaListener (line 868) | public boolean isCurrentMediaListener() {
method isCurrenPlayingUrl (line 873) | public boolean isCurrenPlayingUrl() {
method releaseAllVideos (line 877) | public static void releaseAllVideos() {
method setJcUserAction (line 883) | public static void setJcUserAction(JCUserAction jcUserEvent) {
method onEvent (line 887) | public void onEvent(int type) {
method onScrollChange (line 893) | @Override
method onScroll (line 915) | public static void onScroll() {//这里就应该保证,listener的正确的完整的赋值,调用非播放的控件
method startFullscreen (line 926) | public static void startFullscreen(Context context, Class _class, Stri...
method hideSupportActionBar (line 960) | public static void hideSupportActionBar(Context context) {
method showSupportActionBar (line 974) | public static void showSupportActionBar(Context context) {
class JCAutoFullscreenListener (line 987) | public static class JCAutoFullscreenListener implements SensorEventLis...
method onSensorChanged (line 988) | @Override
method onAccuracyChanged (line 1004) | @Override
method obtainCache (line 1010) | private void obtainCache() {
method refreshCache (line 1020) | public void refreshCache() {
method clearCacheImage (line 1030) | public void clearCacheImage() {
method showWifiDialog (line 1035) | public void showWifiDialog() {
method showProgressDialog (line 1038) | public void showProgressDialog(float deltaX,
method dismissProgressDialog (line 1043) | public void dismissProgressDialog() {
method showVolumeDialog (line 1047) | public void showVolumeDialog(float deltaY, int volumePercent) {
method dismissVolumeDialog (line 1051) | public void dismissVolumeDialog() {
method getLayoutId (line 1056) | public abstract int getLayoutId();
FILE: jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCVideoPlayerManager.java
class JCVideoPlayerManager (line 11) | public class JCVideoPlayerManager {
method putScrollListener (line 16) | public static void putScrollListener(JCMediaPlayerListener listener) {
method putListener (line 22) | public static void putListener(JCMediaPlayerListener listener) {
method checkAndPutListener (line 26) | public static void checkAndPutListener(JCMediaPlayerListener listener) {
method popListener (line 47) | public static JCMediaPlayerListener popListener() {
method getFirst (line 54) | public static JCMediaPlayerListener getFirst() {
method completeAll (line 61) | public static void completeAll() {
FILE: jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCVideoPlayerSimple.java
class JCVideoPlayerSimple (line 14) | public class JCVideoPlayerSimple extends JCVideoPlayer {
method JCVideoPlayerSimple (line 16) | public JCVideoPlayerSimple(Context context) {
method JCVideoPlayerSimple (line 20) | public JCVideoPlayerSimple(Context context, AttributeSet attrs) {
method getLayoutId (line 24) | @Override
method setUp (line 29) | @Override
method setUiWitStateAndScreen (line 43) | @Override
method updateStartImage (line 64) | private void updateStartImage() {
method onClick (line 74) | @Override
method onProgressChanged (line 83) | @Override
method backToOtherListener (line 94) | @Override
FILE: jcvideoplayer-lib/src/main/java/fm/jiecao/jcvideoplayer_lib/JCVideoPlayerStandard.java
class JCVideoPlayerStandard (line 28) | public class JCVideoPlayerStandard extends JCVideoPlayer {
method JCVideoPlayerStandard (line 43) | public JCVideoPlayerStandard(Context context) {
method JCVideoPlayerStandard (line 47) | public JCVideoPlayerStandard(Context context, AttributeSet attrs) {
method init (line 51) | @Override
method setUp (line 68) | @Override
method getLayoutId (line 92) | @Override
method setUiWitStateAndScreen (line 97) | @Override
method onTouch (line 131) | @Override
method onClick (line 166) | @Override
method showWifiDialog (line 202) | @Override
method onStartTrackingTouch (line 224) | @Override
method onStopTrackingTouch (line 230) | @Override
method startPlayLogic (line 236) | public void startPlayLogic() {
method onClickUiToggle (line 241) | public void onClickUiToggle() {
method setProgressAndTime (line 275) | @Override
method resetProgressAndTime (line 282) | @Override
method changeUiToNormal (line 290) | public void changeUiToNormal() {
method changeUiToPreparingShow (line 308) | public void changeUiToPreparingShow() {
method changeUiToPreparingClear (line 325) | public void changeUiToPreparingClear() {
method onPrepared (line 343) | @Override
method changeUiToPlayingShow (line 351) | public void changeUiToPlayingShow() {
method changeUiToPlayingClear (line 370) | public void changeUiToPlayingClear() {
method changeUiToPauseShow (line 387) | public void changeUiToPauseShow() {
method changeUiToPauseClear (line 406) | public void changeUiToPauseClear() {
method changeUiToPlayingBufferingShow (line 423) | public void changeUiToPlayingBufferingShow() {
method changeUiToPlayingBufferingClear (line 440) | public void changeUiToPlayingBufferingClear() {
method changeUiToCompleteShow (line 459) | public void changeUiToCompleteShow() {
method changeUiToCompleteClear (line 478) | public void changeUiToCompleteClear() {
method changeUiToError (line 497) | public void changeUiToError() {
method setAllControlsVisible (line 517) | public void setAllControlsVisible(int topCon, int bottomCon, int start...
method updateStartImage (line 532) | public void updateStartImage() {
method showProgressDialog (line 549) | @Override
method dismissProgressDialog (line 584) | @Override
method showVolumeDialog (line 596) | @Override
method dismissVolumeDialog (line 620) | @Override
method startDismissControlViewTimer (line 628) | public void startDismissControlViewTimer() {
method cancelDismissControlViewTimer (line 635) | public void cancelDismissControlViewTimer() {
class DismissControlViewTimerTask (line 645) | public class DismissControlViewTimerTask extends TimerTask {
method run (line 647) | @Override
FILE: jcvideoplayer-lib/src/test/java/fm/jiecao/jcvideoplayer_lib/ExampleUnitTest.java
class ExampleUnitTest (line 10) | public class ExampleUnitTest {
method addition_isCorrect (line 11) | @Test
FILE: speechDemo/src/main/java/com/iflytek/ise/result/FinalResult.java
class FinalResult (line 13) | public class FinalResult extends Result {
method toString (line 19) | @Override
FILE: speechDemo/src/main/java/com/iflytek/ise/result/ReadSentenceResult.java
class ReadSentenceResult (line 15) | public class ReadSentenceResult extends Result {
method ReadSentenceResult (line 17) | public ReadSentenceResult() {
method toString (line 21) | @Override
FILE: speechDemo/src/main/java/com/iflytek/ise/result/ReadSyllableResult.java
class ReadSyllableResult (line 15) | public class ReadSyllableResult extends Result {
method ReadSyllableResult (line 17) | public ReadSyllableResult() {
method toString (line 22) | @Override
FILE: speechDemo/src/main/java/com/iflytek/ise/result/ReadWordResult.java
class ReadWordResult (line 15) | public class ReadWordResult extends Result {
method ReadWordResult (line 17) | public ReadWordResult() {
method toString (line 21) | @Override
FILE: speechDemo/src/main/java/com/iflytek/ise/result/Result.java
class Result (line 17) | public class Result {
FILE: speechDemo/src/main/java/com/iflytek/ise/result/entity/Phone.java
class Phone (line 15) | public class Phone {
method getStdSymbol (line 96) | public String getStdSymbol() {
method getStdSymbol (line 100) | public static String getStdSymbol(String content) {
FILE: speechDemo/src/main/java/com/iflytek/ise/result/entity/Sentence.java
class Sentence (line 15) | public class Sentence {
FILE: speechDemo/src/main/java/com/iflytek/ise/result/entity/Syll.java
class Syll (line 15) | public class Syll {
method getStdSymbol (line 50) | public String getStdSymbol() {
FILE: speechDemo/src/main/java/com/iflytek/ise/result/entity/Word.java
class Word (line 15) | public class Word {
FILE: speechDemo/src/main/java/com/iflytek/ise/result/util/ResultFormatUtil.java
class ResultFormatUtil (line 20) | public class ResultFormatUtil {
method formatDetails_EN (line 28) | public static String formatDetails_EN(ArrayList<Sentence> sentences) {
method formatDetails_CN (line 82) | public static String formatDetails_CN(ArrayList<Sentence> sentences) {
FILE: speechDemo/src/main/java/com/iflytek/ise/result/util/ResultTranslateUtil.java
class ResultTranslateUtil (line 15) | public class ResultTranslateUtil {
method getDpMessageInfo (line 32) | public static String getDpMessageInfo(int dp_message) {
method getContent (line 36) | public static String getContent(String content) {
FILE: speechDemo/src/main/java/com/iflytek/ise/result/xml/XmlResultParser.java
class XmlResultParser (line 34) | public class XmlResultParser {
method parse (line 36) | public Result parse(String xml) {
method parseResult (line 85) | private Result parseResult(XmlPullParser pullParser) {
method readTotalResult (line 179) | private void readTotalResult(Result result, XmlPullParser pullParser) {
method createPhone (line 189) | private Phone createPhone(XmlPullParser pullParser) {
method createSyll (line 200) | private Syll createSyll(XmlPullParser pullParser) {
method createWord (line 212) | private Word createWord(XmlPullParser pullParser) {
method createSentence (line 227) | private Sentence createSentence(XmlPullParser pullParser) {
method getLanguage (line 239) | private String getLanguage(XmlPullParser pullParser) {
method getExceptInfo (line 243) | private String getExceptInfo(XmlPullParser pullParser) {
method getIsRejected (line 247) | private boolean getIsRejected(XmlPullParser pullParser) {
method getSymbol (line 256) | private String getSymbol(XmlPullParser pullParser) {
method getFloat (line 260) | private float getFloat(XmlPullParser pullParser, String attrName) {
method getContent (line 268) | private String getContent(XmlPullParser pullParser) {
method getInt (line 272) | private int getInt(XmlPullParser pullParser, String attrName) {
FILE: speechDemo/src/main/java/com/iflytek/speech/setting/IatSettings.java
class IatSettings (line 16) | public class IatSettings extends PreferenceActivity implements OnPrefere...
method onCreate (line 22) | @SuppressWarnings("deprecation")
method onPreferenceChange (line 35) | @Override
FILE: speechDemo/src/main/java/com/iflytek/speech/setting/IseSettings.java
class IseSettings (line 23) | public class IseSettings extends PreferenceActivity {
method onCreate (line 35) | @Override
method initUI (line 46) | private void initUI() {
method showTip (line 195) | private void showTip(String str) {
FILE: speechDemo/src/main/java/com/iflytek/speech/setting/TtsSettings.java
class TtsSettings (line 17) | public class TtsSettings extends PreferenceActivity implements OnPrefere...
method onCreate (line 24) | @SuppressWarnings("deprecation")
method onPreferenceChange (line 43) | @Override
FILE: speechDemo/src/main/java/com/iflytek/speech/setting/UnderstanderSettings.java
class UnderstanderSettings (line 17) | public class UnderstanderSettings extends PreferenceActivity implements ...
method onCreate (line 24) | @SuppressWarnings("deprecation")
method onPreferenceChange (line 37) | @Override
method onResume (line 42) | @Override
method onPause (line 50) | @Override
FILE: speechDemo/src/main/java/com/iflytek/speech/util/ApkInstaller.java
class ApkInstaller (line 18) | public class ApkInstaller {
method ApkInstaller (line 21) | public ApkInstaller(Activity activity) {
method install (line 25) | public void install(){
method processInstall (line 50) | private boolean processInstall(Context context ,String url,String asse...
FILE: speechDemo/src/main/java/com/iflytek/speech/util/FucUtil.java
class FucUtil (line 18) | public class FucUtil {
method readFile (line 23) | public static String readFile(Context mContext,String file,String code)
method splitBuffer (line 47) | public ArrayList<byte[]> splitBuffer(byte[] buffer,int length,int spsize)
method checkLocalResource (line 78) | public static String checkLocalResource(){
method readAudioFile (line 128) | public static byte[] readAudioFile(Context context, String filename) {
FILE: speechDemo/src/main/java/com/iflytek/speech/util/JsonParser.java
class JsonParser (line 12) | public class JsonParser {
method parseIatResult (line 14) | public static String parseIatResult(String json) {
method parseGrammarResult (line 39) | public static String parseGrammarResult(String json) {
method parseLocalGrammarResult (line 68) | public static String parseLocalGrammarResult(String json) {
FILE: speechDemo/src/main/java/com/iflytek/speech/util/SettingTextWatcher.java
class SettingTextWatcher (line 14) | public class SettingTextWatcher implements TextWatcher {
method SettingTextWatcher (line 22) | public SettingTextWatcher(Context context,EditTextPreference e,int min...
method onTextChanged (line 29) | @Override
method beforeTextChanged (line 36) | @Override
method afterTextChanged (line 41) | @Override
method isNumeric (line 65) | public static boolean isNumeric(String str){
FILE: speechDemo/src/main/java/com/iflytek/speech/util/XmlParser.java
class XmlParser (line 14) | public class XmlParser {
method parseNluResult (line 16) | public static String parseNluResult(String xml)
FILE: speechDemo/src/main/java/com/iflytek/voicedemo/AsrDemo.java
class AsrDemo (line 36) | public class AsrDemo extends Activity implements OnClickListener{
method onCreate (line 58) | @SuppressLint("ShowToast")
method initLayout (line 85) | private void initLayout() {
method onClick (line 123) | @Override
method onInit (line 217) | @Override
method onLexiconUpdated (line 230) | @Override
method onBuildFinish (line 244) | @Override
method onBuildFinish (line 257) | @Override
method onContactQueryFinish (line 275) | @Override
method onVolumeChanged (line 286) | @Override
method onResult (line 292) | @Override
method onEndOfSpeech (line 310) | @Override
method onBeginOfSpeech (line 316) | @Override
method onError (line 322) | @Override
method onEvent (line 327) | @Override
method showTip (line 341) | private void showTip(final String str) {
method setParam (line 356) | public boolean setParam(){
method onDestroy (line 389) | @Override
method onResume (line 397) | @Override
method onPause (line 405) | @Override
FILE: speechDemo/src/main/java/com/iflytek/voicedemo/IatDemo.java
class IatDemo (line 44) | public class IatDemo extends Activity implements OnClickListener {
method onCreate (line 62) | @SuppressLint("ShowToast")
method initLayout (line 87) | private void initLayout() {
method onClick (line 148) | @Override
method onInit (line 253) | @Override
method onLexiconUpdated (line 267) | @Override
method onBeginOfSpeech (line 282) | @Override
method onError (line 288) | @Override
method onEndOfSpeech (line 296) | @Override
method onResult (line 302) | @Override
method onVolumeChanged (line 312) | @Override
method onEvent (line 318) | @Override
method printResult (line 329) | private void printResult(RecognizerResult results) {
method onResult (line 356) | public void onResult(RecognizerResult results, boolean isLast) {
method onError (line 363) | public void onError(SpeechError error) {
method onContactQueryFinish (line 374) | @Override
method showTip (line 395) | private void showTip(final String str) {
method setParam (line 406) | public void setParam() {
method onDestroy (line 442) | @Override
method onResume (line 450) | @Override
method onPause (line 458) | @Override
FILE: speechDemo/src/main/java/com/iflytek/voicedemo/IseDemo.java
class IseDemo (line 30) | public class IseDemo extends Activity implements OnClickListener {
method onResult (line 55) | @Override
method onError (line 73) | @Override
method onBeginOfSpeech (line 85) | @Override
method onEndOfSpeech (line 91) | @Override
method onVolumeChanged (line 97) | @Override
method onEvent (line 103) | @Override
method onCreate (line 114) | @Override
method initUI (line 125) | private void initUI() {
method onClick (line 138) | @Override
method onActivityResult (line 189) | @Override
method onDestroy (line 198) | @Override
method setEvaText (line 209) | private void setEvaText() {
method showTip (line 238) | private void showTip(String str) {
method setParams (line 244) | private void setParams() {
method onResume (line 273) | @Override
method onPause (line 281) | @Override
FILE: speechDemo/src/main/java/com/iflytek/voicedemo/MainActivity.java
class MainActivity (line 19) | public class MainActivity extends Activity implements OnClickListener {
method onCreate (line 24) | @SuppressLint("ShowToast")
method onClick (line 35) | @Override
class SimpleAdapter (line 80) | private class SimpleAdapter extends BaseAdapter {
method getView (line 81) | public View getView(int position, View convertView, ViewGroup parent) {
method getCount (line 96) | @Override
method getItem (line 101) | @Override
method getItemId (line 106) | @Override
method showTip (line 112) | private void showTip(final String str) {
method onResume (line 117) | @Override
method onPause (line 125) | @Override
FILE: speechDemo/src/main/java/com/iflytek/voicedemo/SpeechApp.java
class SpeechApp (line 7) | public class SpeechApp extends Application {
method onCreate (line 9) | @Override
FILE: speechDemo/src/main/java/com/iflytek/voicedemo/TtsDemo.java
class TtsDemo (line 31) | public class TtsDemo extends Activity implements OnClickListener {
method onCreate (line 57) | @SuppressLint("ShowToast")
method initLayout (line 80) | private void initLayout() {
method onClick (line 115) | @Override
method showPresonSelectDialog (line 180) | private void showPresonSelectDialog() {
method onInit (line 219) | @Override
method onSpeakBegin (line 237) | @Override
method onSpeakPaused (line 242) | @Override
method onSpeakResumed (line 247) | @Override
method onBufferProgress (line 252) | @Override
method onSpeakProgress (line 261) | @Override
method onCompleted (line 269) | @Override
method onEvent (line 278) | @Override
method showTip (line 289) | private void showTip(final String str) {
method setParam (line 299) | private void setParam(){
method onDestroy (line 333) | @Override
method onResume (line 341) | @Override
method onPause (line 348) | @Override
FILE: speechDemo/src/main/java/com/iflytek/voicedemo/UnderstanderDemo.java
class UnderstanderDemo (line 29) | public class UnderstanderDemo extends Activity implements OnClickListener {
method onCreate (line 40) | @SuppressLint("ShowToast")
method initLayout (line 62) | private void initLayout(){
method onInit (line 80) | @Override
method onInit (line 94) | @Override
method onClick (line 105) | @Override
method onResult (line 165) | @Override
method onError (line 179) | @Override
method onResult (line 192) | @Override
method onVolumeChanged (line 207) | @Override
method onEndOfSpeech (line 213) | @Override
method onBeginOfSpeech (line 219) | @Override
method onError (line 225) | @Override
method onEvent (line 230) | @Override
method onDestroy (line 240) | @Override
method showTip (line 251) | private void showTip(final String str) {
method setParam (line 261) | public void setParam(){
method onResume (line 287) | @Override
method onPause (line 295) | @Override
FILE: vitamio-sample/gen/io/vov/vitamio/R.java
class R (line 9) | public final class R {
class color (line 10) | public static final class color {
class drawable (line 15) | public static final class drawable {
class id (line 30) | public static final class id {
class layout (line 37) | public static final class layout {
class string (line 40) | public static final class string {
class style (line 55) | public static final class style {
FILE: vitamio-sample/gen/io/vov/vitamio/demo/BuildConfig.java
class BuildConfig (line 4) | public final class BuildConfig {
FILE: vitamio-sample/gen/io/vov/vitamio/demo/R.java
class R (line 10) | public final class R {
class attr (line 11) | public static final class attr {
class color (line 13) | public static final class color {
class drawable (line 18) | public static final class drawable {
class id (line 37) | public static final class id {
class layout (line 61) | public static final class layout {
class raw (line 72) | public static final class raw {
class string (line 75) | public static final class string {
class style (line 106) | public static final class style {
FILE: vitamio-sample/src/io/vov/vitamio/demo/MediaMetadataRetrieverDemo.java
class MediaMetadataRetrieverDemo (line 27) | public class MediaMetadataRetrieverDemo extends Activity {
method onCreate (line 30) | @Override
FILE: vitamio-sample/src/io/vov/vitamio/demo/MediaPlayerDemo.java
class MediaPlayerDemo (line 26) | public class MediaPlayerDemo extends Activity {
method onCreate (line 41) | @Override
method onClick (line 59) | public void onClick(View v) {
method onClick (line 67) | public void onClick(View v) {
method onClick (line 76) | public void onClick(View v) {
method onClick (line 84) | public void onClick(View v) {
method onClick (line 93) | public void onClick(View v) {
FILE: vitamio-sample/src/io/vov/vitamio/demo/MediaPlayerDemo_Audio.java
class MediaPlayerDemo_Audio (line 32) | public class MediaPlayerDemo_Audio extends Activity {
method onCreate (line 46) | @Override
method playAudio (line 56) | private void playAudio(Integer media) {
method createMediaPlayer (line 92) | public MediaPlayer createMediaPlayer(Context context, int resid) {
method onDestroy (line 113) | @Override
FILE: vitamio-sample/src/io/vov/vitamio/demo/MediaPlayerDemo_Video.java
class MediaPlayerDemo_Video (line 36) | public class MediaPlayerDemo_Video extends Activity implements OnBufferi...
method onCreate (line 59) | @Override
method playVideo (line 72) | private void playVideo(Integer Media) {
method onBufferingUpdate (line 125) | public void onBufferingUpdate(MediaPlayer arg0, int percent) {
method onCompletion (line 130) | public void onCompletion(MediaPlayer arg0) {
method onVideoSizeChanged (line 134) | public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
method onPrepared (line 148) | public void onPrepared(MediaPlayer mediaplayer) {
method surfaceChanged (line 156) | public void surfaceChanged(SurfaceHolder surfaceholder, int i, int j, ...
method surfaceDestroyed (line 161) | public void surfaceDestroyed(SurfaceHolder surfaceholder) {
method surfaceCreated (line 165) | public void surfaceCreated(SurfaceHolder holder) {
method onPause (line 171) | @Override
method onDestroy (line 178) | @Override
method releaseMediaPlayer (line 185) | private void releaseMediaPlayer() {
method doCleanUp (line 192) | private void doCleanUp() {
method startVideoPlayback (line 199) | private void startVideoPlayback() {
FILE: vitamio-sample/src/io/vov/vitamio/demo/MediaPlayerDemo_setSurface.java
class MediaPlayerDemo_setSurface (line 37) | @SuppressLint("NewApi")
method onCreate (line 56) | @Override
method playVideo (line 66) | @SuppressLint("NewApi")
method onBufferingUpdate (line 99) | public void onBufferingUpdate(MediaPlayer arg0, int percent) {
method onCompletion (line 104) | public void onCompletion(MediaPlayer arg0) {
method onPrepared (line 108) | public void onPrepared(MediaPlayer mediaplayer) {
method onPause (line 116) | @Override
method onDestroy (line 123) | @Override
method releaseMediaPlayer (line 130) | private void releaseMediaPlayer() {
method doCleanUp (line 137) | private void doCleanUp() {
method startVideoPlayback (line 144) | private void startVideoPlayback() {
method adjustAspectRatio (line 153) | private void adjustAspectRatio(int videoWidth, int videoHeight) {
method onSurfaceTextureAvailable (line 181) | @Override
method onSurfaceTextureSizeChanged (line 186) | @Override
method onSurfaceTextureDestroyed (line 191) | @Override
method onSurfaceTextureUpdated (line 196) | @Override
FILE: vitamio-sample/src/io/vov/vitamio/demo/MediaPlayerSubtitle.java
class MediaPlayerSubtitle (line 36) | public class MediaPlayerSubtitle extends Activity implements Callback, O...
method onCreate (line 44) | @Override
method playVideo (line 56) | private void playVideo() {
method surfaceChanged (line 87) | @Override
method surfaceCreated (line 93) | @Override
method surfaceDestroyed (line 99) | @Override
method startVPback (line 105) | private void startVPback() {
method onPrepared (line 110) | @Override
method onPause (line 119) | @Override
method relaMediaPlay (line 126) | private void relaMediaPlay() {
method onDestroy (line 135) | @Override
method onTimedText (line 143) | @Override
method onTimedTextUpdate (line 149) | @Override
FILE: vitamio-sample/src/io/vov/vitamio/demo/VideoSubtitleList.java
class VideoSubtitleList (line 33) | public class VideoSubtitleList extends ListActivity {
method onCreate (line 35) | @Override
method getData (line 42) | protected List<Map<String, Object>> getData() {
method addItem (line 49) | protected void addItem(List<Map<String, Object>> data, String name, In...
method onListItemClick (line 56) | @Override
FILE: vitamio-sample/src/io/vov/vitamio/demo/VideoViewBuffer.java
class VideoViewBuffer (line 35) | public class VideoViewBuffer extends Activity implements OnInfoListener,...
method onCreate (line 47) | @Override
method onInfo (line 87) | @Override
method onBufferingUpdate (line 114) | @Override
FILE: vitamio-sample/src/io/vov/vitamio/demo/VideoViewDemo.java
class VideoViewDemo (line 30) | public class VideoViewDemo extends Activity {
method onCreate (line 40) | @Override
method playfunction (line 53) | void playfunction(){
FILE: vitamio-sample/src/io/vov/vitamio/demo/VideoViewSubtitle.java
class VideoViewSubtitle (line 30) | public class VideoViewSubtitle extends Activity {
method onCreate (line 39) | @Override
method onPause (line 86) | @Override
method onResume (line 93) | @Override
method changeLayout (line 103) | public void changeLayout(View view) {
FILE: vitamio-sample/src/io/vov/vitamio/demo/VitamioListActivity.java
class VitamioListActivity (line 38) | public class VitamioListActivity extends ListActivity {
method onCreate (line 40) | @Override
method getData (line 48) | protected List<Map<String, Object>> getData() {
method addItem (line 58) | protected void addItem(List<Map<String, Object>> data, String name, In...
method onListItemClick (line 65) | @SuppressWarnings("unchecked")
method onResume (line 73) | @Override
method onPause (line 79) | @Override
FILE: vitamio/gen/io/vov/vitamio/BuildConfig.java
class BuildConfig (line 4) | public final class BuildConfig {
FILE: vitamio/gen/io/vov/vitamio/R.java
class R (line 10) | public final class R {
class attr (line 11) | public static final class attr {
class color (line 13) | public static final class color {
class drawable (line 18) | public static final class drawable {
class id (line 33) | public static final class id {
class layout (line 40) | public static final class layout {
class string (line 43) | public static final class string {
class style (line 58) | public static final class style {
FILE: vitamio/src/io/vov/vitamio/EGL.java
class EGL (line 33) | public class EGL {
method EGL (line 43) | public EGL() {
method initialize (line 49) | public boolean initialize(Surface surface) {
method release (line 54) | public void release() {
method start (line 59) | public void start() {
method createSurface (line 82) | public GL createSurface(Surface surface) {
method swap (line 115) | public boolean swap() {
method destroySurface (line 134) | public void destroySurface() {
method finish (line 142) | public void finish() {
method throwEglException (line 153) | private void throwEglException(String function) {
method throwEglException (line 157) | private void throwEglException(String function, int error) {
class EGLWindowSurfaceFactory (line 163) | private static class EGLWindowSurfaceFactory {
method createWindowSurface (line 165) | public EGLSurface createWindowSurface(EGL10 egl, EGLDisplay display,...
method destroySurface (line 169) | public void destroySurface(EGL10 egl, EGLDisplay display, EGLSurface...
class EGLContextFactory (line 174) | private class EGLContextFactory {
method createContext (line 177) | public EGLContext createContext(EGL10 egl, EGLDisplay display, EGLCo...
method destroyContext (line 183) | public void destroyContext(EGL10 egl, EGLDisplay display, EGLContext...
class EGLConfigChooser (line 191) | private abstract class EGLConfigChooser {
method EGLConfigChooser (line 194) | public EGLConfigChooser(int[] configSpec) {
method chooseConfig (line 198) | public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) {
method chooseConfig (line 221) | abstract EGLConfig chooseConfig(EGL10 egl, EGLDisplay display, EGLCo...
method filterConfigSpec (line 223) | private int[] filterConfigSpec(int[] configSpec) {
class ComponentSizeChooser (line 234) | private class ComponentSizeChooser extends EGLConfigChooser {
method ComponentSizeChooser (line 243) | public ComponentSizeChooser(int redSize, int greenSize, int blueSize...
method chooseConfig (line 254) | @Override
method findConfigAttrib (line 272) | private int findConfigAttrib(EGL10 egl, EGLDisplay display, EGLConfi...
class SimpleEGLConfigChooser (line 281) | private class SimpleEGLConfigChooser extends ComponentSizeChooser {
Condensed preview — 817 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,502K chars).
[
{
"path": ".gitignore",
"chars": 48,
"preview": ".gradle\n.idea\nbuild\n*.iml\n/local.properties\n/bin"
},
{
"path": "AgoraDemo/.gitignore",
"chars": 7,
"preview": "/build\n"
},
{
"path": "AgoraDemo/build.gradle",
"chars": 881,
"preview": "apply plugin: 'com.android.application'\n\nandroid {\n compileSdkVersion 21\n buildToolsVersion \"23.0.2\"\n\n defaultC"
},
{
"path": "AgoraDemo/proguard-rules.pro",
"chars": 663,
"preview": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in /U"
},
{
"path": "AgoraDemo/src/androidTest/java/io/agora/demo/agora/ApplicationTest.java",
"chars": 350,
"preview": "package io.agora.demo.agora;\n\nimport android.app.Application;\nimport android.test.ApplicationTestCase;\n\n/**\n * <a href=\""
},
{
"path": "AgoraDemo/src/main/AndroidManifest.xml",
"chars": 2056,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package="
},
{
"path": "AgoraDemo/src/main/java/io/agora/demo/agora/AgoraApplication.java",
"chars": 1074,
"preview": "package io.agora.demo.agora;\n\nimport android.app.Application;\nimport android.content.Context;\nimport android.util.Log;\n\n"
},
{
"path": "AgoraDemo/src/main/java/io/agora/demo/agora/BaseActivity.java",
"chars": 1417,
"preview": "package io.agora.demo.agora;\n\nimport android.os.Bundle;\nimport android.os.PersistableBundle;\nimport android.support.v4.a"
},
{
"path": "AgoraDemo/src/main/java/io/agora/demo/agora/BaseEngineEventHandlerActivity.java",
"chars": 2053,
"preview": "package io.agora.demo.agora;\n\nimport io.agora.rtc.IRtcEngineEventHandler;\n\n/**\n *\n * A handler activity act as a bridge "
},
{
"path": "AgoraDemo/src/main/java/io/agora/demo/agora/ChannelActivity.java",
"chars": 24871,
"preview": "package io.agora.demo.agora;\n\nimport android.app.AlertDialog;\nimport android.content.DialogInterface;\nimport android.con"
},
{
"path": "AgoraDemo/src/main/java/io/agora/demo/agora/EntryActivity.java",
"chars": 1075,
"preview": "package io.agora.demo.agora;\n\nimport android.content.Intent;\nimport android.content.res.Configuration;\nimport android.os"
},
{
"path": "AgoraDemo/src/main/java/io/agora/demo/agora/LoginActivity.java",
"chars": 6406,
"preview": "package io.agora.demo.agora;\n\nimport android.content.Context;\nimport android.content.Intent;\nimport android.content.res."
},
{
"path": "AgoraDemo/src/main/java/io/agora/demo/agora/MessageHandler.java",
"chars": 2166,
"preview": "package io.agora.demo.agora;\n\nimport io.agora.rtc.IRtcEngineEventHandler;\n\n/**\n * Created by apple on 15/9/10.\n */\npubli"
},
{
"path": "AgoraDemo/src/main/java/io/agora/demo/agora/util/LoggingUtils.java",
"chars": 1195,
"preview": "/*-\n * Authors : harry \n *\n * Created Date : Jun 13, 2013\n * \n * Beauty Bond Inc. All rights reserved.\n *\n */\n\npa"
},
{
"path": "AgoraDemo/src/main/java/io/agora/demo/agora/util/NetworkConnectivityUtils.java",
"chars": 2295,
"preview": "/**\n * Created by harry on Nov 24, 2011 Copyright : FOCUSONE Inc. All Rights\n * Reserved.\n */\n\npackage io.agora.demo.ago"
},
{
"path": "AgoraDemo/src/main/res/drawable-xhdpi/button_selector_hung_up.xml",
"chars": 320,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!--扬声器-->\n\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\""
},
{
"path": "AgoraDemo/src/main/res/drawable-xhdpi/go_micro_button_background.xml",
"chars": 309,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <item a"
},
{
"path": "AgoraDemo/src/main/res/drawable-xhdpi/go_video_button_background.xml",
"chars": 305,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <item a"
},
{
"path": "AgoraDemo/src/main/res/drawable-xhdpi/room_leave_button_background.xml",
"chars": 307,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <item a"
},
{
"path": "AgoraDemo/src/main/res/drawable-xhdpi/shape_theme.xml",
"chars": 182,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\" android:shape=\""
},
{
"path": "AgoraDemo/src/main/res/drawable-xhdpi/shape_transparent.xml",
"chars": 185,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:sha"
},
{
"path": "AgoraDemo/src/main/res/layout/actionbar.xml",
"chars": 466,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n an"
},
{
"path": "AgoraDemo/src/main/res/layout/activity_entry.xml",
"chars": 470,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n an"
},
{
"path": "AgoraDemo/src/main/res/layout/activity_login.xml",
"chars": 6890,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n an"
},
{
"path": "AgoraDemo/src/main/res/layout/activity_room.xml",
"chars": 12403,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n an"
},
{
"path": "AgoraDemo/src/main/res/layout/viewlet_remote_user.xml",
"chars": 1422,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n an"
},
{
"path": "AgoraDemo/src/main/res/menu/menu_main.xml",
"chars": 378,
"preview": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:app=\"http://schemas.android.com/apk/res-auto\""
},
{
"path": "AgoraDemo/src/main/res/values/color.xml",
"chars": 279,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\n <color name=\"transparent\">#00000000</color>\n <color name=\"whi"
},
{
"path": "AgoraDemo/src/main/res/values/strings.xml",
"chars": 1191,
"preview": "<resources>\n\n <string name=\"app_name\">AgoraDemo</string>\n <string name=\"app_conf\">AgoraDemo</string>\n\n <string "
},
{
"path": "AgoraDemo/src/main/res/values/styles.xml",
"chars": 961,
"preview": "<resources>\n\n <!--\n Base application theme, dependent on API level. This theme is replaced\n by AppBaseT"
},
{
"path": "AgoraDemo/src/main/res/values-zh/strings.xml",
"chars": 1011,
"preview": "<resources>\n\n <string name=\"app_name\">AgoraDemo</string>\n <string name=\"app_conf\">Agora会议室</string>\n\n <string n"
},
{
"path": "Android-MaterialRefreshLayout-master/.gitignore",
"chars": 13,
"preview": "/build\n/bin\n\n"
},
{
"path": "Android-MaterialRefreshLayout-master/build.gradle",
"chars": 763,
"preview": "apply plugin: 'com.android.application'\n\nandroid {\n compileSdkVersion 23\n buildToolsVersion \"23.0.2\"\n\n defaultC"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/AndroidManifest.xml",
"chars": 1011,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package="
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/AutoRefreshActivity.java",
"chars": 1986,
"preview": "package com.cjj.android_materialrefreshlayout;\n\nimport android.os.Bundle;\nimport android.widget.ListView;\nimport android"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/BaseActivity.java",
"chars": 1592,
"preview": "package com.cjj.android_materialrefreshlayout;\n\n\nimport android.os.Build;\nimport android.os.Bundle;\nimport android.suppo"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/LoadMoreActivity.java",
"chars": 6437,
"preview": "package com.cjj.android_materialrefreshlayout;\n\nimport android.content.Context;\nimport android.support.annotation.Nullab"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/OverLayActivity.java",
"chars": 1692,
"preview": "package com.cjj.android_materialrefreshlayout;\n\nimport android.os.Bundle;\nimport android.widget.ListView;\nimport android"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/ScrollViewActivity.java",
"chars": 2320,
"preview": "package com.cjj.android_materialrefreshlayout;\n\nimport android.content.Intent;\nimport android.os.Bundle;\nimport android."
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/SimpleActivity.java",
"chars": 4097,
"preview": "package com.cjj.android_materialrefreshlayout;\n\nimport android.content.Context;\nimport android.os.Bundle;\nimport android"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/SunActivity.java",
"chars": 1634,
"preview": "package com.cjj.android_materialrefreshlayout;\n\nimport android.os.Bundle;\nimport android.widget.ListView;\nimport android"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/SwipeRefreshLayoutActivity.java",
"chars": 142,
"preview": "package com.cjj.android_materialrefreshlayout;\n\n/**\n * Created by Administrator on 2015/9/10.\n */\npublic class SwipeRefr"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/java/com/cjj/android_materialrefreshlayout/WaveActivity.java",
"chars": 4247,
"preview": "package com.cjj.android_materialrefreshlayout;\n\nimport android.content.Context;\nimport android.graphics.Color;\nimport an"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/res/layout/activity_base.xml",
"chars": 328,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/res/layout/activity_listview.xml",
"chars": 758,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<com.cjj.MaterialRefreshLayout\n xmlns:android=\"http://schemas.android.com/apk/"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/res/layout/activity_main.xml",
"chars": 621,
"preview": "<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:tools=\"http://schemas.android.com/t"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/res/layout/activity_scrollview.xml",
"chars": 3776,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<com.cjj.MaterialRefreshLayout\n xmlns:android=\"http://schemas.android.com/apk/"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/res/layout/activity_simple.xml",
"chars": 1397,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n ~ Copyright (C) 2015 The Android Open Source Project\n ~\n ~ Licensed under"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/res/layout/fragment_list.xml",
"chars": 1442,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--\n ~ Copyright (C) 2015 The Android Open Source Project\n ~\n ~ Licensed under"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/res/layout/list_item.xml",
"chars": 1176,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n ~ Copyright (C) 2015 The Android Open Source Project\n ~\n ~ Licensed unde"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/res/layout/toolbar_layout.xml",
"chars": 828,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<android.support.v7.widget.Toolbar xmlns:android=\"http://schemas.android.com/apk/"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/res/menu/menu_main.xml",
"chars": 766,
"preview": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:app=\"http://schemas.android.com/apk/res-auto\""
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/res/values/colors.xml",
"chars": 111,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"primary_color\">#ff2020</color>\n</resources>"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/res/values/dimens.xml",
"chars": 261,
"preview": "<resources>\n <!-- Default screen margins, per the Android Design guidelines. -->\n <dimen name=\"activity_horizontal"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/res/values/strings.xml",
"chars": 383,
"preview": "<resources>\n <string name=\"app_name\">MaterialRefreshLayout</string>\n\n <string name=\"hello_world\">Hello world!</str"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/res/values/styles.xml",
"chars": 299,
"preview": "<resources>\n\n <!-- Base application theme. -->\n <style name=\"BaseTheme\" parent=\"Theme.AppCompat.Light.NoActionBar\""
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/res/values-v19/dimens.xml",
"chars": 114,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <dimen name=\"toolbar_padding_top\">25dp</dimen>\n</resources>"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/res/values-v19/styles.xml",
"chars": 333,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <!-- Base application theme. -->\n <style name=\"CJJTheme\" paren"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/res/values-v21/styles.xml",
"chars": 187,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <style name=\"CJJTheme\" parent=\"BaseTheme\">\n <item name=\"an"
},
{
"path": "Android-MaterialRefreshLayout-master/src/main/res/values-w820dp/dimens.xml",
"chars": 358,
"preview": "<resources>\n <!-- Example customization of dimensions originally defined in res/values/dimens.xml\n (such as s"
},
{
"path": "Android应用源码音乐实时跳动频谱显示Demo/build.gradle",
"chars": 410,
"preview": "apply plugin: 'com.android.application'\n\nandroid {\n compileSdkVersion 22\n buildToolsVersion \"23.0.2\"\n\n defaultC"
},
{
"path": "Android应用源码音乐实时跳动频谱显示Demo/src/main/AndroidManifest.xml",
"chars": 798,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package="
},
{
"path": "Android应用源码音乐实时跳动频谱显示Demo/src/main/java/com/terry/AudioFx/AudioFxActivity.java",
"chars": 1633,
"preview": "package com.terry.AudioFx;\n\nimport android.app.Activity;\nimport android.media.AudioManager;\nimport android.media.MediaPl"
},
{
"path": "Android应用源码音乐实时跳动频谱显示Demo/src/main/java/com/terry/AudioFx/BaseVisualizerView.java",
"chars": 5011,
"preview": "package com.terry.AudioFx;\n\nimport android.content.Context;\nimport android.graphics.Canvas;\nimport android.graphics.Colo"
},
{
"path": "Android应用源码音乐实时跳动频谱显示Demo/src/main/res/layout/main.xml",
"chars": 419,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "Android应用源码音乐实时跳动频谱显示Demo/src/main/res/values/strings.xml",
"chars": 177,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <string name=\"hello\">Hello World, AudioFxActivity!</string>\n <"
},
{
"path": "EventBus/.gitignore",
"chars": 7,
"preview": "/build\n"
},
{
"path": "EventBus/build.gradle",
"chars": 4423,
"preview": "apply plugin: 'java'\napply plugin: 'maven'\napply plugin: 'signing'\napply plugin: 'idea'\n\narchivesBaseName = 'eventbus'\ng"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/AsyncPoster.java",
"chars": 1491,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/BackgroundPoster.java",
"chars": 2380,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/EventBus.java",
"chars": 22586,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/EventBusBuilder.java",
"chars": 6385,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/EventBusException.java",
"chars": 1230,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/HandlerPoster.java",
"chars": 2940,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/NoSubscriberEvent.java",
"chars": 1229,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/PendingPost.java",
"chars": 1998,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/PendingPostQueue.java",
"chars": 1692,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/Subscribe.java",
"chars": 1660,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/SubscriberExceptionEvent.java",
"chars": 1592,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/SubscriberMethod.java",
"chars": 2457,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/SubscriberMethodFinder.java",
"chars": 11739,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/Subscription.java",
"chars": 1725,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/ThreadMode.java",
"chars": 2844,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/meta/AbstractSubscriberInfo.java",
"chars": 3132,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/meta/SimpleSubscriberInfo.java",
"chars": 1698,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/meta/SubscriberInfo.java",
"chars": 1018,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/meta/SubscriberInfoIndex.java",
"chars": 834,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/meta/SubscriberMethodInfo.java",
"chars": 1559,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/util/AsyncExecutor.java",
"chars": 4460,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/util/ErrorDialogConfig.java",
"chars": 2702,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/util/ErrorDialogFragmentFactory.java",
"chars": 4547,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/util/ErrorDialogFragments.java",
"chars": 3595,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/util/ErrorDialogManager.java",
"chars": 11188,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/util/ExceptionToResourceMapping.java",
"chars": 3178,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/util/HasExecutionScope.java",
"chars": 810,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus/src/org/greenrobot/eventbus/util/ThrowableFailureEvent.java",
"chars": 1837,
"preview": "/*\n * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)\n *\n * Licensed under the Apache Licen"
},
{
"path": "EventBus3.0_Sample/.gitignore",
"chars": 7,
"preview": "/build\n"
},
{
"path": "EventBus3.0_Sample/build.gradle",
"chars": 519,
"preview": "apply plugin: 'com.android.application'\n\nandroid {\n compileSdkVersion 23\n buildToolsVersion \"23.0.3\"\n\n defaultC"
},
{
"path": "EventBus3.0_Sample/src/main/AndroidManifest.xml",
"chars": 981,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package="
},
{
"path": "EventBus3.0_Sample/src/main/java/com/harvic/other/FirstEvent.java",
"chars": 213,
"preview": "package com.harvic.other;\n\npublic class FirstEvent {\n\n\tprivate String mMsg;\n\tpublic FirstEvent(String msg) {\n\t\t// TODO A"
},
{
"path": "EventBus3.0_Sample/src/main/java/com/harvic/other/SecondEvent.java",
"chars": 219,
"preview": "package com.harvic.other;\n\npublic class SecondEvent{\n\n\tprivate String mMsg;\n\tpublic SecondEvent(String msg) {\n\t\t// TODO "
},
{
"path": "EventBus3.0_Sample/src/main/java/com/harvic/other/ThirdEvent.java",
"chars": 213,
"preview": "package com.harvic.other;\n\npublic class ThirdEvent {\n\n\tprivate String mMsg;\n\tpublic ThirdEvent(String msg) {\n\t\t// TODO A"
},
{
"path": "EventBus3.0_Sample/src/main/java/com/harvic/tryeventbus2/MainActivity.java",
"chars": 2642,
"preview": "package com.harvic.tryeventbus2;\n\nimport android.app.Activity;\nimport android.content.Intent;\nimport android.os.Bundle;\n"
},
{
"path": "EventBus3.0_Sample/src/main/java/com/harvic/tryeventbus2/SecondActivity.java",
"chars": 1363,
"preview": "package com.harvic.tryeventbus2;\n\nimport android.app.Activity;\nimport android.os.Bundle;\nimport android.view.View;\nimpor"
},
{
"path": "EventBus3.0_Sample/src/main/res/layout/activity_main.xml",
"chars": 597,
"preview": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:tools=\"http://schemas.android.com/too"
},
{
"path": "EventBus3.0_Sample/src/main/res/layout/activity_second.xml",
"chars": 858,
"preview": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:tools=\"http://schemas.android.com/too"
},
{
"path": "EventBus3.0_Sample/src/main/res/menu/main.xml",
"chars": 362,
"preview": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:tools=\"http://schemas.android.com/tools\"\n "
},
{
"path": "EventBus3.0_Sample/src/main/res/menu/second.xml",
"chars": 364,
"preview": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:tools=\"http://schemas.android.com/tools\"\n "
},
{
"path": "EventBus3.0_Sample/src/main/res/values/dimens.xml",
"chars": 213,
"preview": "<resources>\n\n <!-- Default screen margins, per the Android Design guidelines. -->\n <dimen name=\"activity_horizonta"
},
{
"path": "EventBus3.0_Sample/src/main/res/values/strings.xml",
"chars": 287,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\n <string name=\"app_name\">TryEventBus2</string>\n <string name=\""
},
{
"path": "EventBus3.0_Sample/src/main/res/values/styles.xml",
"chars": 680,
"preview": "<resources>\n\n <!--\n Base application theme, dependent on API level. This theme is replaced\n by AppBaseT"
},
{
"path": "EventBus3.0_Sample/src/main/res/values-v11/styles.xml",
"chars": 324,
"preview": "<resources>\n\n <!--\n Base application theme for API 11+. This theme completely replaces\n AppBaseTheme fr"
},
{
"path": "EventBus3.0_Sample/src/main/res/values-v14/styles.xml",
"chars": 381,
"preview": "<resources>\n\n <!--\n Base application theme for API 14+. This theme completely replaces\n AppBaseTheme fr"
},
{
"path": "EventBus3.0_Sample/src/main/res/values-w820dp/dimens.xml",
"chars": 373,
"preview": "<resources>\n\n <!--\n Example customization of dimensions originally defined in res/values/dimens.xml\n "
},
{
"path": "JieCaoVideoPlayer-develop/.gitignore",
"chars": 7,
"preview": "/build\n"
},
{
"path": "JieCaoVideoPlayer-develop/build.gradle",
"chars": 1231,
"preview": "apply plugin: 'com.android.application'\n\nandroid {\n compileSdkVersion 24\n buildToolsVersion '24.0.3'\n\n defaultC"
},
{
"path": "JieCaoVideoPlayer-develop/proguard-rules.pro",
"chars": 672,
"preview": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in /U"
},
{
"path": "JieCaoVideoPlayer-develop/src/androidTest/java/fm/jiecao/jiecaovideoplayer/ApplicationTest.java",
"chars": 359,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\nimport android.app.Application;\nimport android.test.ApplicationTestCase;\n\n/**\n * <"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/AndroidManifest.xml",
"chars": 3582,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package="
},
{
"path": "JieCaoVideoPlayer-develop/src/main/assets/jcvd.html",
"chars": 691,
"preview": "<!DOCTYPE html>\n<html>\n<body>\n<div class=\"content\"></div>\n<div id=\"cont\" style=\"width:100%;height:200px\">\n</div>\n<div st"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/AutoTinyActivity.java",
"chars": 1757,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\nimport android.content.Intent;\nimport android.os.Bundle;\nimport android.support.an"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/AutoTinyListActivity.java",
"chars": 2074,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\nimport android.os.Bundle;\nimport android.support.annotation.Nullable;\nimport andro"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/AutoTinyNormalActivity.java",
"chars": 3339,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\nimport android.os.Bundle;\nimport android.support.annotation.Nullable;\nimport andro"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/CustomView/JCVideoPlayerStandardAutoComplete.java",
"chars": 763,
"preview": "package fm.jiecao.jiecaovideoplayer.CustomView;\n\nimport android.content.Context;\nimport android.util.AttributeSet;\n\nimpo"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/CustomView/JCVideoPlayerStandardFresco.java",
"chars": 24925,
"preview": "package fm.jiecao.jiecaovideoplayer.CustomView;\n\nimport android.app.Activity;\nimport android.app.AlertDialog;\nimport and"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/CustomView/JCVideoPlayerStandardShowShareButtonAfterFullscreen.java",
"chars": 1683,
"preview": "package fm.jiecao.jiecaovideoplayer.CustomView;\n\nimport android.content.Context;\nimport android.util.AttributeSet;\nimpor"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/CustomView/JCVideoPlayerStandardShowTextureViewAfterAutoComplete.java",
"chars": 1047,
"preview": "package fm.jiecao.jiecaovideoplayer.CustomView;\n\nimport android.content.Context;\nimport android.util.AttributeSet;\nimpor"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/CustomView/JCVideoPlayerStandardShowTitleAfterFullscreen.java",
"chars": 999,
"preview": "package fm.jiecao.jiecaovideoplayer.CustomView;\n\nimport android.content.Context;\nimport android.util.AttributeSet;\nimpor"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/DemoApplication.java",
"chars": 2507,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\nimport android.app.Application;\nimport android.graphics.Bitmap;\nimport android.gra"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/ListViewActivity.java",
"chars": 2428,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\nimport android.content.Intent;\nimport android.os.Bundle;\nimport android.support.an"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/ListViewMultiHolderActivity.java",
"chars": 5019,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\nimport android.content.Context;\nimport android.os.Bundle;\nimport android.support.v"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/ListViewNormalActivity.java",
"chars": 2316,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\nimport android.hardware.Sensor;\nimport android.hardware.SensorManager;\nimport andr"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/ListViewViewpagerActivity.java",
"chars": 3605,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\nimport android.os.Bundle;\nimport android.support.v4.view.PagerAdapter;\nimport andr"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/MainActivity.java",
"chars": 8671,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\nimport android.content.Intent;\nimport android.hardware.Sensor;\nimport android.hard"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/PlayDirectlyActivity.java",
"chars": 2376,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\nimport android.os.Bundle;\nimport android.support.annotation.Nullable;\nimport andro"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/RecyclerViewNormalActivity.java",
"chars": 2682,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\nimport android.os.Bundle;\nimport android.support.annotation.Nullable;\nimport andro"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/RecyclerViewVideoAdapter.java",
"chars": 1939,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\nimport android.content.Context;\nimport android.support.v7.widget.RecyclerView;\nimp"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/UIActivity.java",
"chars": 2185,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\nimport android.content.Intent;\nimport android.os.Bundle;\nimport android.support.an"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/UIBigChangeActivity.java",
"chars": 1377,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\nimport android.os.Bundle;\nimport android.support.annotation.Nullable;\nimport andro"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/UIImageLoaderActivity.java",
"chars": 5547,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\nimport android.graphics.Bitmap;\nimport android.net.Uri;\nimport android.os.Bundle;\n"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/UISmallChangeActivity.java",
"chars": 4421,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\nimport android.os.Bundle;\nimport android.support.annotation.Nullable;\nimport andro"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/VideoConstant.java",
"chars": 2161,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\n/**\n * Created by shengjun on 16/9/10.\n */\npublic class VideoConstant {\n\n publi"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/VideoListAdapter.java",
"chars": 2046,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\nimport android.content.Context;\nimport android.util.Log;\nimport android.view.Layou"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/java/fm/jiecao/jiecaovideoplayer/WebViewActivity.java",
"chars": 3386,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\nimport android.os.Bundle;\nimport android.support.annotation.Nullable;\nimport andro"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/drawable/share_selector.xml",
"chars": 340,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <item a"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/drawable/skin_seek_progress.xml",
"chars": 927,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <item"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/layout/activity_auto_tiny.xml",
"chars": 745,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/layout/activity_auto_tiny_list.xml",
"chars": 245,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/layout/activity_directly_play.xml",
"chars": 738,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/layout/activity_listview.xml",
"chars": 1231,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/layout/activity_listview_content.xml",
"chars": 422,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/layout/activity_listview_viewpager.xml",
"chars": 412,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/layout/activity_loadimage.xml",
"chars": 3210,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/layout/activity_main.xml",
"chars": 3665,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/layout/activity_recyclerview_content.xml",
"chars": 456,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/layout/activity_ui.xml",
"chars": 976,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/layout/activity_ui_big_change.xml",
"chars": 245,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/layout/activity_ui_small_change.xml",
"chars": 2924,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/layout/activity_webview.xml",
"chars": 385,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/layout/header_auto_tiny_normal.xml",
"chars": 421,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/layout/item_textview.xml",
"chars": 533,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/layout/item_videoview.xml",
"chars": 425,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/layout/layout_list.xml",
"chars": 253,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ListView xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/layout/layout_standard_fresco.xml",
"chars": 5544,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n an"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/layout/layout_standard_with_share_button.xml",
"chars": 6076,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n an"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/values/colors.xml",
"chars": 254,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"colorPrimary\">#3F51B5</color>\n <color name=\"color"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/values/dimens.xml",
"chars": 211,
"preview": "<resources>\n <!-- Default screen margins, per the Android Design guidelines. -->\n <dimen name=\"activity_horizontal"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/values/strings.xml",
"chars": 127,
"preview": "<resources>\n <string name=\"app_name\">JCVD</string>\n <string name=\"app_name_full\">JieCaoVideoPlayer</string>\n</reso"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/values/styles.xml",
"chars": 383,
"preview": "<resources>\n\n <!-- Base application theme. -->\n <style name=\"AppTheme\" parent=\"Theme.AppCompat.Light.DarkActionBar"
},
{
"path": "JieCaoVideoPlayer-develop/src/main/res/values-w820dp/dimens.xml",
"chars": 358,
"preview": "<resources>\n <!-- Example customization of dimensions originally defined in res/values/dimens.xml\n (such as s"
},
{
"path": "JieCaoVideoPlayer-develop/src/test/java/fm/jiecao/jiecaovideoplayer/ExampleUnitTest.java",
"chars": 332,
"preview": "package fm.jiecao.jiecaovideoplayer;\n\nimport org.junit.Test;\n\nimport static org.junit.Assert.assertEquals;\n\n/**\n * To wo"
},
{
"path": "MaterialRefresh_library/.gitignore",
"chars": 13,
"preview": "/build\n/bin\n\n"
},
{
"path": "MaterialRefresh_library/build.gradle",
"chars": 691,
"preview": "apply plugin: 'com.android.library'\n\nandroid {\n compileSdkVersion 23\n buildToolsVersion \"23.0.2\"\n resourcePrefi"
},
{
"path": "MaterialRefresh_library/src/main/AndroidManifest.xml",
"chars": 89,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" package=\"com.cjj\"/>\n"
},
{
"path": "MaterialRefresh_library/src/main/java/com/cjj/CircleProgressBar.java",
"chars": 15591,
"preview": "/*\n * Copyright (C) 2014 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "MaterialRefresh_library/src/main/java/com/cjj/MaterialFoodView.java",
"chars": 5967,
"preview": "package com.cjj;\n\nimport android.animation.AnimatorSet;\nimport android.animation.ObjectAnimator;\nimport android.content."
},
{
"path": "MaterialRefresh_library/src/main/java/com/cjj/MaterialFooterView.java",
"chars": 6416,
"preview": "package com.cjj;\n\nimport android.content.Context;\nimport android.support.v4.view.ViewCompat;\nimport android.util.Attribu"
},
{
"path": "MaterialRefresh_library/src/main/java/com/cjj/MaterialHeadListener.java",
"chars": 1005,
"preview": "package com.cjj;\n/*\n* Copyright (C) 2015 Pedro Paulo de Amorim\n*\n* Licensed under the Apache License, Version 2.0 (the \""
},
{
"path": "MaterialRefresh_library/src/main/java/com/cjj/MaterialHeadView.java",
"chars": 6302,
"preview": "package com.cjj;\n\nimport android.animation.AnimatorSet;\nimport android.animation.ObjectAnimator;\nimport android.content."
},
{
"path": "MaterialRefresh_library/src/main/java/com/cjj/MaterialHeaderView.java",
"chars": 6788,
"preview": "package com.cjj;\n\nimport android.content.Context;\nimport android.support.v4.view.ViewCompat;\nimport android.util.Attribu"
},
{
"path": "MaterialRefresh_library/src/main/java/com/cjj/MaterialProgressDrawable.java",
"chars": 24258,
"preview": "/*\n * Copyright (C) 2014 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "MaterialRefresh_library/src/main/java/com/cjj/MaterialRefreshLayout.java",
"chars": 21374,
"preview": "package com.cjj;\n\nimport android.content.Context;\nimport android.content.res.TypedArray;\nimport android.graphics.Color;\n"
},
{
"path": "MaterialRefresh_library/src/main/java/com/cjj/MaterialRefreshListener.java",
"chars": 261,
"preview": "package com.cjj;\n\npublic abstract class MaterialRefreshListener {\n public void onfinish(){};\n public abstract void"
},
{
"path": "MaterialRefresh_library/src/main/java/com/cjj/MaterialWaveView.java",
"chars": 4212,
"preview": "package com.cjj;\n\nimport android.animation.ValueAnimator;\nimport android.content.Context;\nimport android.graphics.Canvas"
},
{
"path": "MaterialRefresh_library/src/main/java/com/cjj/SunFaceView.java",
"chars": 5595,
"preview": "package com.cjj;\n\nimport android.content.Context;\nimport android.graphics.Canvas;\nimport android.graphics.Color;\nimport "
},
{
"path": "MaterialRefresh_library/src/main/java/com/cjj/SunLayout.java",
"chars": 5953,
"preview": "package com.cjj;\n\nimport android.animation.ObjectAnimator;\nimport android.animation.ValueAnimator;\nimport android.conten"
},
{
"path": "MaterialRefresh_library/src/main/java/com/cjj/SunLineView.java",
"chars": 5208,
"preview": "package com.cjj;\n\nimport android.content.Context;\nimport android.graphics.Canvas;\nimport android.graphics.Color;\nimport "
},
{
"path": "MaterialRefresh_library/src/main/java/com/cjj/Util.java",
"chars": 746,
"preview": "package com.cjj;\n\nimport android.content.Context;\n\npublic class Util {\n\n public static int dip2px(Context context, fl"
},
{
"path": "MaterialRefresh_library/src/main/res/values/attrs.xml",
"chars": 1651,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <!-- style for MaterialRefreshLayout -->\n <declare-styleable "
},
{
"path": "MaterialRefresh_library/src/main/res/values/attrs_circle_progressbar.xml",
"chars": 1114,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <declare-styleable name=\"CircleProgressBar\">\n <attr name=\""
},
{
"path": "MaterialRefresh_library/src/main/res/values/colors.xml",
"chars": 265,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"material_red\">#ffF44336</color>\n <color name=\"mat"
},
{
"path": "MaterialRefresh_library/src/main/res/values/strings.xml",
"chars": 312,
"preview": "<resources>\n <string name=\"app_name\">BRLayoutLibrary</string>\n <integer-array name=\"material_colors\">\n <ite"
},
{
"path": "PhotoView-master/build.gradle",
"chars": 563,
"preview": "apply plugin: 'com.android.application'\n\nandroid {\n compileSdkVersion 24\n buildToolsVersion '24.0.3'\n\n defaultC"
},
{
"path": "PhotoView-master/src/main/AndroidManifest.xml",
"chars": 1154,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package=\"uk.co.senab.photoview.sample\">\n\n"
},
{
"path": "PhotoView-master/src/main/java/uk/co/senab/photoview/sample/ActivityTransitionActivity.java",
"chars": 2347,
"preview": "/*******************************************************************************\n * Copyright 2011, 2012 Chris Banes.\n *"
},
{
"path": "PhotoView-master/src/main/java/uk/co/senab/photoview/sample/ActivityTransitionToActivity.java",
"chars": 466,
"preview": "package uk.co.senab.photoview.sample;\n\nimport android.os.Bundle;\nimport android.support.annotation.Nullable;\nimport andr"
},
{
"path": "PhotoView-master/src/main/java/uk/co/senab/photoview/sample/HackyDrawerLayout.java",
"chars": 1019,
"preview": "package uk.co.senab.photoview.sample;\n\nimport android.content.Context;\nimport android.support.v4.widget.DrawerLayout;\nim"
},
{
"path": "PhotoView-master/src/main/java/uk/co/senab/photoview/sample/HackyViewPager.java",
"chars": 1093,
"preview": "package uk.co.senab.photoview.sample;\n\nimport android.content.Context;\nimport android.support.v4.view.ViewPager;\nimport "
},
{
"path": "PhotoView-master/src/main/java/uk/co/senab/photoview/sample/ImageAdapter.java",
"chars": 1001,
"preview": "package uk.co.senab.photoview.sample;\n\nimport android.support.v7.widget.RecyclerView;\nimport android.view.View;\nimport a"
},
{
"path": "PhotoView-master/src/main/java/uk/co/senab/photoview/sample/ImageViewHolder.java",
"chars": 788,
"preview": "package uk.co.senab.photoview.sample;\n\nimport android.support.v7.widget.RecyclerView;\nimport android.view.LayoutInflater"
}
]
// ... and 617 more files (download for full content)
About this extraction
This page contains the full source code of the yangguangfu520/MobilePlayer1020 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 817 files (2.2 MB), approximately 614.2k tokens, and a symbol index with 4537 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.