├── .classpath
├── .project
├── Android.mk
├── AndroidManifest.xml
├── CleanSpec.mk
├── LICENSE-GPLv3
├── README
├── default.properties
├── libs
└── libGoogleAnalytics.jar
├── res
├── drawable-finger
│ ├── appwidget_bg.9.png
│ ├── appwidget_divider.9.png
│ ├── appwidget_inner_focus_c.9.png
│ ├── appwidget_inner_focus_l.9.png
│ ├── appwidget_inner_focus_r.9.png
│ ├── appwidget_inner_press_c.9.png
│ ├── appwidget_inner_press_l.9.png
│ ├── appwidget_inner_press_r.9.png
│ ├── eq_knob.png
│ ├── ic_appwidget_music_next.png
│ ├── ic_appwidget_music_pause.png
│ ├── ic_appwidget_music_play.png
│ ├── ic_appwidget_music_prev.png
│ ├── icon_dice.png
│ ├── next.png
│ ├── next_glow.png
│ ├── pause.png
│ ├── pause_glow.png
│ ├── play.png
│ ├── play_glow.png
│ ├── playqueue.png
│ ├── playqueue_glow.png
│ ├── previous.png
│ ├── previous_glow.png
│ ├── repeat_all.png
│ ├── repeat_current.png
│ ├── repeat_none.png
│ ├── search.png
│ ├── search_glow.png
│ ├── shuffle.png
│ ├── shuffle_none.png
│ ├── slight_grey_grad.xml
│ ├── slight_grey_grad_bottom.xml
│ └── stat_notify_musicplayer.png
├── drawable-hdpi
│ ├── appwidget_bg.9.png
│ ├── appwidget_divider.9.png
│ ├── appwidget_inner_focus_c.9.png
│ ├── appwidget_inner_focus_l.9.png
│ ├── appwidget_inner_focus_r.9.png
│ ├── appwidget_inner_press_c.9.png
│ ├── appwidget_inner_press_l.9.png
│ ├── appwidget_inner_press_r.9.png
│ ├── eq_knob.png
│ ├── ic_appwidget_music_next.png
│ ├── ic_appwidget_music_pause.png
│ ├── ic_appwidget_music_play.png
│ ├── ic_appwidget_music_prev.png
│ ├── icon_dice.png
│ ├── next.png
│ ├── next_glow.png
│ ├── pause.png
│ ├── pause_glow.png
│ ├── play.png
│ ├── play_glow.png
│ ├── playqueue.png
│ ├── playqueue_glow.png
│ ├── previous.png
│ ├── previous_glow.png
│ ├── repeat_all.png
│ ├── repeat_current.png
│ ├── repeat_none.png
│ ├── search.png
│ ├── search_glow.png
│ ├── shuffle.png
│ ├── shuffle_none.png
│ └── stat_notify_musicplayer.png
├── drawable-ldpi
│ ├── eq_knob.png
│ ├── icon_dice.png
│ ├── next.png
│ ├── next_glow.png
│ ├── pause.png
│ ├── pause_glow.png
│ ├── play.png
│ ├── play_glow.png
│ ├── playqueue.png
│ ├── playqueue_glow.png
│ ├── previous.png
│ ├── previous_glow.png
│ ├── repeat_all.png
│ ├── repeat_current.png
│ ├── repeat_none.png
│ ├── search.png
│ ├── search_glow.png
│ ├── shuffle.png
│ └── shuffle_none.png
├── drawable-mdpi
│ ├── appwidget_bg.9.png
│ ├── appwidget_divider.9.png
│ ├── appwidget_inner_focus_c.9.png
│ ├── appwidget_inner_focus_l.9.png
│ ├── appwidget_inner_focus_r.9.png
│ ├── appwidget_inner_press_c.9.png
│ ├── appwidget_inner_press_l.9.png
│ ├── appwidget_inner_press_r.9.png
│ ├── eq_knob.png
│ ├── ic_appwidget_music_next.png
│ ├── ic_appwidget_music_pause.png
│ ├── ic_appwidget_music_play.png
│ ├── ic_appwidget_music_prev.png
│ ├── icon_dice.png
│ ├── next.png
│ ├── next_glow.png
│ ├── pause.png
│ ├── pause_glow.png
│ ├── play.png
│ ├── play_glow.png
│ ├── playqueue.png
│ ├── playqueue_glow.png
│ ├── previous.png
│ ├── previous_glow.png
│ ├── repeat_all.png
│ ├── repeat_current.png
│ ├── repeat_none.png
│ ├── search.png
│ ├── search_glow.png
│ ├── shuffle.png
│ ├── shuffle_none.png
│ └── stat_notify_musicplayer.png
├── drawable
│ ├── appwidget_button_center.xml
│ ├── appwidget_button_left.xml
│ ├── appwidget_button_right.xml
│ ├── black_to_transparent_grad_0.xml
│ ├── black_to_transparent_grad_180.xml
│ ├── black_to_transparent_grad_90.xml
│ ├── black_to_transparent_grad_minus_90.xml
│ ├── eq_off_bg.xml
│ ├── eq_on_bg.xml
│ ├── fullscreen.png
│ ├── fullscreen_selector.xml
│ ├── gloss_256.png
│ ├── ic_menu_music_library.png
│ ├── ic_mp_current_playlist_btn.png
│ ├── list_item_pressed.xml
│ ├── list_item_pressed_transition.xml
│ ├── list_item_selected.xml
│ ├── list_item_selector.xml
│ ├── logo_intro.png
│ ├── logo_market.png
│ ├── logo_paypal.png
│ ├── menu.png
│ ├── menu_selector.xml
│ ├── next.png
│ ├── next_glow.png
│ ├── next_selector.xml
│ ├── pause.png
│ ├── pause_glow.png
│ ├── pause_selector.xml
│ ├── play.png
│ ├── play_glow.png
│ ├── play_queue_selector.xml
│ ├── play_selector.xml
│ ├── playqueue.png
│ ├── playqueue_glow.png
│ ├── previous.png
│ ├── previous_glow.png
│ ├── previous_selector.xml
│ ├── repeat.png
│ ├── repeat_all.png
│ ├── repeat_all_selector.xml
│ ├── repeat_current.png
│ ├── repeat_current_selector.xml
│ ├── repeat_none.png
│ ├── repeat_none_selector.xml
│ ├── search.png
│ ├── search_glow.png
│ ├── search_selector.xml
│ ├── shuffle.png
│ ├── shuffle_none.png
│ ├── shuffle_none_selector.xml
│ ├── shuffle_selector.xml
│ ├── unknown_256.jpg
│ └── widget_controls_background.xml
├── layout-land
│ ├── navigator_main.xml
│ └── navigator_main_controls_down.xml
├── layout
│ ├── album_appwidget.xml
│ ├── album_appwidget_3x3.xml
│ ├── album_appwidget_4x1.xml
│ ├── album_appwidget_4x4.xml
│ ├── albumlist_dialog_item.xml
│ ├── art_grid_item.xml
│ ├── create_playlist_dialog.xml
│ ├── directory_filter_layout.xml
│ ├── donate_layout.xml
│ ├── eq_layout.xml
│ ├── intro.xml
│ ├── intro_bkp.xml
│ ├── lock_screen_layout.xml
│ ├── manual_art_chooser.xml
│ ├── navigator_main.xml
│ ├── navigator_main_controls_down.xml
│ ├── search_layout.xml
│ ├── simple_dropdown_item_2line.xml
│ ├── song_label_and_progress.xml
│ ├── songlist_dialog_item.xml
│ ├── songlist_dialog_item_queue.xml
│ └── statusbar.xml
├── values-de
│ ├── menu_titles.xml
│ ├── preference_strings.xml
│ └── strings.xml
├── values-es
│ ├── menu_titles.xml
│ ├── preference_strings.xml
│ └── strings.xml
├── values-fr
│ ├── menu_titles.xml
│ ├── preference_strings.xml
│ └── strings.xml
├── values-ru
│ ├── menu_titles.xml
│ ├── preference_strings.xml
│ └── strings.xml
├── values-tr
│ ├── menu_titles.xml
│ ├── preference_strings.xml
│ └── strings.xml
├── values
│ ├── arrays.xml
│ ├── colors.xml
│ ├── config.xml
│ ├── dimen.xml
│ ├── menu_titles.xml
│ ├── preference_strings.xml
│ └── strings.xml
└── xml
│ ├── appwidget_info.xml
│ ├── appwidget_info_3x3.xml
│ ├── appwidget_info_4x1.xml
│ ├── appwidget_info_4x4.xml
│ └── rockonngglpreferences.xml
└── src
└── org
└── abrantix
├── rockon
└── rockonnggl
│ ├── APILevelChecker.java
│ ├── AlbumArtDownloadOkClickListener.java
│ ├── AlbumArtImporter.java
│ ├── AlbumArtProcessor.java
│ ├── AlbumArtUtils.java
│ ├── AlbumArtistSwitcherView.java
│ ├── AlbumClickListener.java
│ ├── AlbumCursorAdapter.java
│ ├── AlphabetNavItem.java
│ ├── ArtistAlbumHelper.java
│ ├── ArtistAlbumsDialogButtonClickListener.java
│ ├── AutoCompleteFilterQueryProvider.java
│ ├── ClearAlbumArtDialogPreference.java
│ ├── Constants.java
│ ├── ContentProviderUnifier.java
│ ├── CursorUtils.java
│ ├── DirectoryFilter.java
│ ├── DirectoryFilterActivity.java
│ ├── DirectoryFilterAdapter.java
│ ├── DonateActivity.java
│ ├── EqSettings.java
│ ├── EqTouchListener.java
│ ├── EqView.java
│ ├── EqualizerActivity.java
│ ├── EqualizerWrapper.java
│ ├── FreeCoversNetFetcher.java
│ ├── GoogleImagesFetcher.java
│ ├── IRockOnNextGenService.aidl
│ ├── ImageProcessor.java
│ ├── IntroView.java
│ ├── LockScreen.java
│ ├── ManualAlbumArtActivity.java
│ ├── ManualArtChooserAdapter.java
│ ├── MediaButtonIntentReceiver.java
│ ├── NavGLTouchListener.java
│ ├── NavItem.java
│ ├── NavItemUtils.java
│ ├── NavScrollerTouchListener.java
│ ├── NavScrollerView.java
│ ├── Playlist.java
│ ├── PlaylistArrayAdapter.java
│ ├── PlaylistOptionClickListener.java
│ ├── ProgressBarTouchListener.java
│ ├── ProgressBarView.java
│ ├── RockOnBoringRenderer.java
│ ├── RockOnCubeRenderer.java
│ ├── RockOnFileUtils.java
│ ├── RockOnMorphRenderer.java
│ ├── RockOnNextGenAppWidgetProvider.java
│ ├── RockOnNextGenAppWidgetProvider3x3.java
│ ├── RockOnNextGenAppWidgetProvider4x1.java
│ ├── RockOnNextGenAppWidgetProvider4x4.java
│ ├── RockOnNextGenDefaultExceptionHandler.java
│ ├── RockOnNextGenGL.java
│ ├── RockOnNextGenPreferences.java
│ ├── RockOnNextGenService.java
│ ├── RockOnRenderer.java
│ ├── RockOnWallRenderer.java
│ ├── ScreenOnIntentReceiver.java
│ ├── SearchUtils.java
│ ├── SongCursorAdapter.java
│ ├── SongOptionClickListener.java
│ ├── SongSelectedClickListener.java
│ ├── SortCursor.java
│ ├── SwitcherViewTouchListener.java
│ ├── ThemeChangeClickListener.java
│ └── WidgetCoverUtils.java
└── rockonnggl
└── unused
├── Cube.java
├── CubeRenderer.java
└── TriangleRenderer.java
/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | rockon-ng-android-gl
4 |
5 |
6 |
7 |
8 |
9 | com.android.ide.eclipse.adt.ResourceManagerBuilder
10 |
11 |
12 |
13 |
14 | com.android.ide.eclipse.adt.PreCompilerBuilder
15 |
16 |
17 |
18 |
19 | org.eclipse.jdt.core.javabuilder
20 |
21 |
22 |
23 |
24 | com.android.ide.eclipse.adt.ApkBuilder
25 |
26 |
27 |
28 |
29 |
30 | com.android.ide.eclipse.adt.AndroidNature
31 | org.eclipse.jdt.core.javanature
32 |
33 |
34 |
--------------------------------------------------------------------------------
/Android.mk:
--------------------------------------------------------------------------------
1 | LOCAL_PATH:= $(call my-dir)
2 | include $(CLEAR_VARS)
3 |
4 | LOCAL_MODULE_TAGS := optional
5 |
6 | LOCAL_SRC_FILES := $(call all-java-files-under, src) \
7 | src/org/abrantix/rockon/rockonnggl/IRockOnNextGenService.aidl
8 |
9 | LOCAL_STATIC_JAVA_LIBRARIES := libGoogleAnalytics
10 |
11 | LOCAL_PACKAGE_NAME := Music3
12 |
13 | # LOCAL_PROGUARD_FLAG_FILES := proguard.flags
14 |
15 | LOCAL_OVERRIDES_PACKAGES := Music
16 |
17 | include $(BUILD_PACKAGE)
18 |
19 | #######
20 |
21 | include $(CLEAR_VARS)
22 | LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libGoogleAnalytics:libs/libGoogleAnalytics.jar
23 | LOCAL_MODULE_TAGS := optional
24 | include $(BUILD_MULTI_PREBUILT)
25 |
26 | # Use the folloing include to make our test apk.
27 | include $(call all-makefiles-under,$(LOCAL_PATH))
28 |
--------------------------------------------------------------------------------
/CleanSpec.mk:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2007 The Android Open Source Project
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 |
16 | # If you don't need to do a full clean build but would like to touch
17 | # a file or delete some intermediate files, add a clean step to the end
18 | # of the list. These steps will only be run once, if they haven't been
19 | # run before.
20 | #
21 | # E.g.:
22 | # $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
23 | # $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
24 | #
25 | # Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
26 | # files that are missing or have been moved.
27 | #
28 | # Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
29 | # Use $(OUT_DIR) to refer to the "out" directory.
30 | #
31 | # If you need to re-do something that's already mentioned, just copy
32 | # the command and add it to the bottom of the list. E.g., if a change
33 | # that you made last week required touching a file and a change you
34 | # made today requires touching the same file, just copy the old
35 | # touch step and add it to the end of the list.
36 | #
37 | # ************************************************
38 | # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
39 | # ************************************************
40 |
41 | # For example:
42 | #$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
43 | #$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
44 | #$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
45 | #$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
46 |
47 | # ************************************************
48 | # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
49 | # ************************************************
50 |
--------------------------------------------------------------------------------
/README:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/README
--------------------------------------------------------------------------------
/default.properties:
--------------------------------------------------------------------------------
1 | # This file is automatically generated by Android Tools.
2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
3 | #
4 | # This file must be checked in Version Control Systems.
5 | #
6 | # To customize properties used by the Ant build system use,
7 | # "build.properties", and override values to adapt the script to your
8 | # project structure.
9 |
10 | # Indicates whether an apk should be generated for each density.
11 | split.density=false
12 | # Project target.
13 | target=android-8
14 | apk-configurations=
15 |
--------------------------------------------------------------------------------
/libs/libGoogleAnalytics.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/libs/libGoogleAnalytics.jar
--------------------------------------------------------------------------------
/res/drawable-finger/appwidget_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/appwidget_bg.9.png
--------------------------------------------------------------------------------
/res/drawable-finger/appwidget_divider.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/appwidget_divider.9.png
--------------------------------------------------------------------------------
/res/drawable-finger/appwidget_inner_focus_c.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/appwidget_inner_focus_c.9.png
--------------------------------------------------------------------------------
/res/drawable-finger/appwidget_inner_focus_l.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/appwidget_inner_focus_l.9.png
--------------------------------------------------------------------------------
/res/drawable-finger/appwidget_inner_focus_r.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/appwidget_inner_focus_r.9.png
--------------------------------------------------------------------------------
/res/drawable-finger/appwidget_inner_press_c.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/appwidget_inner_press_c.9.png
--------------------------------------------------------------------------------
/res/drawable-finger/appwidget_inner_press_l.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/appwidget_inner_press_l.9.png
--------------------------------------------------------------------------------
/res/drawable-finger/appwidget_inner_press_r.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/appwidget_inner_press_r.9.png
--------------------------------------------------------------------------------
/res/drawable-finger/eq_knob.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/eq_knob.png
--------------------------------------------------------------------------------
/res/drawable-finger/ic_appwidget_music_next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/ic_appwidget_music_next.png
--------------------------------------------------------------------------------
/res/drawable-finger/ic_appwidget_music_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/ic_appwidget_music_pause.png
--------------------------------------------------------------------------------
/res/drawable-finger/ic_appwidget_music_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/ic_appwidget_music_play.png
--------------------------------------------------------------------------------
/res/drawable-finger/ic_appwidget_music_prev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/ic_appwidget_music_prev.png
--------------------------------------------------------------------------------
/res/drawable-finger/icon_dice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/icon_dice.png
--------------------------------------------------------------------------------
/res/drawable-finger/next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/next.png
--------------------------------------------------------------------------------
/res/drawable-finger/next_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/next_glow.png
--------------------------------------------------------------------------------
/res/drawable-finger/pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/pause.png
--------------------------------------------------------------------------------
/res/drawable-finger/pause_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/pause_glow.png
--------------------------------------------------------------------------------
/res/drawable-finger/play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/play.png
--------------------------------------------------------------------------------
/res/drawable-finger/play_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/play_glow.png
--------------------------------------------------------------------------------
/res/drawable-finger/playqueue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/playqueue.png
--------------------------------------------------------------------------------
/res/drawable-finger/playqueue_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/playqueue_glow.png
--------------------------------------------------------------------------------
/res/drawable-finger/previous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/previous.png
--------------------------------------------------------------------------------
/res/drawable-finger/previous_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/previous_glow.png
--------------------------------------------------------------------------------
/res/drawable-finger/repeat_all.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/repeat_all.png
--------------------------------------------------------------------------------
/res/drawable-finger/repeat_current.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/repeat_current.png
--------------------------------------------------------------------------------
/res/drawable-finger/repeat_none.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/repeat_none.png
--------------------------------------------------------------------------------
/res/drawable-finger/search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/search.png
--------------------------------------------------------------------------------
/res/drawable-finger/search_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/search_glow.png
--------------------------------------------------------------------------------
/res/drawable-finger/shuffle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/shuffle.png
--------------------------------------------------------------------------------
/res/drawable-finger/shuffle_none.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/shuffle_none.png
--------------------------------------------------------------------------------
/res/drawable-finger/slight_grey_grad.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | -
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 | -
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/res/drawable-finger/slight_grey_grad_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | -
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 | -
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/res/drawable-finger/stat_notify_musicplayer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-finger/stat_notify_musicplayer.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/appwidget_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/appwidget_bg.9.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/appwidget_divider.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/appwidget_divider.9.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/appwidget_inner_focus_c.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/appwidget_inner_focus_c.9.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/appwidget_inner_focus_l.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/appwidget_inner_focus_l.9.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/appwidget_inner_focus_r.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/appwidget_inner_focus_r.9.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/appwidget_inner_press_c.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/appwidget_inner_press_c.9.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/appwidget_inner_press_l.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/appwidget_inner_press_l.9.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/appwidget_inner_press_r.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/appwidget_inner_press_r.9.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/eq_knob.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/eq_knob.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_appwidget_music_next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/ic_appwidget_music_next.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_appwidget_music_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/ic_appwidget_music_pause.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_appwidget_music_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/ic_appwidget_music_play.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_appwidget_music_prev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/ic_appwidget_music_prev.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/icon_dice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/icon_dice.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/next.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/next_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/next_glow.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/pause.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/pause_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/pause_glow.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/play.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/play_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/play_glow.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/playqueue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/playqueue.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/playqueue_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/playqueue_glow.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/previous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/previous.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/previous_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/previous_glow.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/repeat_all.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/repeat_all.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/repeat_current.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/repeat_current.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/repeat_none.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/repeat_none.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/search.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/search_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/search_glow.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/shuffle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/shuffle.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/shuffle_none.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/shuffle_none.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/stat_notify_musicplayer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-hdpi/stat_notify_musicplayer.png
--------------------------------------------------------------------------------
/res/drawable-ldpi/eq_knob.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-ldpi/eq_knob.png
--------------------------------------------------------------------------------
/res/drawable-ldpi/icon_dice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-ldpi/icon_dice.png
--------------------------------------------------------------------------------
/res/drawable-ldpi/next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-ldpi/next.png
--------------------------------------------------------------------------------
/res/drawable-ldpi/next_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-ldpi/next_glow.png
--------------------------------------------------------------------------------
/res/drawable-ldpi/pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-ldpi/pause.png
--------------------------------------------------------------------------------
/res/drawable-ldpi/pause_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-ldpi/pause_glow.png
--------------------------------------------------------------------------------
/res/drawable-ldpi/play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-ldpi/play.png
--------------------------------------------------------------------------------
/res/drawable-ldpi/play_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-ldpi/play_glow.png
--------------------------------------------------------------------------------
/res/drawable-ldpi/playqueue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-ldpi/playqueue.png
--------------------------------------------------------------------------------
/res/drawable-ldpi/playqueue_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-ldpi/playqueue_glow.png
--------------------------------------------------------------------------------
/res/drawable-ldpi/previous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-ldpi/previous.png
--------------------------------------------------------------------------------
/res/drawable-ldpi/previous_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-ldpi/previous_glow.png
--------------------------------------------------------------------------------
/res/drawable-ldpi/repeat_all.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-ldpi/repeat_all.png
--------------------------------------------------------------------------------
/res/drawable-ldpi/repeat_current.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-ldpi/repeat_current.png
--------------------------------------------------------------------------------
/res/drawable-ldpi/repeat_none.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-ldpi/repeat_none.png
--------------------------------------------------------------------------------
/res/drawable-ldpi/search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-ldpi/search.png
--------------------------------------------------------------------------------
/res/drawable-ldpi/search_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-ldpi/search_glow.png
--------------------------------------------------------------------------------
/res/drawable-ldpi/shuffle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-ldpi/shuffle.png
--------------------------------------------------------------------------------
/res/drawable-ldpi/shuffle_none.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-ldpi/shuffle_none.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/appwidget_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/appwidget_bg.9.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/appwidget_divider.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/appwidget_divider.9.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/appwidget_inner_focus_c.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/appwidget_inner_focus_c.9.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/appwidget_inner_focus_l.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/appwidget_inner_focus_l.9.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/appwidget_inner_focus_r.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/appwidget_inner_focus_r.9.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/appwidget_inner_press_c.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/appwidget_inner_press_c.9.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/appwidget_inner_press_l.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/appwidget_inner_press_l.9.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/appwidget_inner_press_r.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/appwidget_inner_press_r.9.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/eq_knob.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/eq_knob.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_appwidget_music_next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/ic_appwidget_music_next.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_appwidget_music_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/ic_appwidget_music_pause.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_appwidget_music_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/ic_appwidget_music_play.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_appwidget_music_prev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/ic_appwidget_music_prev.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/icon_dice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/icon_dice.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/next.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/next_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/next_glow.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/pause.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/pause_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/pause_glow.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/play.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/play_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/play_glow.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/playqueue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/playqueue.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/playqueue_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/playqueue_glow.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/previous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/previous.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/previous_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/previous_glow.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/repeat_all.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/repeat_all.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/repeat_current.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/repeat_current.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/repeat_none.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/repeat_none.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/search.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/search_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/search_glow.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/shuffle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/shuffle.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/shuffle_none.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/shuffle_none.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/stat_notify_musicplayer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable-mdpi/stat_notify_musicplayer.png
--------------------------------------------------------------------------------
/res/drawable/appwidget_button_center.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
19 |
21 |
22 |
25 |
26 |
28 |
29 |
--------------------------------------------------------------------------------
/res/drawable/appwidget_button_left.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
19 |
21 |
22 |
25 |
26 |
28 |
29 |
--------------------------------------------------------------------------------
/res/drawable/appwidget_button_right.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
19 |
21 |
22 |
25 |
26 |
28 |
29 |
--------------------------------------------------------------------------------
/res/drawable/black_to_transparent_grad_0.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/res/drawable/black_to_transparent_grad_180.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/res/drawable/black_to_transparent_grad_90.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/res/drawable/black_to_transparent_grad_minus_90.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/res/drawable/eq_off_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/res/drawable/eq_on_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/res/drawable/fullscreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/fullscreen.png
--------------------------------------------------------------------------------
/res/drawable/fullscreen_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
10 |
14 |
15 |
--------------------------------------------------------------------------------
/res/drawable/gloss_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/gloss_256.png
--------------------------------------------------------------------------------
/res/drawable/ic_menu_music_library.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/ic_menu_music_library.png
--------------------------------------------------------------------------------
/res/drawable/ic_mp_current_playlist_btn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/ic_mp_current_playlist_btn.png
--------------------------------------------------------------------------------
/res/drawable/list_item_pressed.xml:
--------------------------------------------------------------------------------
1 |
3 |
--------------------------------------------------------------------------------
/res/drawable/list_item_pressed_transition.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/res/drawable/list_item_selected.xml:
--------------------------------------------------------------------------------
1 |
3 |
--------------------------------------------------------------------------------
/res/drawable/list_item_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/res/drawable/logo_intro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/logo_intro.png
--------------------------------------------------------------------------------
/res/drawable/logo_market.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/logo_market.png
--------------------------------------------------------------------------------
/res/drawable/logo_paypal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/logo_paypal.png
--------------------------------------------------------------------------------
/res/drawable/menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/menu.png
--------------------------------------------------------------------------------
/res/drawable/menu_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
10 |
14 |
15 |
--------------------------------------------------------------------------------
/res/drawable/next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/next.png
--------------------------------------------------------------------------------
/res/drawable/next_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/next_glow.png
--------------------------------------------------------------------------------
/res/drawable/next_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
10 |
12 |
13 |
--------------------------------------------------------------------------------
/res/drawable/pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/pause.png
--------------------------------------------------------------------------------
/res/drawable/pause_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/pause_glow.png
--------------------------------------------------------------------------------
/res/drawable/pause_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
10 |
12 |
13 |
--------------------------------------------------------------------------------
/res/drawable/play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/play.png
--------------------------------------------------------------------------------
/res/drawable/play_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/play_glow.png
--------------------------------------------------------------------------------
/res/drawable/play_queue_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
10 |
12 |
--------------------------------------------------------------------------------
/res/drawable/play_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
10 |
12 |
--------------------------------------------------------------------------------
/res/drawable/playqueue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/playqueue.png
--------------------------------------------------------------------------------
/res/drawable/playqueue_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/playqueue_glow.png
--------------------------------------------------------------------------------
/res/drawable/previous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/previous.png
--------------------------------------------------------------------------------
/res/drawable/previous_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/previous_glow.png
--------------------------------------------------------------------------------
/res/drawable/previous_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
10 |
12 |
13 |
--------------------------------------------------------------------------------
/res/drawable/repeat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/repeat.png
--------------------------------------------------------------------------------
/res/drawable/repeat_all.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/repeat_all.png
--------------------------------------------------------------------------------
/res/drawable/repeat_all_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
10 |
14 |
15 |
--------------------------------------------------------------------------------
/res/drawable/repeat_current.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/repeat_current.png
--------------------------------------------------------------------------------
/res/drawable/repeat_current_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
10 |
14 |
15 |
--------------------------------------------------------------------------------
/res/drawable/repeat_none.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/repeat_none.png
--------------------------------------------------------------------------------
/res/drawable/repeat_none_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
10 |
14 |
15 |
--------------------------------------------------------------------------------
/res/drawable/search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/search.png
--------------------------------------------------------------------------------
/res/drawable/search_glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/search_glow.png
--------------------------------------------------------------------------------
/res/drawable/search_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
10 |
12 |
13 |
--------------------------------------------------------------------------------
/res/drawable/shuffle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/shuffle.png
--------------------------------------------------------------------------------
/res/drawable/shuffle_none.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/shuffle_none.png
--------------------------------------------------------------------------------
/res/drawable/shuffle_none_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
10 |
14 |
15 |
--------------------------------------------------------------------------------
/res/drawable/shuffle_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
10 |
14 |
15 |
--------------------------------------------------------------------------------
/res/drawable/unknown_256.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Music3/aa9c66b54f7b9d0a8c762ad3caf2bcfda2b5e1ff/res/drawable/unknown_256.jpg
--------------------------------------------------------------------------------
/res/drawable/widget_controls_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
6 |
7 |
8 |
9 |
13 |
18 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/res/layout/album_appwidget.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
26 |
27 |
36 |
41 |
42 |
43 |
50 |
59 |
68 |
69 |
--------------------------------------------------------------------------------
/res/layout/album_appwidget_3x3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
26 |
27 |
36 |
41 |
42 |
43 |
50 |
51 |
60 |
61 |
62 |
71 |
72 |
73 |
82 |
83 |
84 |
--------------------------------------------------------------------------------
/res/layout/album_appwidget_4x1.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
22 |
23 |
36 |
37 |
49 |
50 |
61 |
62 |
63 |
68 |
69 |
70 |
79 |
80 |
85 |
86 |
95 |
96 |
97 |
--------------------------------------------------------------------------------
/res/layout/album_appwidget_4x4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
26 |
27 |
36 |
41 |
42 |
43 |
50 |
59 |
68 |
69 |
78 |
79 |
88 |
89 |
98 |
99 |
--------------------------------------------------------------------------------
/res/layout/albumlist_dialog_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
20 |
21 |
28 |
29 |
30 |
34 |
39 |
40 |
51 |
52 |
65 |
66 |
67 |
68 |
72 |
--------------------------------------------------------------------------------
/res/layout/art_grid_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
12 |
17 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/res/layout/create_playlist_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
15 |
16 |
--------------------------------------------------------------------------------
/res/layout/directory_filter_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
18 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
50 |
58 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
86 |
90 |
91 |
--------------------------------------------------------------------------------
/res/layout/donate_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
17 |
28 |
35 |
36 |
37 |
38 |
39 |
40 |
48 |
55 |
56 |
62 |
63 |
64 |
65 |
66 |
76 |
83 |
84 |
85 |
92 |
93 |
94 |
95 |
--------------------------------------------------------------------------------
/res/layout/eq_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
12 |
17 |
23 |
24 |
25 |
26 |
27 |
32 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/res/layout/intro.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/res/layout/intro_bkp.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
20 |
33 |
43 |
44 |
--------------------------------------------------------------------------------
/res/layout/manual_art_chooser.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
17 |
23 |
32 |
39 |
45 |
51 |
52 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/res/layout/search_layout.xml:
--------------------------------------------------------------------------------
1 |
7 |
17 |
--------------------------------------------------------------------------------
/res/layout/simple_dropdown_item_2line.xml:
--------------------------------------------------------------------------------
1 |
2 |
20 |
21 |
28 |
29 |
36 |
37 |
44 |
45 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/res/layout/song_label_and_progress.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
15 |
16 |
34 |
52 |
53 |
--------------------------------------------------------------------------------
/res/layout/songlist_dialog_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
20 |
21 |
28 |
29 |
30 |
34 |
39 |
40 |
51 |
52 |
65 |
69 |
--------------------------------------------------------------------------------
/res/layout/songlist_dialog_item_queue.xml:
--------------------------------------------------------------------------------
1 |
2 |
20 |
21 |
27 |
28 |
38 |
39 |
48 |
49 |
56 |
57 |
67 |
68 |
69 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/res/layout/statusbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
12 |
13 | −
14 |
18 |
27 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/res/values-de/menu_titles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Cover abrufen
5 |
6 |
7 | Einstellungen
8 |
9 |
10 | Wiedergabelisten
11 |
12 |
13 | Konzerte
14 |
15 |
16 | Neue Alben
17 |
18 |
19 | Ansicht
20 |
21 |
22 | Themen
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/res/values-es/menu_titles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Portadas
5 |
6 |
7 | Preferencias
8 |
9 |
10 | Playlists
11 |
12 |
13 | Conciertos
14 |
15 |
16 | Nuevos Discos
17 |
18 |
19 | Modo de Visualización
20 |
21 |
22 | Temas
23 |
24 |
25 | Ecualizador
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/res/values-fr/menu_titles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Pochettes
5 |
6 |
7 | Préférences
8 |
9 |
10 | Playlists
11 |
12 |
13 | Concerts
14 |
15 |
16 | Nouveaux Albums
17 |
18 |
19 | Mode de Visualisation
20 |
21 |
22 | Thème
23 |
24 |
25 | Égaliseur
26 |
27 |
28 |
--------------------------------------------------------------------------------
/res/values-ru/menu_titles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Обложки
4 | Настройки
5 | Плейлист
6 | Концерты
7 | Новые альбомы
8 | Вид
9 | Тема
10 |
--------------------------------------------------------------------------------
/res/values-ru/preference_strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Version
5 |
6 |
7 | DownloadingArt
8 |
9 |
10 |
11 |
12 |
13 | UseHeadset
14 | Использовать гарнитуру
15 | Использовать кнопки гарнитуры для управления воспроизведением
16 |
17 |
18 | LockPortrait
19 | Портретный режим
20 | Отключить ландшафтный режим
21 |
22 |
23 | LockScreen
24 | Блокировка экрана
25 | Показывать кнопки управления на экране разблокировки
26 |
27 |
28 | mFullScreen
29 | Полноэкранный режим
30 | Запускать плеер во весь экран
31 |
32 |
33 | mControlsOnBottom
34 | Панель внизу
35 | Разместить кнопки управления воспроизведением внизу экрана
36 |
37 |
38 | mQueueOnClick
39 | Выберите в очередь
40 | Когда песня выбрана, добавить в очередь, вместо того чтобы играть сразу
41 |
42 |
43 |
44 |
45 | Общие настройки
46 | Обложки альбомов
47 | Прочие
48 |
49 |
50 | mUseAlwaysEmbeddedAlbumArt
51 | Использовать только ID3
52 | Использовать обложки из тегов даже если их качество низкое
53 |
54 |
55 | clearAlbumArtKey
56 | Удалить обложки
57 | Используйте это, если обложки неправильно ассоциированы с альбомом/исполнителем
58 | Удаление обложек
59 | Используйте эту функцию только, если обложки были неправильно ассоциированы с альбомом или исполнителем. Будет удалено содержимое папки /sdcard/albumthumbs/RockOnNg. Запустите поиск обложек (Меню > Обложки) заново после удаления.
60 | Продолжить
61 | Отменить
62 |
63 |
64 | scrobbling
65 | Скробблинг Last.fm
66 | Выберите сервис для скробблинга
67 |
68 | Не использовать
69 | Simple Last.fm
70 | Scrobble Droid
71 | no
72 | sls
73 | sd
74 |
75 |
76 | donate
77 | Помочь разработчику
78 |
79 |
--------------------------------------------------------------------------------
/res/values-tr/menu_titles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Resim Al
5 |
6 |
7 | Tercihler
8 |
9 |
10 | Çalma Listeleri
11 |
12 |
13 | Konserler
14 |
15 |
16 | Albümler
17 |
18 |
19 | Görüntü Modu
20 |
21 |
22 | Tema
23 |
24 |
25 |
--------------------------------------------------------------------------------
/res/values/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - @string/menu_option_title_get_art
5 | - @string/menu_option_title_playlist_id
6 | - @string/menu_option_title_preferences
7 | - @string/menu_option_title_view_mode
8 | - @string/menu_option_title_theme
9 | - @string/menu_option_title_concerts
10 | - @string/menu_option_title_releases
11 | - @string/menu_option_title_equalizer
12 |
13 |
14 |
15 | - 0
16 | - 1
17 | - 2
18 | - 3
19 | - 4
20 | - 5
21 | - 6
22 | - 7
23 |
24 |
25 |
26 |
27 | - @string/view_mode_cube
28 | - @string/view_mode_wall
29 | - @string/view_mode_boring
30 | - @string/view_mode_morph
31 |
32 |
33 |
34 |
35 | - @string/theme_normal
36 | - @string/theme_halftone
37 | - @string/theme_earthquake
38 |
39 |
40 |
41 | - @string/preference_scrobble_name_dont
42 | - @string/preference_scrobble_name_sls
43 | - @string/preference_scrobble_name_sd
44 |
45 |
46 |
47 | - @string/preference_scrobble_value_dont
48 | - @string/preference_scrobble_value_sls
49 | - @string/preference_scrobble_value_sd
50 |
51 |
52 |
53 |
54 | - @string/playlist_option_play_now
55 | - @string/playlist_option_add_to_queue
56 | - @string/playlist_option_delete
57 |
58 |
59 |
60 |
61 | - @string/song_option_play_now
62 | - @string/song_option_add_to_queue
63 | - @string/song_option_delete
64 |
65 |
66 |
--------------------------------------------------------------------------------
/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #ffffffff
4 |
--------------------------------------------------------------------------------
/res/values/config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | true
4 | true
5 | false
6 | 0
7 |
8 |
--------------------------------------------------------------------------------
/res/values/dimen.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 64dp
5 | 128dp
6 | 64dp
7 | 128dp
8 | 28dp
9 | 24dp
10 | 20dp
11 |
12 |
13 | 8dp
14 | 8dp
15 |
16 |
17 | 64dp
18 |
19 |
20 | 150dp
21 |
22 |
23 | 0dp
24 | 0dp
25 | 0dp
26 | 0dp
27 | 12dp
28 |
--------------------------------------------------------------------------------
/res/values/menu_titles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Get Art
5 |
6 |
7 | Preferences
8 |
9 |
10 | Playlists
11 |
12 |
13 | Concerts
14 |
15 |
16 | Releases
17 |
18 |
19 | View Mode
20 |
21 |
22 | Theme
23 |
24 |
25 | Equalizer
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/res/xml/appwidget_info.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/res/xml/appwidget_info_3x3.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/res/xml/appwidget_info_4x1.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
23 |
24 |
--------------------------------------------------------------------------------
/res/xml/appwidget_info_4x4.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/res/xml/rockonngglpreferences.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
9 |
10 |
15 |
20 |
25 |
30 |
35 |
40 |
41 |
42 |
45 |
50 |
51 |
52 |
55 |
60 |
65 |
66 |
67 |
70 |
75 |
85 |
86 |
87 |
90 |
98 |
102 |
103 |
104 |
105 |
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/APILevelChecker.java:
--------------------------------------------------------------------------------
1 | package org.abrantix.rockon.rockonnggl;
2 |
3 | import java.lang.reflect.Field;
4 | import android.os.Build;
5 | import android.view.View;
6 |
7 | public class APILevelChecker {
8 | //Singleton pattern implementation taken from Android Developers Blog:
9 | //http://android-developers.blogspot.com/2010/07/how-to-have-your-cupcake-and-eat-it-too.html
10 |
11 | //Reflection-based API Level Int check, with package-level "3" minimum, taken from "Android 1" blog entry:
12 | //http://doandroids.com/blogs/2010/5/8/backwards-compatibility/
13 |
14 | public int SDK_INT;
15 |
16 | // Private constructor prevents instantiation from other classes
17 | private APILevelChecker() {
18 | try {
19 | // works for level 4 and up
20 | Field SDK_INT_field = Build.VERSION.class.getField("SDK_INT");
21 | SDK_INT = (Integer) SDK_INT_field.get(null);
22 | } catch (NoSuchFieldException e) {
23 | // Must be level 3 (since the app doesn't support lower levels)
24 | SDK_INT=3;
25 | } catch (IllegalAccessException e) {
26 | //Shouldn't happen, let's assume 0 is a suitable invalid value,
27 | // we don't want to add a throws clause.
28 | SDK_INT=0;
29 | }
30 | }
31 |
32 | /**
33 | * SingletonHolder is loaded on the first execution of Singleton.getInstance()
34 | * or the first access to SingletonHolder.INSTANCE, not before.
35 | */
36 | private static class SingletonHolder {
37 | private static final APILevelChecker INSTANCE = new APILevelChecker();
38 | }
39 |
40 | public static APILevelChecker getInstance() {
41 | return SingletonHolder.INSTANCE;
42 | }
43 |
44 | public void hapticFeedback(View v)
45 | {
46 | if (SDK_INT >= 5) {
47 | try {
48 | Class c = Class.forName("HapticFeedbackConstants");
49 | int virtualKey;
50 | virtualKey = c.getField("VIRTUAL_KEY").getInt(null);
51 | v.performHapticFeedback(virtualKey);
52 | // v.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
53 | } catch (IllegalArgumentException e) {
54 | // TODO Auto-generated catch block
55 | e.printStackTrace();
56 | } catch (SecurityException e) {
57 | // TODO Auto-generated catch block
58 | e.printStackTrace();
59 | } catch (IllegalAccessException e) {
60 | // TODO Auto-generated catch block
61 | e.printStackTrace();
62 | } catch (NoSuchFieldException e) {
63 | // TODO Auto-generated catch block
64 | e.printStackTrace();
65 | } catch (ClassNotFoundException e) {
66 | // TODO Auto-generated catch block
67 | e.printStackTrace();
68 | }
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/AlbumArtDownloadOkClickListener.java:
--------------------------------------------------------------------------------
1 | package org.abrantix.rockon.rockonnggl;
2 |
3 | import org.abrantix.rockon.rockonnggl.cm.R;
4 |
5 | import android.app.ProgressDialog;
6 | import android.content.Context;
7 | import android.content.DialogInterface;
8 | import android.content.DialogInterface.OnClickListener;
9 | import android.os.Handler;
10 | import android.os.Message;
11 | import android.util.Log;
12 |
13 |
14 | public class AlbumArtDownloadOkClickListener implements OnClickListener{
15 |
16 | final String TAG = "AlbumArtDownloadOkClickListener";
17 |
18 | private Context mContext;
19 | private boolean mDownloading = false;
20 | private ProgressDialog mProgressDialog;
21 | private AlbumArtImporter mAlbumArtImporter;
22 |
23 | AlbumArtDownloadOkClickListener(Context context){
24 | this.mContext = context;
25 | }
26 |
27 | public boolean isDownloading(){
28 | return mDownloading;
29 | }
30 |
31 | @Override
32 | public void onClick(DialogInterface dialog, int which) {
33 | if(which == DialogInterface.BUTTON_POSITIVE)
34 | {
35 | Log.i(TAG, "Positive button");
36 | mArtDownloadTrigger.sendEmptyMessageDelayed(Constants.GET_INET_ART_TOO, 500);
37 | }
38 | else
39 | {
40 | Log.i(TAG, "Negative button");
41 | mArtDownloadTrigger.sendEmptyMessageDelayed(Constants.GET_LOCAL_ART_ONLY, 500);
42 | }
43 | }
44 |
45 | /* Handler for triggering art download */
46 | public Handler mArtDownloadTrigger = new Handler(){
47 | @Override
48 | public void handleMessage(Message msg){
49 | if(msg.what == Constants.GET_INET_ART_TOO)
50 | {
51 | mDownloading = true;
52 |
53 | /* show a progress dialog to give feedback to the user */
54 | mProgressDialog = new ProgressDialog(mContext);
55 | mProgressDialog.setTitle(R.string.art_download_progress_title);
56 | mProgressDialog.setMessage(mContext.getResources().getString(
57 | R.string.art_download_progress_initial_message));
58 | mProgressDialog.setButton(
59 | mContext.getString(R.string.art_download_cancel),
60 | cancelDownloadClickListener);
61 | mProgressDialog.show();
62 |
63 | /* start fetching album art */
64 | mAlbumArtImporter = new AlbumArtImporter(mContext, mArtDownloadUpdateHandler, true);
65 | mAlbumArtImporter.getAlbumArt();
66 | }
67 | else
68 | {
69 | /* start fetching album art */
70 | mAlbumArtImporter = new AlbumArtImporter(mContext, null, false);
71 | mAlbumArtImporter.getAlbumArt();
72 | }
73 | }
74 | };
75 |
76 |
77 | // Handler to receive messages from the AlbumArtDownloader class thread
78 | public Handler mArtDownloadUpdateHandler = new Handler(){
79 | public void handleMessage(Message msg){
80 | if(mProgressDialog.isShowing()){
81 | // Last Message ?
82 | if(msg.getData()
83 | .getString(Constants.ALBUM_ART_DOWNLOAD_UI_UPDATE_DONE_IPC_MSG)
84 | != null)
85 | {
86 | try{
87 | mProgressDialog.dismiss();
88 | } catch(IllegalArgumentException e) {
89 | e.printStackTrace();
90 | }
91 | stopArtDownload();
92 | }
93 | // Still going
94 | else
95 | mProgressDialog.setMessage(
96 | msg.getData()
97 | .getString(Constants.ALBUM_ART_DOWNLOAD_UI_UPDATE_IPC_MSG));
98 | }
99 | }
100 | };
101 |
102 | // function for resuming download after a rotation/app close
103 |
104 |
105 | private OnClickListener cancelDownloadClickListener = new OnClickListener(){
106 |
107 | @Override
108 | public void onClick(DialogInterface dialog, int which) {
109 | stopArtDownload();
110 | }
111 |
112 | };
113 |
114 | public void stopArtDownload(){
115 | mAlbumArtImporter.stopAlbumArt();
116 | try{
117 | mProgressDialog.dismiss();
118 | } catch(IllegalArgumentException e) {
119 | e.printStackTrace();
120 | }
121 | mDownloading = false;
122 | }
123 |
124 | }
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/AlbumArtProcessor.java:
--------------------------------------------------------------------------------
1 | package org.abrantix.rockon.rockonnggl;
2 |
3 | import java.io.File;
4 |
5 | import org.abrantix.rockon.rockonnggl.cm.R;
6 |
7 | import android.content.Context;
8 | import android.content.SharedPreferences.Editor;
9 | import android.database.Cursor;
10 | import android.graphics.Bitmap;
11 | import android.graphics.BitmapFactory;
12 | import android.net.ConnectivityManager;
13 | import android.net.NetworkInfo;
14 | import android.os.Bundle;
15 | import android.os.Handler;
16 | import android.os.Message;
17 | import android.preference.PreferenceManager;
18 | import android.provider.MediaStore;
19 | import android.util.Log;
20 |
21 | public class AlbumArtProcessor{
22 |
23 | private final String TAG = "AlbumArtProcessor";
24 |
25 | private Context mContext;
26 | private Thread mWorkerThread;
27 | private Handler mUiProgressHandler;
28 | private int mTheme;
29 |
30 | AlbumArtProcessor(Context context, Handler uiProgressHandler, int theme){
31 | this.mContext = context;
32 | this.mUiProgressHandler = uiProgressHandler;
33 | this.mTheme = theme;
34 | createAlbumArtDirectories();
35 | }
36 |
37 |
38 | public boolean processAlbumArt(){
39 | mWorkerThread = new
40 | Thread(){
41 | public void run(){
42 | try{
43 | processAlbumArtThreadedWork();
44 | } catch(Exception e){
45 | e.printStackTrace();
46 | return;
47 | }
48 | }
49 | };
50 | mWorkerThread.start();
51 | return true;
52 | }
53 |
54 | public void processAlbumArtThreadedWork(){
55 | /* create album cursor */
56 | Cursor albumCursor = new CursorUtils(mContext)
57 | .getAlbumListFromPlaylist(
58 | Constants.PLAYLIST_ALL,
59 | PreferenceManager.
60 | getDefaultSharedPreferences(mContext).
61 | getBoolean(
62 | mContext.
63 | getString(
64 | R.string.preference_key_prefer_artist_sorting),
65 | true));
66 |
67 | /* Give feedback to the user */
68 | updateUi(mContext.getResources()
69 | .getString(R.string.art_download_progress_initial_message));
70 |
71 | /* Our Processor */
72 | ImageProcessor imgProc = new ImageProcessor(mTheme);
73 |
74 | /* Loop through the albums */
75 | String artistName;
76 | String albumName;
77 | String albumKey;
78 | Integer albumId;
79 | byte[] tmpBuf =
80 | new byte[4*Constants.ALBUM_ART_TEXTURE_SIZE*Constants.ALBUM_ART_TEXTURE_SIZE];
81 | Bitmap tmpBm =
82 | Bitmap.createBitmap(
83 | Constants.ALBUM_ART_TEXTURE_SIZE,
84 | Constants.ALBUM_ART_TEXTURE_SIZE,
85 | Bitmap.Config.RGB_565);
86 |
87 | for(int i=0; i mSelectedDirs;
22 |
23 | String oDirName;
24 | CheckedTextView oDirTextView;
25 | CheckBox oDirCheckBox;
26 |
27 | public DirectoryFilterAdapter(Context ctx, File[] allDirs, List selectedDirs) {
28 | mContext = ctx;
29 | mAllDirs = allDirs;
30 | mSelectedDirs = selectedDirs;
31 | }
32 |
33 | public void setData(File[] allDirs, List selectedDirs) {
34 | mAllDirs = allDirs;
35 | mSelectedDirs = selectedDirs;
36 | }
37 |
38 | @Override
39 | public int getCount() {
40 | if(mAllDirs != null)
41 | return mAllDirs.length;
42 | else
43 | return 0;
44 | }
45 |
46 | @Override
47 | public Object getItem(int arg0) {
48 | if(mAllDirs != null)
49 | return mAllDirs[arg0];
50 | else return null;
51 | }
52 |
53 | @Override
54 | public long getItemId(int arg0) {
55 | // return mAllDirs[arg0].getName().hashCode();
56 | return 0;
57 | }
58 |
59 | @Override
60 | public View getView(int position, View convertView, ViewGroup viewParent) {
61 | if(convertView == null) {
62 | convertView = ((LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(android.R.layout.simple_list_item_multiple_choice, null);
63 | }
64 |
65 | oDirTextView = (CheckedTextView)convertView.findViewById(android.R.id.text1);
66 | // oDirCheckBox = (CheckBox)((ViewGroup)convertView).getChildAt(2);
67 | //
68 | oDirName = mAllDirs[position].getName();
69 | oDirTextView.setText(oDirName);
70 | if(mSelectedDirs == null || Collections.binarySearch(mSelectedDirs, oDirName, DirectoryFilter.mNameComparator) >= 0 ) {
71 | oDirTextView.setChecked(true);
72 | // oDirCheckBox.setChecked(true);
73 | } else {
74 | oDirTextView.setChecked(false);
75 | // oDirCheckBox.setChecked(false);
76 | }
77 |
78 | return convertView;
79 | }
80 |
81 |
82 |
83 | }
84 |
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/DonateActivity.java:
--------------------------------------------------------------------------------
1 | package org.abrantix.rockon.rockonnggl;
2 |
3 | import org.abrantix.rockon.rockonnggl.cm.R;
4 | import android.app.Activity;
5 | import android.content.ComponentName;
6 | import android.content.Intent;
7 | import android.content.SharedPreferences.Editor;
8 | import android.net.Uri;
9 | import android.os.Bundle;
10 | import android.preference.PreferenceManager;
11 | import android.view.View;
12 | import android.view.Window;
13 | import android.view.WindowManager;
14 | import android.view.View.OnClickListener;
15 |
16 | public class DonateActivity extends Activity{
17 |
18 | /** Called when the activity is first created. */
19 | @Override
20 | public void onCreate(Bundle savedInstanceState) {
21 | super.onCreate(savedInstanceState);
22 |
23 | requestWindowFeature(Window.FEATURE_NO_TITLE);
24 |
25 | setContentView(R.layout.donate_layout);
26 |
27 | attachListeners();
28 | }
29 |
30 | public void attachListeners()
31 | {
32 | findViewById(R.id.donate_go_back_layout).setOnClickListener(mGlobalClickListener);
33 | findViewById(R.id.donate_market).setOnClickListener(mGlobalClickListener);
34 | findViewById(R.id.donate_paypal).setOnClickListener(mGlobalClickListener);
35 | }
36 |
37 | private OnClickListener mGlobalClickListener= new OnClickListener() {
38 |
39 | @Override
40 | public void onClick(View v) {
41 | if(v.equals(findViewById(R.id.donate_go_back_layout)))
42 | {
43 | goBackToMainApp();
44 | }
45 | else if(v.equals(findViewById(R.id.donate_market)))
46 | {
47 | searchDonateAppsOnMarket();
48 | }
49 | else if(v.equals(findViewById(R.id.donate_paypal)))
50 | {
51 | openPaypalDonationPage();
52 | }
53 | }
54 | };
55 |
56 | private void saveDonationHistory()
57 | {
58 | Editor editor = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit();
59 | editor.putBoolean(Constants.prefkey_mAppHasDonated, true);
60 | editor.commit();
61 | }
62 |
63 | private void searchDonateAppsOnMarket()
64 | {
65 | saveDonationHistory();
66 | Intent i = new Intent(Intent.ACTION_VIEW,
67 | Uri.parse("market://search?&q=Filipe+Abrantes+donate"));
68 | startActivity(i);
69 | }
70 |
71 | private void openPaypalDonationPage()
72 | {
73 | saveDonationHistory();
74 | Intent i = new Intent(Intent.ACTION_VIEW,
75 | Uri.parse("http://abrantix.org/cubed-donate.php"));
76 | startActivity(i);
77 | }
78 |
79 | private void goBackToMainApp()
80 | {
81 | Intent intent = new Intent(this, RockOnNextGenGL.class);
82 | startActivity(intent);
83 | }
84 |
85 | }
86 |
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/EqSettings.java:
--------------------------------------------------------------------------------
1 | package org.abrantix.rockon.rockonnggl;
2 |
3 | import java.io.ByteArrayInputStream;
4 | import java.io.ByteArrayOutputStream;
5 | import java.io.IOException;
6 | import java.io.ObjectInputStream;
7 | import java.io.ObjectOutputStream;
8 | import java.io.OptionalDataException;
9 | import java.io.Serializable;
10 | import java.lang.reflect.InvocationTargetException;
11 | import java.lang.reflect.Method;
12 |
13 | //import android.util.Base64;
14 | import android.util.Log;
15 |
16 | public class EqSettings implements Serializable{
17 | private static final String TAG = null;
18 | /*short[]*/int[] mBandLevels = new int[]{127,127,127,127,127,127,127,127}; // EqualizerSettings
19 | int mCurrentPreset = -1; // EqualizerSettings
20 | int mNumBands = 8; // EqualizerSettings
21 |
22 | int[] mBandHz = new int[]{20000, 100000, 250000, 1000000, 2000000, 5000000, 10000000, 20000000};
23 | private /*short[]*/int[] mLevelRange = {0, 255};
24 |
25 | String[] mPresetNames = {""};
26 |
27 | private boolean mEnabled = false;
28 |
29 | public boolean isBogus() {
30 | return (mBandLevels[0] < 0);
31 | }
32 |
33 | public void setDisabled() {
34 | mEnabled = false;
35 | }
36 |
37 | public void setEnabled() {
38 | mEnabled = true;
39 | }
40 |
41 | public boolean isEnabled() {
42 | return mEnabled;
43 | }
44 |
45 | public int getMaxLevel() {
46 | return mLevelRange[mLevelRange.length-1];
47 | }
48 |
49 | public void setLevelRange(int[] levels) {
50 | mLevelRange = levels;
51 | }
52 |
53 | public void setLevelRange(short[] levels) {
54 | mLevelRange = new int[levels.length];
55 | for(int i=0; i0)
81 | return "+"+String.valueOf(oLevel);
82 | else if(oLevel<0)
83 | return String.valueOf(oLevel);
84 | else
85 | return "0";
86 | }
87 |
88 | public int getBaseLevel() {
89 | return mLevelRange[0];
90 | }
91 |
92 | public int getTopLevel() {
93 | return mLevelRange[1];
94 | }
95 |
96 | public float getBandLevelInPercent(int bandIdx) {
97 | return (mBandLevels[bandIdx]-getBaseLevel())/(float)getLevelRange();
98 | }
99 |
100 | public float getHumanLevelInPercent(int lvlIdx) {
101 | // return mLevelRange[lvlIdx]/(float)mLevelRange[mLevelRange.length-1];
102 | return lvlIdx/(float)(getHumanLevelRange()-1);
103 | }
104 |
105 | public int getClosestGain(float gainPercent) {
106 | return getBaseLevel() + Math.round(gainPercent*(getTopLevel()-getBaseLevel()));
107 | }
108 |
109 | public void setGainFromPercentage(int bandIdx, float gainPercent) {
110 | mBandLevels[bandIdx] = getBaseLevel() + Math.round(gainPercent*(getTopLevel()-getBaseLevel()));
111 | }
112 |
113 | public String writeTo64String() {
114 | /** Write the object to a Base64 string. */
115 | try{
116 | ByteArrayOutputStream baos = new ByteArrayOutputStream();
117 | ObjectOutputStream oos = new ObjectOutputStream(baos);
118 | oos.writeObject(this);
119 | oos.close();
120 |
121 | /* A little bit of reflection */
122 | Class c = Class.forName("android.util.Base64");
123 | Method m = c.getMethod("encodeToString", new Class[]{byte[].class, int.class});
124 | String s = (String) m.invoke(null, new Object[]{baos.toByteArray(), c.getField("DEFAULT").getInt(null)});
125 | return s;
126 | // return Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT);
127 | } catch(Exception e) {
128 | e.printStackTrace();
129 | return null;
130 | }
131 | }
132 |
133 | static EqSettings readFrom64String(String s) {
134 | /** Read the object from Base64 string. */
135 | try {
136 | // byte [] data = Base64.decode(s, Base64.DEFAULT);
137 | /* A little bit of reflection */
138 | Class c = Class.forName("android.util.Base64");
139 | Method m = c.getMethod("decode", new Class[]{String.class, int.class});
140 | byte[] data = (byte[]) m.invoke(null, new Object[]{s, c.getField("DEFAULT").getInt(null)});
141 |
142 | ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(data));
143 | Object o = ois.readObject();
144 | ois.close();
145 | return (EqSettings)o;
146 | } catch(Exception e) {
147 | e.printStackTrace();
148 | return null;
149 | }
150 | }
151 | }
152 |
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/EqTouchListener.java:
--------------------------------------------------------------------------------
1 | package org.abrantix.rockon.rockonnggl;
2 |
3 | import android.content.Context;
4 | import android.util.Log;
5 | import android.view.GestureDetector;
6 | import android.view.MotionEvent;
7 | import android.view.View;
8 | import android.view.View.OnTouchListener;
9 |
10 | public class EqTouchListener implements OnTouchListener{
11 |
12 | protected static final String TAG = "EqTouchListener";
13 |
14 | GestureDetector mGestureDetector;
15 | View mView;
16 |
17 | public EqTouchListener(Context ctx) {
18 | mGestureDetector = new GestureDetector(ctx, mGestureListener); // does not read multitouch
19 | }
20 |
21 | @Override
22 | public boolean onTouch(View v, MotionEvent event) {
23 | mView = v;
24 | mGestureDetector.onTouchEvent(event);
25 | if(event.getAction()==MotionEvent.ACTION_UP)
26 | ((EqView)mView).finalizeMovement(event.getX(), event.getY());
27 | mView = null;
28 | return true;
29 | }
30 |
31 | android.view.GestureDetector.OnGestureListener mGestureListener = new android.view.GestureDetector.OnGestureListener() {
32 |
33 | @Override
34 | public boolean onSingleTapUp(MotionEvent e) {
35 | Log.i(TAG, "SingleTapUp");
36 | return false;
37 | }
38 |
39 | @Override
40 | public void onShowPress(MotionEvent e) {
41 | Log.i(TAG, "ShowPress");
42 | }
43 |
44 | @Override
45 | public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
46 | float distanceY) {
47 | ((EqView)mView).adjustBandGain(distanceX, distanceY);
48 | Log.i(TAG, "Scroll "+e1.getX()+","+e1.getY()+" --- "+e2.getX()+","+e2.getY());
49 | return false;
50 | }
51 |
52 | @Override
53 | public void onLongPress(MotionEvent e) {
54 | Log.i(TAG, "LongPress");
55 |
56 | }
57 |
58 | @Override
59 | public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
60 | float velocityY) {
61 | Log.i(TAG, "Fling "+e1.getX()+","+e1.getY()+" --- "+e2.getX()+","+e2.getY());
62 | return false;
63 | }
64 |
65 | @Override
66 | public boolean onDown(MotionEvent e) {
67 | Log.i(TAG, "Down");
68 | int bandIdx = ((EqView)mView).setMovingBandByXY(e.getX(), e.getY());
69 | Log.i(TAG, "Band: "+bandIdx);
70 | return false;
71 | }
72 | };
73 | }
74 |
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/IRockOnNextGenService.aidl:
--------------------------------------------------------------------------------
1 | package org.abrantix.rockon.rockonnggl;
2 |
3 | import android.graphics.Bitmap;
4 |
5 | interface IRockOnNextGenService
6 | {
7 | void openFile(String path, boolean oneShot);
8 | void openFileAsync(String path);
9 | void open(in long [] list, int position);
10 | int getQueuePosition();
11 | boolean isPlaying();
12 | void stop();
13 | void pause();
14 | void play();
15 | void prev();
16 | void next();
17 | long duration();
18 | long position();
19 | long seek(long pos);
20 | String getTrackName();
21 | String getAlbumName();
22 | long getAlbumId();
23 | String getArtistName();
24 | long getArtistId();
25 | void enqueue(in long [] list, int action);
26 | long [] getQueue();
27 | long [] getOutstandingQueue();
28 | void moveQueueItem(int from, int to);
29 | void setQueuePosition(int index);
30 | String getPath();
31 | long getAudioId();
32 | void setPlaylistId(int playlistId);
33 | int getPlaylistId();
34 | void setShuffleMode(int shufflemode);
35 | int getShuffleMode();
36 | void setRockOnShuffleMode(int shufflemode);
37 | int getRockOnShuffleMode();
38 | int removeTracks(int first, int last);
39 | int removeTrack(long id);
40 | void setRepeatMode(int repeatmode);
41 | int getRepeatMode();
42 | void setRockOnRepeatMode(int repeatmode);
43 | int getRockOnRepeatMode();
44 | int getMediaMountedCount();
45 |
46 | void setScrobbler(String scrobblerName);
47 | void setLockScreen(boolean lock);
48 |
49 | void registerScreenOnReceiver();
50 | void unregisterScreenOnReceiver();
51 | void prepareForCrash();
52 |
53 | boolean isEqEnabled();
54 | void enableEq();
55 | void disableEq();
56 | int[] getEqBandHz();
57 | int[] getEqBandLevels();
58 | int getEqCurrentPreset();
59 | String[] getEqPresetNames();
60 | int[] getEqLevelRange();
61 | int getEqNumBands();
62 | void setEqBandLevel(int bandIdx, int level);
63 | void setEqPreset(int presetIdx);
64 |
65 | void trackPage(String pageName);
66 | void trackEvent(String cat, String action, String label, int val);
67 |
68 | }
69 |
70 |
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/IntroView.java:
--------------------------------------------------------------------------------
1 | package org.abrantix.rockon.rockonnggl;
2 |
3 | import android.content.Context;
4 | import android.graphics.Bitmap;
5 | import android.graphics.Canvas;
6 | import android.graphics.Color;
7 | import android.graphics.Matrix;
8 | import android.graphics.Paint;
9 | import android.graphics.Paint.Align;
10 | import android.os.Handler;
11 | import android.util.AttributeSet;
12 | import android.util.Log;
13 | import android.view.View;
14 |
15 | public class IntroView extends View{
16 |
17 | // private class FadingImagePixel
18 | // {
19 | // int alpha = 0;
20 | // int increaseSpeed = 1;
21 | // boolean bright = false;
22 | // }
23 |
24 | int mHeight = 0;
25 | int mWidth = 0;
26 | Bitmap mLogoBitmap;
27 | Fader mFader = new Fader();
28 | Handler mPassIntroHandler;
29 |
30 | public void setIntroBitmap(Bitmap b)
31 | {
32 | mLogoBitmap = b;
33 | }
34 |
35 | public void setDoneHandler(Handler h)
36 | {
37 | mPassIntroHandler = h;
38 | }
39 |
40 | public IntroView(Context context, AttributeSet attrs) {
41 | super(context, attrs);
42 | }
43 |
44 | @Override
45 | protected void onSizeChanged (int w, int h, int oldw, int oldh)
46 | {
47 | mWidth = w;
48 | mHeight = h;
49 | }
50 |
51 | // /**
52 | // *
53 | // * @param b
54 | // */
55 | // private void fillLogoBitmap(Bitmap b)
56 | // {
57 | // Paint p = new Paint();
58 | // p.setAntiAlias(true);
59 | // p.setDither(true);
60 | // p.setTextAlign(Align.CENTER);
61 | // p.setTextSize(b.getHeight() * 1.f);
62 | // p.setColor(Color.WHITE);
63 | //
64 | // Canvas c = new Canvas();
65 | // c.setBitmap(b);
66 | // c.drawText("3", b.getWidth() * .5f, b.getHeight() * 0.f * .5f, p);
67 | // }
68 |
69 |
70 | @Override
71 | public void onDraw(Canvas canvas)
72 | {
73 | if(mLogoBitmap != null)
74 | {
75 | canvas.translate(
76 | (mWidth - mLogoBitmap.getWidth()) * .5f,
77 | (mHeight - mLogoBitmap.getHeight()) * .5f);
78 | mFader.step();
79 | canvas.drawBitmap(mLogoBitmap, new Matrix(), mFader.mFaderPaint);
80 | }
81 |
82 | if(mFader.done())
83 | {
84 | if(mPassIntroHandler != null)
85 | mPassIntroHandler.sendEmptyMessage(0);
86 | }
87 | else
88 | {
89 | invalidate();
90 | }
91 | }
92 |
93 |
94 | private class Fader
95 | {
96 | private static final String TAG = "Fader";
97 |
98 | final int FADE_STATE_INIT = 0;
99 | final int FADE_STATE_IN = 1;
100 | final int FADE_STATE_SHOWING = 2;
101 | final int FADE_STATE_OUT = 3;
102 | final int FADE_STATE_DONE = 4; // needed?
103 |
104 | public void Fader()
105 | {
106 | mFaderPaint.setAntiAlias(true);
107 | mFaderPaint.setDither(true);
108 | }
109 |
110 | Paint mFaderPaint = new Paint();
111 | int mAlpha = 0;
112 | final int FADE_IN_DURATION = 500; // ms
113 | final int FADE_OUT_DURATION = 500; // ms
114 | final int SHOW_DURATION = 1500; // ms
115 |
116 | double mLastStepTime = 0;
117 | double mShowStartTime = 0;
118 | int mState = FADE_STATE_INIT;
119 |
120 | // set the paint opacity, switch state, update variables
121 | public void step()
122 | {
123 | switch (mState) {
124 | case FADE_STATE_INIT:
125 | mAlpha = 1;
126 | mState = FADE_STATE_IN;
127 | break;
128 | case FADE_STATE_IN:
129 | mAlpha +=
130 | (System.currentTimeMillis() - mLastStepTime)/FADE_IN_DURATION
131 | *
132 | 255;
133 | if(mAlpha >= 255)
134 | {
135 | mAlpha = 255;
136 | mState = FADE_STATE_SHOWING;
137 | mShowStartTime = System.currentTimeMillis();
138 | }
139 | break;
140 | case FADE_STATE_SHOWING:
141 | if(System.currentTimeMillis() - mShowStartTime > SHOW_DURATION)
142 | {
143 | mState = FADE_STATE_OUT;
144 | }
145 | break;
146 | case FADE_STATE_OUT:
147 | mAlpha -=
148 | (System.currentTimeMillis() - mLastStepTime)/FADE_OUT_DURATION
149 | *
150 | 255;
151 | if(mAlpha <= 0)
152 | {
153 | mAlpha = 0;
154 | mState = FADE_STATE_DONE;
155 | }
156 | break;
157 | default:
158 | break;
159 | }
160 |
161 | // Log.i(TAG, "alpha: "+mAlpha);
162 | mFaderPaint.setAlpha(mAlpha);
163 | mLastStepTime = System.currentTimeMillis();
164 | }
165 |
166 | public boolean done()
167 | {
168 | if(mState == FADE_STATE_DONE)
169 | return true;
170 | else
171 | return false;
172 | }
173 | }
174 | }
175 |
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/NavItem.java:
--------------------------------------------------------------------------------
1 | package org.abrantix.rockon.rockonnggl;
2 |
3 | import android.graphics.Bitmap;
4 |
5 | public class NavItem{
6 | int index;
7 | Bitmap cover;
8 | Bitmap label;
9 | String artistName;
10 | String albumName;
11 | String albumKey;
12 | String albumId;
13 | String artistId;
14 | int nAlbumsFromArtist;
15 | // String nAlbumsFromArtistText;
16 | int nSongsFromArtist;
17 | String songName;
18 | int songId;
19 | }
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/NavScrollerTouchListener.java:
--------------------------------------------------------------------------------
1 | package org.abrantix.rockon.rockonnggl;
2 |
3 | import android.os.Handler;
4 | import android.os.Message;
5 | import android.util.Log;
6 | import android.view.MotionEvent;
7 | import android.view.View;
8 | import android.view.View.OnTouchListener;
9 |
10 | public class NavScrollerTouchListener implements OnTouchListener{
11 |
12 | final String TAG = "NavScrollerTouchListener";
13 |
14 | Handler mScrollerHandler = null;
15 | Message mMsg;
16 |
17 | double mLastUpdateTimestamp = 0;
18 |
19 | public void setScrollerHandler(Handler scrollerHandler){
20 | mScrollerHandler = scrollerHandler;
21 | }
22 |
23 | @Override
24 | public boolean onTouch(View v, MotionEvent event) {
25 | if(!mScrollerHandler.hasMessages(0)){
26 | switch(event.getAction()){
27 | case MotionEvent.ACTION_DOWN:
28 | if(((NavScrollerView)v).isTouchNearHandle(event.getY()))
29 | {
30 | if(event.getX() > v.getWidth() * .75f)
31 | {
32 | mMsg = new Message();
33 | mMsg.what = MotionEvent.ACTION_DOWN;
34 | mMsg.arg1 = (int)event.getX();
35 | mMsg.arg2 = (int)event.getY();
36 | mScrollerHandler.sendMessage(mMsg);
37 | mLastUpdateTimestamp = System.currentTimeMillis();
38 |
39 | // AVOID EVENT FLOODING XXX
40 | try {
41 | Thread.sleep(16);
42 | } catch (InterruptedException e) {
43 | e.printStackTrace();
44 | }
45 | return true;
46 | }
47 | else
48 | {
49 | return false;
50 | }
51 | }
52 | else
53 | {
54 | return false;
55 | }
56 | case MotionEvent.ACTION_MOVE:
57 | if(System.currentTimeMillis() - mLastUpdateTimestamp > 20)
58 | {
59 | mMsg = new Message();
60 | mMsg.what = MotionEvent.ACTION_MOVE;
61 | mMsg.arg1 = (int)event.getX();
62 | mMsg.arg2 = (int)event.getY();
63 | mScrollerHandler.sendMessage(mMsg);
64 | mLastUpdateTimestamp = System.currentTimeMillis();
65 | }
66 | return true;
67 | case MotionEvent.ACTION_UP:
68 | mMsg = new Message();
69 | mMsg.what = MotionEvent.ACTION_UP;
70 | mMsg.arg1 = (int)event.getX();
71 | mMsg.arg2 = (int)event.getY();
72 | mScrollerHandler.sendMessage(mMsg);
73 | mLastUpdateTimestamp = System.currentTimeMillis();
74 | return true;
75 | }
76 | return false;
77 | } else {
78 | Log.i(TAG, "handler has messages!");
79 | return true;
80 | }
81 | }
82 | }
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/Playlist.java:
--------------------------------------------------------------------------------
1 | package org.abrantix.rockon.rockonnggl;
2 |
3 | import java.util.HashMap;
4 |
5 | class Playlist extends HashMap{
6 | int mId;
7 | String mName;
8 |
9 | public Playlist() {
10 |
11 | }
12 |
13 | public Playlist(int id, String name){
14 | mId = id;
15 | mName = name;
16 | // HashMap methods
17 | this.put(Constants.PLAYLIST_ID_KEY, String.valueOf(id));
18 | this.put(Constants.PLAYLIST_NAME_KEY, name);
19 | }
20 | }
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/PlaylistOptionClickListener.java:
--------------------------------------------------------------------------------
1 | package org.abrantix.rockon.rockonnggl;
2 |
3 | import android.content.DialogInterface;
4 | import android.os.Handler;
5 | import android.os.Message;
6 |
7 | class PlaylistOptionClickListener implements android.content.DialogInterface.OnClickListener{
8 | private final String TAG = "PlaylistOptionClickListener";
9 |
10 | int mPlaylistId;
11 | Handler mPlaylistOptionClickHandler;
12 |
13 | public PlaylistOptionClickListener(
14 | int playlistId,
15 | Handler playlistOptionClickHandler)
16 | {
17 | mPlaylistOptionClickHandler = playlistOptionClickHandler;
18 | mPlaylistId = playlistId;
19 | }
20 |
21 | @Override
22 | public void onClick(DialogInterface dialog, int which) {
23 |
24 | Message msg = new Message();
25 | msg.what = which;
26 | msg.arg1 = mPlaylistId;
27 | mPlaylistOptionClickHandler.sendMessage(msg);
28 | dialog.dismiss();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/ProgressBarTouchListener.java:
--------------------------------------------------------------------------------
1 | package org.abrantix.rockon.rockonnggl;
2 |
3 | import android.os.Handler;
4 | import android.util.Log;
5 | import android.view.MotionEvent;
6 | import android.view.View;
7 | import android.view.View.OnTouchListener;
8 |
9 | public class ProgressBarTouchListener implements OnTouchListener{
10 |
11 | private final String TAG = "ProgressBarTouchListener";
12 |
13 | private Handler mSeekHandler;
14 |
15 | /**
16 | *
17 | * @param seekHandler
18 | */
19 | public void setSeekHandler(Handler seekHandler){
20 | mSeekHandler = seekHandler;
21 | }
22 |
23 | @Override
24 | public boolean onTouch(View view, MotionEvent event) {
25 |
26 |
27 | switch(event.getAction()){
28 | case MotionEvent.ACTION_DOWN:
29 | ((ProgressBarView)view).setTouching(true);
30 | ((ProgressBarView)view).setTouchCoords(
31 | event.getX(),
32 | event.getY());
33 | // AVOID EVENT FLOODING
34 | try {
35 | Thread.sleep(16);
36 | } catch (InterruptedException e) {
37 | e.printStackTrace();
38 | }
39 | // Log.i(TAG, "down: "+event.getX()+" _ "+event.getY());
40 | break;
41 | case MotionEvent.ACTION_MOVE:
42 | ((ProgressBarView)view).setTouchCoords(
43 | event.getX(),
44 | event.getY());
45 | // Log.i(TAG, "moving: "+event.getX()+" _ "+event.getY());
46 | break;
47 | case MotionEvent.ACTION_UP:
48 | ((ProgressBarView)view).setTouching(false);
49 | ((ProgressBarView)view).setTouchCoords(
50 | event.getX(),
51 | event.getY());
52 | // Log.i(TAG, "up: "+event.getX()+" _ "+event.getY());
53 | if(mSeekHandler != null)
54 | mSeekHandler.sendEmptyMessage(
55 | ((ProgressBarView)view).getCoordSeekPosition(
56 | event.getX(),
57 | event.getY()));
58 | break;
59 | }
60 |
61 | return true;
62 | }
63 |
64 | }
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/RockOnFileUtils.java:
--------------------------------------------------------------------------------
1 | package org.abrantix.rockon.rockonnggl;
2 |
3 | import android.content.ContentResolver;
4 | import android.content.Context;
5 | import android.database.Cursor;
6 | import android.provider.MediaStore;
7 |
8 | public class RockOnFileUtils{
9 |
10 | /**
11 | * Constructor
12 | */
13 | RockOnFileUtils(){
14 |
15 | }
16 |
17 | /**
18 | * sanitize the filename
19 | * @param fileName
20 | * @return
21 | */
22 | static String validateFileName(String fileName){
23 | if(fileName == null)
24 | return null;
25 | fileName = fileName.replace('/', '_');
26 | fileName = fileName.replace('<', '_');
27 | fileName = fileName.replace('>', '_');
28 | fileName = fileName.replace(':', '_');
29 | fileName = fileName.replace('\'', '_');
30 | fileName = fileName.replace('?', '_');
31 | fileName = fileName.replace('"', '_');
32 | fileName = fileName.replace('|', '_');
33 | fileName = fileName.replace('(', '_');
34 | fileName = fileName.replace(')', '_');
35 | fileName = fileName.replace('[', '_');
36 | fileName = fileName.replace(']', '_');
37 | fileName = fileName.replaceAll("%", "");
38 | return fileName;
39 | }
40 |
41 | }
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/RockOnNextGenDefaultExceptionHandler.java:
--------------------------------------------------------------------------------
1 | package org.abrantix.rockon.rockonnggl;
2 |
3 | import java.io.PrintWriter;
4 | import java.io.StringWriter;
5 | import java.lang.Thread.UncaughtExceptionHandler;
6 |
7 | import org.abrantix.rockon.rockonnggl.cm.R;
8 |
9 | import android.content.Context;
10 | import android.content.Intent;
11 | import android.content.pm.PackageInfo;
12 | import android.content.pm.PackageManager;
13 | import android.content.pm.PackageManager.NameNotFoundException;
14 | import android.os.Build;
15 | import android.os.Handler;
16 | import android.os.Message;
17 | import android.sax.StartElementListener;
18 | import android.util.Log;
19 |
20 | class RockOnNextGenDefaultExceptionHandler implements Thread.UncaughtExceptionHandler {
21 |
22 | private UncaughtExceptionHandler oldDefaultExceptionHandler;
23 | private final String TAG = "RockOnNextGenDefaultExceptionHandler";
24 | private Context context;
25 |
26 | RockOnNextGenDefaultExceptionHandler(Context context)
27 | {
28 | // Log.d(TAG, "Default Exception Handler=" + Thread.getDefaultUncaughtExceptionHandler());
29 | oldDefaultExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
30 |
31 | Thread.setDefaultUncaughtExceptionHandler(this);
32 |
33 | this.context = context;
34 | }
35 |
36 | public void destroy(){
37 | this.context = null;
38 | Thread.setDefaultUncaughtExceptionHandler(null);
39 | }
40 |
41 | public void uncaughtException(Thread t, Throwable e) {
42 | if(e.getClass().equals(OutOfMemoryError.class))
43 | {
44 | android.os.Process.killProcess(android.os.Process.myPid());
45 | return;
46 | }
47 | if(e.getMessage().contains("eglMakeCurrent failed"))
48 | {
49 | android.os.Process.killProcess(android.os.Process.myPid());
50 | return;
51 | }
52 | if(e.getMessage().contains("eglSwapBuffers failed"))
53 | {
54 | android.os.Process.killProcess(android.os.Process.myPid());
55 | return;
56 | }
57 | if(e.getMessage().contains("createContext failed"))
58 | {
59 | android.os.Process.killProcess(android.os.Process.myPid());
60 | return;
61 | }
62 |
63 | PackageManager manager = context.getPackageManager();
64 | PackageInfo info;
65 | try{
66 | info = manager.getPackageInfo(context.getPackageName(), 0);
67 | }catch(Exception e1){
68 | info = new PackageInfo();
69 | info.versionName = "0.0.0";
70 | }
71 |
72 | StringBuilder message = new StringBuilder(
73 | context.getString(R.string.bug_report_intro_part_one)+
74 | info.versionName+" "+
75 | context.getString(R.string.bug_report_intro_part_two)
76 | );
77 | message.append(String.format("-- Android Version: sdk=%s, release=%s, inc=%s\n",
78 | Build.VERSION.SDK, Build.VERSION.RELEASE, Build.VERSION.INCREMENTAL));
79 |
80 | Runtime rt = Runtime.getRuntime();
81 | message.append(String.format("-- Memory free: %4.2fMB total: %4.2fMB max: %4.2fMB",
82 | rt.freeMemory() / 1024 / 1024.0,
83 | rt.totalMemory() / 1024 / 1024.0,
84 | rt.maxMemory() / 1024 / 1024.0));
85 | message.append(String.format("-- Thread State: %s\n", t.getState()));
86 |
87 | // Add stacktrace
88 |
89 | StringWriter sw = new StringWriter();
90 | PrintWriter pw = new PrintWriter(sw);
91 |
92 | e.printStackTrace(pw);
93 | pw.close();
94 |
95 | message.append("-- Stacktrace:\n");
96 | message.append(sw.getBuffer());
97 |
98 | String messageBody = message.toString();
99 |
100 | // ignore certain exceptions
101 | // if (Pattern.compile("CacheManager.java:391").matcher(messageBody).find())
102 | // return;
103 |
104 | // Prepare Mail
105 |
106 | final Intent sendIntent = new Intent(Intent.ACTION_SEND);
107 | sendIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
108 | sendIntent.setType("message/rfc822");
109 | sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { "filipe.abrantes@gmail.com" });
110 | sendIntent.putExtra(Intent.EXTRA_SUBJECT,
111 | "3 BugReport ["+info.versionName+"]: " + e.getClass().getSimpleName() + ": "
112 | + e.getMessage());
113 | sendIntent.putExtra(Intent.EXTRA_TEXT, messageBody);
114 | // Log.e(TAG, "Exception handled. Email activity should be initiated now.");
115 |
116 | // Send Mail
117 |
118 | new Thread(new Runnable() {
119 | public void run() {
120 | context.startActivity(sendIntent);
121 | //sendBroadcast(sendIntent);
122 | }
123 | }).start();
124 |
125 | // Log.e(TAG, "Exception handled. Email should be sent by now.");
126 |
127 | // Use default exception mechanism
128 |
129 | if (oldDefaultExceptionHandler != null)
130 | oldDefaultExceptionHandler.uncaughtException(t, e);
131 | }
132 |
133 | }
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/ScreenOnIntentReceiver.java:
--------------------------------------------------------------------------------
1 | /*
2 | * code adapted from the stock music app
3 | */
4 |
5 | package org.abrantix.rockon.rockonnggl;
6 |
7 | //import android.bluetooth.BluetoothA2dp;
8 | import org.abrantix.rockon.rockonnggl.cm.R;
9 |
10 | import android.app.KeyguardManager;
11 | import android.app.KeyguardManager.KeyguardLock;
12 | import android.content.Context;
13 | import android.content.Intent;
14 | import android.content.BroadcastReceiver;
15 | import android.os.Handler;
16 | import android.preference.PreferenceManager;
17 | import android.telephony.TelephonyManager;
18 | import android.util.Log;
19 |
20 |
21 | /**
22 | *
23 | */
24 | public class ScreenOnIntentReceiver extends BroadcastReceiver {
25 |
26 | private static final String TAG = "ScreenOnIntentReceiver";
27 |
28 | // private static final int MSG_LONGPRESS_TIMEOUT = 1;
29 | // private static final int LONG_PRESS_DELAY = 1000;
30 | //
31 | // private static long mLastClickTime = 0;
32 | // private static boolean mDown = false;
33 | // private static boolean mLaunched = false;
34 |
35 | // private static Handler mHandler = new Handler() {
36 | // @Override
37 | // public void handleMessage(Message msg) {
38 | // switch (msg.what) {
39 | // case MSG_LONGPRESS_TIMEOUT:
40 | // if (!mLaunched) {
41 | // Context context = (Context)msg.obj;
42 | // Intent i = new Intent();
43 | // i.putExtra("autoshuffle", "true");
44 | // i.setClass(context, RockOnNextGenGL.class);
45 | // i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
46 | // context.startActivity(i);
47 | // mLaunched = true;
48 | // }
49 | // break;
50 | // }
51 | // }
52 | // };
53 |
54 | @Override
55 | public void onReceive(Context context, Intent intent) {
56 | Log.i(TAG, intent.getAction());
57 |
58 | /**
59 | * are we using the lockscreen?
60 | */
61 | if(!PreferenceManager.getDefaultSharedPreferences(context).
62 | getBoolean(
63 | context.getString(
64 | R.string.preference_key_lock_screen),
65 | true))
66 | {
67 | return;
68 | }
69 |
70 | /**
71 | * Ignore if a call is in progress or the phone is ringing
72 | */
73 | if(((TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE)).getCallState()
74 | == TelephonyManager.CALL_STATE_RINGING
75 | ||
76 | ((TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE)).getCallState()
77 | == TelephonyManager.CALL_STATE_OFFHOOK)
78 | {
79 | return;
80 | }
81 |
82 | /**
83 | * Start our Lock Screen App
84 | */
85 | Intent i = new Intent(
86 | context,
87 | LockScreen.class);
88 | i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
89 | context.startActivity(i);
90 |
91 | }
92 |
93 | // Handler mLockScreenLauncherHandler = new Handler()
94 | // {
95 | // @Override
96 | // public void handleMessage(Message msg)
97 | // {
98 | //
99 | // }
100 | // };
101 | }
102 |
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/SearchUtils.java:
--------------------------------------------------------------------------------
1 | package org.abrantix.rockon.rockonnggl;
2 |
3 | import android.util.Log;
4 |
5 | public class SearchUtils{
6 |
7 | static boolean nameIsSimilarEnough(String artistNameFromSearch, String artistNameFiltered){
8 | /*
9 | * First check if the separate words of our name
10 | * are contained in the result from the search
11 | */
12 | // TODO:
13 |
14 | /* Then, do a blind search */
15 | int COMPARISON_SEGMENT_LENGTH = 3;
16 | int matchedSegments = 0;
17 | for(int i=0; i < artistNameFiltered.length() - COMPARISON_SEGMENT_LENGTH; i++){
18 | if(artistNameFromSearch.contains(artistNameFiltered.substring(i, i+COMPARISON_SEGMENT_LENGTH))){
19 | matchedSegments++;
20 | }
21 | // Log.i("SIMILARITY", artistNameFiltered.substring(i, i+COMPARISON_SEGMENT_LENGTH) +" in "+artistNameFromSearch);
22 | }
23 | Log.i("SIMILARITY", artistNameFromSearch+" ? "+artistNameFiltered);
24 | Log.i("SIMILARITY", ((double)matchedSegments)/(artistNameFiltered.length() - COMPARISON_SEGMENT_LENGTH)+
25 | " > "+Constants.SIMILARITY_THRESHOLD);
26 | if(((double)matchedSegments)/(artistNameFiltered.length() - COMPARISON_SEGMENT_LENGTH)
27 | > Constants.SIMILARITY_THRESHOLD)
28 | return true;
29 | else
30 | return false;
31 | }
32 |
33 |
34 | /*******************************
35 | *
36 | * filterString
37 | *
38 | *******************************/
39 | static public String filterString(String original){
40 | String filtered = original;
41 |
42 | try{
43 | /* Remove anything within () or []*/
44 | int init = original.indexOf('(');
45 | int stop = original.indexOf(')', init);
46 | if(init != -1 && stop != -1){
47 | String addInfo= original.substring(init, stop+1);
48 | filtered = original.substring(0, init) +
49 | original.substring(stop+1, original.length());
50 | }
51 | init = filtered.indexOf('[');
52 | stop = filtered.indexOf(']', init);
53 | if(init != -1 && stop != -1){
54 | String addInfo= filtered.substring(init, stop+1);
55 | filtered = filtered.substring(0, init) +
56 | filtered.substring(stop+1, filtered.length());
57 | }
58 |
59 | /* Remove common album name garbage */
60 | filtered = filtered.replace("CD1", "");
61 | filtered = filtered.replace("CD2", "");
62 | filtered = filtered.replace("cd1", "");
63 | filtered = filtered.replace("cd2", "");
64 |
65 | /* Remove strange characters */
66 | filtered = filtered.replace(',', ' ');
67 | filtered = filtered.replace('.', ' ');
68 | filtered = filtered.replace('+', ' ');
69 | filtered = filtered.replace('/', ' ');
70 | filtered = filtered.replace('<', ' ');
71 | filtered = filtered.replace('>', ' ');
72 | filtered = filtered.replace('?', ' ');
73 | filtered = filtered.replace('|', ' ');
74 | filtered = filtered.replace('#', ' ');
75 | filtered = filtered.replace('&', ' ');
76 | filtered = filtered.replace('%', ' ');
77 |
78 | Log.i("filter", filtered);
79 |
80 | return filtered;
81 | } catch (StringIndexOutOfBoundsException e){
82 | e.printStackTrace();
83 | return original;
84 | }
85 | }
86 | }
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/SongOptionClickListener.java:
--------------------------------------------------------------------------------
1 | package org.abrantix.rockon.rockonnggl;
2 |
3 | import android.content.DialogInterface;
4 | import android.os.Handler;
5 | import android.os.Message;
6 |
7 | class SongOptionClickListener implements android.content.DialogInterface.OnClickListener{
8 | private final String TAG = "PlaylistOptionClickListener";
9 |
10 | int mSongId;
11 | Handler mSongOptionClickHandler;
12 |
13 | public SongOptionClickListener(
14 | int songId,
15 | Handler songOptionClickHandler)
16 | {
17 | mSongOptionClickHandler = songOptionClickHandler;
18 | mSongId = songId;
19 | }
20 |
21 | @Override
22 | public void onClick(DialogInterface dialog, int which) {
23 |
24 | Message msg = new Message();
25 | msg.what = which;
26 | msg.arg1 = mSongId;
27 | mSongOptionClickHandler.sendMessage(msg);
28 | dialog.dismiss();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/SongSelectedClickListener.java:
--------------------------------------------------------------------------------
1 | package org.abrantix.rockon.rockonnggl;
2 |
3 | import android.content.DialogInterface;
4 | import android.database.Cursor;
5 | import android.os.Handler;
6 | import android.provider.MediaStore;
7 | import android.util.Log;
8 |
9 | class SongSelectedClickListener implements android.content.DialogInterface.OnClickListener{
10 | private final String TAG = "SongSelectedClickListener";
11 | Cursor mSongListCursor;
12 | Handler mSongItemSelectedHandler;
13 |
14 | public SongSelectedClickListener(Handler songClickHandler, Cursor songListCursor) {
15 | mSongItemSelectedHandler = songClickHandler;
16 | mSongListCursor = songListCursor;
17 | }
18 |
19 | @Override
20 | public void onClick(DialogInterface dialog, int which) {
21 | Log.i(TAG, "Item "+which+" clicked!");
22 | if (true)
23 | return;
24 | // Cursor cursor = ((CursorAdapter) arg0.getAdapter()).getCursor();
25 | mSongListCursor.moveToPosition(which);
26 | int songId = (int)
27 | ContentProviderUnifier.
28 | getAudioIdFromUnknownCursor(mSongListCursor);
29 | // mSongListCursor.getInt(
30 | // mSongListCursor.getColumnIndexOrThrow(
31 | // MediaStore.Audio.Media._ID));
32 | mSongItemSelectedHandler.sendEmptyMessageDelayed(
33 | songId,
34 | Constants.CLICK_ACTION_DELAY);
35 | dialog.dismiss();
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/SwitcherViewTouchListener.java:
--------------------------------------------------------------------------------
1 | package org.abrantix.rockon.rockonnggl;
2 |
3 | import android.opengl.GLSurfaceView;
4 | import android.opengl.GLSurfaceView.Renderer;
5 | import android.os.Handler;
6 | import android.os.Message;
7 | import android.provider.MediaStore;
8 | import android.sax.StartElementListener;
9 | import android.util.Log;
10 | import android.view.MotionEvent;
11 | import android.view.View;
12 | import android.view.View.OnTouchListener;
13 |
14 | public class SwitcherViewTouchListener implements OnTouchListener{
15 |
16 | final String TAG = "SwitcherViewTouchListener";
17 |
18 | // int mItemDimension;
19 |
20 | float mDownX = 0.f;
21 | float mDownY = 0.f;
22 | double mDownTimestamp = 0;
23 |
24 | float lastX = 0.f;
25 | float lastY = 0.f;
26 | double lastTimestamp = 0;
27 |
28 | AlbumArtistSwitcherView mSwitcherView;
29 |
30 | Message mMsg;
31 |
32 |
33 | @Override
34 | public boolean onTouch(View v, MotionEvent event) {
35 |
36 | mSwitcherView = (AlbumArtistSwitcherView) v;
37 |
38 | switch(event.getAction()){
39 |
40 | case MotionEvent.ACTION_DOWN:
41 | /**
42 | * detect movement in the lower part of the view
43 | */
44 | if(event.getY() < v.getHeight()/1.66f)
45 | return false;
46 | /**
47 | * and only on the sides
48 | */
49 | if(event.getX() > v.getWidth() * .2f && event.getX() < v.getWidth() * .8f)
50 | return false;
51 |
52 | mDownX = event.getX();
53 | mDownY = event.getY();
54 | mDownTimestamp = System.currentTimeMillis();
55 | lastTimestamp = mDownTimestamp;
56 |
57 | lastX = mDownX;
58 | lastY = mDownY;
59 |
60 | mSwitcherView.setTouching(
61 | true,
62 | event.getX(),
63 | event.getY());
64 |
65 | // AVOID EVENT FLOODING XXX
66 | try {
67 | Thread.sleep(16);
68 | } catch (InterruptedException e) {
69 | e.printStackTrace();
70 | }
71 | //
72 |
73 | return true;
74 |
75 | case MotionEvent.ACTION_MOVE:
76 | // /**
77 | // * LONG PRESS
78 | // */
79 | // if(System.currentTimeMillis() - mDownTimestamp >
80 | // Constants.MIN_LONG_CLICK_DURATION)
81 | // {
82 | // }
83 | // /**
84 | // * MOVE
85 | // */
86 | // else
87 | // {
88 | mSwitcherView.changePosition(
89 | event.getX() - lastX,
90 | event.getX(),
91 | event.getY());
92 | // }
93 |
94 | /**
95 | * SAVE STATE
96 | */
97 | lastY = event.getY();
98 | lastX = event.getX();
99 | lastTimestamp = System.currentTimeMillis();
100 |
101 | return true;
102 |
103 | case MotionEvent.ACTION_UP:
104 | mSwitcherView.setTouching(
105 | false,
106 | event.getX(),
107 | event.getY());
108 | /**
109 | * RESET STATE
110 | */
111 |
112 | return true;
113 |
114 | }
115 | return false;
116 | }
117 | }
--------------------------------------------------------------------------------
/src/org/abrantix/rockon/rockonnggl/ThemeChangeClickListener.java:
--------------------------------------------------------------------------------
1 | package org.abrantix.rockon.rockonnggl;
2 |
3 | import org.abrantix.rockon.rockonnggl.cm.R;
4 |
5 | import android.app.ProgressDialog;
6 | import android.content.Context;
7 | import android.content.DialogInterface;
8 | import android.content.DialogInterface.OnClickListener;
9 | import android.content.SharedPreferences.Editor;
10 | import android.os.Handler;
11 | import android.os.Message;
12 | import android.preference.PreferenceManager;
13 | import android.util.Log;
14 |
15 |
16 | public class ThemeChangeClickListener implements OnClickListener{
17 |
18 | final String TAG = "AlbumArtDownloadOkClickListener";
19 |
20 | private Context mContext;
21 | private int mTheme;
22 | private boolean mProcessing = false;
23 | private boolean mInTheBackground = false;
24 | private ProgressDialog mProgressDialog;
25 | private Handler mReloadUiHandler;
26 | private AlbumArtProcessor mAlbumArtProcessor;
27 |
28 | ThemeChangeClickListener(Context context, int theme, Handler reloadUiHandler){
29 | this.mContext = context;
30 | this.mTheme = theme;
31 | this.mReloadUiHandler = reloadUiHandler;
32 | }
33 |
34 | public boolean isProcessing(){
35 | return mProcessing;
36 | }
37 |
38 | public boolean isInTheBackground(){
39 | return mInTheBackground;
40 | }
41 |
42 | public int getTheme()
43 | {
44 | return mTheme;
45 | }
46 |
47 | public void changeTheme(int theme, boolean autostart)
48 | {
49 | // TODO: stop processing thread
50 | mTheme = theme;
51 | }
52 |
53 | @Override
54 | public void onClick(DialogInterface dialog, int which) {
55 | mArtProcessingTrigger.sendEmptyMessageDelayed(0, 250);
56 | }
57 |
58 | /* Handler for triggering art download */
59 | public Handler mArtProcessingTrigger = new Handler(){
60 | @Override
61 | public void handleMessage(Message msg){
62 | mProcessing = true;
63 |
64 | /* show a progress dialog to give feedback to the user */
65 | mProgressDialog = new ProgressDialog(mContext);
66 | mProgressDialog.setTitle(R.string.art_processing_progress_title);
67 | mProgressDialog.setMessage(mContext.getResources().getString(
68 | R.string.art_processing_progress_initial_message));
69 | mProgressDialog.setButton(
70 | mContext.getString(R.string.art_processing_go_background),
71 | goTotheBackgroundClickListener);
72 | mProgressDialog.setButton2(
73 | mContext.getString(R.string.art_processing_cancel),
74 | cancelProcessingClickListener);
75 | mProgressDialog.show();
76 |
77 | Log.i(TAG, "Creating Album Art Processor");
78 |
79 | /* start fetching album art */
80 | mAlbumArtProcessor = new AlbumArtProcessor(mContext, mArtProcessingUpdateHandler, mTheme);
81 |
82 | Log.i(TAG, "Importing art!");
83 |
84 | mAlbumArtProcessor.processAlbumArt();
85 | }
86 | };
87 |
88 |
89 | // Handler to receive messages from the AlbumArtDownloader class thread
90 | public Handler mArtProcessingUpdateHandler = new Handler(){
91 | public void handleMessage(Message msg){
92 | if(mProgressDialog.isShowing()){
93 | // Last Message ?
94 | if(msg.getData()
95 | .getString(Constants.ALBUM_ART_PROCESSING_UI_UPDATE_DONE_IPC_MSG)
96 | != null)
97 | {
98 | try
99 | {
100 | mProgressDialog.dismiss();
101 | }
102 | catch (IllegalArgumentException e) // based on bug reports
103 | {
104 | e.printStackTrace();
105 | }
106 | stopArtProcessing();
107 | // save in preferences
108 | Log.i(TAG, "XXXXXXXXXXXXXXXXXXXXXXXXXX");
109 | Log.i(TAG, "Finishing Image Processing");
110 | Editor edit = PreferenceManager.getDefaultSharedPreferences(mContext).edit();
111 | edit.putInt(Constants.prefkey_mTheme, mTheme);
112 | if(mTheme == Constants.THEME_HALFTONE)
113 | edit.putBoolean(Constants.prefkey_mThemeHalfToneDone, true);
114 | edit.commit();
115 | // reload ui
116 | mReloadUiHandler.sendEmptyMessage(mTheme);
117 | }
118 | // Still going
119 | else
120 | mProgressDialog.setMessage(
121 | msg.getData()
122 | .getString(Constants.ALBUM_ART_PROCESSING_UI_UPDATE_IPC_MSG));
123 | }
124 | }
125 | };
126 |
127 | // function for resuming download after a rotation/app close
128 |
129 |
130 | private OnClickListener cancelProcessingClickListener = new OnClickListener(){
131 |
132 | @Override
133 | public void onClick(DialogInterface dialog, int which) {
134 | stopArtProcessing();
135 | }
136 |
137 | };
138 |
139 | private OnClickListener goTotheBackgroundClickListener = new OnClickListener(){
140 |
141 | @Override
142 | public void onClick(DialogInterface dialog, int which) {
143 | mInTheBackground = true;
144 | }
145 |
146 | };
147 |
148 | public void stopArtProcessing(){
149 | mAlbumArtProcessor.stopAlbumArt();
150 | mProcessing = false;
151 | try
152 | {
153 | mProgressDialog.dismiss();
154 | }
155 | catch(IllegalArgumentException e)
156 | {
157 | e.printStackTrace();
158 | }
159 | }
160 |
161 | }
--------------------------------------------------------------------------------
/src/org/abrantix/rockonnggl/unused/Cube.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2007 The Android Open Source Project
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package org.abrantix.rockonnggl.unused;
18 |
19 | import java.io.FileInputStream;
20 | import java.io.FileNotFoundException;
21 | import java.nio.ByteBuffer;
22 | import java.nio.ByteOrder;
23 | import java.nio.IntBuffer;
24 |
25 | import javax.microedition.khronos.opengles.GL10;
26 |
27 | import android.graphics.Bitmap;
28 | import android.graphics.BitmapFactory;
29 | import android.opengl.GLUtils;
30 |
31 | /**
32 | * A vertex shaded cube.
33 | */
34 | class Cube
35 | {
36 | public Cube()
37 | {
38 | int one = 0x10000;
39 | int vertices[] = {
40 | -one, -one, -one,
41 | one, -one, -one,
42 | one, one, -one,
43 | -one, one, -one,
44 | -one, -one, one,
45 | one, -one, one,
46 | one, one, one,
47 | -one, one, one,
48 | };
49 |
50 | int colors[] = {
51 | 0, 0, 0, one,
52 | one, 0, 0, one,
53 | one, one, 0, one,
54 | 0, one, 0, one,
55 | 0, 0, one, one,
56 | one, 0, one, one,
57 | one, one, one, one,
58 | 0, one, one, one,
59 | };
60 |
61 | int texVertices[] = {
62 | 0, 0,
63 | 0, 1,
64 | 1, 1,
65 | 1, 0,
66 | -one, -one,
67 | one, -one,
68 | one, one,
69 | -one, one
70 | };
71 |
72 | byte indices[] = {
73 | 0, 4, 5, 0, 5, 1,
74 | 1, 5, 6, 1, 6, 2,
75 | 2, 6, 7, 2, 7, 3,
76 | 3, 7, 4, 3, 4, 0,
77 | 4, 7, 6, 4, 6, 5,
78 | 3, 0, 1, 3, 1, 2
79 | };
80 |
81 | // Buffers to be passed to gl*Pointer() functions
82 | // must be direct, i.e., they must be placed on the
83 | // native heap where the garbage collector cannot
84 | // move them.
85 | //
86 | // Buffers with multi-byte datatypes (e.g., short, int, float)
87 | // must have their byte order set to native order
88 |
89 | ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length*4);
90 | vbb.order(ByteOrder.nativeOrder());
91 | mVertexBuffer = vbb.asIntBuffer();
92 | mVertexBuffer.put(vertices);
93 | mVertexBuffer.position(0);
94 |
95 | ByteBuffer cbb = ByteBuffer.allocateDirect(colors.length*4);
96 | cbb.order(ByteOrder.nativeOrder());
97 | mColorBuffer = cbb.asIntBuffer();
98 | mColorBuffer.put(colors);
99 | mColorBuffer.position(0);
100 |
101 | ByteBuffer tbb = ByteBuffer.allocateDirect(texVertices.length*4);
102 | tbb.order(ByteOrder.nativeOrder());
103 | mTexBuffer = tbb.asIntBuffer();
104 | mTexBuffer.put(texVertices);
105 | mTexBuffer.position(0);
106 |
107 | mIndexBuffer = ByteBuffer.allocateDirect(indices.length);
108 | mIndexBuffer.put(indices);
109 | mIndexBuffer.position(0);
110 |
111 | }
112 |
113 | Bitmap bm = null;
114 | public void loadTextures(GL10 gl){
115 |
116 | /** should be the cycle using the position */
117 |
118 | if(bm == null){
119 | FileInputStream albumCoverFileInputStream;
120 | try {
121 | albumCoverFileInputStream = new FileInputStream("/sdcard/albumthumbs/RockOn/small/Ingrid Michaelson - Be OK");
122 | bm = BitmapFactory.decodeStream(albumCoverFileInputStream);
123 |
124 | /** load texture */
125 | gl.glBindTexture(
126 | gl.GL_TEXTURE_2D,
127 | 99 // our texture ID
128 | );
129 | GLUtils.texImage2D(
130 | gl.GL_TEXTURE_2D,
131 | 0, // detail level
132 | bm, //bitmap
133 | 0 // border
134 | );
135 |
136 | } catch (FileNotFoundException e) {
137 | e.printStackTrace();
138 | }
139 |
140 | }
141 |
142 | }
143 |
144 | public void draw(GL10 gl)
145 | {
146 | gl.glEnable(GL10.GL_TEXTURE_2D);
147 |
148 | loadTextures(gl);
149 |
150 |
151 |
152 | gl.glFrontFace(gl.GL_CCW);
153 | gl.glVertexPointer(3, gl.GL_FIXED, 0, mVertexBuffer);
154 |
155 |
156 | gl.glActiveTexture(GL10.GL_TEXTURE0);
157 | gl.glBindTexture(GL10.GL_TEXTURE_2D, 99);
158 | gl.glTexCoordPointer(2, gl.GL_FIXED, 0, mTexBuffer);
159 |
160 | // gl.glColorPointer(4, gl.GL_FIXED, 0, mColorBuffer);
161 | gl.glDrawElements(gl.GL_TRIANGLES, 36, gl.GL_UNSIGNED_BYTE, mIndexBuffer);
162 | }
163 |
164 | public float position = 0;
165 | private IntBuffer mTexBuffer;
166 | private IntBuffer mVertexBuffer;
167 | private IntBuffer mColorBuffer;
168 | private ByteBuffer mIndexBuffer;
169 | }
170 |
--------------------------------------------------------------------------------
/src/org/abrantix/rockonnggl/unused/CubeRenderer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2007 The Android Open Source Project
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package org.abrantix.rockonnggl.unused;
18 |
19 | import javax.microedition.khronos.egl.EGL10;
20 | import javax.microedition.khronos.egl.EGLConfig;
21 | import javax.microedition.khronos.opengles.GL10;
22 |
23 | import android.opengl.GLSurfaceView;
24 |
25 | /**
26 | * Render a pair of tumbling cubes.
27 | */
28 |
29 | class CubeRenderer implements GLSurfaceView.Renderer {
30 | public CubeRenderer(boolean useTranslucentBackground) {
31 | mTranslucentBackground = useTranslucentBackground;
32 | mCube = new Cube();
33 | }
34 |
35 | public void onDrawFrame(GL10 gl) {
36 | /*
37 | * Usually, the first thing one might want to do is to clear
38 | * the screen. The most efficient way of doing this is to use
39 | * glClear().
40 | */
41 |
42 | gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
43 |
44 | /*
45 | * Now we're ready to draw some 3D objects
46 | */
47 |
48 | gl.glMatrixMode(GL10.GL_MODELVIEW);
49 | gl.glLoadIdentity();
50 | gl.glTranslatef(0, 0, -5.0f);
51 | gl.glRotatef(mAngle, 1, 0, 0);
52 | // gl.glRotatef(mAngle*0.25f, 1, 0, 0);
53 |
54 | gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
55 | gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
56 | // gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
57 |
58 | gl.glEnable(GL10.GL_TEXTURE_2D);
59 | gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S,
60 | GL10.GL_REPEAT);
61 | gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T,
62 | GL10.GL_REPEAT);
63 |
64 |
65 | mCube.draw(gl);
66 |
67 | // gl.glRotatef(mAngle*2.0f, 0, 1, 1);
68 | // gl.glTranslatef(0.5f, 0.5f, 0.5f);
69 | //
70 | // mCube.draw(gl);
71 |
72 | mAngle += 5.f;
73 | }
74 |
75 | public int[] getConfigSpec() {
76 | if (mTranslucentBackground) {
77 | // We want a depth buffer and an alpha buffer
78 | int[] configSpec = {
79 | EGL10.EGL_RED_SIZE, 8,
80 | EGL10.EGL_GREEN_SIZE, 8,
81 | EGL10.EGL_BLUE_SIZE, 8,
82 | EGL10.EGL_ALPHA_SIZE, 8,
83 | EGL10.EGL_DEPTH_SIZE, 16,
84 | EGL10.EGL_NONE
85 | };
86 | return configSpec;
87 | } else {
88 | // We want a depth buffer, don't care about the
89 | // details of the color buffer.
90 | int[] configSpec = {
91 | EGL10.EGL_DEPTH_SIZE, 16,
92 | EGL10.EGL_NONE
93 | };
94 | return configSpec;
95 | }
96 | }
97 |
98 | public void onSurfaceChanged(GL10 gl, int width, int height) {
99 | gl.glViewport(0, 0, width, height);
100 |
101 | /*
102 | * Set our projection matrix. This doesn't have to be done
103 | * each time we draw, but usually a new projection needs to
104 | * be set when the viewport is resized.
105 | */
106 |
107 | float ratio = (float) width / height;
108 | gl.glMatrixMode(GL10.GL_PROJECTION);
109 | gl.glLoadIdentity();
110 | gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10);
111 | }
112 |
113 | public void onSurfaceCreated(GL10 gl, EGLConfig config) {
114 | /*
115 | * By default, OpenGL enables features that improve quality
116 | * but reduce performance. One might want to tweak that
117 | * especially on software renderer.
118 | */
119 | gl.glDisable(GL10.GL_DITHER);
120 |
121 | /*
122 | * Some one-time OpenGL initialization can be made here
123 | * probably based on features of this particular context
124 | */
125 | gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT,
126 | GL10.GL_FASTEST);
127 |
128 | if (mTranslucentBackground) {
129 | gl.glClearColor(0,0,0,0);
130 | } else {
131 | gl.glClearColor(1,1,1,1);
132 | }
133 | gl.glEnable(GL10.GL_CULL_FACE);
134 | gl.glShadeModel(GL10.GL_SMOOTH);
135 | gl.glEnable(GL10.GL_DEPTH_TEST);
136 | }
137 | private boolean mTranslucentBackground;
138 | private Cube mCube;
139 | private float mAngle;
140 | }
141 |
--------------------------------------------------------------------------------