From: <kro...@us...> - 2010-12-23 14:49:47
|
Revision: 4053 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=4053&view=rev Author: kroko_koenig Date: 2010-12-23 14:49:39 +0000 (Thu, 23 Dec 2010) Log Message: ----------- some more functions and first bug fixes Modified Paths: -------------- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/AndroidManifest.xml trunk/plugins/AndroidRemote/Android/MediaPortalRemote/gen/mediaportal/remote/R.java trunk/plugins/AndroidRemote/Android/MediaPortalRemote/readme trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/layout/music_album.xml trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/layout/music_results.xml trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/layout/music_song.xml trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/layout/setup.xml trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/values/strings.xml trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/PostWebserver.java trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/ReceiveHandler.java trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/Remote_01.java trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/Remote_02.java trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/Settings.java trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/main.java trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/musicAlbum.java trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/musicArtist.java trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/musicResults.java trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/musicSong.java trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/nowplaylist.java trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/pictures.java trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/picturesfullscreen.java trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/setup.java trunk/plugins/AndroidRemote/Release/AndroidRemote.mpe1 trunk/plugins/AndroidRemote/Release/AndroidRemote.xmp2 trunk/plugins/AndroidRemote/Release/MediaPortalRemote.zip trunk/plugins/AndroidRemote/Server/AndroidRemote/Request.cs trunk/plugins/AndroidRemote/Server/AndroidRemote.suo Added Paths: ----------- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/layout-small/setup.xml trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/Wol.java trunk/plugins/AndroidRemote/Release/MediaPortalRemote.001 Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/AndroidManifest.xml =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/AndroidManifest.xml 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/AndroidManifest.xml 2010-12-23 14:49:39 UTC (rev 4053) @@ -36,4 +36,7 @@ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.VIBRATE"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> + <uses-permission android:name="android.permission.DISABLE_KEYGUARD"></uses-permission> + <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission> + </manifest> \ No newline at end of file Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/gen/mediaportal/remote/R.java =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/gen/mediaportal/remote/R.java 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/gen/mediaportal/remote/R.java 2010-12-23 14:49:39 UTC (rev 4053) @@ -8,6 +8,9 @@ package mediaportal.remote; public final class R { + public static final class array { + public static final int shutdown=0x7f050000; + } public static final class attr { } public static final class drawable { @@ -79,141 +82,142 @@ public static final int wake_on_lan=0x7f020041; } public static final class id { - public static final int GridView01=0x7f060017; - public static final int ImageView01=0x7f060019; - public static final int LinearLayout00=0x7f06004a; - public static final int LinearLayout01=0x7f06001a; - public static final int LinearLayout02=0x7f060055; - public static final int LinearLayout03=0x7f06005f; - public static final int LinearLayout04=0x7f060069; - public static final int LinearLayout05=0x7f06006f; - public static final int ListView01=0x7f060028; - public static final int TableLayout01=0x7f060005; - public static final int TableRow01=0x7f060006; - public static final int TextView01=0x7f060003; - public static final int TextView02=0x7f060004; - public static final int btnBack=0x7f06003e; - public static final int btnChannelDown=0x7f060043; - public static final int btnChannelUp=0x7f060040; - public static final int btnDown=0x7f06003d; - public static final int btnExit=0x7f060044; - public static final int btnFBack=0x7f06002b; - public static final int btnFForw=0x7f06002d; - public static final int btnHibernate=0x7f060046; - public static final int btnHome=0x7f060034; - public static final int btnInfo=0x7f060036; - public static final int btnLeft=0x7f060038; - public static final int btnMenu=0x7f06003c; - public static final int btnOk=0x7f060039; - public static final int btnPause=0x7f060031; - public static final int btnPlay=0x7f06002c; - public static final int btnRestart=0x7f060047; - public static final int btnRight=0x7f06003a; - public static final int btnShutOff=0x7f060048; - public static final int btnSkipBack=0x7f06002f; - public static final int btnSkipForw=0x7f060032; - public static final int btnStop=0x7f060030; - public static final int btnSuspend=0x7f060045; - public static final int btnUp=0x7f060035; - public static final int btnVolumeDown=0x7f060042; - public static final int btnVolumeMute=0x7f060041; - public static final int btnVolumeUp=0x7f06003f; - public static final int btnWakeOnLan=0x7f060049; - public static final int btn_main_music=0x7f060008; - public static final int btn_main_now_playing=0x7f06000b; - public static final int btn_main_pictures=0x7f060007; - public static final int btn_main_play=0x7f06000f; - public static final int btn_main_remote=0x7f06000a; - public static final int btn_main_settings=0x7f06000c; - public static final int btn_main_skp_back=0x7f06000e; - public static final int btn_main_skp_forw=0x7f060010; - public static final int btn_main_video=0x7f060009; - public static final int btnkey01=0x7f06004b; - public static final int btnkey02=0x7f06004c; - public static final int btnkey03=0x7f06004d; - public static final int btnkey04=0x7f06004e; - public static final int btnkey05=0x7f06004f; - public static final int btnkey06=0x7f060050; - public static final int btnkey07=0x7f060051; - public static final int btnkey08=0x7f060052; - public static final int btnkey09=0x7f060053; - public static final int btnkey10=0x7f060054; - public static final int btnkey11=0x7f060056; - public static final int btnkey12=0x7f060057; - public static final int btnkey13=0x7f060058; - public static final int btnkey14=0x7f060059; - public static final int btnkey15=0x7f06005a; - public static final int btnkey16=0x7f06005b; - public static final int btnkey17=0x7f06005c; - public static final int btnkey18=0x7f06005d; - public static final int btnkey19=0x7f06005e; - public static final int btnkey20=0x7f060060; - public static final int btnkey21=0x7f060061; - public static final int btnkey22=0x7f060062; - public static final int btnkey23=0x7f060063; - public static final int btnkey24=0x7f060064; - public static final int btnkey25=0x7f060065; - public static final int btnkey26=0x7f060066; - public static final int btnkey27=0x7f060067; - public static final int btnkey28=0x7f060068; - public static final int btnkey29=0x7f06006a; - public static final int btnkey30=0x7f06006b; - public static final int btnkey31=0x7f06006c; - public static final int btnkey32=0x7f06006d; - public static final int btnkey33=0x7f06006e; - public static final int btnkey41=0x7f060070; - public static final int btnkey42=0x7f060071; - public static final int btnkey43=0x7f060072; - public static final int btnkey44=0x7f060073; - public static final int btnkey45=0x7f060074; - public static final int btnkey46=0x7f060075; - public static final int btnkey47=0x7f060076; - public static final int btnkey48=0x7f060077; - public static final int btnkey49=0x7f060078; - public static final int btnkey50=0x7f060079; - public static final int clearplaylist=0x7f060080; - public static final int full_text=0x7f060018; - public static final int icon_image=0x7f060001; - public static final int icon_text=0x7f060002; - public static final int list_album=0x7f060013; - public static final int list_artist=0x7f060014; - public static final int list_result=0x7f060015; - public static final int list_song=0x7f060016; - public static final int main_now_playing=0x7f06000d; - public static final int music_grid=0x7f060012; - public static final int naviRemote_text=0x7f060029; - public static final int now_album=0x7f06001c; - public static final int now_artist=0x7f060022; - public static final int now_cd=0x7f06001d; - public static final int now_list=0x7f060027; - public static final int now_next=0x7f060026; - public static final int now_play=0x7f060025; - public static final int now_playing=0x7f06001b; - public static final int now_playing_right=0x7f060020; - public static final int now_playing_t_left=0x7f06001f; - public static final int now_prev=0x7f060023; - public static final int now_progress=0x7f06001e; - public static final int now_stop=0x7f060024; - public static final int now_title=0x7f060021; - public static final int open=0x7f060083; - public static final int playlist=0x7f06007f; - public static final int rslide=0x7f060086; - public static final int save=0x7f060082; - public static final int sdcard=0x7f060081; - public static final int send=0x7f060084; - public static final int server_ip=0x7f06007a; - public static final int server_macid=0x7f06007c; - public static final int server_port=0x7f06007b; - public static final int slide=0x7f060085; - public static final int title=0x7f06007e; - public static final int vibration=0x7f06007d; - public static final int widget0=0x7f060011; - public static final int widget00=0x7f06002a; - public static final int widget01=0x7f06002e; - public static final int widget02=0x7f060033; - public static final int widget03=0x7f060037; - public static final int widget04=0x7f06003b; - public static final int widget44=0x7f060000; + public static final int GridView01=0x7f070017; + public static final int ImageView01=0x7f070019; + public static final int LinearLayout00=0x7f07004a; + public static final int LinearLayout01=0x7f07001a; + public static final int LinearLayout02=0x7f070055; + public static final int LinearLayout03=0x7f07005f; + public static final int LinearLayout04=0x7f070069; + public static final int LinearLayout05=0x7f07006f; + public static final int ListView01=0x7f070028; + public static final int Spinner01=0x7f07007d; + public static final int TableLayout01=0x7f070005; + public static final int TableRow01=0x7f070006; + public static final int TextView01=0x7f070003; + public static final int TextView02=0x7f070004; + public static final int btnBack=0x7f07003e; + public static final int btnChannelDown=0x7f070043; + public static final int btnChannelUp=0x7f070040; + public static final int btnDown=0x7f07003d; + public static final int btnExit=0x7f070044; + public static final int btnFBack=0x7f07002b; + public static final int btnFForw=0x7f07002d; + public static final int btnHibernate=0x7f070046; + public static final int btnHome=0x7f070034; + public static final int btnInfo=0x7f070036; + public static final int btnLeft=0x7f070038; + public static final int btnMenu=0x7f07003c; + public static final int btnOk=0x7f070039; + public static final int btnPause=0x7f070031; + public static final int btnPlay=0x7f07002c; + public static final int btnRestart=0x7f070047; + public static final int btnRight=0x7f07003a; + public static final int btnShutOff=0x7f070048; + public static final int btnSkipBack=0x7f07002f; + public static final int btnSkipForw=0x7f070032; + public static final int btnStop=0x7f070030; + public static final int btnSuspend=0x7f070045; + public static final int btnUp=0x7f070035; + public static final int btnVolumeDown=0x7f070042; + public static final int btnVolumeMute=0x7f070041; + public static final int btnVolumeUp=0x7f07003f; + public static final int btnWakeOnLan=0x7f070049; + public static final int btn_main_music=0x7f070008; + public static final int btn_main_now_playing=0x7f07000b; + public static final int btn_main_pictures=0x7f070007; + public static final int btn_main_play=0x7f07000f; + public static final int btn_main_remote=0x7f07000a; + public static final int btn_main_settings=0x7f07000c; + public static final int btn_main_skp_back=0x7f07000e; + public static final int btn_main_skp_forw=0x7f070010; + public static final int btn_main_video=0x7f070009; + public static final int btnkey01=0x7f07004b; + public static final int btnkey02=0x7f07004c; + public static final int btnkey03=0x7f07004d; + public static final int btnkey04=0x7f07004e; + public static final int btnkey05=0x7f07004f; + public static final int btnkey06=0x7f070050; + public static final int btnkey07=0x7f070051; + public static final int btnkey08=0x7f070052; + public static final int btnkey09=0x7f070053; + public static final int btnkey10=0x7f070054; + public static final int btnkey11=0x7f070056; + public static final int btnkey12=0x7f070057; + public static final int btnkey13=0x7f070058; + public static final int btnkey14=0x7f070059; + public static final int btnkey15=0x7f07005a; + public static final int btnkey16=0x7f07005b; + public static final int btnkey17=0x7f07005c; + public static final int btnkey18=0x7f07005d; + public static final int btnkey19=0x7f07005e; + public static final int btnkey20=0x7f070060; + public static final int btnkey21=0x7f070061; + public static final int btnkey22=0x7f070062; + public static final int btnkey23=0x7f070063; + public static final int btnkey24=0x7f070064; + public static final int btnkey25=0x7f070065; + public static final int btnkey26=0x7f070066; + public static final int btnkey27=0x7f070067; + public static final int btnkey28=0x7f070068; + public static final int btnkey29=0x7f07006a; + public static final int btnkey30=0x7f07006b; + public static final int btnkey31=0x7f07006c; + public static final int btnkey32=0x7f07006d; + public static final int btnkey33=0x7f07006e; + public static final int btnkey41=0x7f070070; + public static final int btnkey42=0x7f070071; + public static final int btnkey43=0x7f070072; + public static final int btnkey44=0x7f070073; + public static final int btnkey45=0x7f070074; + public static final int btnkey46=0x7f070075; + public static final int btnkey47=0x7f070076; + public static final int btnkey48=0x7f070077; + public static final int btnkey49=0x7f070078; + public static final int btnkey50=0x7f070079; + public static final int clearplaylist=0x7f070081; + public static final int full_text=0x7f070018; + public static final int icon_image=0x7f070001; + public static final int icon_text=0x7f070002; + public static final int list_album=0x7f070013; + public static final int list_artist=0x7f070014; + public static final int list_result=0x7f070015; + public static final int list_song=0x7f070016; + public static final int main_now_playing=0x7f07000d; + public static final int music_grid=0x7f070012; + public static final int naviRemote_text=0x7f070029; + public static final int now_album=0x7f07001c; + public static final int now_artist=0x7f070022; + public static final int now_cd=0x7f07001d; + public static final int now_list=0x7f070027; + public static final int now_next=0x7f070026; + public static final int now_play=0x7f070025; + public static final int now_playing=0x7f07001b; + public static final int now_playing_right=0x7f070020; + public static final int now_playing_t_left=0x7f07001f; + public static final int now_prev=0x7f070023; + public static final int now_progress=0x7f07001e; + public static final int now_stop=0x7f070024; + public static final int now_title=0x7f070021; + public static final int open=0x7f070084; + public static final int playlist=0x7f070080; + public static final int rslide=0x7f070087; + public static final int save=0x7f070083; + public static final int sdcard=0x7f070082; + public static final int send=0x7f070085; + public static final int server_ip=0x7f07007a; + public static final int server_macid=0x7f07007c; + public static final int server_port=0x7f07007b; + public static final int slide=0x7f070086; + public static final int title=0x7f07007f; + public static final int vibration=0x7f07007e; + public static final int widget0=0x7f070011; + public static final int widget00=0x7f07002a; + public static final int widget01=0x7f07002e; + public static final int widget02=0x7f070033; + public static final int widget03=0x7f070037; + public static final int widget04=0x7f07003b; + public static final int widget44=0x7f070000; } public static final class layout { public static final int icon=0x7f030000; @@ -237,8 +241,8 @@ public static final int title=0x7f030012; } public static final class menu { - public static final int music_menu=0x7f050000; - public static final int picturefullscreenmenu=0x7f050001; + public static final int music_menu=0x7f060000; + public static final int picturefullscreenmenu=0x7f060001; } public static final class string { public static final int app_name=0x7f040000; Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/readme =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/readme 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/readme 2010-12-23 14:49:39 UTC (rev 4053) @@ -8,6 +8,8 @@ slide show random slide show +threaded caching + Music section ------------- browse folders (MP shares) @@ -18,6 +20,8 @@ clear playlist save files from db to phone +fast scroll + Video section ------------- nothing yet @@ -27,7 +31,7 @@ show actual title show actual time show actual cover -clear playlist +clear play list delete one item Remote @@ -37,11 +41,9 @@ Main issues ------------ -Vibration feedback (not completed) switch WIFI on (just msg now) save files from Android to MP if the MP has no focus the remote doesnt work (normal) -save huge files can cause out of memory, better save stream -playlist select on file (switch to file x) progress task for downloads + Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/layout/music_album.xml =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/layout/music_album.xml 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/layout/music_album.xml 2010-12-23 14:49:39 UTC (rev 4053) @@ -4,6 +4,6 @@ android:layout_height="fill_parent"> <ListView android:id="@+id/list_album" android:layout_height="wrap_content" - android:layout_width="fill_parent"> + android:layout_width="fill_parent" android:fastScrollEnabled="true"> </ListView> </LinearLayout> \ No newline at end of file Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/layout/music_results.xml =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/layout/music_results.xml 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/layout/music_results.xml 2010-12-23 14:49:39 UTC (rev 4053) @@ -4,6 +4,6 @@ android:layout_height="fill_parent"> <ListView android:id="@+id/list_result" android:layout_height="wrap_content" - android:layout_width="fill_parent"> + android:layout_width="fill_parent" android:fastScrollEnabled="true"> </ListView> </LinearLayout> \ No newline at end of file Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/layout/music_song.xml =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/layout/music_song.xml 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/layout/music_song.xml 2010-12-23 14:49:39 UTC (rev 4053) @@ -4,6 +4,6 @@ android:layout_height="fill_parent"> <ListView android:id="@+id/list_song" android:layout_height="wrap_content" - android:layout_width="fill_parent"> + android:layout_width="fill_parent" android:fastScrollEnabled="true"> </ListView> </LinearLayout> \ No newline at end of file Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/layout/setup.xml =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/layout/setup.xml 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/layout/setup.xml 2010-12-23 14:49:39 UTC (rev 4053) @@ -6,19 +6,30 @@ <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="MediaPortal IP" android:textColor="#FF000000" android:textSize="18dip"> - - </TextView> + + </TextView> <EditText android:id="@+id/server_ip" android:layout_height="wrap_content" - android:layout_width="fill_parent" android:text="192.168.0.30" android:inputType="numberDecimal"></EditText> + android:layout_width="fill_parent" android:text="192.168.0.30" android:inputType="text"></EditText> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="MediaPortal Port" android:textColor="#FF000000" android:textSize="18dip"></TextView> <EditText android:id="@+id/server_port" android:layout_width="fill_parent" - android:layout_height="wrap_content" android:text="8200" android:inputType="phone"></EditText> - <TextView android:layout_width="fill_parent" - android:layout_height="wrap_content" android:textColor="#FF000000" android:textSize="18dip" android:text="MediaPortal MAC (WakeOnLan)"></TextView> + android:layout_height="wrap_content" android:text="8200" + android:inputType="phone"></EditText> + <TextView android:layout_width="fill_parent" + android:layout_height="wrap_content" android:textColor="#FF000000" + android:textSize="18dip" android:text="MediaPortal MAC (WakeOnLan)"></TextView> <EditText android:id="@+id/server_macid" android:layout_width="fill_parent" - android:layout_height="wrap_content" android:text="12-34-56-78-90-12" android:inputType="text"></EditText> - -<CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#000" android:textSize="18dip" android:id="@+id/vibration" android:text="use vibration feedback"></CheckBox> + android:layout_height="wrap_content" android:text="12-34-56-78-90-12" + android:inputType="text"></EditText> + <TextView android:layout_width="fill_parent" + android:layout_height="wrap_content" android:textColor="#FF000000" + android:textSize="18dip" android:text="Power Mode"></TextView> + <Spinner android:id="@+id/Spinner01" android:layout_width="fill_parent" + android:layout_height="wrap_content"></Spinner> + + <CheckBox android:layout_width="wrap_content" + android:layout_height="wrap_content" android:textColor="#000" + android:textSize="18dip" android:id="@+id/vibration" android:text="use vibration feedback"></CheckBox> + </LinearLayout> Added: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/layout-small/setup.xml =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/layout-small/setup.xml (rev 0) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/layout-small/setup.xml 2010-12-23 14:49:39 UTC (rev 4053) @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="fill_parent" android:layout_height="fill_parent" + android:orientation="vertical" android:padding="15dip" + android:background="@drawable/brush"> + <TextView android:layout_width="fill_parent" + android:layout_height="wrap_content" android:text="MediaPortal IP" + android:textColor="#FF000000" android:textSize="18dip"> + + </TextView> + <EditText android:id="@+id/server_ip" android:layout_width="fill_parent" android:text="192.168.0.30" + android:inputType="numberDecimal" android:layout_height="50dip"></EditText> + <TextView android:layout_width="fill_parent" + android:layout_height="wrap_content" android:text="MediaPortal Port" + android:textColor="#FF000000" android:textSize="18dip"></TextView> + <EditText android:id="@+id/server_port" android:layout_width="fill_parent" + android:text="8200" + android:inputType="phone" android:layout_height="50dip"></EditText> + <TextView android:layout_width="fill_parent" + android:layout_height="wrap_content" android:textColor="#FF000000" + android:textSize="18dip" android:text="MediaPortal MAC (WakeOnLan)"></TextView> + <EditText android:id="@+id/server_macid" android:layout_width="fill_parent" + android:text="12-34-56-78-90-12" + android:inputType="text" android:layout_height="50dip"></EditText> + <TextView android:layout_width="fill_parent" + android:layout_height="wrap_content" android:textColor="#FF000000" + android:textSize="18dip" android:text="Power Mode"></TextView> + <Spinner android:id="@+id/Spinner01" android:layout_width="fill_parent" android:layout_height="50dip"></Spinner> + + <CheckBox android:layout_width="wrap_content" + android:textColor="#000" + android:textSize="18dip" android:id="@+id/vibration" android:text="use vibration feedback" android:layout_height="50dip"></CheckBox> + +</LinearLayout> Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/values/strings.xml =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/values/strings.xml 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/res/values/strings.xml 2010-12-23 14:49:39 UTC (rev 4053) @@ -1,4 +1,13 @@ <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">MediaPortal Remote</string> + + <string-array name="shutdown"> + <item>Exit</item> + <item>Suspend</item> + <item>Hibernate</item> + <item>Restart</item> + <item>Shut Off</item> + </string-array> + </resources> Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/PostWebserver.java =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/PostWebserver.java 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/PostWebserver.java 2010-12-23 14:49:39 UTC (rev 4053) @@ -40,6 +40,8 @@ import org.apache.http.params.HttpProtocolParams; import org.apache.http.protocol.HTTP; +import android.util.Log; + public class PostWebserver { public String httpServer = ""; @@ -77,6 +79,7 @@ String line; while ((line = rd.readLine()) != null) { + Log.d("MediaPortal", "Response POST : " + line); // Process line... } Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/ReceiveHandler.java =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/ReceiveHandler.java 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/ReceiveHandler.java 2010-12-23 14:49:39 UTC (rev 4053) @@ -21,29 +21,18 @@ package mediaportal.remote; -import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.StringReader; -import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; -import java.net.URLDecoder; -import java.net.URLEncoder; - import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; - import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; -import android.text.Html; -import android.util.Log; - public class ReceiveHandler { private org.xml.sax.ContentHandler _handler; Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/Remote_01.java =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/Remote_01.java 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/Remote_01.java 2010-12-23 14:49:39 UTC (rev 4053) @@ -30,6 +30,7 @@ import android.content.res.AssetManager; import android.os.Bundle; import android.os.Vibrator; +import android.util.Log; import android.view.GestureDetector; import android.view.KeyEvent; import android.view.MotionEvent; @@ -40,8 +41,6 @@ public class Remote_01 extends Activity implements OnGestureListener { - public static final String PREFS_PRIVATE = "PREFS_MP_REMOTE"; - private GestureDetector gestureScanner; private static final int SWIPE_MIN_DISTANCE = 120; private static final int SWIPE_MAX_OFF_PATH = 250; @@ -55,6 +54,10 @@ gestureScanner = new GestureDetector(this); + // / + // / buttons + // / + Button can = (Button) findViewById(R.id.btnBack); can.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { @@ -166,40 +169,40 @@ PostCommand("rewind"); } }); - - Toast.makeText(this, - "swipe to left for more", Toast.LENGTH_LONG) + + Toast.makeText(this, "swipe to left for more", Toast.LENGTH_SHORT) .show(); } - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_MENU) - { - Intent myIntent = new Intent(this, Remote_03.class); + // / + // / hardware keys + // / + + @Override public boolean onKeyDown(int keyCode, KeyEvent event) { + + switch (keyCode) { + case KeyEvent.KEYCODE_MENU: { + Intent myIntent = new Intent(this, Remote_03.class); startActivityForResult(myIntent, 0); - - return true; - } - else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) - { - PostCommand("volumeUp"); - return true; - } - else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) - { - PostCommand("volumeDown"); - return true; - } - else - { - return false; - } + return true; + } + case KeyEvent.KEYCODE_VOLUME_UP: { + PostCommand("volumeUp"); + return true; + } + case KeyEvent.KEYCODE_VOLUME_DOWN: { + PostCommand("volumeDown"); + return true; + } + } + + return super.onKeyDown(keyCode, event); } - + public void PostCommand(String button) { DoVibrate(); - + PostWebserver post = new PostWebserver(Settings.Server, Settings.Port); AssetManager assetManager = getAssets(); @@ -224,7 +227,8 @@ @Override public boolean onTouchEvent(MotionEvent me) { return gestureScanner.onTouchEvent(me); - } + } + public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { try { @@ -235,32 +239,36 @@ && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { Intent myIntent = new Intent(this, Remote_02.class); startActivityForResult(myIntent, 0); - + } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { - + } } catch (Exception e) { // nothing } return false; } - + public boolean onDown(MotionEvent arg0) { return true; } + public void onLongPress(MotionEvent arg0) { } + public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2, float arg3) { return false; } + public void onShowPress(MotionEvent arg0) { } + public boolean onSingleTapUp(MotionEvent arg0) { return false; } - + public void DoVibrate() { if (Settings.Vibrate) { // Get instance of Vibrator from current Context Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/Remote_02.java =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/Remote_02.java 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/Remote_02.java 2010-12-23 14:49:39 UTC (rev 4053) @@ -122,6 +122,8 @@ public void onClick(View view) { Toast.makeText(Remote_02.this, "not implemneted yet. Sorry", Toast.LENGTH_SHORT).show(); + //Wol w = new Wol(); + //w.sendMagicPacket(macStr, 9); } }); } Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/Settings.java =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/Settings.java 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/Settings.java 2010-12-23 14:49:39 UTC (rev 4053) @@ -27,4 +27,5 @@ public static String Port = "8200"; public static String MacId = "11-22-33-44-55-66"; public static Boolean Vibrate= true; + public static int PowerMode = 0; } Added: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/Wol.java =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/Wol.java (rev 0) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/Wol.java 2010-12-23 14:49:39 UTC (rev 4053) @@ -0,0 +1,56 @@ +package mediaportal.remote; + +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; + +public class Wol { + + public Boolean sendMagicPacket(String macStr, String ipStr, int PORT) { + try { + byte[] mac = getMacId(macStr); + + // WOL packet contains a 6-bytes trailer and 16 times a 6-bytes + // sequence containing the MAC address. + byte[] data = new byte[17 * 6]; + + // Trailer of 6 times 0xFF. + for (int i = 0; i < 6; i++) + data[i] = (byte) 0xff; + + // Body of magic packet contains 16 times the MAC address. + for (int i = 1; i <= 16; i++) + for (int j = 0; j < 6; j++) + data[i * 6 + j] = mac[j]; + + InetAddress address = InetAddress.getByName(ipStr); + DatagramPacket packet = new DatagramPacket(data, data.length, + address, PORT); + DatagramSocket socket = new DatagramSocket(); + socket.send(packet); + socket.close(); + + return true; + } catch (Exception e) { + return false; + } + } + public Boolean sendMagicPacket(String macStr, int PORT) { + return sendMagicPacket(macStr, "255.255.255.255", PORT); + } + + private static byte[] getMacId(String macStr) { + + String[] val = macStr.split("-"); + if (val.length == 6) { + byte[] erg = new byte[6]; + for (int i = 0; i < 6; i++) { + erg[i] = (byte) Integer.parseInt(val[i], 16); + } + return erg; + } + + return null; + } + +} Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/main.java =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/main.java 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/main.java 2010-12-23 14:49:39 UTC (rev 4053) @@ -22,6 +22,7 @@ package mediaportal.remote; import java.io.BufferedReader; +import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; @@ -29,6 +30,8 @@ import mediaportal.remote.R; import android.app.Activity; import android.app.AlertDialog; +import android.app.KeyguardManager; +import android.app.KeyguardManager.KeyguardLock; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -37,17 +40,19 @@ import android.net.ConnectivityManager; import android.os.AsyncTask; import android.os.Bundle; +import android.os.Environment; import android.os.Handler; +import android.os.PowerManager; import android.os.Vibrator; -import android.view.KeyEvent; import android.view.View; import android.widget.*; public class main extends Activity { private static final String PREFS_PRIVATE = "PREFS_MP_REMOTE"; - + private Handler mHandler = new Handler(); + private static String display = "nothing playing"; private static String state = ""; private static boolean doUpdate; @@ -57,6 +62,29 @@ super.onCreate(savedInstanceState); setContentView(R.layout.main); + // + // init mp folder + // + try { + File fPath = new File(Environment.getExternalStorageDirectory(), + "\\MP"); + if (!fPath.exists()) + fPath.mkdir(); + } catch (Exception e) { + } + + // / + // / disable keyboard lock + // / + + KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Activity.KEYGUARD_SERVICE); + KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE); + lock.disableKeyguard(); + + // / + // / Report section + // / + if (reportExist()) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Do you want to send a crash report ?") @@ -81,14 +109,10 @@ Thread.setDefaultUncaughtExceptionHandler(new TopExceptionHandler(this)); chkStatus(); - SharedPreferences settings = getSharedPreferences(PREFS_PRIVATE, - MODE_PRIVATE); + // / + // / Navigation Buttons + // / - Settings.Server = settings.getString("Server", "192.168.0.30"); - Settings.Port = settings.getString("Port", "8200"); - Settings.MacId = settings.getString("MacId", "11-22-33-44-55-66"); - Settings.Vibrate = settings.getBoolean("Vibrate", true); - Button btnPictures = (Button) findViewById(R.id.btn_main_pictures); btnPictures.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { @@ -146,6 +170,10 @@ } }); + // / + // / Player Buttons + // / + Button skipForw = (Button) findViewById(R.id.btn_main_skp_forw); skipForw.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { @@ -170,7 +198,7 @@ } }); } - + private boolean reportExist() { try { @SuppressWarnings("unused") @@ -178,7 +206,6 @@ this.openFileInput("stack.trace"))); return true; } catch (FileNotFoundException e) { - // TODO Auto-generated catch block e.printStackTrace(); } return false; @@ -211,10 +238,8 @@ this.deleteFile("stack.trace"); } catch (FileNotFoundException e) { - // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { - // TODO Auto-generated catch block e.printStackTrace(); } } @@ -280,9 +305,18 @@ public void onStart() { super.onStart(); + SharedPreferences settings = getSharedPreferences(PREFS_PRIVATE, + MODE_PRIVATE); + + Settings.Server = settings.getString("Server", "192.168.0.30"); + Settings.Port = settings.getString("Port", "8200"); + Settings.MacId = settings.getString("MacId", "11-22-33-44-55-66"); + Settings.Vibrate = settings.getBoolean("Vibrate", true); + Settings.PowerMode = settings.getInt("PowerMode", 0); + mHandler.removeCallbacks(mUpdateTimeTask); mHandler.postDelayed(mUpdateTimeTask, 1000); - + doUpdate = true; } @@ -307,7 +341,7 @@ // automatically done on worker thread (separate from UI thread) protected Void doInBackground(final String... args) { - + String HttpServer = Settings.Server; String HttpPort = Settings.Port; @@ -322,9 +356,7 @@ + nowplayinghandler.Title + " (" + nowplayinghandler.Actual + ")"; state = nowplayinghandler.PlayerState; - } - else - { + } else { display = "nothing playing"; } Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/musicAlbum.java =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/musicAlbum.java 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/musicAlbum.java 2010-12-23 14:49:39 UTC (rev 4053) @@ -22,6 +22,12 @@ package mediaportal.remote; import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Set; + +import mediaportal.remote.ReceiveDbXmlHandler.DbItems; + import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; @@ -39,6 +45,7 @@ import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ListView; +import android.widget.SectionIndexer; import android.widget.TextView; import android.widget.Toast; @@ -49,34 +56,37 @@ private static ArrayList<ReceiveDbXmlHandler.DbItems> albumList; + private static HashMap<String, Integer> alphaIndexer; + private static String[] sections; + public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.music_album); mHandler.removeCallbacks(mUpdateTimeTask); mHandler.postDelayed(mUpdateTimeTask, 100); - + vibrate = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); - + ListView l1 = (ListView) findViewById(R.id.list_album); - l1.setOnItemClickListener(new AdapterView.OnItemClickListener() - { + l1.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, - long arg3) { + long arg3) { ReceiveDbXmlHandler.DbItems item = albumList.get(arg2); - + musicResults.Select = item.Album + "&" + item.Artist; musicResults.Mode = musicResults.SelectMode.Album; - + musicAlbum.DoVibrate(); - - Intent myIntent = new Intent(arg1.getContext(), musicResults.class); - startActivityForResult(myIntent, 0); + + Intent myIntent = new Intent(arg1.getContext(), + musicResults.class); + startActivityForResult(myIntent, 0); } }); - + ColorDrawable divcolor = new ColorDrawable(Color.DKGRAY); l1.setDivider(divcolor); l1.setDividerHeight(2); @@ -89,7 +99,8 @@ }; private class update extends AsyncTask<String, Void, Void> { - private final ProgressDialog dialog = new ProgressDialog(musicAlbum.this); + private final ProgressDialog dialog = new ProgressDialog( + musicAlbum.this); // can use UI thread here protected void onPreExecute() { @@ -113,10 +124,36 @@ this.dialog.dismiss(); } - if (albumList.size() == 0) { + if (albumList == null) { Toast.makeText(musicAlbum.this, "TIME OUT SERVER", Toast.LENGTH_SHORT).show(); } else { + + if(albumList.size() == 0) + Toast.makeText(musicAlbum.this, "No data received", + Toast.LENGTH_SHORT).show(); + + // build hash map + alphaIndexer = new HashMap<String, Integer>(); + int size = albumList.size(); + + for (int x = 0; x < size; x++) { + DbItems s = albumList.get(x); + String ch = s.Album.substring(0, 1); + ch = ch.toUpperCase(); + if (!alphaIndexer.containsKey(ch)) + alphaIndexer.put(ch, x); + } + Set<String> sectionLetters = alphaIndexer.keySet(); + + // sort results + ArrayList<String> sectionList = new ArrayList<String>( + sectionLetters); + Collections.sort(sectionList); + sections = new String[sectionList.size()]; + sectionList.toArray(sections); + + // update list ListView listview = (ListView) findViewById(R.id.list_album); listview.setAdapter(new EfficientAdapter(musicAlbum.this)); } @@ -129,9 +166,10 @@ vibrate.vibrate(100); } } - - private static class EfficientAdapter extends BaseAdapter { + private static class EfficientAdapter extends BaseAdapter implements + SectionIndexer { + private LayoutInflater mInflater; public EfficientAdapter(Context context) { @@ -184,6 +222,22 @@ TextView text; TextView text2; } + + // + // implement SectionIndexer + // + + public int getPositionForSection(int section) { + return alphaIndexer.get(sections[section]); + } + + public int getSectionForPosition(int position) { + return 1; + } + + public Object[] getSections() { + return sections; + } } } \ No newline at end of file Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/musicArtist.java =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/musicArtist.java 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/musicArtist.java 2010-12-23 14:49:39 UTC (rev 4053) @@ -58,7 +58,7 @@ private static HashMap<String, Integer> alphaIndexer; private static String[] sections; - + public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.music_artist); @@ -128,6 +128,11 @@ Toast.makeText(musicArtist.this, "TIME OUT SERVER", Toast.LENGTH_SHORT).show(); } else { + + if(artistList.size() == 0) + Toast.makeText(musicArtist.this, "No data received", + Toast.LENGTH_SHORT).show(); + // build hash map alphaIndexer = new HashMap<String, Integer>(); int size = artistList.size(); @@ -136,12 +141,14 @@ DbItems s = artistList.get(x); String ch = s.Artist.substring(0, 1); ch = ch.toUpperCase(); - alphaIndexer.put(ch, x); + if (!alphaIndexer.containsKey(ch)) + alphaIndexer.put(ch, x); } Set<String> sectionLetters = alphaIndexer.keySet(); - - // sort results - ArrayList<String> sectionList = new ArrayList<String>(sectionLetters); + + // sort results + ArrayList<String> sectionList = new ArrayList<String>( + sectionLetters); Collections.sort(sectionList); sections = new String[sectionList.size()]; sectionList.toArray(sections); @@ -159,8 +166,9 @@ } } - private static class EfficientAdapter extends BaseAdapter implements SectionIndexer { - + private static class EfficientAdapter extends BaseAdapter implements + SectionIndexer { + private LayoutInflater mInflater; public EfficientAdapter(Context context) { @@ -214,16 +222,18 @@ TextView text2; } - /// - /// implement SectionIndexer - /// - + // + // implement SectionIndexer + // + public int getPositionForSection(int section) { return alphaIndexer.get(sections[section]); } + public int getSectionForPosition(int position) { return 1; } + public Object[] getSections() { return sections; } Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/musicResults.java =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/musicResults.java 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/musicResults.java 2010-12-23 14:49:39 UTC (rev 4053) @@ -22,6 +22,12 @@ package mediaportal.remote; import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Set; + +import mediaportal.remote.ReceiveDbXmlHandler.DbItems; + import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; @@ -41,6 +47,7 @@ import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ListView; +import android.widget.SectionIndexer; import android.widget.TextView; import android.widget.Toast; @@ -57,6 +64,9 @@ private static Vibrator vibrate; private static ArrayList<ReceiveDbXmlHandler.DbItems> itemList; + + private static HashMap<String, Integer> alphaIndexer; + private static String[] sections; public static String Select = ""; public static SelectMode Mode; @@ -191,10 +201,36 @@ this.dialog.dismiss(); } - if (itemList.size() == 0) { + if (itemList == null) { Toast.makeText(musicResults.this, "TIME OUT SERVER", Toast.LENGTH_SHORT).show(); } else { + + if(itemList.size() == 0) + Toast.makeText(musicResults.this, "No data received", + Toast.LENGTH_SHORT).show(); + + // build hash map + alphaIndexer = new HashMap<String, Integer>(); + int size = itemList.size(); + + for (int x = 0; x < size; x++) { + DbItems s = itemList.get(x); + String ch = s.Artist.substring(0, 1); + ch = ch.toUpperCase(); + if (!alphaIndexer.containsKey(ch)) + alphaIndexer.put(ch, x); + } + Set<String> sectionLetters = alphaIndexer.keySet(); + + // sort results + ArrayList<String> sectionList = new ArrayList<String>( + sectionLetters); + Collections.sort(sectionList); + sections = new String[sectionList.size()]; + sectionList.toArray(sections); + + // update list ListView listview = (ListView) findViewById(R.id.list_result); listview.setAdapter(new EfficientAdapter(musicResults.this)); } @@ -242,7 +278,8 @@ } } - private static class EfficientAdapter extends BaseAdapter { + private static class EfficientAdapter extends BaseAdapter implements + SectionIndexer { private LayoutInflater mInflater; @@ -296,6 +333,22 @@ TextView text; TextView text2; } + + // + // implement SectionIndexer + // + + public int getPositionForSection(int section) { + return alphaIndexer.get(sections[section]); + } + + public int getSectionForPosition(int position) { + return 1; + } + + public Object[] getSections() { + return sections; + } } } Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/musicSong.java =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/musicSong.java 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/musicSong.java 2010-12-23 14:49:39 UTC (rev 4053) @@ -22,6 +22,12 @@ package mediaportal.remote; import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Set; + +import mediaportal.remote.ReceiveDbXmlHandler.DbItems; + import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; @@ -41,6 +47,7 @@ import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ListView; +import android.widget.SectionIndexer; import android.widget.TextView; import android.widget.Toast; @@ -51,6 +58,9 @@ private static ArrayList<ReceiveDbXmlHandler.DbItems> songList; + private static HashMap<String, Integer> alphaIndexer; + private static String[] sections; + public static String Select = ""; ReceiveDbXmlHandler.DbItems selectedItem = null; @@ -144,10 +154,36 @@ this.dialog.dismiss(); } - if (songList.size() == 0) { + if (songList == null) { Toast.makeText(musicSong.this, "TIME OUT SERVER", Toast.LENGTH_SHORT).show(); } else { + + if(songList.size() == 0) + Toast.makeText(musicSong.this, "No data received", + Toast.LENGTH_SHORT).show(); + + // build hash map + alphaIndexer = new HashMap<String, Integer>(); + int size = songList.size(); + + for (int x = 0; x < size; x++) { + DbItems s = songList.get(x); + String ch = s.Title.substring(0, 1); + ch = ch.toUpperCase(); + if (!alphaIndexer.containsKey(ch)) + alphaIndexer.put(ch, x); + } + Set<String> sectionLetters = alphaIndexer.keySet(); + + // sort results + ArrayList<String> sectionList = new ArrayList<String>( + sectionLetters); + Collections.sort(sectionList); + sections = new String[sectionList.size()]; + sectionList.toArray(sections); + + // update list ListView listview = (ListView) findViewById(R.id.list_song); listview.setAdapter(new EfficientAdapter(musicSong.this)); } @@ -183,7 +219,7 @@ xml += "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; xml += "<message>"; xml += "<command>ADD_MUSIC</command>"; - xml += "<filename>" + Entity.AddEntity(Item.Filename) + "</filename>"; + xml += "<filename>" + Entity.AddEntity(Item.Filename) + "</filename>"; xml += "<artist>" + Entity.AddEntity(Item.Artist) + "</artist>"; xml += "<title>" + Entity.AddEntity(Item.Title) + "</title>"; xml += "<duration>" + Item.Duration + "</duration>"; @@ -201,13 +237,14 @@ h.DownloadFileByID(filename, id); String sd = Environment.getExternalStorageDirectory().toString(); - + @SuppressWarnings("unused") MediaScannerNotifier not = new MediaScannerNotifier(this, sd + "/" + filename, "audio/mpeg"); } - private static class EfficientAdapter extends BaseAdapter { + private static class EfficientAdapter extends BaseAdapter implements + SectionIndexer { private LayoutInflater mInflater; @@ -261,6 +298,18 @@ TextView text; TextView text2; } + + public int getPositionForSection(int section) { + return alphaIndexer.get(sections[section]); + } + + public int getSectionForPosition(int position) { + return 1; + } + + public Object[] getSections() { + return sections; + } } } Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/nowplaylist.java =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/nowplaylist.java 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/nowplaylist.java 2010-12-23 14:49:39 UTC (rev 4053) @@ -75,7 +75,7 @@ //holder.text2.setText(country[position]); convertView.setBackgroundColor((position & 1) == 1 ? Color.WHITE - : Color.LTGRAY); + : 0xFFEEEEEE); return convertView; } @@ -174,7 +174,7 @@ xml += "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; xml += "<message>"; xml += "<command>DELETE_MUSIC</command>"; - xml += "<filename>" + Filename + "</filename>"; + xml += "<filename>" + Entity.AddEntity(Filename) + "</filename>"; xml += "</message>"; post.Post(xml); Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/pictures.java =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/pictures.java 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/pictures.java 2010-12-23 14:49:39 UTC (rev 4053) @@ -28,6 +28,7 @@ import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; +import android.graphics.Bitmap; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; Modified: trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/picturesfullscreen.java =================================================================== --- trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/picturesfullscreen.java 2010-12-22 11:04:02 UTC (rev 4052) +++ trunk/plugins/AndroidRemote/Android/MediaPortalRemote/src/mediaportal/remote/picturesfullscreen.java 2010-12-23 14:49:39 UTC (rev 4053) @@ -31,6 +31,7 @@ import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; +import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; @@ -39,6 +40,7 @@ import android.os.Bundle; import android.os.Environment; import android.os.Handler; +import android.os.PowerManager; import android.util.Log; import android.view.GestureDetector; import android.view.MotionEvent; @@ -129,6 +131,22 @@ private Runnable mUpdateTimeTask = new Runnable() { public void run() { + /// + /// keep screen on in slideshow + /// + if((slideShow)||(randomShow)) + { + PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE); + PowerManager.WakeLock wl = pm.newWakeLock( + PowerManager.FULL_WAKE_LOCK + | PowerManager.ON_AFTER_RELEASE, + "MediaPortal"); + + wl.acquire(); + wl.release(); + } + + if (slideShow) { int max = pictures.pictureList.size(); @@ -231,16 +249,62 @@ } } + private void SavetoCache() { + try { + DirItems item = pictures.pictureList.get(pictures.selectedPicture); + Bitmap bMap = item.Picture; + File fPath = Environment.getExternalStorageDirectory(); + OutputStream outStream = null; + try { + outStream = new FileOutputStream(fPath + "/" + + item.File.toString()); + + } catch (FileNotFoundException e) { + e.printStackTrace(); + Log.e("Debug", "SavetoSDCard " + e.getMessage().toString() + + " |||| " + e.getLocalizedMessage().toString()); + } + bMap.compress(Bitmap.CompressFormat.JPEG, 100, outStream); + try { + outStream.flush(); + } catch (IOException e) { + e.printStackTrace(); + Log.e("Debug", "SavetoSDCard " + e.getMessage().toString() + + " |||| " + e.getLocalizedMessage().toString()); + } + try { + outStream.close(); + + Toast.makeText(picturesful... [truncated message content] |