Added Videos, Bluetooth notifications are optional

Added getVideo() support
New view for videos
Bluetooth notifications are now optional
Bluetooth album art is now optional and off by default
Bluetooth album art is now 300 px instead of 500 px when enabled
Fixed swipe to change track on album art
This commit is contained in:
Joshua Bahnsen 2013-06-04 00:37:53 -07:00
parent d8a2ea39a1
commit 2648145438
32 changed files with 743 additions and 460 deletions

View File

@ -2,8 +2,8 @@
<manifest xmlns:a="http://schemas.android.com/apk/res/android"
package="com.thejoshwa.ultrasonic.androidapp"
a:installLocation="auto"
a:versionCode="27"
a:versionName="1.1.0.23" >
a:versionCode="28"
a:versionName="1.2.0.1" >
<uses-permission a:name="android.permission.INTERNET" />
<uses-permission a:name="android.permission.READ_PHONE_STATE" />

Binary file not shown.

View File

@ -51,7 +51,7 @@ public final class R {
public static final class id {
public static final int both = 0x7f060003;
public static final int disabled = 0x7f060000;
public static final int fl_inner = 0x7f06008e;
public static final int fl_inner = 0x7f060090;
public static final int flip = 0x7f060008;
public static final int gridview = 0x7f060009;
public static final int manualOnly = 0x7f060004;
@ -59,10 +59,10 @@ public final class R {
public static final int pullFromEnd = 0x7f060002;
public static final int pullFromStart = 0x7f060001;
public static final int pullUpFromBottom = 0x7f060006;
public static final int pull_to_refresh_image = 0x7f06008f;
public static final int pull_to_refresh_progress = 0x7f060090;
public static final int pull_to_refresh_sub_text = 0x7f060092;
public static final int pull_to_refresh_text = 0x7f060091;
public static final int pull_to_refresh_image = 0x7f060091;
public static final int pull_to_refresh_progress = 0x7f060092;
public static final int pull_to_refresh_sub_text = 0x7f060094;
public static final int pull_to_refresh_text = 0x7f060093;
public static final int rotate = 0x7f060007;
public static final int scrollview = 0x7f06000b;
public static final int webview = 0x7f06000a;

View File

@ -614,23 +614,23 @@ or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>na
public static final int album=0x7f060028;
public static final int album_artist=0x7f06001e;
public static final int album_coverart=0x7f06001c;
public static final int album_menu_download=0x7f0600cb;
public static final int album_menu_pin=0x7f0600c9;
public static final int album_menu_play_last=0x7f0600c8;
public static final int album_menu_play_next=0x7f0600c7;
public static final int album_menu_play_now=0x7f0600c6;
public static final int album_menu_unpin=0x7f0600ca;
public static final int album_menu_download=0x7f0600cd;
public static final int album_menu_pin=0x7f0600cb;
public static final int album_menu_play_last=0x7f0600ca;
public static final int album_menu_play_next=0x7f0600c9;
public static final int album_menu_play_now=0x7f0600c8;
public static final int album_menu_unpin=0x7f0600cc;
public static final int album_star=0x7f06001f;
public static final int album_title=0x7f06001d;
public static final int appwidget_coverart=0x7f060020;
public static final int appwidget_top=0x7f060022;
public static final int artist=0x7f060024;
public static final int artist_menu_download=0x7f0600d1;
public static final int artist_menu_pin=0x7f0600cf;
public static final int artist_menu_play_last=0x7f0600ce;
public static final int artist_menu_play_next=0x7f0600cd;
public static final int artist_menu_play_now=0x7f0600cc;
public static final int artist_menu_unpin=0x7f0600d0;
public static final int artist_menu_download=0x7f0600d3;
public static final int artist_menu_pin=0x7f0600d1;
public static final int artist_menu_play_last=0x7f0600d0;
public static final int artist_menu_play_next=0x7f0600cf;
public static final int artist_menu_play_now=0x7f0600ce;
public static final int artist_menu_unpin=0x7f0600d2;
public static final int both=0x7f060003;
public static final int chat_edittext=0x7f06002a;
public static final int chat_entries=0x7f060029;
@ -642,7 +642,7 @@ or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>na
public static final int control_next=0x7f060027;
public static final int control_play=0x7f060026;
public static final int control_previous=0x7f060025;
public static final int control_stop=0x7f060084;
public static final int control_stop=0x7f060086;
public static final int disabled=0x7f060000;
public static final int download_album=0x7f06003e;
public static final int download_album_art_image=0x7f060034;
@ -653,28 +653,28 @@ or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>na
public static final int download_control_layout=0x7f060030;
public static final int download_duration=0x7f06003b;
public static final int download_empty=0x7f060044;
public static final int download_equalizer=0x7f0600bd;
public static final int download_equalizer=0x7f0600bf;
public static final int download_items=0x7f060038;
public static final int download_jukebox=0x7f0600bf;
public static final int download_jukebox=0x7f0600c1;
public static final int download_list=0x7f060045;
public static final int download_next=0x7f060072;
public static final int download_pause=0x7f060070;
public static final int download_next=0x7f060074;
public static final int download_pause=0x7f060072;
public static final int download_playlist_flipper=0x7f060032;
public static final int download_position=0x7f060039;
public static final int download_previous=0x7f06006e;
public static final int download_previous=0x7f060070;
public static final int download_progress_bar=0x7f060046;
public static final int download_remove_all=0x7f060041;
public static final int download_repeat=0x7f060073;
public static final int download_repeat=0x7f060075;
public static final int download_save_playlist=0x7f060042;
public static final int download_shuffle=0x7f06006d;
public static final int download_shuffle=0x7f06006f;
public static final int download_song_title=0x7f060037;
public static final int download_star=0x7f060043;
public static final int download_start=0x7f06006f;
public static final int download_stop=0x7f060071;
public static final int download_start=0x7f060071;
public static final int download_stop=0x7f060073;
public static final int download_toggle_list=0x7f06003f;
public static final int download_total_duration=0x7f06003c;
public static final int download_track=0x7f06003a;
public static final int download_visualizer=0x7f0600be;
public static final int download_visualizer=0x7f0600c0;
public static final int download_visualizer_view_layout=0x7f060035;
public static final int equalizer_bar=0x7f06004c;
public static final int equalizer_frequency=0x7f06004a;
@ -682,14 +682,14 @@ or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>na
public static final int equalizer_enabled=0x7f060047;
public static final int equalizer_layout=0x7f060048;
public static final int equalizer_preset=0x7f060049;
public static final int fl_inner=0x7f06008e;
public static final int fl_inner=0x7f060090;
public static final int flip=0x7f060008;
public static final int get_playlist_comment=0x7f0600b9;
public static final int get_playlist_comment_label=0x7f0600b8;
public static final int get_playlist_name=0x7f0600b7;
public static final int get_playlist_name_label=0x7f0600b6;
public static final int get_playlist_public=0x7f0600bb;
public static final int get_playlist_public_label=0x7f0600ba;
public static final int get_playlist_comment=0x7f0600bb;
public static final int get_playlist_comment_label=0x7f0600ba;
public static final int get_playlist_name=0x7f0600b9;
public static final int get_playlist_name_label=0x7f0600b8;
public static final int get_playlist_public=0x7f0600bd;
public static final int get_playlist_public_label=0x7f0600bc;
public static final int gridview=0x7f060009;
public static final int help_back=0x7f06004e;
public static final int help_buttons=0x7f06004d;
@ -721,10 +721,12 @@ or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>na
public static final int main_list=0x7f060058;
public static final int main_music=0x7f06005d;
public static final int main_select_server=0x7f06005a;
public static final int main_shuffle=0x7f0600bc;
public static final int main_shuffle=0x7f0600be;
public static final int main_songs=0x7f060061;
public static final int main_songs_button=0x7f060062;
public static final int main_songs_starred=0x7f060063;
public static final int main_videos=0x7f06006e;
public static final int main_videos_title=0x7f06006d;
public static final int manualOnly=0x7f060004;
/** Used with View#setTag(int) to specify a position for the active view.
*/
@ -744,108 +746,108 @@ or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>na
/** The ID of the menu container.
*/
public static final int md__menu=0x7f06000f;
public static final int menu_about=0x7f06007f;
public static final int menu_about=0x7f060081;
public static final int menu_album=0x7f060012;
public static final int menu_bookmarks=0x7f06007a;
public static final int menu_browse=0x7f060077;
public static final int menu_chat=0x7f06007b;
public static final int menu_common=0x7f06007d;
public static final int menu_exit=0x7f060080;
public static final int menu_home=0x7f060076;
public static final int menu_lyrics=0x7f0600c2;
public static final int menu_main=0x7f060074;
public static final int menu_navigation=0x7f060075;
public static final int menu_now_playing=0x7f06007c;
public static final int menu_playlists=0x7f060079;
public static final int menu_remove=0x7f0600c3;
public static final int menu_screen_on_off=0x7f0600c0;
public static final int menu_search=0x7f060078;
public static final int menu_settings=0x7f06007e;
public static final int menu_show_album=0x7f0600c1;
public static final int menu_shuffle=0x7f0600c4;
public static final int notification_image=0x7f060082;
public static final int now_playing=0x7f060085;
public static final int now_playing_artist=0x7f060089;
public static final int now_playing_control_play=0x7f06008a;
public static final int now_playing_image=0x7f060087;
public static final int now_playing_trackname=0x7f060088;
public static final int now_playing_view=0x7f060086;
public static final int play_video_contents=0x7f06008b;
public static final int playlist_info=0x7f0600d2;
public static final int playlist_menu_delete=0x7f0600d9;
public static final int playlist_menu_download=0x7f0600d7;
public static final int playlist_menu_pin=0x7f0600d5;
public static final int playlist_menu_play_now=0x7f0600d3;
public static final int playlist_menu_play_shuffled=0x7f0600d4;
public static final int playlist_menu_unpin=0x7f0600d6;
public static final int playlist_name=0x7f06008c;
public static final int playlist_update_info=0x7f0600d8;
public static final int progress_message=0x7f06008d;
public static final int menu_bookmarks=0x7f06007c;
public static final int menu_browse=0x7f060079;
public static final int menu_chat=0x7f06007d;
public static final int menu_common=0x7f06007f;
public static final int menu_exit=0x7f060082;
public static final int menu_home=0x7f060078;
public static final int menu_lyrics=0x7f0600c4;
public static final int menu_main=0x7f060076;
public static final int menu_navigation=0x7f060077;
public static final int menu_now_playing=0x7f06007e;
public static final int menu_playlists=0x7f06007b;
public static final int menu_remove=0x7f0600c5;
public static final int menu_screen_on_off=0x7f0600c2;
public static final int menu_search=0x7f06007a;
public static final int menu_settings=0x7f060080;
public static final int menu_show_album=0x7f0600c3;
public static final int menu_shuffle=0x7f0600c6;
public static final int notification_image=0x7f060084;
public static final int now_playing=0x7f060087;
public static final int now_playing_artist=0x7f06008b;
public static final int now_playing_control_play=0x7f06008c;
public static final int now_playing_image=0x7f060089;
public static final int now_playing_trackname=0x7f06008a;
public static final int now_playing_view=0x7f060088;
public static final int play_video_contents=0x7f06008d;
public static final int playlist_info=0x7f0600d4;
public static final int playlist_menu_delete=0x7f0600db;
public static final int playlist_menu_download=0x7f0600d9;
public static final int playlist_menu_pin=0x7f0600d7;
public static final int playlist_menu_play_now=0x7f0600d5;
public static final int playlist_menu_play_shuffled=0x7f0600d6;
public static final int playlist_menu_unpin=0x7f0600d8;
public static final int playlist_name=0x7f06008e;
public static final int playlist_update_info=0x7f0600da;
public static final int progress_message=0x7f06008f;
public static final int pullDownFromTop=0x7f060005;
public static final int pullFromEnd=0x7f060002;
public static final int pullFromStart=0x7f060001;
public static final int pullUpFromBottom=0x7f060006;
public static final int pull_to_refresh_image=0x7f06008f;
public static final int pull_to_refresh_progress=0x7f060090;
public static final int pull_to_refresh_sub_text=0x7f060092;
public static final int pull_to_refresh_text=0x7f060091;
public static final int pull_to_refresh_image=0x7f060091;
public static final int pull_to_refresh_progress=0x7f060092;
public static final int pull_to_refresh_sub_text=0x7f060094;
public static final int pull_to_refresh_text=0x7f060093;
public static final int rotate=0x7f060007;
public static final int save_playlist_name=0x7f060094;
public static final int save_playlist_root=0x7f060093;
public static final int save_playlist_name=0x7f060096;
public static final int save_playlist_root=0x7f060095;
public static final int scrollview=0x7f06000b;
public static final int search_albums=0x7f060098;
public static final int search_artists=0x7f060097;
public static final int search_list=0x7f060095;
public static final int search_more_albums=0x7f06009b;
public static final int search_more_artists=0x7f06009a;
public static final int search_more_songs=0x7f06009c;
public static final int search_search=0x7f060096;
public static final int search_songs=0x7f060099;
public static final int select_album_art=0x7f06009f;
public static final int select_album_artist=0x7f0600a1;
public static final int search_albums=0x7f06009a;
public static final int search_artists=0x7f060099;
public static final int search_list=0x7f060097;
public static final int search_more_albums=0x7f06009d;
public static final int search_more_artists=0x7f06009c;
public static final int search_more_songs=0x7f06009e;
public static final int search_search=0x7f060098;
public static final int search_songs=0x7f06009b;
public static final int select_album_art=0x7f0600a1;
public static final int select_album_artist=0x7f0600a3;
public static final int select_album_delete=0x7f06001a;
public static final int select_album_download=0x7f060019;
public static final int select_album_duration=0x7f0600a4;
public static final int select_album_empty=0x7f06009d;
public static final int select_album_entries=0x7f06009e;
public static final int select_album_genre=0x7f0600a2;
public static final int select_album_duration=0x7f0600a6;
public static final int select_album_empty=0x7f06009f;
public static final int select_album_entries=0x7f0600a0;
public static final int select_album_genre=0x7f0600a4;
public static final int select_album_more=0x7f06001b;
public static final int select_album_pin=0x7f060017;
public static final int select_album_play_all=0x7f0600c5;
public static final int select_album_play_all=0x7f0600c7;
public static final int select_album_play_last=0x7f060016;
public static final int select_album_play_next=0x7f060015;
public static final int select_album_play_now=0x7f060014;
public static final int select_album_select=0x7f060013;
public static final int select_album_song_count=0x7f0600a3;
public static final int select_album_title=0x7f0600a0;
public static final int select_album_song_count=0x7f0600a5;
public static final int select_album_title=0x7f0600a2;
public static final int select_album_unpin=0x7f060018;
public static final int select_artist_folder=0x7f0600a6;
public static final int select_artist_folder_1=0x7f0600a7;
public static final int select_artist_folder_2=0x7f0600a8;
public static final int select_artist_list=0x7f0600a5;
public static final int select_genre_empty=0x7f0600a9;
public static final int select_genre_list=0x7f0600aa;
public static final int select_playlist_empty=0x7f0600ab;
public static final int select_playlist_list=0x7f0600ac;
public static final int song_artist=0x7f0600b0;
public static final int song_check=0x7f0600b2;
public static final int song_duration=0x7f0600b1;
public static final int song_menu_download=0x7f0600df;
public static final int song_menu_pin=0x7f0600dd;
public static final int song_menu_play_last=0x7f0600dc;
public static final int song_menu_play_next=0x7f0600db;
public static final int song_menu_play_now=0x7f0600da;
public static final int song_menu_unpin=0x7f0600de;
public static final int song_star=0x7f0600b3;
public static final int song_status=0x7f0600af;
public static final int song_title=0x7f0600ae;
public static final int song_track=0x7f0600ad;
public static final int statusbar=0x7f060081;
public static final int tab_progress=0x7f0600b4;
public static final int tab_progress_message=0x7f0600b5;
public static final int select_artist_folder=0x7f0600a8;
public static final int select_artist_folder_1=0x7f0600a9;
public static final int select_artist_folder_2=0x7f0600aa;
public static final int select_artist_list=0x7f0600a7;
public static final int select_genre_empty=0x7f0600ab;
public static final int select_genre_list=0x7f0600ac;
public static final int select_playlist_empty=0x7f0600ad;
public static final int select_playlist_list=0x7f0600ae;
public static final int song_artist=0x7f0600b2;
public static final int song_check=0x7f0600b4;
public static final int song_duration=0x7f0600b3;
public static final int song_menu_download=0x7f0600e1;
public static final int song_menu_pin=0x7f0600df;
public static final int song_menu_play_last=0x7f0600de;
public static final int song_menu_play_next=0x7f0600dd;
public static final int song_menu_play_now=0x7f0600dc;
public static final int song_menu_unpin=0x7f0600e0;
public static final int song_star=0x7f0600b5;
public static final int song_status=0x7f0600b1;
public static final int song_title=0x7f0600b0;
public static final int song_track=0x7f0600af;
public static final int statusbar=0x7f060083;
public static final int tab_progress=0x7f0600b6;
public static final int tab_progress_message=0x7f0600b7;
public static final int title=0x7f060023;
public static final int toast_layout_root=0x7f060052;
public static final int trackname=0x7f060083;
public static final int trackname=0x7f060085;
public static final int webview=0x7f06000a;
}
public static final class integer {
@ -900,6 +902,8 @@ or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>na
public static final int song_list_item=0x7f03002c;
public static final int tab_progress=0x7f03002d;
public static final int update_playlist=0x7f03002e;
public static final int video_details=0x7f03002f;
public static final int video_list_item=0x7f030030;
}
public static final class menu {
public static final int main=0x7f0e0000;
@ -1026,35 +1030,36 @@ or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>na
public static final int main_songs_random=0x7f08006b;
public static final int main_songs_starred=0x7f08006c;
public static final int main_songs_title=0x7f08006d;
public static final int main_welcome_text=0x7f08006e;
public static final int main_welcome_title=0x7f08006f;
public static final int menu_about=0x7f080070;
public static final int menu_add_playlist=0x7f080071;
public static final int menu_common=0x7f080072;
public static final int menu_deleted_playlist=0x7f080073;
public static final int menu_deleted_playlist_error=0x7f080074;
public static final int menu_exit=0x7f080075;
public static final int menu_help=0x7f080076;
public static final int menu_navigation=0x7f080077;
public static final int menu_remove_playlist=0x7f080078;
public static final int menu_search=0x7f080079;
public static final int menu_settings=0x7f08007a;
public static final int music_library_label=0x7f08007b;
public static final int music_library_label_offline=0x7f08007c;
public static final int music_service_retry=0x7f08007d;
public static final int parser_artist_count=0x7f08007e;
public static final int parser_not_authenticated=0x7f08007f;
public static final int parser_not_authorized=0x7f080080;
public static final int parser_reading=0x7f080081;
public static final int parser_reading_done=0x7f080082;
public static final int parser_upgrade_client=0x7f080083;
public static final int parser_upgrade_server=0x7f080084;
public static final int playlist_label=0x7f080085;
public static final int playlist_update_info=0x7f080086;
public static final int playlist_updated_info=0x7f080087;
public static final int playlist_updated_info_error=0x7f080088;
public static final int playlist_error=0x7f080089;
public static final int progress_wait=0x7f08008a;
public static final int main_videos=0x7f08006e;
public static final int main_welcome_text=0x7f08006f;
public static final int main_welcome_title=0x7f080070;
public static final int menu_about=0x7f080071;
public static final int menu_add_playlist=0x7f080072;
public static final int menu_common=0x7f080073;
public static final int menu_deleted_playlist=0x7f080074;
public static final int menu_deleted_playlist_error=0x7f080075;
public static final int menu_exit=0x7f080076;
public static final int menu_help=0x7f080077;
public static final int menu_navigation=0x7f080078;
public static final int menu_remove_playlist=0x7f080079;
public static final int menu_search=0x7f08007a;
public static final int menu_settings=0x7f08007b;
public static final int music_library_label=0x7f08007c;
public static final int music_library_label_offline=0x7f08007d;
public static final int music_service_retry=0x7f08007e;
public static final int parser_artist_count=0x7f08007f;
public static final int parser_not_authenticated=0x7f080080;
public static final int parser_not_authorized=0x7f080081;
public static final int parser_reading=0x7f080082;
public static final int parser_reading_done=0x7f080083;
public static final int parser_upgrade_client=0x7f080084;
public static final int parser_upgrade_server=0x7f080085;
public static final int playlist_label=0x7f080086;
public static final int playlist_update_info=0x7f080087;
public static final int playlist_updated_info=0x7f080088;
public static final int playlist_updated_info_error=0x7f080089;
public static final int playlist_error=0x7f08008a;
public static final int progress_wait=0x7f08008b;
/** Just use standard Pull Down String when pulling up. These can be set for languages which require it
Just use standard Pull Down String when pulling up. These can be set for languages which require it
*/
@ -1064,213 +1069,218 @@ or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>na
public static final int pull_to_refresh_pull_label=0x7f080000;
public static final int pull_to_refresh_refreshing_label=0x7f080002;
public static final int pull_to_refresh_release_label=0x7f080001;
public static final int removed_playlist=0x7f08008b;
public static final int search_albums=0x7f08008c;
public static final int search_artists=0x7f08008d;
public static final int search_label=0x7f08008e;
public static final int search_more=0x7f08008f;
public static final int search_no_match=0x7f080090;
public static final int search_search=0x7f080091;
public static final int search_songs=0x7f080092;
public static final int search_title=0x7f080093;
public static final int select_album_donate_dialog_0_trial_days_left=0x7f080094;
public static final int select_album_donate_dialog_later=0x7f080095;
public static final int select_album_donate_dialog_message=0x7f080096;
public static final int select_album_donate_dialog_now=0x7f080097;
public static final int select_album_empty=0x7f080098;
public static final int select_album_more=0x7f080099;
public static final int select_album_n_selected=0x7f08009a;
public static final int select_album_n_unselected=0x7f08009b;
public static final int select_album_no_network=0x7f08009c;
public static final int select_album_no_sdcard=0x7f08009d;
public static final int select_album_not_licensed=0x7f08009e;
public static final int select_album_offline=0x7f08009f;
public static final int select_album_play_all=0x7f0800a0;
public static final int select_album_searching=0x7f0800a1;
public static final int select_album_select=0x7f0800a2;
public static final int select_artist_all_folders=0x7f0800a3;
public static final int select_artist_empty=0x7f0800a4;
public static final int select_artist_folder=0x7f0800a5;
public static final int select_artist_refresh=0x7f0800a6;
public static final int select_genre_empty=0x7f0800a7;
public static final int select_playlist_empty=0x7f0800a8;
public static final int service_connecting=0x7f0800a9;
public static final int settings_appearance_title=0x7f0800aa;
public static final int settings_buffer_length=0x7f0800ab;
public static final int settings_buffer_length_0=0x7f0800ac;
public static final int settings_buffer_length_1=0x7f0800ad;
public static final int settings_buffer_length_10=0x7f0800ae;
public static final int settings_buffer_length_12=0x7f0800af;
public static final int settings_buffer_length_120=0x7f0800b0;
public static final int settings_buffer_length_15=0x7f0800b1;
public static final int settings_buffer_length_2=0x7f0800b2;
public static final int settings_buffer_length_20=0x7f0800b3;
public static final int settings_buffer_length_30=0x7f0800b4;
public static final int settings_buffer_length_5=0x7f0800b5;
public static final int settings_buffer_length_60=0x7f0800b6;
public static final int settings_buffer_length_8=0x7f0800b7;
public static final int settings_cache_location=0x7f0800b8;
public static final int settings_cache_location_error=0x7f0800b9;
public static final int settings_cache_size=0x7f0800ba;
public static final int settings_cache_size_100=0x7f0800bb;
public static final int settings_cache_size_1000=0x7f0800bc;
public static final int settings_cache_size_10000=0x7f0800bd;
public static final int settings_cache_size_200=0x7f0800be;
public static final int settings_cache_size_2000=0x7f0800bf;
public static final int settings_cache_size_20000=0x7f0800c0;
public static final int settings_cache_size_500=0x7f0800c1;
public static final int settings_cache_size_5000=0x7f0800c2;
public static final int settings_cache_size_unlimited=0x7f0800c3;
public static final int settings_cache_title=0x7f0800c4;
public static final int settings_chat_refresh=0x7f0800c5;
public static final int settings_clear_bookmark=0x7f0800c6;
public static final int settings_clear_bookmark_summary=0x7f0800c7;
public static final int settings_clear_playlist=0x7f0800c8;
public static final int settings_clear_playlist_summary=0x7f0800c9;
public static final int settings_clear_search_history=0x7f0800ca;
public static final int settings_connection_failure=0x7f0800cb;
public static final int settings_default_albums=0x7f0800cc;
public static final int settings_default_artists=0x7f0800cd;
public static final int settings_default_songs=0x7f0800ce;
public static final int settings_directory_cache_time=0x7f0800cf;
public static final int settings_directory_cache_time_0=0x7f0800d0;
public static final int settings_directory_cache_time_1=0x7f0800d1;
public static final int settings_directory_cache_time_10=0x7f0800d2;
public static final int settings_directory_cache_time_2=0x7f0800d3;
public static final int settings_directory_cache_time_30=0x7f0800d4;
public static final int settings_directory_cache_time_5=0x7f0800d5;
public static final int settings_directory_cache_time_60=0x7f0800d6;
public static final int settings_disc_sort=0x7f0800d7;
public static final int settings_disc_sort_summary=0x7f0800d8;
public static final int settings_display_bitrate=0x7f0800d9;
public static final int settings_display_bitrate_summary=0x7f0800da;
public static final int settings_download_transition=0x7f0800db;
public static final int settings_download_transition_summary=0x7f0800dc;
public static final int settings_gapless_playback=0x7f0800dd;
public static final int settings_gapless_playback_summary=0x7f0800de;
public static final int settings_hide_media_summary=0x7f0800df;
public static final int settings_hide_media_title=0x7f0800e0;
public static final int settings_hide_media_toast=0x7f0800e1;
public static final int settings_increment_time=0x7f0800e2;
public static final int settings_invalid_url=0x7f0800e3;
public static final int settings_invalid_username=0x7f0800e4;
public static final int settings_max_albums=0x7f0800e5;
public static final int settings_max_artists=0x7f0800e6;
public static final int settings_max_bitrate_112=0x7f0800e7;
public static final int settings_max_bitrate_128=0x7f0800e8;
public static final int settings_max_bitrate_160=0x7f0800e9;
public static final int settings_max_bitrate_192=0x7f0800ea;
public static final int settings_max_bitrate_256=0x7f0800eb;
public static final int settings_max_bitrate_32=0x7f0800ec;
public static final int settings_max_bitrate_320=0x7f0800ed;
public static final int settings_max_bitrate_64=0x7f0800ee;
public static final int settings_max_bitrate_80=0x7f0800ef;
public static final int settings_max_bitrate_96=0x7f0800f0;
public static final int settings_max_bitrate_mobile=0x7f0800f1;
public static final int settings_max_bitrate_unlimited=0x7f0800f2;
public static final int settings_max_bitrate_wifi=0x7f0800f3;
public static final int settings_max_songs=0x7f0800f4;
public static final int settings_media_button_summary=0x7f0800f5;
public static final int settings_media_button_title=0x7f0800f6;
public static final int settings_network_timeout=0x7f0800f7;
public static final int settings_network_timeout_105000=0x7f0800f8;
public static final int settings_network_timeout_120000=0x7f0800f9;
public static final int settings_network_timeout_15000=0x7f0800fa;
public static final int settings_network_timeout_30000=0x7f0800fb;
public static final int settings_network_timeout_45000=0x7f0800fc;
public static final int settings_network_timeout_60000=0x7f0800fd;
public static final int settings_network_timeout_75000=0x7f0800fe;
public static final int settings_network_timeout_90000=0x7f0800ff;
public static final int settings_network_title=0x7f080100;
public static final int settings_other_title=0x7f080101;
public static final int settings_playback_control_title=0x7f080102;
public static final int settings_preload=0x7f080103;
public static final int settings_preload_1=0x7f080104;
public static final int settings_preload_10=0x7f080105;
public static final int settings_preload_2=0x7f080106;
public static final int settings_preload_3=0x7f080107;
public static final int settings_preload_5=0x7f080108;
public static final int settings_preload_unlimited=0x7f080109;
public static final int settings_screen_lit_summary=0x7f08010a;
public static final int settings_screen_lit_title=0x7f08010b;
public static final int settings_scrobble_summary=0x7f08010c;
public static final int settings_scrobble_title=0x7f08010d;
public static final int settings_search_1=0x7f08010e;
public static final int settings_search_10=0x7f08010f;
public static final int settings_search_100=0x7f080110;
public static final int settings_search_15=0x7f080111;
public static final int settings_search_20=0x7f080112;
public static final int settings_search_25=0x7f080113;
public static final int settings_search_250=0x7f080114;
public static final int settings_search_3=0x7f080115;
public static final int settings_search_30=0x7f080116;
public static final int settings_search_40=0x7f080117;
public static final int settings_search_5=0x7f080118;
public static final int settings_search_50=0x7f080119;
public static final int settings_search_500=0x7f08011a;
public static final int settings_search_75=0x7f08011b;
public static final int settings_search_history_cleared=0x7f08011c;
public static final int settings_search_title=0x7f08011d;
public static final int settings_server_add_server=0x7f08011e;
public static final int settings_server_address=0x7f08011f;
public static final int settings_server_name=0x7f080120;
public static final int settings_server_number=0x7f080121;
public static final int settings_server_password=0x7f080122;
public static final int settings_server_remove_server=0x7f080123;
public static final int settings_server_scaling_summary=0x7f080124;
public static final int settings_server_scaling_title=0x7f080125;
public static final int settings_server_unused=0x7f080126;
public static final int settings_server_unused1=0x7f080127;
public static final int settings_server_unused2=0x7f080128;
public static final int settings_server_unused3=0x7f080129;
public static final int settings_server_username=0x7f08012a;
public static final int settings_servers_title=0x7f08012b;
public static final int settings_show_lockscreen_controls=0x7f08012c;
public static final int settings_show_lockscreen_controls_summary=0x7f08012d;
public static final int settings_show_notification=0x7f08012e;
public static final int settings_show_notification_always=0x7f08012f;
public static final int settings_show_notification_always_summary=0x7f080130;
public static final int settings_show_notification_summary=0x7f080131;
public static final int settings_show_now_playing=0x7f080132;
public static final int settings_show_now_playing_summary=0x7f080133;
public static final int settings_show_track_number=0x7f080134;
public static final int settings_show_track_number_summary=0x7f080135;
public static final int settings_test_connection_title=0x7f080136;
public static final int settings_testing_connection=0x7f080137;
public static final int settings_testing_ok=0x7f080138;
public static final int settings_testing_unlicensed=0x7f080139;
public static final int settings_theme_dark=0x7f08013a;
public static final int settings_theme_light=0x7f08013b;
public static final int settings_theme_title=0x7f08013c;
public static final int settings_title=0x7f08013d;
public static final int settings_use_folder_for_album_artist=0x7f08013e;
public static final int settings_use_folder_for_album_artist_summary=0x7f08013f;
public static final int settings_use_id3=0x7f080140;
public static final int settings_use_id3_summary=0x7f080141;
public static final int settings_use_stream_proxy=0x7f080142;
public static final int settings_use_stream_proxy_summary=0x7f080143;
public static final int settings_video_player=0x7f080145;
public static final int settings_video_title=0x7f080144;
public static final int settings_wifi_required_summary=0x7f080146;
public static final int settings_wifi_required_title=0x7f080147;
public static final int shuffle_endYear=0x7f080148;
public static final int shuffle_genre=0x7f080149;
public static final int shuffle_startYear=0x7f08014a;
public static final int song_details_all=0x7f08014b;
public static final int song_details_kbps=0x7f08014c;
public static final int updated_playlist=0x7f08014d;
public static final int updated_playlist_error=0x7f08014e;
public static final int util_bytes_format_byte=0x7f08014f;
public static final int util_bytes_format_gigabyte=0x7f080150;
public static final int util_bytes_format_kilobyte=0x7f080151;
public static final int util_bytes_format_megabyte=0x7f080152;
public static final int util_no_time=0x7f080153;
public static final int util_zero_time=0x7f080154;
public static final int video_get_mx_player_button=0x7f080156;
public static final int video_get_mx_player_text=0x7f080155;
public static final int widget_initial_text=0x7f080157;
public static final int widget_sdcard_busy=0x7f080158;
public static final int widget_sdcard_missing=0x7f080159;
public static final int removed_playlist=0x7f08008c;
public static final int search_albums=0x7f08008d;
public static final int search_artists=0x7f08008e;
public static final int search_label=0x7f08008f;
public static final int search_more=0x7f080090;
public static final int search_no_match=0x7f080091;
public static final int search_search=0x7f080092;
public static final int search_songs=0x7f080093;
public static final int search_title=0x7f080094;
public static final int select_album_donate_dialog_0_trial_days_left=0x7f080095;
public static final int select_album_donate_dialog_later=0x7f080096;
public static final int select_album_donate_dialog_message=0x7f080097;
public static final int select_album_donate_dialog_now=0x7f080098;
public static final int select_album_empty=0x7f080099;
public static final int select_album_more=0x7f08009a;
public static final int select_album_n_selected=0x7f08009b;
public static final int select_album_n_unselected=0x7f08009c;
public static final int select_album_no_network=0x7f08009d;
public static final int select_album_no_sdcard=0x7f08009e;
public static final int select_album_not_licensed=0x7f08009f;
public static final int select_album_offline=0x7f0800a0;
public static final int select_album_play_all=0x7f0800a1;
public static final int select_album_searching=0x7f0800a2;
public static final int select_album_select=0x7f0800a3;
public static final int select_artist_all_folders=0x7f0800a4;
public static final int select_artist_empty=0x7f0800a5;
public static final int select_artist_folder=0x7f0800a6;
public static final int select_artist_refresh=0x7f0800a7;
public static final int select_genre_empty=0x7f0800a8;
public static final int select_playlist_empty=0x7f0800a9;
public static final int service_connecting=0x7f0800aa;
public static final int settings_appearance_title=0x7f0800ab;
public static final int settings_buffer_length=0x7f0800ac;
public static final int settings_buffer_length_0=0x7f0800ad;
public static final int settings_buffer_length_1=0x7f0800ae;
public static final int settings_buffer_length_10=0x7f0800af;
public static final int settings_buffer_length_12=0x7f0800b0;
public static final int settings_buffer_length_120=0x7f0800b1;
public static final int settings_buffer_length_15=0x7f0800b2;
public static final int settings_buffer_length_2=0x7f0800b3;
public static final int settings_buffer_length_20=0x7f0800b4;
public static final int settings_buffer_length_30=0x7f0800b5;
public static final int settings_buffer_length_5=0x7f0800b6;
public static final int settings_buffer_length_60=0x7f0800b7;
public static final int settings_buffer_length_8=0x7f0800b8;
public static final int settings_cache_location=0x7f0800b9;
public static final int settings_cache_location_error=0x7f0800ba;
public static final int settings_cache_size=0x7f0800bb;
public static final int settings_cache_size_100=0x7f0800bc;
public static final int settings_cache_size_1000=0x7f0800bd;
public static final int settings_cache_size_10000=0x7f0800be;
public static final int settings_cache_size_200=0x7f0800bf;
public static final int settings_cache_size_2000=0x7f0800c0;
public static final int settings_cache_size_20000=0x7f0800c1;
public static final int settings_cache_size_500=0x7f0800c2;
public static final int settings_cache_size_5000=0x7f0800c3;
public static final int settings_cache_size_unlimited=0x7f0800c4;
public static final int settings_cache_title=0x7f0800c5;
public static final int settings_chat_refresh=0x7f0800c6;
public static final int settings_clear_bookmark=0x7f0800c7;
public static final int settings_clear_bookmark_summary=0x7f0800c8;
public static final int settings_clear_playlist=0x7f0800c9;
public static final int settings_clear_playlist_summary=0x7f0800ca;
public static final int settings_clear_search_history=0x7f0800cb;
public static final int settings_connection_failure=0x7f0800cc;
public static final int settings_default_albums=0x7f0800cd;
public static final int settings_default_artists=0x7f0800ce;
public static final int settings_default_songs=0x7f0800cf;
public static final int settings_directory_cache_time=0x7f0800d0;
public static final int settings_directory_cache_time_0=0x7f0800d1;
public static final int settings_directory_cache_time_1=0x7f0800d2;
public static final int settings_directory_cache_time_10=0x7f0800d3;
public static final int settings_directory_cache_time_2=0x7f0800d4;
public static final int settings_directory_cache_time_30=0x7f0800d5;
public static final int settings_directory_cache_time_5=0x7f0800d6;
public static final int settings_directory_cache_time_60=0x7f0800d7;
public static final int settings_disc_sort=0x7f0800d8;
public static final int settings_disc_sort_summary=0x7f0800d9;
public static final int settings_display_bitrate=0x7f0800da;
public static final int settings_display_bitrate_summary=0x7f0800db;
public static final int settings_download_transition=0x7f0800dc;
public static final int settings_download_transition_summary=0x7f0800dd;
public static final int settings_gapless_playback=0x7f0800de;
public static final int settings_gapless_playback_summary=0x7f0800df;
public static final int settings_hide_media_summary=0x7f0800e0;
public static final int settings_hide_media_title=0x7f0800e1;
public static final int settings_hide_media_toast=0x7f0800e2;
public static final int settings_increment_time=0x7f0800e3;
public static final int settings_invalid_url=0x7f0800e4;
public static final int settings_invalid_username=0x7f0800e5;
public static final int settings_max_albums=0x7f0800e6;
public static final int settings_max_artists=0x7f0800e7;
public static final int settings_max_bitrate_112=0x7f0800e8;
public static final int settings_max_bitrate_128=0x7f0800e9;
public static final int settings_max_bitrate_160=0x7f0800ea;
public static final int settings_max_bitrate_192=0x7f0800eb;
public static final int settings_max_bitrate_256=0x7f0800ec;
public static final int settings_max_bitrate_32=0x7f0800ed;
public static final int settings_max_bitrate_320=0x7f0800ee;
public static final int settings_max_bitrate_64=0x7f0800ef;
public static final int settings_max_bitrate_80=0x7f0800f0;
public static final int settings_max_bitrate_96=0x7f0800f1;
public static final int settings_max_bitrate_mobile=0x7f0800f2;
public static final int settings_max_bitrate_unlimited=0x7f0800f3;
public static final int settings_max_bitrate_wifi=0x7f0800f4;
public static final int settings_max_songs=0x7f0800f5;
public static final int settings_media_button_summary=0x7f0800f6;
public static final int settings_media_button_title=0x7f0800f7;
public static final int settings_network_timeout=0x7f0800f8;
public static final int settings_network_timeout_105000=0x7f0800f9;
public static final int settings_network_timeout_120000=0x7f0800fa;
public static final int settings_network_timeout_15000=0x7f0800fb;
public static final int settings_network_timeout_30000=0x7f0800fc;
public static final int settings_network_timeout_45000=0x7f0800fd;
public static final int settings_network_timeout_60000=0x7f0800fe;
public static final int settings_network_timeout_75000=0x7f0800ff;
public static final int settings_network_timeout_90000=0x7f080100;
public static final int settings_network_title=0x7f080102;
public static final int settings_notifications_title=0x7f080101;
public static final int settings_other_title=0x7f080103;
public static final int settings_playback_control_title=0x7f080104;
public static final int settings_preload=0x7f080105;
public static final int settings_preload_1=0x7f080106;
public static final int settings_preload_10=0x7f080107;
public static final int settings_preload_2=0x7f080108;
public static final int settings_preload_3=0x7f080109;
public static final int settings_preload_5=0x7f08010a;
public static final int settings_preload_unlimited=0x7f08010b;
public static final int settings_screen_lit_summary=0x7f08010c;
public static final int settings_screen_lit_title=0x7f08010d;
public static final int settings_scrobble_summary=0x7f08010e;
public static final int settings_scrobble_title=0x7f08010f;
public static final int settings_search_1=0x7f080110;
public static final int settings_search_10=0x7f080111;
public static final int settings_search_100=0x7f080112;
public static final int settings_search_15=0x7f080113;
public static final int settings_search_20=0x7f080114;
public static final int settings_search_25=0x7f080115;
public static final int settings_search_250=0x7f080116;
public static final int settings_search_3=0x7f080117;
public static final int settings_search_30=0x7f080118;
public static final int settings_search_40=0x7f080119;
public static final int settings_search_5=0x7f08011a;
public static final int settings_search_50=0x7f08011b;
public static final int settings_search_500=0x7f08011c;
public static final int settings_search_75=0x7f08011d;
public static final int settings_search_history_cleared=0x7f08011e;
public static final int settings_search_title=0x7f08011f;
public static final int settings_send_bluetooth_album_art=0x7f080121;
public static final int settings_send_bluetooth_album_art_summary=0x7f080120;
public static final int settings_send_bluetooth_notification=0x7f080123;
public static final int settings_send_bluetooth_notification_summary=0x7f080122;
public static final int settings_server_add_server=0x7f080124;
public static final int settings_server_address=0x7f080125;
public static final int settings_server_name=0x7f080126;
public static final int settings_server_number=0x7f080127;
public static final int settings_server_password=0x7f080128;
public static final int settings_server_remove_server=0x7f080129;
public static final int settings_server_scaling_summary=0x7f08012a;
public static final int settings_server_scaling_title=0x7f08012b;
public static final int settings_server_unused=0x7f08012c;
public static final int settings_server_unused1=0x7f08012d;
public static final int settings_server_unused2=0x7f08012e;
public static final int settings_server_unused3=0x7f08012f;
public static final int settings_server_username=0x7f080130;
public static final int settings_servers_title=0x7f080131;
public static final int settings_show_lockscreen_controls=0x7f080132;
public static final int settings_show_lockscreen_controls_summary=0x7f080133;
public static final int settings_show_notification=0x7f080134;
public static final int settings_show_notification_always=0x7f080135;
public static final int settings_show_notification_always_summary=0x7f080136;
public static final int settings_show_notification_summary=0x7f080137;
public static final int settings_show_now_playing=0x7f080138;
public static final int settings_show_now_playing_summary=0x7f080139;
public static final int settings_show_track_number=0x7f08013a;
public static final int settings_show_track_number_summary=0x7f08013b;
public static final int settings_test_connection_title=0x7f08013c;
public static final int settings_testing_connection=0x7f08013d;
public static final int settings_testing_ok=0x7f08013e;
public static final int settings_testing_unlicensed=0x7f08013f;
public static final int settings_theme_dark=0x7f080140;
public static final int settings_theme_light=0x7f080141;
public static final int settings_theme_title=0x7f080142;
public static final int settings_title=0x7f080143;
public static final int settings_use_folder_for_album_artist=0x7f080144;
public static final int settings_use_folder_for_album_artist_summary=0x7f080145;
public static final int settings_use_id3=0x7f080146;
public static final int settings_use_id3_summary=0x7f080147;
public static final int settings_use_stream_proxy=0x7f080148;
public static final int settings_use_stream_proxy_summary=0x7f080149;
public static final int settings_video_player=0x7f08014b;
public static final int settings_video_title=0x7f08014a;
public static final int settings_wifi_required_summary=0x7f08014c;
public static final int settings_wifi_required_title=0x7f08014d;
public static final int shuffle_endYear=0x7f08014e;
public static final int shuffle_genre=0x7f08014f;
public static final int shuffle_startYear=0x7f080150;
public static final int song_details_all=0x7f080151;
public static final int song_details_kbps=0x7f080152;
public static final int updated_playlist=0x7f080153;
public static final int updated_playlist_error=0x7f080154;
public static final int util_bytes_format_byte=0x7f080155;
public static final int util_bytes_format_gigabyte=0x7f080156;
public static final int util_bytes_format_kilobyte=0x7f080157;
public static final int util_bytes_format_megabyte=0x7f080158;
public static final int util_no_time=0x7f080159;
public static final int util_zero_time=0x7f08015a;
public static final int video_get_mx_player_button=0x7f08015c;
public static final int video_get_mx_player_text=0x7f08015b;
public static final int widget_initial_text=0x7f08015d;
public static final int widget_sdcard_busy=0x7f08015e;
public static final int widget_sdcard_missing=0x7f08015f;
}
public static final class style {
public static final int MenuDrawer=0x7f0a0005;

View File

@ -107,7 +107,17 @@
a:layout_height="wrap_content" a:gravity="center_vertical"
a:minHeight="40dip" a:paddingLeft="6dip" a:paddingRight="6dip"
a:text="@string/main.albums_alphaByArtist" a:textAppearance="?android:attr/textAppearanceMedium" />
<TextView a:id="@+id/main_videos_title" a:text="@string/main.videos"
a:layout_width="fill_parent" a:layout_height="wrap_content"
a:textAppearance="?android:attr/textAppearanceSmall" a:textColor="@color/cyan"
a:gravity="center_vertical" a:paddingLeft="6dp" a:textAllCaps="true"
a:textStyle="bold" />
<TextView a:id="@+id/main_videos" a:layout_width="fill_parent"
a:layout_height="wrap_content" a:gravity="center_vertical"
a:minHeight="40dip" a:paddingLeft="6dip" a:paddingRight="6dip"
a:text="@string/main.videos" a:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:a="http://schemas.android.com/apk/res/android"
a:layout_width="0dip"
a:layout_height="wrap_content"
a:layout_gravity="center_vertical"
a:layout_weight="1"
a:orientation="vertical" >
<LinearLayout
a:layout_width="fill_parent"
a:layout_height="wrap_content"
a:layout_gravity="center_vertical"
a:orientation="horizontal" >
<TextView
a:id="@+id/song_title"
a:layout_width="0dip"
a:layout_height="wrap_content"
a:layout_gravity="left|center_vertical"
a:layout_weight="1"
a:drawablePadding="6dip"
a:ellipsize="marquee"
a:paddingLeft="4dip"
a:paddingRight="6dip"
a:singleLine="true"
a:text="Video Title"
a:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
a:id="@+id/song_duration"
a:layout_width="wrap_content"
a:layout_height="wrap_content"
a:layout_gravity="right|center_vertical"
a:paddingLeft="3dip"
a:paddingRight="9dip"
a:singleLine="true"
a:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:a="http://schemas.android.com/apk/res/android"
a:layout_width="fill_parent"
a:layout_height="wrap_content"
a:minHeight="?android:attr/listPreferredItemHeight"
a:orientation="horizontal" >
<CheckedTextView
a:id="@+id/song_check"
a:layout_width="wrap_content"
a:layout_height="fill_parent"
a:checkMark="@drawable/btn_check_custom"
a:gravity="center_vertical"
a:paddingLeft="1dip"
a:visibility="gone" />"
<include layout="@layout/video_details"
a:layout_gravity="center_vertical" />
<ImageView
a:id="@+id/song_star"
a:layout_width="wrap_content"
a:layout_height="fill_parent"
a:background="@android:color/transparent"
a:focusable="false"
a:gravity="center_vertical"
a:paddingRight="3dip"
a:src="?attr/star_hollow" />
</LinearLayout>

View File

@ -85,7 +85,7 @@
<string name="lyrics.nomatch">Aucunes paroles trouvées</string>
<string name="main.albums_alphaByArtist">Alphabétique par artiste</string>
<string name="main.albums_alphaByName">Alphabétique par nom</string>
<string name="main.albums_frequent">Récemment écoutés</string>
<string name="main.albums_frequent">Plus écoutés</string>
<string name="main.albums_highest">Mieux notés</string>
<string name="main.albums_newest">Plus récents</string>
<string name="main.albums_random">Aléatoire</string>
@ -105,6 +105,7 @@
<string name="main.songs_random">Aléatoire</string>
<string name="main.songs_starred">Favoris</string>
<string name="main.songs_title">Titres</string>
<string name="main.videos">Videos</string>
<string name="main.welcome_text">Bienvenue dans UltraSonic ! L\'application n\'est pas configurée. Après avoir configuré votre serveur personnel (disponible à partir de <b>subsonic.org</b>), veuillez accéder aux <b>Paramètres</b> et modifier la configuration pour vous y connecter.</string>
<string name="main.welcome_title">Bienvenue!</string>
<string name="menu.about">À propos</string>
@ -252,6 +253,7 @@
<string name="settings.network_timeout_75000">75 secondes</string>
<string name="settings.network_timeout_90000">90 secondes</string>
<string name="settings.network_title">Réseau</string>
<string name="settings.notifications_title">Notifications</string>
<string name="settings.other_title">Autres paramètres</string>
<string name="settings.playback_control_title">Paramètres de contrôle de lecture</string>
<string name="settings.preload">Titres à pré-charger</string>
@ -281,6 +283,10 @@
<string name="settings.search_75">75</string>
<string name="settings.search_history_cleared">Historique des recherches effacé</string>
<string name="settings.search_title">Paramètres de recherche</string>
<string name="settings.send_bluetooth_album_art_summary">Send album art over Bluetooth (May cause Bluetooth notifications to fail)</string>
<string name="settings.send_bluetooth_album_art">Album Art Over Bluetooth</string>
<string name="settings.send_bluetooth_notification_summary">Send playback notifications via Bluetooth</string>
<string name="settings.send_bluetooth_notification">Send Bluetooth Notification</string>
<string name="settings.server_add_server">Ajouter un serveur</string>
<string name="settings.server_address">Adresse du serveur</string>
<string name="settings.server_name">Nom</string>

View File

@ -105,6 +105,7 @@
<string name="main.songs_random">Véletlenszerű</string>
<string name="main.songs_starred">Csillagozott</string>
<string name="main.songs_title">Dalok</string>
<string name="main.videos">Videos</string>
<string name="main.welcome_text">Üdvözli az UltraSonic! Az alkalmazás még nincs beállítva. Miután konfigurálta saját kiszolgálóját (elérhető: <b>subsonic.org</b>), húzza jobbra a képernyőt, lépjen be a <b>Beállítások</b> menüpontba, és adja meg csatlakozási adatokat!</string>
<string name="main.welcome_title">Üdvözlet!</string>
<string name="menu.about">Névjegy</string>
@ -252,6 +253,7 @@
<string name="settings.network_timeout_75000">75 másodperc</string>
<string name="settings.network_timeout_90000">90 másodperc</string>
<string name="settings.network_title">Hálózat</string>
<string name="settings.notifications_title">Notifications</string>
<string name="settings.other_title">Egyéb beállítások</string>
<string name="settings.playback_control_title">Lejátszás-vezérlés beállításai</string>
<string name="settings.preload">Dalok előolvasása</string>
@ -281,6 +283,10 @@
<string name="settings.search_75">75</string>
<string name="settings.search_history_cleared">Keresési előzmények törölve.</string>
<string name="settings.search_title">Keresés beállításai</string>
<string name="settings.send_bluetooth_album_art_summary">Send album art over Bluetooth (May cause Bluetooth notifications to fail)</string>
<string name="settings.send_bluetooth_album_art">Album Art Over Bluetooth</string>
<string name="settings.send_bluetooth_notification_summary">Send playback notifications via Bluetooth</string>
<string name="settings.send_bluetooth_notification">Send Bluetooth Notification</string>
<string name="settings.server_add_server">Kiszolgáló hozzáadása</string>
<string name="settings.server_address">Kiszolgáló címe</string>
<string name="settings.server_name">Név</string>

View File

@ -105,6 +105,7 @@
<string name="main.songs_random">Random</string>
<string name="main.songs_starred">Starred</string>
<string name="main.songs_title">Songs</string>
<string name="main.videos">Videos</string>
<string name="main.welcome_text">Welcome to UltraSonic! The app is currently not configured. After you\'ve set up your personal server (available from <b>subsonic.org</b>), please go to <b>Settings</b> and change the configuration to connect to it.</string>
<string name="main.welcome_title">Welcome!</string>
<string name="menu.about">About</string>
@ -251,6 +252,7 @@
<string name="settings.network_timeout_60000">60 seconds</string>
<string name="settings.network_timeout_75000">75 seconds</string>
<string name="settings.network_timeout_90000">90 seconds</string>
<string name="settings.notifications_title">Notifications</string>
<string name="settings.network_title">Network</string>
<string name="settings.other_title">Other Settings</string>
<string name="settings.playback_control_title">Playback Control Settings</string>
@ -281,6 +283,10 @@
<string name="settings.search_75">75</string>
<string name="settings.search_history_cleared">Search history cleared</string>
<string name="settings.search_title">Search Settings</string>
<string name="settings.send_bluetooth_album_art_summary">Send album art over Bluetooth (May cause Bluetooth notifications to fail)</string>
<string name="settings.send_bluetooth_album_art">Album Art Over Bluetooth</string>
<string name="settings.send_bluetooth_notification_summary">Send playback notifications via Bluetooth</string>
<string name="settings.send_bluetooth_notification">Send Bluetooth Notification</string>
<string name="settings.server_add_server">Add Server</string>
<string name="settings.server_address">Server Address</string>
<string name="settings.server_name">Name</string>
@ -319,8 +325,8 @@
<string name="settings.use_id3_summary">Use ID3 tag methods instead of file system based methods</string>
<string name="settings.use_stream_proxy">Use Stream Proxy</string>
<string name="settings.use_stream_proxy_summary">Stream media playback through a proxy (may help stutter)</string>
<string name="settings.video_title">Video</string>
<string name="settings.video_player">Video player</string>
<string name="settings.video_title">Video</string>
<string name="settings.video_player">Video player</string>
<string name="settings.wifi_required_summary">Only stream media if connected to Wi-Fi</string>
<string name="settings.wifi_required_title">Wi-Fi Streaming Only</string>
<string name="shuffle.endYear">End Year:</string>
@ -336,8 +342,8 @@
<string name="util.bytes_format.megabyte">0.00 MB</string>
<string name="util.no_time">-:--</string>
<string name="util.zero_time">0:00</string>
<string name="video.get_mx_player_text">MX Player is not installed. Get it for free on Play Store, or change video settings.</string>
<string name="video.get_mx_player_button">Get MX Player</string>
<string name="video.get_mx_player_text">MX Player is not installed. Get it for free on Play Store, or change video settings.</string>
<string name="video.get_mx_player_button">Get MX Player</string>
<string name="widget.initial_text">Touch to select music</string>
<string name="widget.sdcard_busy">SD card unavailable</string>
<string name="widget.sdcard_missing">No SD card</string>

View File

@ -56,21 +56,6 @@
a:key="mediaButtons"
a:summary="@string/settings.media_button_summary"
a:title="@string/settings.media_button_title" />
<CheckBoxPreference
a:defaultValue="true"
a:key="showNotification"
a:summary="@string/settings.show_notification_summary"
a:title="@string/settings.show_notification" />
<CheckBoxPreference
a:defaultValue="true"
a:key="alwaysShowNotification"
a:summary="@string/settings.show_notification_always_summary"
a:title="@string/settings.show_notification_always" />
<CheckBoxPreference
a:defaultValue="true"
a:key="showLockScreen"
a:summary="@string/settings.show_lockscreen_controls_summary"
a:title="@string/settings.show_lockscreen_controls" />
<CheckBoxPreference
a:defaultValue="false"
a:key="useStreamProxy"
@ -96,7 +81,6 @@
a:key="clearBookmark"
a:summary="@string/settings.clear_bookmark_summary"
a:title="@string/settings.clear_bookmark" />
<ListPreference
a:defaultValue="5000"
a:entries="@array/bufferLengthNames"
@ -104,6 +88,33 @@
a:key="incrementTime"
a:title="@string/settings.increment_time" />
</PreferenceCategory>
<PreferenceCategory a:title="@string/settings.notifications_title" >
<CheckBoxPreference
a:defaultValue="true"
a:key="showNotification"
a:summary="@string/settings.show_notification_summary"
a:title="@string/settings.show_notification" />
<CheckBoxPreference
a:defaultValue="true"
a:key="alwaysShowNotification"
a:summary="@string/settings.show_notification_always_summary"
a:title="@string/settings.show_notification_always" />
<CheckBoxPreference
a:defaultValue="true"
a:key="showLockScreen"
a:summary="@string/settings.show_lockscreen_controls_summary"
a:title="@string/settings.show_lockscreen_controls" />
<CheckBoxPreference
a:defaultValue="true"
a:key="sendBluetoothNotifications"
a:summary="@string/settings.send_bluetooth_notification_summary"
a:title="@string/settings.send_bluetooth_notification" />
<CheckBoxPreference
a:defaultValue="false"
a:key="sendBluetoothAlbumArt"
a:summary="@string/settings.send_bluetooth_album_art_summary"
a:title="@string/settings.send_bluetooth_album_art" />
</PreferenceCategory>
<PreferenceCategory a:title="@string/settings.video_title" >
<ListPreference
a:defaultValue="default"

View File

@ -19,7 +19,6 @@
package com.thejoshwa.ultrasonic.androidapp.activity;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.MenuItem;

View File

@ -22,6 +22,7 @@ import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
@ -44,7 +45,7 @@ import com.thejoshwa.ultrasonic.androidapp.util.Constants;
import com.thejoshwa.ultrasonic.androidapp.util.SilentBackgroundTask;
import com.thejoshwa.ultrasonic.androidapp.util.Util;
import com.thejoshwa.ultrasonic.androidapp.view.AutoRepeatButton;
import com.thejoshwa.ultrasonic.androidapp.view.SongView;
import com.thejoshwa.ultrasonic.androidapp.view.SongListAdapter;
import com.thejoshwa.ultrasonic.androidapp.view.VisualizerView;
import java.text.DateFormat;
@ -52,6 +53,7 @@ import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@ -107,9 +109,14 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi
final WindowManager windowManager = getWindowManager();
final Display display = windowManager.getDefaultDisplay();
swipeDistance = (display.getWidth() + display.getHeight()) * PERCENTAGE_OF_SCREEN_FOR_SWIPE / 100;
swipeVelocity = (display.getWidth() + display.getHeight()) * PERCENTAGE_OF_SCREEN_FOR_SWIPE / 100;
gestureScanner = new GestureDetector(this);
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
swipeDistance = (width + height) * PERCENTAGE_OF_SCREEN_FOR_SWIPE / 100;
swipeVelocity = swipeDistance;
gestureScanner = new GestureDetector(this, this);
playlistFlipper = (ViewFlipper) findViewById(R.id.download_playlist_flipper);
emptyTextView = (TextView) findViewById(R.id.download_empty);
@ -137,6 +144,15 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi
visualizerViewLayout = (LinearLayout) findViewById(R.id.download_visualizer_view_layout);
final ImageButton toggleListButton = (ImageButton) findViewById(R.id.download_toggle_list);
View.OnTouchListener touchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent me) {
return gestureScanner.onTouchEvent(me);
}
};
albumArtImageView.setOnTouchListener(touchListener);
albumArtImageView.setOnClickListener(new View.OnClickListener() {
@Override
@ -628,7 +644,7 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi
if (playlistName != null) {
playlistNameView.setText(playlistName);
} else {
final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
playlistNameView.setText(dateFormat.format(new Date()));
}
}
@ -874,7 +890,7 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi
final List<DownloadFile> list = downloadService.getSongs();
emptyTextView.setText(R.string.download_empty);
playlistView.setAdapter(new SongListAdapter(list));
playlistView.setAdapter(new SongListAdapter(this, list));
emptyTextView.setVisibility(list.isEmpty() ? View.VISIBLE : View.GONE);
currentRevision = downloadService.getDownloadListUpdateRevision();
@ -908,10 +924,7 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi
String duration = Util.formatTotalDuration(totalDuration);
String trackFormat = String.format("%d / %d",
currentSongIndex,
totalSongs
);
String trackFormat = String.format(Locale.getDefault(), "%d / %d", currentSongIndex, totalSongs);
if (currentPlaying != null) {
currentSong = currentPlaying.getSong();
@ -977,10 +990,7 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi
switch (playerState) {
case DOWNLOADING:
final long bytes = currentPlaying != null ? currentPlaying.getPartialFile().length() : 0;
getActionBar().setSubtitle(getResources().getString(
R.string.download_playerstate_downloading,
Util.formatLocalizedBytes(bytes,
DownloadActivity.this)));
getActionBar().setSubtitle(getResources().getString(R.string.download_playerstate_downloading, Util.formatLocalizedBytes(bytes, DownloadActivity.this)));
break;
case PREPARING:
getActionBar().setSubtitle(R.string.download_playerstate_buffering);
@ -1063,21 +1073,6 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi
}.execute();
}
private class SongListAdapter extends ArrayAdapter<DownloadFile> {
public SongListAdapter(final List<DownloadFile> entries) {
super(DownloadActivity.this, android.R.layout.simple_list_item_1, entries);
}
@Override
public View getView(final int position, final View convertView, final ViewGroup parent) {
final SongView view;
view = convertView != null && convertView instanceof SongView ? (SongView) convertView : new SongView(DownloadActivity.this);
final DownloadFile downloadFile = getItem(position);
view.setSong(downloadFile.getSong(), false);
return view;
}
}
@Override
public boolean onTouchEvent(final MotionEvent me) {
return gestureScanner.onTouchEvent(me);
@ -1092,6 +1087,7 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi
public boolean onFling(final MotionEvent e1, final MotionEvent e2, final float velocityX, final float velocityY) {
final DownloadService downloadService = getDownloadService();
if (downloadService == null) {
return false;
}

View File

@ -33,7 +33,6 @@ import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import com.thejoshwa.ultrasonic.androidapp.R;
import com.thejoshwa.ultrasonic.androidapp.util.Constants;
import com.thejoshwa.ultrasonic.androidapp.util.Util;

View File

@ -80,6 +80,7 @@ public class MainActivity extends SubsonicTabActivity {
final View artistsButton = buttons.findViewById(R.id.main_artists_button);
final View albumsButton = buttons.findViewById(R.id.main_albums_button);
final View genresButton = buttons.findViewById(R.id.main_genres_button);
final View videosTitle = buttons.findViewById(R.id.main_videos_title);
final View songsTitle = buttons.findViewById(R.id.main_songs);
final View randomSongsButton = buttons.findViewById(R.id.main_songs_button);
@ -93,7 +94,7 @@ public class MainActivity extends SubsonicTabActivity {
final View albumsFrequentButton = buttons.findViewById(R.id.main_albums_frequent);
final View albumsAlphaByNameButton = buttons.findViewById(R.id.main_albums_alphaByName);
final View albumsAlphaByArtistButton = buttons.findViewById(R.id.main_albums_alphaByArtist);
final View videosButton = buttons.findViewById(R.id.main_videos);
final View dummyView = findViewById(R.id.main_dummy);
@ -135,6 +136,9 @@ public class MainActivity extends SubsonicTabActivity {
shouldUseId3 = false;
adapter.addViews(Arrays.asList(albumsNewestButton, albumsRecentButton, albumsFrequentButton, albumsHighestButton, albumsRandomButton, albumsStarredButton, albumsAlphaByNameButton, albumsAlphaByArtistButton), true);
}
adapter.addView(videosTitle, false);
adapter.addViews(Arrays.asList(videosButton), true);
}
list.setAdapter(adapter);
@ -171,6 +175,8 @@ public class MainActivity extends SubsonicTabActivity {
showRandomSongs();
} else if (view == genresButton) {
showGenres();
} else if (view == videosButton) {
showVideos();
}
}
});
@ -425,4 +431,10 @@ public class MainActivity extends SubsonicTabActivity {
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Util.startActivityWithoutTransition(this, intent);
}
private void showVideos() {
final Intent intent = new Intent(this, SelectAlbumActivity.class);
intent.putExtra(Constants.INTENT_EXTRA_NAME_VIDEOS, 1);
Util.startActivityWithoutTransition(this, intent);
}
}

View File

@ -34,7 +34,6 @@ import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.net.Uri;
import com.thejoshwa.ultrasonic.androidapp.R;
import com.thejoshwa.ultrasonic.androidapp.domain.Artist;
import com.thejoshwa.ultrasonic.androidapp.domain.MusicDirectory;

View File

@ -19,7 +19,6 @@
package com.thejoshwa.ultrasonic.androidapp.activity;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.ContextMenu;
@ -200,6 +199,7 @@ public class SelectAlbumActivity extends SubsonicTabActivity {
String genreName = getIntent().getStringExtra(Constants.INTENT_EXTRA_NAME_GENRE_NAME);
int albumListTitle = getIntent().getIntExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_TITLE, 0);
int getStarredTracks = getIntent().getIntExtra(Constants.INTENT_EXTRA_NAME_STARRED, 0);
int getVideos = getIntent().getIntExtra(Constants.INTENT_EXTRA_NAME_VIDEOS, 0);
int getRandomTracks = getIntent().getIntExtra(Constants.INTENT_EXTRA_NAME_RANDOM, 0);
int albumListSize = getIntent().getIntExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_SIZE, 0);
int albumListOffset = getIntent().getIntExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_OFFSET, 0);
@ -215,6 +215,8 @@ public class SelectAlbumActivity extends SubsonicTabActivity {
getSongsForGenre(genreName, albumListSize, albumListOffset);
} else if (getStarredTracks != 0) {
getStarred();
} else if (getVideos != 0) {
getVideos();
} else if (getRandomTracks != 0) {
getRandom(albumListSize);
} else {
@ -458,6 +460,19 @@ public class SelectAlbumActivity extends SubsonicTabActivity {
}.execute();
}
private void getVideos() {
showHeader = false;
getActionBar().setSubtitle(R.string.main_videos);
new LoadTask() {
@Override
protected MusicDirectory load(MusicService service) throws Exception {
return service.getVideos(SelectAlbumActivity.this, this);
}
}.execute();
}
private void getRandom(final int size) {
getActionBar().setSubtitle(R.string.main_songs_random);
@ -687,8 +702,14 @@ public class SelectAlbumActivity extends SubsonicTabActivity {
String directoryName = musicDirectory.getName();
boolean allVideos = true;
int songCount = 0;
for (MusicDirectory.Entry entry : entries) {
if (!entry.isVideo()) {
allVideos = false;
}
if (!entry.isDirectory()) {
songCount++;
}
@ -698,14 +719,18 @@ public class SelectAlbumActivity extends SubsonicTabActivity {
if (songCount > 0) {
if(showHeader) {
albumListView.addHeaderView(createHeader(entries, directoryName, songCount), null, false);
View header = createHeader(entries, directoryName, songCount);
if (header != null) {
albumListView.addHeaderView(header, null, false);
}
}
pinButton.setVisibility(View.VISIBLE);
unpinButton.setVisibility(View.VISIBLE);
downloadButton.setVisibility(View.VISIBLE);
deleteButton.setVisibility(View.VISIBLE);
selectButton.setVisibility(View.VISIBLE);
selectButton.setVisibility(allVideos ? View.GONE : View.VISIBLE);
playNowButton.setVisibility(View.VISIBLE);
playNextButton.setVisibility(View.VISIBLE);
playLastButton.setVisibility(View.VISIBLE);
@ -778,9 +803,14 @@ public class SelectAlbumActivity extends SubsonicTabActivity {
Set<String> artists = new HashSet<String>();
Set<String> grandParents = new HashSet<String>();
Set<String> genres = new HashSet<String>();
boolean allVideo = true;
long totalDuration = 0;
for (MusicDirectory.Entry entry : entries) {
if (!entry.isVideo()) {
allVideo = false;
}
if (!entry.isDirectory()) {
if (Util.shouldUseFolderForArtistName(getBaseContext())) {
String grandParent = Util.getGrandparent(entry.getPath());
@ -806,6 +836,11 @@ public class SelectAlbumActivity extends SubsonicTabActivity {
}
}
// Don't show a header if all entries are videos
if (allVideo) {
return null;
}
TextView artistView = (TextView) header.findViewById(R.id.select_album_artist);
String artist = null;

View File

@ -54,6 +54,7 @@ import java.io.File;
import java.net.URL;
import java.util.LinkedHashMap;
import java.util.Map;
import net.simonvt.menudrawer.MenuDrawer;
import net.simonvt.menudrawer.Position;
@ -83,6 +84,8 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer
private CheckBoxPreference mediaButtonsEnabled;
private CheckBoxPreference lockScreenEnabled;
private CheckBoxPreference gaplessPlaybackEnabled;
private CheckBoxPreference sendBluetoothNotifications;
private CheckBoxPreference sendBluetoothAlbumArt;
private int maxServerCount = 10;
private int minServerCount = 0;
@ -161,6 +164,8 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer
mediaButtonsEnabled = (CheckBoxPreference) findPreference(Constants.PREFERENCES_KEY_MEDIA_BUTTONS);
lockScreenEnabled = (CheckBoxPreference) findPreference(Constants.PREFERENCES_KEY_SHOW_LOCK_SCREEN_CONTROLS);
gaplessPlaybackEnabled = (CheckBoxPreference) findPreference(Constants.PREFERENCES_KEY_GAPLESS_PLAYBACK);
sendBluetoothAlbumArt = (CheckBoxPreference) findPreference(Constants.PREFERENCES_KEY_SEND_BLUETOOTH_ALBUM_ART);
sendBluetoothNotifications = (CheckBoxPreference) findPreference(Constants.PREFERENCES_KEY_SEND_BLUETOOTH_NOTIFICATIONS);
findPreference(Constants.PREFERENCES_KEY_CLEAR_SEARCH_HISTORY).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
@ -404,6 +409,9 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer
else if (Constants.PREFERENCES_KEY_CACHE_LOCATION.equals(key)) {
setCacheLocation(sharedPreferences.getString(key, ""));
}
else if (Constants.PREFERENCES_KEY_SEND_BLUETOOTH_NOTIFICATIONS.equals(key)) {
setBluetoothPreferences(sharedPreferences.getBoolean(key, true));
}
}
private void update() {
@ -435,6 +443,11 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer
lockScreenEnabled.setEnabled(false);
}
if (!sendBluetoothNotifications.isChecked()) {
sendBluetoothAlbumArt.setChecked(false);
sendBluetoothAlbumArt.setEnabled(false);
}
for (ServerSettings ss : serverSettings.values()) {
ss.update();
}
@ -464,8 +477,17 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer
}
}
private void setBluetoothPreferences(boolean enabled) {
if (enabled) {
sendBluetoothAlbumArt.setEnabled(true);
} else {
sendBluetoothAlbumArt.setEnabled(false);
}
}
private void setCacheLocation(String path) {
File dir = new File(path);
if (!FileUtil.ensureDirectoryExistsAndIsReadWritable(dir)) {
Util.toast(this, R.string.settings_cache_location_error, false);

View File

@ -18,7 +18,6 @@
*/
package com.thejoshwa.ultrasonic.androidapp.domain;
import java.util.ArrayList;
import java.util.List;
import java.io.Serializable;

View File

@ -58,10 +58,12 @@ public class CachedMusicService implements MusicService {
private final LRUCache<String, TimeLimitedCache<MusicDirectory>> cachedAlbum;
private final TimeLimitedCache<Boolean> cachedLicenseValid = new TimeLimitedCache<Boolean>(120, TimeUnit.SECONDS);
private final TimeLimitedCache<Indexes> cachedIndexes = new TimeLimitedCache<Indexes>(60 * 60, TimeUnit.SECONDS);
private final TimeLimitedCache<Indexes> cachedArtists = new TimeLimitedCache<Indexes>(60 * 60, TimeUnit.SECONDS);
private final TimeLimitedCache<Indexes> cachedArtists = new TimeLimitedCache<Indexes>(60 * 60, TimeUnit.SECONDS);
private final TimeLimitedCache<MusicDirectory> cachedVideos = new TimeLimitedCache<MusicDirectory>(60 * 60, TimeUnit.SECONDS);
private final TimeLimitedCache<List<Playlist>> cachedPlaylists = new TimeLimitedCache<List<Playlist>>(3600, TimeUnit.SECONDS);
private final TimeLimitedCache<List<MusicFolder>> cachedMusicFolders = new TimeLimitedCache<List<MusicFolder>>(10 * 3600, TimeUnit.SECONDS);
private final TimeLimitedCache<List<Genre>> cachedGenres = new TimeLimitedCache<List<Genre>>(10 * 3600, TimeUnit.SECONDS);
private String restUrl;
public CachedMusicService(MusicService musicService) {
@ -388,4 +390,17 @@ public class CachedMusicService implements MusicService {
public void createBookmark(String id, int position, Context context, ProgressListener progressListener) throws Exception {
musicService.createBookmark(id, position, context, progressListener);
}
@Override
public MusicDirectory getVideos(Context context, ProgressListener progressListener) throws Exception {
checkSettingsChanged(context);
MusicDirectory result = cachedVideos.get();
if (result == null) {
result = musicService.getVideos(context, progressListener);
cachedVideos.set(result);
}
return result;
}
}

View File

@ -27,7 +27,6 @@ import java.io.OutputStream;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.os.PowerManager;
import android.util.DisplayMetrics;
import android.util.Log;
import com.thejoshwa.ultrasonic.androidapp.domain.MusicDirectory;

View File

@ -1151,9 +1151,9 @@ public class DownloadServiceImpl extends Service implements DownloadService {
String title = artist + " - " + currentSong.getTitle();
Integer duration = currentSong.getDuration();
// Always get the album art from disk
if (Util.bluetoothBitmap == null) {
Util.bluetoothBitmap = FileUtil.getAlbumArtBitmap(this, currentSong, Util.bluetoothImagesize, true);
// Reuse albumArt for lockscreen and Bluetooth
if (Util.albumArtBitmap == null) {
Util.albumArtBitmap = FileUtil.getAlbumArtBitmap(this, currentSong, Util.albumArtImageSize, true);
}
// Update the remote controls
@ -1171,10 +1171,10 @@ public class DownloadServiceImpl extends Service implements DownloadService {
.apply();
}
if (Util.bluetoothBitmap != null) {
if (Util.albumArtBitmap != null) {
remoteControlClient
.editMetadata(false)
.putBitmap(RemoteControlClient.MetadataEditor.BITMAP_KEY_ARTWORK, Util.bluetoothBitmap)
.putBitmap(RemoteControlClient.MetadataEditor.BITMAP_KEY_ARTWORK, Util.albumArtBitmap)
.apply();
}
}

View File

@ -30,7 +30,6 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.media.RemoteControlClient;
import android.os.AsyncTask;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;

View File

@ -135,4 +135,6 @@ public interface MusicService {
void deleteBookmark(String id, Context context, ProgressListener progressListener) throws Exception;
void createBookmark(String id, int position, Context context, ProgressListener progressListener) throws Exception;
MusicDirectory getVideos(Context context, ProgressListener progressListener) throws Exception;
}

View File

@ -77,7 +77,6 @@ import com.thejoshwa.ultrasonic.androidapp.domain.Indexes;
import com.thejoshwa.ultrasonic.androidapp.domain.JukeboxStatus;
import com.thejoshwa.ultrasonic.androidapp.domain.Lyrics;
import com.thejoshwa.ultrasonic.androidapp.domain.MusicDirectory;
import com.thejoshwa.ultrasonic.androidapp.domain.MusicDirectory.Entry;
import com.thejoshwa.ultrasonic.androidapp.domain.MusicFolder;
import com.thejoshwa.ultrasonic.androidapp.domain.Playlist;
import com.thejoshwa.ultrasonic.androidapp.domain.SearchCritera;
@ -1273,4 +1272,17 @@ public class RESTMusicService implements MusicService {
Util.close(reader);
}
}
@Override
public MusicDirectory getVideos(Context context, ProgressListener progressListener) throws Exception {
checkServerVersion(context, "1.8", "Videos not supported.");
Reader reader = getReader(context, progressListener, "getVideos", null);
try {
return new MusicDirectoryParser(context).parse("", reader, progressListener, false);
} finally {
Util.close(reader);
}
}
}

View File

@ -50,7 +50,7 @@ public class MusicDirectoryParser extends MusicDirectoryEntryParser {
if (eventType == XmlPullParser.START_TAG) {
String name = getElementName();
if ("child".equals(name) || "song".equals(name)) {
if ("child".equals(name) || "song".equals(name) || "video".equals(name)) {
dir.addChild(parseEntry(artist, false, 0));
} else if ("album".equals(name) && !isAlbum) {
dir.addChild(parseEntry(artist, true, 0));

View File

@ -54,6 +54,7 @@ public final class Constants {
public static final String INTENT_EXTRA_NAME_RANDOM = "subsonic.random";
public static final String INTENT_EXTRA_NAME_GENRE_NAME = "subsonic.genre";
public static final String INTENT_EXTRA_NAME_IS_ALBUM = "subsonic.isalbum";
public static final String INTENT_EXTRA_NAME_VIDEOS= "subsonic.videos";
// Notification IDs.
public static final int NOTIFICATION_ID_PLAYING = 100;
@ -123,6 +124,8 @@ public final class Constants {
public static final String PREFERENCES_KEY_CLEAR_BOOKMARK = "clearBookmark";
public static final String PREFERENCES_KEY_DISC_SORT = "discAndTrackSort";
public static final String PREFERENCES_KEY_VIDEO_PLAYER = "videoPlayer";
public static final String PREFERENCES_KEY_SEND_BLUETOOTH_NOTIFICATIONS = "sendBluetoothNotifications";
public static final String PREFERENCES_KEY_SEND_BLUETOOTH_ALBUM_ART = "sendBluetoothAlbumArt";
// Name of the preferences file.
public static final String PREFERENCES_FILE_NAME = "com.thejoshwa.ultrasonic.androidapp_preferences";

View File

@ -25,7 +25,6 @@ import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Locale;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.Iterator;

View File

@ -25,8 +25,6 @@ import com.thejoshwa.ultrasonic.androidapp.domain.MusicDirectory;
import com.thejoshwa.ultrasonic.androidapp.service.DownloadFile;
import com.thejoshwa.ultrasonic.androidapp.service.DownloadService;
import android.os.AsyncTask;
import android.os.Looper;
import android.util.Log;
public class StreamProxy implements Runnable {

View File

@ -39,7 +39,6 @@ import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import android.os.Environment;
import android.os.Parcelable;
import android.preference.PreferenceManager;
import android.util.DisplayMetrics;
import android.util.Log;
@ -105,7 +104,7 @@ public class Util extends DownloadActivity {
public static final String CM_AVRCP_PLAYSTATE_CHANGED = "com.android.music.playstatechanged";
public static final String CM_AVRCP_METADATA_CHANGED = "com.android.music.metachanged";
public final static int bluetoothImagesize = 500;
public final static int albumArtImageSize = 300;
private static boolean hasFocus = false;
private static boolean pauseFocus = false;
@ -117,7 +116,7 @@ public class Util extends DownloadActivity {
private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
private static Toast toast;
public static Bitmap bluetoothBitmap;
public static Bitmap albumArtBitmap;
private static Entry currentSong;
private Util() {
@ -867,6 +866,10 @@ public class Util extends DownloadActivity {
}
public static void broadcastA2dpMetaDataChange(Context context, DownloadService downloadService) {
if (!Util.getShouldSendBluetoothNotifications(context)) {
return;
}
Entry song = null;
Intent avrcpIntent = new Intent(CM_AVRCP_METADATA_CHANGED);
@ -885,17 +888,24 @@ public class Util extends DownloadActivity {
avrcpIntent.putExtra("artist_name", "");
avrcpIntent.putExtra("album", "");
avrcpIntent.putExtra("album_name", "");
avrcpIntent.putExtra("cover", (Parcelable) null);
avrcpIntent.putExtra("coverart", (Parcelable) null);
if (Util.getShouldSendBluetoothAlbumArt(context)) {
albumArtBitmap = Bitmap.createBitmap(albumArtImageSize, albumArtImageSize, Bitmap.Config.ARGB_8888);
avrcpIntent.putExtra("cover", albumArtBitmap);
avrcpIntent.putExtra("coverart", albumArtBitmap);
}
avrcpIntent.putExtra("ListSize", (long) 0);
avrcpIntent.putExtra("id", (long) 0);
avrcpIntent.putExtra("duration", (long) 0);
avrcpIntent.putExtra("position", (long) 0);
bluetoothBitmap = null;
} else {
if (song != currentSong) {
currentSong = song;
bluetoothBitmap = FileUtil.getAlbumArtBitmap(context, song, bluetoothImagesize, true);
if (Util.getShouldSendBluetoothAlbumArt(context)) {
albumArtBitmap = FileUtil.getAlbumArtBitmap(context, song, albumArtImageSize, false);
}
}
String title = song.getTitle();
@ -912,8 +922,11 @@ public class Util extends DownloadActivity {
avrcpIntent.putExtra("artist_name", artist);
avrcpIntent.putExtra("album", album);
avrcpIntent.putExtra("album_name", album);
avrcpIntent.putExtra("cover", (Parcelable) bluetoothBitmap);
avrcpIntent.putExtra("coverart", (Parcelable) bluetoothBitmap);
if (Util.getShouldSendBluetoothAlbumArt(context)) {
avrcpIntent.putExtra("cover", albumArtBitmap);
avrcpIntent.putExtra("coverart", albumArtBitmap);
}
if (playerPosition != null) {
avrcpIntent.putExtra("position", (long) playerPosition);
@ -936,7 +949,10 @@ public class Util extends DownloadActivity {
}
public static void broadcastA2dpPlayStatusChange(Context context, PlayerState state, DownloadService downloadService) {
if (!Util.getShouldSendBluetoothNotifications(context)) {
return;
}
if (downloadService.getCurrentPlaying() != null) {
Intent avrcpIntent = new Intent(CM_AVRCP_PLAYSTATE_CHANGED);
@ -948,7 +964,9 @@ public class Util extends DownloadActivity {
if (song != currentSong) {
currentSong = song;
bluetoothBitmap = FileUtil.getAlbumArtBitmap(context, song, bluetoothImagesize, true);
if (Util.getShouldSendBluetoothAlbumArt(context)) {
albumArtBitmap = FileUtil.getAlbumArtBitmap(context, song, albumArtImageSize, false);
}
}
String title = song.getTitle();
@ -965,8 +983,11 @@ public class Util extends DownloadActivity {
avrcpIntent.putExtra("artist_name", artist);
avrcpIntent.putExtra("album", album);
avrcpIntent.putExtra("album_name", album);
avrcpIntent.putExtra("cover", (Parcelable) bluetoothBitmap);
avrcpIntent.putExtra("coverart", (Parcelable) bluetoothBitmap);
if (Util.getShouldSendBluetoothAlbumArt(context)) {
avrcpIntent.putExtra("cover", albumArtBitmap);
avrcpIntent.putExtra("coverart", albumArtBitmap);
}
if (playerPosition != null) {
avrcpIntent.putExtra("position", (long) playerPosition);
@ -1335,4 +1356,14 @@ public class Util extends DownloadActivity {
return false;
}
public static boolean getShouldSendBluetoothNotifications(Context context) {
SharedPreferences prefs = getPreferences(context);
return prefs.getBoolean(Constants.PREFERENCES_KEY_SEND_BLUETOOTH_NOTIFICATIONS, true);
}
public static boolean getShouldSendBluetoothAlbumArt(Context context) {
SharedPreferences prefs = getPreferences(context);
return prefs.getBoolean(Constants.PREFERENCES_KEY_SEND_BLUETOOTH_ALBUM_ART, true);
}
}

View File

@ -0,0 +1,28 @@
package com.thejoshwa.ultrasonic.androidapp.view;
import java.util.List;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import com.thejoshwa.ultrasonic.androidapp.service.DownloadFile;
public class SongListAdapter extends ArrayAdapter<DownloadFile> {
Context context;
public SongListAdapter(Context context, final List<DownloadFile> entries) {
super(context, android.R.layout.simple_list_item_1, entries);
this.context = context;
}
@Override
public View getView(final int position, final View convertView, final ViewGroup parent) {
final SongView view;
view = convertView != null && convertView instanceof SongView ? (SongView) convertView : new SongView(this.context);
final DownloadFile downloadFile = getItem(position);
view.setSong(downloadFile.getSong(), false);
return view;
}
}

View File

@ -28,7 +28,7 @@ import android.widget.CheckedTextView;
import android.widget.ImageView;
import android.widget.TextView;
import com.thejoshwa.ultrasonic.androidapp.R;
import com.thejoshwa.ultrasonic.androidapp.domain.MusicDirectory;
import com.thejoshwa.ultrasonic.androidapp.domain.MusicDirectory.Entry;
import com.thejoshwa.ultrasonic.androidapp.service.DownloadService;
import com.thejoshwa.ultrasonic.androidapp.service.DownloadServiceImpl;
import com.thejoshwa.ultrasonic.androidapp.service.DownloadFile;
@ -54,13 +54,24 @@ public class SongView extends UpdateView implements Checkable {
private TextView artistTextView;
private TextView durationTextView;
private TextView statusTextView;
private MusicDirectory.Entry song;
private Entry song;
private Context context;
private DownloadService downloadService;
public SongView(Context context) {
super(context);
LayoutInflater.from(context).inflate(R.layout.song_list_item, this, true);
this.context = context;
}
public void setSong(final Entry song, boolean checkable) {
this.song = song;
if (song.isVideo()) {
LayoutInflater.from(this.context).inflate(R.layout.video_list_item, this, true);
} else {
LayoutInflater.from(this.context).inflate(R.layout.song_list_item, this, true);
}
checkedTextView = (CheckedTextView) findViewById(R.id.song_check);
starImageView = (ImageView) findViewById(R.id.song_star);
@ -69,10 +80,8 @@ public class SongView extends UpdateView implements Checkable {
artistTextView = (TextView) findViewById(R.id.song_artist);
durationTextView = (TextView) findViewById(R.id.song_duration);
statusTextView = (TextView) findViewById(R.id.song_status);
}
public void setSong(final MusicDirectory.Entry song, boolean checkable) {
this.song = song;
StringBuilder artist = new StringBuilder(60);
String bitRate = null;
@ -103,14 +112,20 @@ public class SongView extends UpdateView implements Checkable {
int trackNumber = song.getTrack();
if (Util.shouldShowTrackNumber(getContext()) && trackNumber != 0) {
trackTextView.setText(String.format("%02d.", trackNumber));
} else {
trackTextView.setVisibility(View.GONE);
if (trackTextView != null) {
if (Util.shouldShowTrackNumber(getContext()) && trackNumber != 0) {
trackTextView.setText(String.format("%02d.", trackNumber));
} else {
trackTextView.setVisibility(View.GONE);
}
}
titleTextView.setText(song.getTitle());
artistTextView.setText(artist);
if (artistTextView != null) {
artistTextView.setText(artist);
}
durationTextView.setText(Util.formatTotalDuration(song.getDuration()));
starImageView.setImageDrawable(song.getStarred() ? Util.getDrawableFromAttribute(getContext(), R.attr.star_full) : Util.getDrawableFromAttribute(getContext(), R.attr.star_hollow));
checkedTextView.setVisibility(checkable && !song.isVideo() ? View.VISIBLE : View.GONE);
@ -186,14 +201,16 @@ public class SongView extends UpdateView implements Checkable {
leftImage = downloadFile.isSaved() ? Util.getDrawableFromAttribute(getContext(), R.attr.unpin) : Util.getDrawableFromAttribute(getContext(), R.attr.downloaded);
}
if (downloadFile.isDownloading() && !downloadFile.isDownloadCancelled() && partialFile.exists()) {
statusTextView.setText(Util.formatLocalizedBytes(partialFile.length(), getContext()));
rightImage = Util.getDrawableFromAttribute(getContext(), R.attr.downloading);
} else {
statusTextView.setText(null);
if (statusTextView != null) {
if (downloadFile.isDownloading() && !downloadFile.isDownloadCancelled() && partialFile.exists()) {
statusTextView.setText(Util.formatLocalizedBytes(partialFile.length(), getContext()));
rightImage = Util.getDrawableFromAttribute(getContext(), R.attr.downloading);
} else {
statusTextView.setText(null);
}
statusTextView.setCompoundDrawablesWithIntrinsicBounds(leftImage, null, rightImage, null);
}
statusTextView.setCompoundDrawablesWithIntrinsicBounds(leftImage, null, rightImage, null);
if (!song.getStarred()) {
starImageView.setImageDrawable(Util.getDrawableFromAttribute(getContext(), R.attr.star_hollow));