MX Player video playback, bluetooth adjustments
This commit is contained in:
parent
5483cf16dc
commit
d76e427bdc
|
@ -126,6 +126,9 @@
|
|||
</receiver>
|
||||
<receiver a:name=".receiver.BluetoothIntentReceiver" >
|
||||
<intent-filter>
|
||||
<action a:name="android.bluetooth.device.action.ACL_CONNETED" />
|
||||
<action a:name="android.bluetooth.device.action.ACL_DISCONNETED" />
|
||||
<action a:name="android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED" />
|
||||
<action a:name="android.bluetooth.a2dp.action.SINK_STATE_CHANGED" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
|
|
@ -38,6 +38,8 @@ public final class R {
|
|||
public static final int searchValues=0x7f0b0011;
|
||||
public static final int themeNames=0x7f0b0001;
|
||||
public static final int themeValues=0x7f0b0000;
|
||||
public static final int videoPlayerNames=0x7f0b0014;
|
||||
public static final int videoPlayerValues=0x7f0b0013;
|
||||
}
|
||||
public static final class attr {
|
||||
/** <p>Must be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
|
||||
|
@ -1047,14 +1049,12 @@ or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>na
|
|||
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 play_video_loading=0x7f080085;
|
||||
public static final int play_video_noplugin=0x7f080086;
|
||||
public static final int playlist_label=0x7f080087;
|
||||
public static final int playlist_update_info=0x7f080088;
|
||||
public static final int playlist_updated_info=0x7f080089;
|
||||
public static final int playlist_updated_info_error=0x7f08008a;
|
||||
public static final int playlist_error=0x7f08008b;
|
||||
public static final int progress_wait=0x7f08008c;
|
||||
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;
|
||||
/** 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,191 +1064,193 @@ 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=0x7f08008d;
|
||||
public static final int search_albums=0x7f08008e;
|
||||
public static final int search_artists=0x7f08008f;
|
||||
public static final int search_label=0x7f080090;
|
||||
public static final int search_more=0x7f080091;
|
||||
public static final int search_no_match=0x7f080092;
|
||||
public static final int search_search=0x7f080093;
|
||||
public static final int search_songs=0x7f080094;
|
||||
public static final int search_title=0x7f080095;
|
||||
public static final int select_album_donate_dialog_0_trial_days_left=0x7f080096;
|
||||
public static final int select_album_donate_dialog_later=0x7f080097;
|
||||
public static final int select_album_donate_dialog_message=0x7f080098;
|
||||
public static final int select_album_donate_dialog_now=0x7f080099;
|
||||
public static final int select_album_empty=0x7f08009a;
|
||||
public static final int select_album_more=0x7f08009b;
|
||||
public static final int select_album_n_selected=0x7f08009c;
|
||||
public static final int select_album_n_unselected=0x7f08009d;
|
||||
public static final int select_album_no_network=0x7f08009e;
|
||||
public static final int select_album_no_sdcard=0x7f08009f;
|
||||
public static final int select_album_not_licensed=0x7f0800a0;
|
||||
public static final int select_album_offline=0x7f0800a1;
|
||||
public static final int select_album_play_all=0x7f0800a2;
|
||||
public static final int select_album_searching=0x7f0800a3;
|
||||
public static final int select_album_select=0x7f0800a4;
|
||||
public static final int select_artist_all_folders=0x7f0800a5;
|
||||
public static final int select_artist_empty=0x7f0800a6;
|
||||
public static final int select_artist_folder=0x7f0800a7;
|
||||
public static final int select_artist_refresh=0x7f0800a8;
|
||||
public static final int select_genre_empty=0x7f0800a9;
|
||||
public static final int select_playlist_empty=0x7f0800aa;
|
||||
public static final int service_connecting=0x7f0800ab;
|
||||
public static final int settings_appearance_title=0x7f0800ac;
|
||||
public static final int settings_buffer_length=0x7f0800ad;
|
||||
public static final int settings_buffer_length_0=0x7f0800ae;
|
||||
public static final int settings_buffer_length_1=0x7f0800af;
|
||||
public static final int settings_buffer_length_10=0x7f0800b0;
|
||||
public static final int settings_buffer_length_12=0x7f0800b1;
|
||||
public static final int settings_buffer_length_120=0x7f0800b2;
|
||||
public static final int settings_buffer_length_15=0x7f0800b3;
|
||||
public static final int settings_buffer_length_2=0x7f0800b4;
|
||||
public static final int settings_buffer_length_20=0x7f0800b5;
|
||||
public static final int settings_buffer_length_30=0x7f0800b6;
|
||||
public static final int settings_buffer_length_5=0x7f0800b7;
|
||||
public static final int settings_buffer_length_60=0x7f0800b8;
|
||||
public static final int settings_buffer_length_8=0x7f0800b9;
|
||||
public static final int settings_cache_location=0x7f0800ba;
|
||||
public static final int settings_cache_location_error=0x7f0800bb;
|
||||
public static final int settings_cache_size=0x7f0800bc;
|
||||
public static final int settings_cache_size_100=0x7f0800bd;
|
||||
public static final int settings_cache_size_1000=0x7f0800be;
|
||||
public static final int settings_cache_size_10000=0x7f0800bf;
|
||||
public static final int settings_cache_size_200=0x7f0800c0;
|
||||
public static final int settings_cache_size_2000=0x7f0800c1;
|
||||
public static final int settings_cache_size_20000=0x7f0800c2;
|
||||
public static final int settings_cache_size_500=0x7f0800c3;
|
||||
public static final int settings_cache_size_5000=0x7f0800c4;
|
||||
public static final int settings_cache_size_unlimited=0x7f0800c5;
|
||||
public static final int settings_cache_title=0x7f0800c6;
|
||||
public static final int settings_chat_refresh=0x7f0800c7;
|
||||
public static final int settings_clear_bookmark=0x7f0800c8;
|
||||
public static final int settings_clear_bookmark_summary=0x7f0800c9;
|
||||
public static final int settings_clear_playlist=0x7f0800ca;
|
||||
public static final int settings_clear_playlist_summary=0x7f0800cb;
|
||||
public static final int settings_clear_search_history=0x7f0800cc;
|
||||
public static final int settings_connection_failure=0x7f0800cd;
|
||||
public static final int settings_default_albums=0x7f0800ce;
|
||||
public static final int settings_default_artists=0x7f0800cf;
|
||||
public static final int settings_default_songs=0x7f0800d0;
|
||||
public static final int settings_directory_cache_time=0x7f0800d1;
|
||||
public static final int settings_directory_cache_time_0=0x7f0800d2;
|
||||
public static final int settings_directory_cache_time_1=0x7f0800d3;
|
||||
public static final int settings_directory_cache_time_10=0x7f0800d4;
|
||||
public static final int settings_directory_cache_time_2=0x7f0800d5;
|
||||
public static final int settings_directory_cache_time_30=0x7f0800d6;
|
||||
public static final int settings_directory_cache_time_5=0x7f0800d7;
|
||||
public static final int settings_directory_cache_time_60=0x7f0800d8;
|
||||
public static final int settings_disc_sort=0x7f0800d9;
|
||||
public static final int settings_disc_sort_summary=0x7f0800da;
|
||||
public static final int settings_display_bitrate=0x7f0800db;
|
||||
public static final int settings_display_bitrate_summary=0x7f0800dc;
|
||||
public static final int settings_download_transition=0x7f0800dd;
|
||||
public static final int settings_download_transition_summary=0x7f0800de;
|
||||
public static final int settings_gapless_playback=0x7f0800df;
|
||||
public static final int settings_gapless_playback_summary=0x7f0800e0;
|
||||
public static final int settings_hide_media_summary=0x7f0800e1;
|
||||
public static final int settings_hide_media_title=0x7f0800e2;
|
||||
public static final int settings_hide_media_toast=0x7f0800e3;
|
||||
public static final int settings_increment_time=0x7f0800e4;
|
||||
public static final int settings_invalid_url=0x7f0800e5;
|
||||
public static final int settings_invalid_username=0x7f0800e6;
|
||||
public static final int settings_max_albums=0x7f0800e7;
|
||||
public static final int settings_max_artists=0x7f0800e8;
|
||||
public static final int settings_max_bitrate_112=0x7f0800e9;
|
||||
public static final int settings_max_bitrate_128=0x7f0800ea;
|
||||
public static final int settings_max_bitrate_160=0x7f0800eb;
|
||||
public static final int settings_max_bitrate_192=0x7f0800ec;
|
||||
public static final int settings_max_bitrate_256=0x7f0800ed;
|
||||
public static final int settings_max_bitrate_32=0x7f0800ee;
|
||||
public static final int settings_max_bitrate_320=0x7f0800ef;
|
||||
public static final int settings_max_bitrate_64=0x7f0800f0;
|
||||
public static final int settings_max_bitrate_80=0x7f0800f1;
|
||||
public static final int settings_max_bitrate_96=0x7f0800f2;
|
||||
public static final int settings_max_bitrate_mobile=0x7f0800f3;
|
||||
public static final int settings_max_bitrate_unlimited=0x7f0800f4;
|
||||
public static final int settings_max_bitrate_wifi=0x7f0800f5;
|
||||
public static final int settings_max_songs=0x7f0800f6;
|
||||
public static final int settings_media_button_summary=0x7f0800f7;
|
||||
public static final int settings_media_button_title=0x7f0800f8;
|
||||
public static final int settings_network_timeout=0x7f0800f9;
|
||||
public static final int settings_network_timeout_105000=0x7f0800fa;
|
||||
public static final int settings_network_timeout_120000=0x7f0800fb;
|
||||
public static final int settings_network_timeout_15000=0x7f0800fc;
|
||||
public static final int settings_network_timeout_30000=0x7f0800fd;
|
||||
public static final int settings_network_timeout_45000=0x7f0800fe;
|
||||
public static final int settings_network_timeout_60000=0x7f0800ff;
|
||||
public static final int settings_network_timeout_75000=0x7f080100;
|
||||
public static final int settings_network_timeout_90000=0x7f080101;
|
||||
public static final int settings_network_title=0x7f080102;
|
||||
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_server_add_server=0x7f080120;
|
||||
public static final int settings_server_address=0x7f080121;
|
||||
public static final int settings_server_name=0x7f080122;
|
||||
public static final int settings_server_number=0x7f080123;
|
||||
public static final int settings_server_password=0x7f080124;
|
||||
public static final int settings_server_remove_server=0x7f080125;
|
||||
public static final int settings_server_scaling_summary=0x7f080126;
|
||||
public static final int settings_server_scaling_title=0x7f080127;
|
||||
public static final int settings_server_unused=0x7f080128;
|
||||
public static final int settings_server_unused1=0x7f080129;
|
||||
public static final int settings_server_unused2=0x7f08012a;
|
||||
public static final int settings_server_unused3=0x7f08012b;
|
||||
public static final int settings_server_username=0x7f08012c;
|
||||
public static final int settings_servers_title=0x7f08012d;
|
||||
public static final int settings_show_lockscreen_controls=0x7f08012e;
|
||||
public static final int settings_show_lockscreen_controls_summary=0x7f08012f;
|
||||
public static final int settings_show_notification=0x7f080130;
|
||||
public static final int settings_show_notification_always=0x7f080131;
|
||||
public static final int settings_show_notification_always_summary=0x7f080132;
|
||||
public static final int settings_show_notification_summary=0x7f080133;
|
||||
public static final int settings_show_now_playing=0x7f080134;
|
||||
public static final int settings_show_now_playing_summary=0x7f080135;
|
||||
public static final int settings_show_track_number=0x7f080136;
|
||||
public static final int settings_show_track_number_summary=0x7f080137;
|
||||
public static final int settings_test_connection_title=0x7f080138;
|
||||
public static final int settings_testing_connection=0x7f080139;
|
||||
public static final int settings_testing_ok=0x7f08013a;
|
||||
public static final int settings_testing_unlicensed=0x7f08013b;
|
||||
public static final int settings_theme_dark=0x7f08013c;
|
||||
public static final int settings_theme_light=0x7f08013d;
|
||||
public static final int settings_theme_title=0x7f08013e;
|
||||
public static final int settings_title=0x7f08013f;
|
||||
public static final int settings_use_folder_for_album_artist=0x7f080140;
|
||||
public static final int settings_use_folder_for_album_artist_summary=0x7f080141;
|
||||
public static final int settings_use_id3=0x7f080142;
|
||||
public static final int settings_use_id3_summary=0x7f080143;
|
||||
public static final int settings_use_stream_proxy=0x7f080144;
|
||||
public static final int settings_use_stream_proxy_summary=0x7f080145;
|
||||
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;
|
||||
|
@ -1264,9 +1266,11 @@ or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>na
|
|||
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 widget_initial_text=0x7f080155;
|
||||
public static final int widget_sdcard_busy=0x7f080156;
|
||||
public static final int widget_sdcard_missing=0x7f080157;
|
||||
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 class style {
|
||||
public static final int MenuDrawer=0x7f0a0005;
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
<string name="background_task.not_found">Ressources introuvables. Veuillez vérifier l\'adresse du serveur.</string>
|
||||
<string name="background_task.parse_error">Réponse incorrecte. Veuillez vérifier l\'adresse du serveur.</string>
|
||||
<string name="background_task.wait">Veuillez patienter…</string>
|
||||
<string name="button_bar.bookmarks">Bookmarks</string>
|
||||
<string name="button_bar.bookmarks">Signets</string>
|
||||
<string name="button_bar.browse">Bibliothèque musicale</string>
|
||||
<string name="button_bar.chat">Clavardage</string>
|
||||
<string name="button_bar.chat">Salon de discussion</string>
|
||||
<string name="button_bar.home">Accueil Ultrasonic</string>
|
||||
<string name="button_bar.now_playing">Lecture en cours</string>
|
||||
<string name="button_bar.playlists">Playlists</string>
|
||||
|
@ -17,27 +17,27 @@
|
|||
<string name="chat.send_a_message">Envoyer un message</string>
|
||||
<string name="common.appname">UltraSonic</string>
|
||||
<string name="common.cancel">Annuler</string>
|
||||
<string name="common.comment">Comment</string>
|
||||
<string name="common.confirm">Confirm</string>
|
||||
<string name="common.comment">Commenter</string>
|
||||
<string name="common.confirm">Confirmer</string>
|
||||
<string name="common.delete">Supprimer</string>
|
||||
<string name="common.download">Download</string>
|
||||
<string name="common.info">Details</string>
|
||||
<string name="common.multiple_genres">Genres multiples</string>
|
||||
<string name="common.name">Name</string>
|
||||
<string name="common.name">Nom</string>
|
||||
<string name="common.ok">OK</string>
|
||||
<string name="common.pin">Épingler</string>
|
||||
<string name="common.play_last">Jouer en dernier</string>
|
||||
<string name="common.play_next">Jouer à la suite</string>
|
||||
<string name="common.play_now">Jouer maintenant</string>
|
||||
<string name="common.play_shuffled">Play Shuffled</string>
|
||||
<string name="common.play_shuffled">Jouer aleatoirement</string>
|
||||
<string name="common.public">Public</string>
|
||||
<string name="common.save">Enregistrer</string>
|
||||
<string name="common.show_artist">Show Artist</string>
|
||||
<string name="common.show_artist">Voir Artiste</string>
|
||||
<string name="common.unpin">Détacher</string>
|
||||
<string name="common.various_artists">Artistes divers</string>
|
||||
<string name="delete_playlist">Do you want to delete %1$s</string>
|
||||
<string name="download.bookmark_removed" formatted="false">Bookmark removed.</string>
|
||||
<string name="download.bookmark_set_at_position" formatted="false">Bookmark set at %s.</string>
|
||||
<string name="delete_playlist">Voulez-vous supprimer %1$s</string>
|
||||
<string name="download.bookmark_removed" formatted="false">Signet supprimé.</string>
|
||||
<string name="download.bookmark_set_at_position" formatted="false">Bookmark défini sur %s.</string>
|
||||
<string name="download.empty">Playlist vide</string>
|
||||
<string name="download.jukebox_not_authorized">La télécommande n\'est pas autorisée. Veuillez activer le mode jukebox dans <b>Utilisateurs > Paramètres</b> à partir de votre serveur Subsonic.</string>
|
||||
<string name="download.jukebox_off">Télécommande désactivée. La musique est jouée sur le téléphone.</string>
|
||||
|
@ -55,8 +55,8 @@
|
|||
<string name="download.menu_screen_off">Désactiver l\'écran</string>
|
||||
<string name="download.menu_screen_on">Sur l\'écran</string>
|
||||
<string name="download.menu_show_album">Afficher l\'album</string>
|
||||
<string name="download.menu_shuffle">Mélanger</string>
|
||||
<string name="download.menu_shuffle_notification">Playlist mélangée</string>
|
||||
<string name="download.menu_shuffle">Aleatoire</string>
|
||||
<string name="download.menu_shuffle_notification">Playlist aleatoire</string>
|
||||
<string name="download.menu_visualizer">Visualiseur</string>
|
||||
<string name="download.playerstate_buffering">Mise en mémoire</string>
|
||||
<string name="download.playerstate_downloading">Téléchargement - %s</string>
|
||||
|
@ -81,8 +81,8 @@
|
|||
<string name="help.loading">Chargement…</string>
|
||||
<string name="help.title">Bienvenue dans UltraSonic !</string>
|
||||
<string name="help.url">file:///android_asset/html/en/index.html</string>
|
||||
<string name="jukebox.is_default">Jukebox By Default</string>
|
||||
<string name="lyrics.nomatch">Aucune parole trouvée</string>
|
||||
<string name="jukebox.is_default">Jukebox par defaut</string>
|
||||
<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>
|
||||
|
@ -108,14 +108,14 @@
|
|||
<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>
|
||||
<string name="menu.add_playlist">Add To Playlist</string>
|
||||
<string name="menu.add_playlist">Ajouer à la playlist</string>
|
||||
<string name="menu.common">Général</string>
|
||||
<string name="menu.deleted_playlist">Deleted playlist %s</string>
|
||||
<string name="menu.deleted_playlist_error">Failed to delete playlist %s</string>
|
||||
<string name="menu.deleted_playlist">Playlist %s supprimée</string>
|
||||
<string name="menu.deleted_playlist_error">Echec de suppression playlist %s</string>
|
||||
<string name="menu.exit">Quitter</string>
|
||||
<string name="menu.help">Aide</string>
|
||||
<string name="menu.navigation">Navigation</string>
|
||||
<string name="menu.remove_playlist">Remove From Playlist</string>
|
||||
<string name="menu.remove_playlist">Supprimer de la playlist</string>
|
||||
<string name="menu.search">Recherche</string>
|
||||
<string name="menu.settings">Paramètres</string>
|
||||
<string name="music_library.label">Bibliothèque musicale</string>
|
||||
|
@ -128,15 +128,13 @@
|
|||
<string name="parser.reading_done">Lecture du serveur. Terminé!</string>
|
||||
<string name="parser.upgrade_client">Versions incompatible. Veuillez mette à jour l\'application Android UltraSonic.</string>
|
||||
<string name="parser.upgrade_server">Versions incompatible. Veuillez mette à jour le serveur Subsonic.</string>
|
||||
<string name="play_video.loading">Chargement de la vidéo…</string>
|
||||
<string name="play_video.noplugin">Veuillez installer Adobe Flash Player à partir du Google Play Store.</string>
|
||||
<string name="playlist.label">Playlists</string>
|
||||
<string name="playlist.update_info">Update Information</string>
|
||||
<string name="playlist.updated_info">Updated playlist information for %s</string>
|
||||
<string name="playlist.updated_info_error">Failed to update playlist information for %s</string>
|
||||
<string name="playlist_error">Failed to grab list of playlists</string>
|
||||
<string name="playlist.update_info">Mise à jour des informations</string>
|
||||
<string name="playlist.updated_info">Informations de la playlist %s mises à jour</string>
|
||||
<string name="playlist.updated_info_error">Echec de mise à jour des informations pour la playlist %s</string>
|
||||
<string name="playlist_error">Echec de récupération de la liste des playlists</string>
|
||||
<string name="progress.wait">Veuillez patienter…</string>
|
||||
<string name="removed_playlist">Removed %1$s songs from \"%2$s\"</string>
|
||||
<string name="removed_playlist"> %1$s titre(s) enlevé(s) de \"%2$s\"</string>
|
||||
<string name="search.albums">Albums</string>
|
||||
<string name="search.artists">Artistes</string>
|
||||
<string name="search.label">Recherche</string>
|
||||
|
@ -194,36 +192,36 @@
|
|||
<string name="settings.cache_size_5000">5 Go</string>
|
||||
<string name="settings.cache_size_unlimited">Illimité</string>
|
||||
<string name="settings.cache_title">Cache des musiques</string>
|
||||
<string name="settings.chat_refresh">Intervalle de clavardage</string>
|
||||
<string name="settings.clear_bookmark">Clear Bookmark</string>
|
||||
<string name="settings.clear_bookmark_summary">Clear bookmark upon completion of playback of a song</string>
|
||||
<string name="settings.clear_playlist">Clear Playlist</string>
|
||||
<string name="settings.clear_playlist_summary">Clear the playlist upon completion of playback of all songs</string>
|
||||
<string name="settings.chat_refresh">Délai de rafraichissement du salon de discussion</string>
|
||||
<string name="settings.clear_bookmark">Effacer le signet</string>
|
||||
<string name="settings.clear_bookmark_summary">Effacer le signet à la fin de la lecture d\'un titre</string>
|
||||
<string name="settings.clear_playlist">Effacer la playlist</string>
|
||||
<string name="settings.clear_playlist_summary">Effacer la playlist à la fin de la lecture de tous les titres</string>
|
||||
<string name="settings.clear_search_history">Effacer l\'historique des recherches</string>
|
||||
<string name="settings.connection_failure">Connection échouée</string>
|
||||
<string name="settings.default_albums">Albums par défaut</string>
|
||||
<string name="settings.default_artists">Artistes par défaut</string>
|
||||
<string name="settings.default_songs">Musiques par défaut</string>
|
||||
<string name="settings.directory_cache_time">Directory Cache Time</string>
|
||||
<string name="settings.directory_cache_time_0">Disabled</string>
|
||||
<string name="settings.directory_cache_time">Durée du cache</string>
|
||||
<string name="settings.directory_cache_time_0">Désactivé</string>
|
||||
<string name="settings.directory_cache_time_1">1 minute</string>
|
||||
<string name="settings.directory_cache_time_10">10 minutes</string>
|
||||
<string name="settings.directory_cache_time_2">2 minutes</string>
|
||||
<string name="settings.directory_cache_time_30">30 minutes</string>
|
||||
<string name="settings.directory_cache_time_5">5 minutes</string>
|
||||
<string name="settings.directory_cache_time_60">1 hour</string>
|
||||
<string name="settings.disc_sort">Sort Songs By Disc</string>
|
||||
<string name="settings.disc_sort_summary">Sort song list by disc number and track number</string>
|
||||
<string name="settings.disc_sort">Trier les titres par disque</string>
|
||||
<string name="settings.disc_sort_summary">Trier la liste des titres par numero de disques/pistes</string>
|
||||
<string name="settings.display_bitrate">Afficher bitrate et suffixe du fichier</string>
|
||||
<string name="settings.display_bitrate_summary">Ajouter le nom d\'artiste, bitrate et suffixe du fichier</string>
|
||||
<string name="settings.download_transition">Show Downloads On Play</string>
|
||||
<string name="settings.download_transition_summary">Transition to download activity when starting playback</string>
|
||||
<string name="settings.download_transition">Afficher le téléchargement lors de la lecture</string>
|
||||
<string name="settings.download_transition_summary">Aller vers les téléchargements lorsque qu\'un titre est écouté</string>
|
||||
<string name="settings.gapless_playback">Gapless Playback</string>
|
||||
<string name="settings.gapless_playback_summary">Enable gapless playback</string>
|
||||
<string name="settings.gapless_playback_summary">Activer gapless playback</string>
|
||||
<string name="settings.hide_media_summary">Masquer les fichiers musicaux et les couvertures d\'album aux autres applis (Gallerie, Musique, etc.)</string>
|
||||
<string name="settings.hide_media_title">Masquer aux autres</string>
|
||||
<string name="settings.hide_media_toast">Prendra effet la prochaine fois qu\'Android recensera les médias disponibles sur l\'appareil.</string>
|
||||
<string name="settings.increment_time">Skip Interval</string>
|
||||
<string name="settings.increment_time">Passer interval</string>
|
||||
<string name="settings.invalid_url">Veuillez spécifier un URL valide.</string>
|
||||
<string name="settings.invalid_username">Veuillez spécifier un nom d\'utilisateur valide (sans espace à la fin).</string>
|
||||
<string name="settings.max_albums">Albums maximum</string>
|
||||
|
@ -283,15 +281,15 @@
|
|||
<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.server_add_server">Add Server</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>
|
||||
<string name="settings.server_number">Number Of Servers</string>
|
||||
<string name="settings.server_number">Nombres de serveurs</string>
|
||||
<string name="settings.server_password">Mot de passe</string>
|
||||
<string name="settings.server_remove_server">Remove Server</string>
|
||||
<string name="settings.server_remove_server">Supprimer ce serveur</string>
|
||||
<string name="settings.server_scaling_summary">Télécharger des images redimensionnées à partir du serveur au lieu des tailles de bases (bande passante réduite)</string>
|
||||
<string name="settings.server_scaling_title">Album serveur mis à l\'échelle de la cover</string>
|
||||
<string name="settings.server_unused">Unused</string>
|
||||
<string name="settings.server_scaling_title">Album serveur mis à l\'échelle de la couverture</string>
|
||||
<string name="settings.server_unused">Inutilisé</string>
|
||||
<string name="settings.server_unused1">Inutilisé 1</string>
|
||||
<string name="settings.server_unused2">Inutilisé 2</string>
|
||||
<string name="settings.server_unused3">Inutilisé 3</string>
|
||||
|
@ -317,25 +315,29 @@
|
|||
<string name="settings.title">Paramètres d\'UltraSonic</string>
|
||||
<string name="settings.use_folder_for_album_artist">Utilisez des dossiers pour les noms d\'artistes</string>
|
||||
<string name="settings.use_folder_for_album_artist_summary">Dossier de niveau supérieur devient le nom de l\'artiste de l\'album</string>
|
||||
<string name="settings.use_id3">Browse Using ID3 Tags</string>
|
||||
<string name="settings.use_id3_summary">Use ID3 tag methods instead of file system based methods</string>
|
||||
<string name="settings.use_id3">Naviguer en utilisant ID3 Tags</string>
|
||||
<string name="settings.use_id3_summary">Utiliser ID3 tag à la place du système de fichier basique</string>
|
||||
<string name="settings.use_stream_proxy">Utiliser un proxy</string>
|
||||
<string name="settings.use_stream_proxy_summary">Support de lecture de flux à travers un proxy (peut provoquer des fritures)</string>
|
||||
<string name="settings.video_title">Video</string>
|
||||
<string name="settings.video_player">Video player</string>
|
||||
<string name="settings.wifi_required_summary">Lire uniquement les flux médias si connecté au réseau Wi-Fi</string>
|
||||
<string name="settings.wifi_required_title">Wi-Fi en streaming uniquement</string>
|
||||
<string name="shuffle.endYear">End Year:</string>
|
||||
<string name="shuffle.endYear">Année de fin:</string>
|
||||
<string name="shuffle.genre">Genre:</string>
|
||||
<string name="shuffle.startYear">Start Year:</string>
|
||||
<string name="shuffle.startYear">Année de début:</string>
|
||||
<string name="song_details.all">%1$s%2$s</string>
|
||||
<string name="song_details.kbps">%d Kb/s</string>
|
||||
<string name="updated_playlist">Added %1$s songs to \"%2$s\"</string>
|
||||
<string name="updated_playlist_error">Failed to update \"%s\", please try later.</string>
|
||||
<string name="updated_playlist">%1$s titre(s) ajouté(s) à \"%2$s\"</string>
|
||||
<string name="updated_playlist_error">Echec de mise à jour \"%s\", veuillez essayer plus tard.</string>
|
||||
<string name="util.bytes_format.byte">0 o</string>
|
||||
<string name="util.bytes_format.gigabyte">0.00 Go</string>
|
||||
<string name="util.bytes_format.kilobyte">0 Ko</string>
|
||||
<string name="util.bytes_format.megabyte">0.00 Mo</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="widget.initial_text">Touchez pour sélectionner un titre</string>
|
||||
<string name="widget.sdcard_busy">Carte SD non disponible</string>
|
||||
<string name="widget.sdcard_missing">Aucune carte SD</string>
|
||||
|
|
|
@ -128,8 +128,6 @@
|
|||
<string name="parser.reading_done">Olvasás a kiszolgálóról… Kész!</string>
|
||||
<string name="parser.upgrade_client">Nem kompatibilis verzió. Kérjük, frissítse az UltraSonic Android alkalmazást!</string>
|
||||
<string name="parser.upgrade_server">Nem kompatibilis verzió. Kérjük, frissítse a Subsonic kiszolgálót!</string>
|
||||
<string name="play_video.loading">Videó betöltése…</string>
|
||||
<string name="play_video.noplugin">Kérjük, telepítse az Adobe Flash Player-t a Play Áruházból!</string>
|
||||
<string name="playlist.label">Lejátszási listák</string>
|
||||
<string name="playlist.update_info">Módosítás</string>
|
||||
<string name="playlist.updated_info">Módosított lejátszási lista %s</string>
|
||||
|
@ -321,6 +319,8 @@
|
|||
<string name="settings.use_id3_summary">ID3 Tag módszer használata a fájlredszer alapú mód helyett.</string>
|
||||
<string name="settings.use_stream_proxy">Stream Proxy használata</string>
|
||||
<string name="settings.use_stream_proxy_summary">Média lejátszása stream proxy-n keresztül (akadozások elkerülése érdekében).</string>
|
||||
<string name="settings.video_title">Video</string>
|
||||
<string name="settings.video_player">Video player</string>
|
||||
<string name="settings.wifi_required_summary">Streaming, csak ha rendelkezésre áll Wi-Fi kapcsolat.</string>
|
||||
<string name="settings.wifi_required_title">Csak Wi-Fi streaming</string>
|
||||
<string name="shuffle.endYear">Utolsó év:</string>
|
||||
|
@ -336,6 +336,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="widget.initial_text">Érintse meg a zene kiválasztásához</string>
|
||||
<string name="widget.sdcard_busy">Az SD kártya nem elérhető!</string>
|
||||
<string name="widget.sdcard_missing">Nincs SD kártya!</string>
|
||||
|
@ -370,4 +372,4 @@
|
|||
<item quantity="other">%d nap van hátra a próba időszakból.</item>
|
||||
</plurals>
|
||||
|
||||
</resources>
|
||||
</resources>
|
|
@ -204,5 +204,15 @@
|
|||
<item>@string/settings.search_250</item>
|
||||
<item>@string/settings.search_500</item>
|
||||
</string-array>
|
||||
<string-array name="videoPlayerValues">
|
||||
<item>mx</item>
|
||||
<item>default</item>
|
||||
<item>flash</item>
|
||||
</string-array>
|
||||
<string-array name="videoPlayerNames">
|
||||
<item>MX Player</item>
|
||||
<item>Default</item>
|
||||
<item>Flash</item>
|
||||
</string-array>
|
||||
|
||||
</resources>
|
|
@ -128,8 +128,6 @@
|
|||
<string name="parser.reading_done">Reading from server. Done!</string>
|
||||
<string name="parser.upgrade_client">Incompatible versions. Please upgrade UltraSonic Android app.</string>
|
||||
<string name="parser.upgrade_server">Incompatible versions. Please upgrade Subsonic server.</string>
|
||||
<string name="play_video.loading">Loading video…</string>
|
||||
<string name="play_video.noplugin">Please install Adobe Flash Player from Android Market.</string>
|
||||
<string name="playlist.label">Playlists</string>
|
||||
<string name="playlist.update_info">Update Information</string>
|
||||
<string name="playlist.updated_info">Updated playlist information for %s</string>
|
||||
|
@ -321,6 +319,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.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,6 +336,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="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>
|
||||
|
|
|
@ -2,7 +2,9 @@
|
|||
<PreferenceScreen xmlns:a="http://schemas.android.com/apk/res/android"
|
||||
a:title="@string/common.appname" >
|
||||
|
||||
<PreferenceCategory a:key="serversKey" a:title="@string/settings.servers_title" >
|
||||
<PreferenceCategory
|
||||
a:key="serversKey"
|
||||
a:title="@string/settings.servers_title" >
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory a:title="@string/settings.appearance_title" >
|
||||
<ListPreference
|
||||
|
@ -48,7 +50,7 @@
|
|||
a:defaultValue="false"
|
||||
a:key="useId3Tags"
|
||||
a:summary="@string/settings.use_id3_summary"
|
||||
a:title="@string/settings.use_id3" />
|
||||
a:title="@string/settings.use_id3" />
|
||||
<CheckBoxPreference
|
||||
a:defaultValue="true"
|
||||
a:key="mediaButtons"
|
||||
|
@ -78,7 +80,7 @@
|
|||
a:defaultValue="true"
|
||||
a:key="transitionToDownloadOnPlay"
|
||||
a:summary="@string/settings.download_transition_summary"
|
||||
a:title="@string/settings.download_transition" />
|
||||
a:title="@string/settings.download_transition" />
|
||||
<CheckBoxPreference
|
||||
a:defaultValue="false"
|
||||
a:key="gaplessPlayback"
|
||||
|
@ -93,14 +95,23 @@
|
|||
a:defaultValue="false"
|
||||
a:key="clearBookmark"
|
||||
a:summary="@string/settings.clear_bookmark_summary"
|
||||
a:title="@string/settings.clear_bookmark" />
|
||||
a:title="@string/settings.clear_bookmark" />
|
||||
|
||||
<ListPreference
|
||||
a:defaultValue="5000"
|
||||
a:entries="@array/bufferLengthNames"
|
||||
a:entryValues="@array/incrementTimeValues"
|
||||
a:key="incrementTime"
|
||||
a:title="@string/settings.increment_time" />
|
||||
</PreferenceCategory>
|
||||
a:title="@string/settings.increment_time" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory a:title="@string/settings.video_title" >
|
||||
<ListPreference
|
||||
a:defaultValue="default"
|
||||
a:entries="@array/videoPlayerNames"
|
||||
a:entryValues="@array/videoPlayerValues"
|
||||
a:key="videoPlayer"
|
||||
a:title="@string/settings.video_player" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory a:title="@string/settings.network_title" >
|
||||
<ListPreference
|
||||
a:defaultValue="0"
|
||||
|
@ -133,13 +144,12 @@
|
|||
a:entryValues="@array/networkTimeoutValues"
|
||||
a:key="networkTimeout"
|
||||
a:title="@string/settings.network_timeout" />
|
||||
|
||||
<ListPreference
|
||||
a:defaultValue="5000"
|
||||
a:entries="@array/chatRefreshNames"
|
||||
a:entryValues="@array/chatRefreshValues"
|
||||
a:key="chatRefreshInterval"
|
||||
a:title="@string/settings.chat_refresh" />
|
||||
a:title="@string/settings.chat_refresh" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory a:title="@string/settings.cache_title" >
|
||||
<ListPreference
|
||||
|
@ -164,7 +174,7 @@
|
|||
a:entries="@array/directoryCacheTimeNames"
|
||||
a:entryValues="@array/directoryCacheTimeValues"
|
||||
a:key="directoryCacheTime"
|
||||
a:title="@string/settings.directory_cache_time" />
|
||||
a:title="@string/settings.directory_cache_time" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory a:title="@string/settings.search_title" >
|
||||
<ListPreference
|
||||
|
|
|
@ -334,15 +334,6 @@ public class BookmarkActivity extends SubsonicTabActivity {
|
|||
}
|
||||
}
|
||||
|
||||
private void playVideo(MusicDirectory.Entry entry) {
|
||||
int maxBitrate = Util.getMaxVideoBitrate(this);
|
||||
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||
intent.setData(Uri.parse(MusicServiceFactory.getMusicService(this).getVideoUrl(maxBitrate, this, entry.getId())));
|
||||
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
public void deleteRecursively(MusicDirectory.Entry album) {
|
||||
File dir = FileUtil.getAlbumDirectory(this, album);
|
||||
Util.recursiveDelete(dir);
|
||||
|
|
|
@ -961,8 +961,8 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi
|
|||
if (currentPlaying != null) {
|
||||
final int millisTotal = duration == null ? 0 : duration;
|
||||
|
||||
positionTextView.setText(Util.formatDuration(millisPlayed / 1000));
|
||||
durationTextView.setText(Util.formatDuration(millisTotal / 1000));
|
||||
positionTextView.setText(Util.formatTotalDuration(millisPlayed, true));
|
||||
durationTextView.setText(Util.formatTotalDuration(millisTotal, true));
|
||||
progressBar.setMax(millisTotal == 0 ? 100 : millisTotal); // Work-around for apparent bug.
|
||||
progressBar.setProgress(millisPlayed);
|
||||
progressBar.setEnabled(currentPlaying.isWorkDone() || isJukeboxEnabled);
|
||||
|
|
|
@ -1,148 +0,0 @@
|
|||
/*
|
||||
This file is part of Subsonic.
|
||||
|
||||
Subsonic is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Subsonic is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Subsonic. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Copyright 2009 (C) Sindre Mehus
|
||||
*/
|
||||
|
||||
package com.thejoshwa.ultrasonic.androidapp.activity;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.graphics.Bitmap;
|
||||
import android.media.AudioManager;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.Window;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import com.thejoshwa.ultrasonic.androidapp.R;
|
||||
import com.thejoshwa.ultrasonic.androidapp.service.MusicServiceFactory;
|
||||
import com.thejoshwa.ultrasonic.androidapp.util.Constants;
|
||||
import com.thejoshwa.ultrasonic.androidapp.util.Util;
|
||||
|
||||
/**
|
||||
* Plays videos in a web page.
|
||||
*
|
||||
* @author Sindre Mehus
|
||||
*/
|
||||
public final class PlayVideoActivity extends Activity {
|
||||
|
||||
private static final String TAG = PlayVideoActivity.class.getSimpleName();
|
||||
private WebView webView;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle bundle) {
|
||||
super.onCreate(bundle);
|
||||
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
|
||||
setVolumeControlStream(AudioManager.STREAM_MUSIC);
|
||||
|
||||
setContentView(R.layout.play_video);
|
||||
|
||||
webView = (WebView) findViewById(R.id.play_video_contents);
|
||||
webView.getSettings().setJavaScriptEnabled(true);
|
||||
webView.getSettings().setPluginsEnabled(true);
|
||||
webView.getSettings().setAllowFileAccess(true);
|
||||
webView.getSettings().setSupportZoom(true);
|
||||
webView.getSettings().setBuiltInZoomControls(true);
|
||||
|
||||
webView.setWebViewClient(new Client());
|
||||
if (bundle != null) {
|
||||
webView.restoreState(bundle);
|
||||
} else {
|
||||
webView.loadUrl(getVideoUrl());
|
||||
}
|
||||
|
||||
// Show warning if Flash plugin is not installed.
|
||||
if (isFlashPluginInstalled()) {
|
||||
Util.toast(this, R.string.play_video_loading, false);
|
||||
} else {
|
||||
Util.toast(this, R.string.play_video_noplugin, false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
callHiddenWebViewMethod("onPause");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
callHiddenWebViewMethod("onResume");
|
||||
}
|
||||
|
||||
private String getVideoUrl() {
|
||||
String id = getIntent().getStringExtra(Constants.INTENT_EXTRA_NAME_ID);
|
||||
int maxBitrate = Util.getMaxVideoBitrate(this);
|
||||
return MusicServiceFactory.getMusicService(this).getVideoUrl(maxBitrate, this, id);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(Bundle state) {
|
||||
webView.saveState(state);
|
||||
}
|
||||
|
||||
private void callHiddenWebViewMethod(String name){
|
||||
if( webView != null ){
|
||||
try {
|
||||
Method method = WebView.class.getMethod(name);
|
||||
method.invoke(webView);
|
||||
} catch (Throwable x) {
|
||||
Log.e(TAG, "Failed to invoke " + name, x);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isFlashPluginInstalled() {
|
||||
try {
|
||||
PackageInfo packageInfo = getPackageManager().getPackageInfo("com.adobe.flashplayer", 0);
|
||||
return packageInfo != null;
|
||||
} catch (PackageManager.NameNotFoundException x) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private final class Client extends WebViewClient {
|
||||
|
||||
@Override
|
||||
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
|
||||
Util.toast(PlayVideoActivity.this, description);
|
||||
Log.e(TAG, "Error: " + description);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadResource(WebView view, String url) {
|
||||
super.onLoadResource(view, url);
|
||||
Log.d(TAG, "onLoadResource: " + url);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageStarted(WebView view, String url, Bitmap favicon) {
|
||||
super.onPageStarted(view, url, favicon);
|
||||
Log.d(TAG, "onPageStarted: " + url);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageFinished(WebView view, String url) {
|
||||
super.onPageFinished(view, url);
|
||||
Log.d(TAG, "onPageFinished: " + url);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -418,11 +418,7 @@ public class SearchActivity extends SubsonicTabActivity {
|
|||
}
|
||||
|
||||
private void onVideoSelected(MusicDirectory.Entry entry) {
|
||||
int maxBitrate = Util.getMaxVideoBitrate(this);
|
||||
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||
intent.setData(Uri.parse(MusicServiceFactory.getMusicService(this).getVideoUrl(maxBitrate, this, entry.getId())));
|
||||
startActivity(intent);
|
||||
playVideo(entry);
|
||||
}
|
||||
|
||||
private void autoplay() {
|
||||
|
|
|
@ -651,15 +651,6 @@ public class SelectAlbumActivity extends SubsonicTabActivity {
|
|||
getDownloadService().unpin(songs);
|
||||
}
|
||||
}
|
||||
|
||||
private void playVideo(MusicDirectory.Entry entry) {
|
||||
int maxBitrate = Util.getMaxVideoBitrate(this);
|
||||
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||
intent.setData(Uri.parse(MusicServiceFactory.getMusicService(this).getVideoUrl(maxBitrate, this, entry.getId())));
|
||||
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
public void deleteRecursively(MusicDirectory.Entry album) {
|
||||
File dir = FileUtil.getAlbumDirectory(this, album);
|
||||
|
|
|
@ -83,7 +83,7 @@ public class SelectArtistActivity extends SubsonicTabActivity implements Adapter
|
|||
folderButton = LayoutInflater.from(this).inflate(R.layout.select_artist_header, artistListView, false);
|
||||
folderName = (TextView) folderButton.findViewById(R.id.select_artist_folder_2);
|
||||
|
||||
if (!Util.isOffline(this)) {
|
||||
if (!Util.isOffline(this) && !Util.getShouldUseId3Tags(this)) {
|
||||
artistListView.addHeaderView(folderButton);
|
||||
}
|
||||
|
||||
|
@ -128,6 +128,7 @@ public class SelectArtistActivity extends SubsonicTabActivity implements Adapter
|
|||
protected Indexes doInBackground() throws Throwable {
|
||||
boolean refresh = getIntent().getBooleanExtra(Constants.INTENT_EXTRA_NAME_REFRESH, false);
|
||||
MusicService musicService = MusicServiceFactory.getMusicService(SelectArtistActivity.this);
|
||||
|
||||
boolean isOffline = Util.isOffline(SelectArtistActivity.this);
|
||||
boolean useId3Tags = Util.getShouldUseId3Tags(SelectArtistActivity.this);
|
||||
|
||||
|
|
|
@ -63,6 +63,7 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer
|
|||
private final Map<String, ServerSettings> serverSettings = new LinkedHashMap<String, ServerSettings>();
|
||||
private boolean testingConnection;
|
||||
private ListPreference theme;
|
||||
private ListPreference videoPlayer;
|
||||
private ListPreference maxBitrateWifi;
|
||||
private ListPreference maxBitrateMobile;
|
||||
private ListPreference cacheSize;
|
||||
|
@ -140,6 +141,7 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer
|
|||
}
|
||||
|
||||
theme = (ListPreference) findPreference(Constants.PREFERENCES_KEY_THEME);
|
||||
videoPlayer = (ListPreference) findPreference(Constants.PREFERENCES_KEY_VIDEO_PLAYER);
|
||||
maxBitrateWifi = (ListPreference) findPreference(Constants.PREFERENCES_KEY_MAX_BITRATE_WIFI);
|
||||
maxBitrateMobile = (ListPreference) findPreference(Constants.PREFERENCES_KEY_MAX_BITRATE_MOBILE);
|
||||
cacheSize = (ListPreference) findPreference(Constants.PREFERENCES_KEY_CACHE_SIZE);
|
||||
|
@ -410,6 +412,7 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer
|
|||
}
|
||||
|
||||
theme.setSummary(theme.getEntry());
|
||||
videoPlayer.setSummary(videoPlayer.getEntry());
|
||||
maxBitrateWifi.setSummary(maxBitrateWifi.getEntry());
|
||||
maxBitrateMobile.setSummary(maxBitrateMobile.getEntry());
|
||||
cacheSize.setSummary(cacheSize.getEntry());
|
||||
|
|
|
@ -71,6 +71,8 @@ import com.thejoshwa.ultrasonic.androidapp.util.LoadingTask;
|
|||
import com.thejoshwa.ultrasonic.androidapp.util.ModalBackgroundTask;
|
||||
import com.thejoshwa.ultrasonic.androidapp.util.SilentBackgroundTask;
|
||||
import com.thejoshwa.ultrasonic.androidapp.util.Util;
|
||||
import com.thejoshwa.ultrasonic.androidapp.util.VideoPlayerType;
|
||||
|
||||
import net.simonvt.menudrawer.MenuDrawer;
|
||||
import net.simonvt.menudrawer.Position;
|
||||
|
||||
|
@ -773,6 +775,21 @@ public class SubsonicTabActivity extends Activity implements OnClickListener{
|
|||
task.execute();
|
||||
}
|
||||
|
||||
protected void playVideo(MusicDirectory.Entry entry) {
|
||||
if (!Util.isNetworkConnected(this)) {
|
||||
Util.toast(this, R.string.select_album_no_network);
|
||||
return;
|
||||
}
|
||||
|
||||
VideoPlayerType player = Util.getVideoPlayerType(this);
|
||||
|
||||
try {
|
||||
player.playVideo(this, entry);
|
||||
} catch (Exception e) {
|
||||
Util.toast(this, e.getMessage(), false);
|
||||
}
|
||||
}
|
||||
|
||||
protected void addToPlaylist(final List<MusicDirectory.Entry> songs) {
|
||||
if(songs.isEmpty()) {
|
||||
Util.toast(this, "No songs selected");
|
||||
|
|
|
@ -64,5 +64,7 @@ public class A2dpIntentReceiver extends BroadcastReceiver {
|
|||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
context.sendBroadcast(avrcpIntent);
|
||||
}
|
||||
}
|
|
@ -27,27 +27,30 @@ import com.thejoshwa.ultrasonic.androidapp.util.Util;
|
|||
|
||||
/**
|
||||
* Request media button focus when connected to Bluetooth A2DP.
|
||||
*
|
||||
*
|
||||
* @author Sindre Mehus
|
||||
*/
|
||||
public class BluetoothIntentReceiver extends BroadcastReceiver {
|
||||
|
||||
private static final String TAG = BluetoothIntentReceiver.class.getSimpleName();
|
||||
private static final String TAG = BluetoothIntentReceiver.class.getSimpleName();
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
int state = intent.getIntExtra("android.bluetooth.a2dp.extra.SINK_STATE", -1);
|
||||
Log.i(TAG, "android.bluetooth.a2dp.extra.SINK_STATE, state = " + state);
|
||||
boolean connected = state == 2; // android.bluetooth.BluetoothA2dp.STATE_CONNECTED
|
||||
if (connected) {
|
||||
Log.i(TAG, "Connected to Bluetooth A2DP, requesting media button focus.");
|
||||
Util.registerMediaButtonEventReceiver(context);
|
||||
}
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
int state = intent.getIntExtra("android.bluetooth.a2dp.extra.SINK_STATE", -1);
|
||||
String action = intent.getAction();
|
||||
|
||||
boolean disconnected = state == 0; // android.bluetooth.BluetoothA2dp.STATE_DISCONNECTED
|
||||
if (disconnected) {
|
||||
Log.i(TAG, "Disconnected from Bluetooth A2DP, requesting pause.");
|
||||
context.sendBroadcast(new Intent(DownloadServiceImpl.CMD_PAUSE));
|
||||
}
|
||||
}
|
||||
}
|
||||
Log.d(TAG, "Bluetooth Sink State: " + state);
|
||||
Log.d(TAG, "Bluetooth Action: " + action);
|
||||
|
||||
boolean connected = state == android.bluetooth.BluetoothA2dp.STATE_CONNECTED || action.equals(android.bluetooth.BluetoothDevice.ACTION_ACL_CONNECTED);
|
||||
boolean disconnected = state == android.bluetooth.BluetoothA2dp.STATE_DISCONNECTED || (action.equals(android.bluetooth.BluetoothDevice.ACTION_ACL_DISCONNECTED) || action.equals(android.bluetooth.BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED));
|
||||
|
||||
if (connected) {
|
||||
Log.i(TAG, "Connected to Bluetooth A2DP, requesting media button focus.");
|
||||
Util.registerMediaButtonEventReceiver(context);
|
||||
} else if (disconnected) {
|
||||
Log.i(TAG, "Disconnected from Bluetooth A2DP, requesting pause.");
|
||||
context.sendBroadcast(new Intent(DownloadServiceImpl.CMD_PAUSE));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -278,11 +278,11 @@ public class CachedMusicService implements MusicService {
|
|||
return musicService.getLatestVersion(context, progressListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getVideoUrl(int maxBitrate, Context context, String id) {
|
||||
return musicService.getVideoUrl(maxBitrate, context, id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getVideoUrl(Context context, String id, boolean useFlash) throws Exception {
|
||||
return musicService.getVideoUrl(context, id, useFlash);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getVideoStreamUrl(int maxBitrate, Context context, String id) {
|
||||
return musicService.getVideoStreamUrl(maxBitrate, context, id);
|
||||
|
|
|
@ -108,7 +108,7 @@ public interface MusicService {
|
|||
|
||||
Version getLatestVersion(Context context, ProgressListener progressListener) throws Exception;
|
||||
|
||||
String getVideoUrl(int maxBitrate, Context context, String id);
|
||||
String getVideoUrl(Context context, String id, boolean useFlash) throws Exception;
|
||||
|
||||
String getVideoStreamUrl(int Bitrate, Context context, String id);
|
||||
|
||||
|
|
|
@ -494,7 +494,7 @@ public class OfflineMusicService extends RESTMusicService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public String getVideoUrl(int maxBitrate, Context context, String id) {
|
||||
public String getVideoUrl(Context context, String id, boolean useFlash) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
@ -729,7 +729,7 @@ public class RESTMusicService implements MusicService {
|
|||
boolean ok = serverVersion == null || serverVersion.compareTo(requiredVersion) >= 0;
|
||||
|
||||
if (!ok) {
|
||||
throw new ServerTooOldException(text, serverVersion, requiredVersion);
|
||||
throw new ServerTooOldException(text);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -839,17 +839,25 @@ public class RESTMusicService implements MusicService {
|
|||
return response;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getVideoUrl(int maxBitrate, Context context, String id) {
|
||||
StringBuilder builder = new StringBuilder(Util.getRestUrl(context, "videoPlayer"));
|
||||
builder.append("&id=").append(id);
|
||||
builder.append("&maxBitRate=").append(maxBitrate);
|
||||
builder.append("&autoplay=true");
|
||||
@Override
|
||||
public String getVideoUrl(Context context, String id, boolean useFlash) throws Exception {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
if (useFlash) {
|
||||
builder.append(Util.getRestUrl(context, "videoPlayer"));
|
||||
builder.append("&id=").append(id);
|
||||
builder.append("&maxBitRate=500");
|
||||
builder.append("&autoplay=true");
|
||||
} else {
|
||||
checkServerVersion(context, "1.9", "Video streaming not supported.");
|
||||
builder.append(Util.getRestUrl(context, "stream"));
|
||||
builder.append("&id=").append(id);
|
||||
builder.append("&format=raw");
|
||||
}
|
||||
|
||||
String url = rewriteUrlWithRedirect(context, builder.toString());
|
||||
Log.i(TAG, "Using video URL: " + url);
|
||||
return url;
|
||||
}
|
||||
String url = rewriteUrlWithRedirect(context, builder.toString());
|
||||
Log.i(TAG, "Using video URL: " + url);
|
||||
return url;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getVideoStreamUrl(int maxBitrate, Context context, String id) {
|
||||
|
|
|
@ -18,8 +18,6 @@
|
|||
*/
|
||||
package com.thejoshwa.ultrasonic.androidapp.service;
|
||||
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.Version;
|
||||
|
||||
/**
|
||||
* Thrown if the REST API version implemented by the server is too old.
|
||||
*
|
||||
|
@ -32,24 +30,19 @@ public class ServerTooOldException extends Exception {
|
|||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -7955245839000220002L;
|
||||
private final String text;
|
||||
private final Version serverVersion;
|
||||
private final Version requiredVersion;
|
||||
|
||||
public ServerTooOldException(String text, Version serverVersion, Version requiredVersion) {
|
||||
this.text = text;
|
||||
this.serverVersion = serverVersion;
|
||||
this.requiredVersion = requiredVersion;
|
||||
public ServerTooOldException(String text) {
|
||||
super(createMessage(text));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
private static String createMessage(String text) {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
|
||||
if (text != null) {
|
||||
builder.append(text).append(" ");
|
||||
}
|
||||
builder.append("Server API version too old. ");
|
||||
builder.append("Requires ").append(requiredVersion).append(" but is ").append(serverVersion).append(".");
|
||||
|
||||
builder.append("Subsonic server version is too old. Please upgrade.");
|
||||
return builder.toString();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -122,6 +122,7 @@ public final class Constants {
|
|||
public static final String PREFERENCES_KEY_CLEAR_PLAYLIST = "clearPlaylist";
|
||||
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";
|
||||
|
||||
// Name of the preferences file.
|
||||
public static final String PREFERENCES_FILE_NAME = "com.thejoshwa.ultrasonic.androidapp_preferences";
|
||||
|
|
|
@ -26,6 +26,8 @@ import android.content.Context;
|
|||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
|
@ -1315,4 +1317,22 @@ public class Util extends DownloadActivity {
|
|||
return String.format("0:%02d", seconds);
|
||||
}
|
||||
}
|
||||
|
||||
public static VideoPlayerType getVideoPlayerType(Context context) {
|
||||
SharedPreferences prefs = getPreferences(context);
|
||||
return VideoPlayerType.forKey(prefs.getString(Constants.PREFERENCES_KEY_VIDEO_PLAYER, VideoPlayerType.MX.getKey()));
|
||||
}
|
||||
|
||||
public static boolean isPackageInstalled(Context context, String packageName) {
|
||||
PackageManager pm = context.getPackageManager();
|
||||
List<ApplicationInfo> packages = pm.getInstalledApplications(0);
|
||||
|
||||
for (ApplicationInfo packageInfo : packages) {
|
||||
if (packageInfo.packageName.equals(packageName)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,119 @@
|
|||
/*
|
||||
This file is part of Subsonic.
|
||||
|
||||
Subsonic is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Subsonic is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Subsonic. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Copyright 2013 (C) Sindre Mehus
|
||||
*/
|
||||
package com.thejoshwa.ultrasonic.androidapp.util;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import com.thejoshwa.ultrasonic.androidapp.R;
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.MusicDirectory;
|
||||
import com.thejoshwa.ultrasonic.androidapp.service.MusicServiceFactory;
|
||||
|
||||
/**
|
||||
* @author Sindre Mehus
|
||||
* @version $Id: VideoPlayerType.java 3473 2013-05-23 16:42:49Z sindre_mehus $
|
||||
*/
|
||||
public enum VideoPlayerType {
|
||||
|
||||
MX("mx") {
|
||||
@Override
|
||||
public void playVideo(final Activity activity, MusicDirectory.Entry entry) throws Exception {
|
||||
|
||||
// Check if MX Player is installed.
|
||||
boolean installedAd = Util.isPackageInstalled(activity, PACKAGE_NAME_MX_AD);
|
||||
boolean installedPro = Util.isPackageInstalled(activity, PACKAGE_NAME_MX_PRO);
|
||||
|
||||
if (!installedAd && !installedPro) {
|
||||
new AlertDialog.Builder(activity)
|
||||
.setMessage(R.string.video_get_mx_player_text)
|
||||
.setPositiveButton(R.string.video_get_mx_player_button, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int i) {
|
||||
try {
|
||||
activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + PACKAGE_NAME_MX_AD)));
|
||||
} catch (android.content.ActivityNotFoundException x) {
|
||||
activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + PACKAGE_NAME_MX_AD)));
|
||||
}
|
||||
|
||||
dialog.dismiss();
|
||||
}
|
||||
})
|
||||
.setNegativeButton(R.string.common_cancel, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int i) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
}).show();
|
||||
|
||||
} else {
|
||||
// See documentation on https://sites.google.com/site/mxvpen/api
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||
intent.setPackage(installedPro ? PACKAGE_NAME_MX_PRO : PACKAGE_NAME_MX_AD);
|
||||
intent.putExtra("title", entry.getTitle());
|
||||
intent.setDataAndType(Uri.parse(MusicServiceFactory.getMusicService(activity).getVideoUrl(activity, entry.getId(), false)), "video/*");
|
||||
activity.startActivity(intent);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
FLASH("flash") {
|
||||
@Override
|
||||
public void playVideo(Activity activity, MusicDirectory.Entry entry) throws Exception {
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||
intent.setData(Uri.parse(MusicServiceFactory.getMusicService(activity).getVideoUrl(activity, entry.getId(), true)));
|
||||
activity.startActivity(intent);
|
||||
}
|
||||
},
|
||||
|
||||
DEFAULT("default") {
|
||||
@Override
|
||||
public void playVideo(Activity activity, MusicDirectory.Entry entry) throws Exception {
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||
intent.setDataAndType(Uri.parse(MusicServiceFactory.getMusicService(activity).getVideoUrl(activity, entry.getId(), false)), "video/*");
|
||||
activity.startActivity(intent);
|
||||
}
|
||||
};
|
||||
|
||||
private final String key;
|
||||
|
||||
VideoPlayerType(String key) {
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
public String getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
public static VideoPlayerType forKey(String key) {
|
||||
for (VideoPlayerType type : VideoPlayerType.values()) {
|
||||
if (type.key.equals(key)) {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public abstract void playVideo(Activity activity, MusicDirectory.Entry entry) throws Exception;
|
||||
|
||||
private static final String PACKAGE_NAME_MX_AD = "com.mxtech.videoplayer.ad";
|
||||
private static final String PACKAGE_NAME_MX_PRO = "com.mxtech.videoplayer.pro";
|
||||
|
||||
}
|
|
@ -35,6 +35,7 @@ import com.thejoshwa.ultrasonic.androidapp.service.DownloadFile;
|
|||
import com.thejoshwa.ultrasonic.androidapp.service.MusicService;
|
||||
import com.thejoshwa.ultrasonic.androidapp.service.MusicServiceFactory;
|
||||
import com.thejoshwa.ultrasonic.androidapp.util.Util;
|
||||
import com.thejoshwa.ultrasonic.androidapp.util.VideoPlayerType;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
|
@ -79,20 +80,26 @@ public class SongView extends UpdateView implements Checkable {
|
|||
bitRate = String.format(getContext().getString(R.string.song_details_kbps), song.getBitRate());
|
||||
}
|
||||
|
||||
VideoPlayerType videoPlayer = Util.getVideoPlayerType(getContext());
|
||||
|
||||
String fileFormat = null;
|
||||
if (song.getTranscodedSuffix() != null && !song.getTranscodedSuffix().equals(song.getSuffix())) {
|
||||
if (song.getTranscodedSuffix() == null || song.getTranscodedSuffix().equals(song.getSuffix()) || (song.isVideo() && videoPlayer != VideoPlayerType.FLASH)) {
|
||||
fileFormat = song.getSuffix();
|
||||
} else {
|
||||
fileFormat = String.format("%s > %s", song.getSuffix(), song.getTranscodedSuffix());
|
||||
} else {
|
||||
fileFormat = song.getSuffix();
|
||||
}
|
||||
}
|
||||
|
||||
String artistName = song.getArtist();
|
||||
|
||||
if (Util.shouldDisplayBitrateWithArtist(getContext())) {
|
||||
artist.append(song.getArtist()).append(" (")
|
||||
.append(String.format(getContext().getString(R.string.song_details_all), bitRate == null ? "" : bitRate + " ", fileFormat))
|
||||
.append(")");
|
||||
} else {
|
||||
artist.append(song.getArtist());
|
||||
}
|
||||
if (artistName != null) {
|
||||
if (Util.shouldDisplayBitrateWithArtist(getContext())) {
|
||||
artist.append(artistName).append(" (")
|
||||
.append(String.format(getContext().getString(R.string.song_details_all), bitRate == null ? "" : bitRate + " ", fileFormat))
|
||||
.append(")");
|
||||
} else {
|
||||
artist.append(artistName);
|
||||
}
|
||||
}
|
||||
|
||||
int trackNumber = song.getTrack();
|
||||
|
||||
|
@ -104,7 +111,7 @@ public class SongView extends UpdateView implements Checkable {
|
|||
|
||||
titleTextView.setText(song.getTitle());
|
||||
artistTextView.setText(artist);
|
||||
durationTextView.setText(Util.formatDuration(song.getDuration()));
|
||||
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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue