====== Service ====== ===== Methods ===== ^ Method ^ Description ^ | Service.Send( cmd,p1,p2,p3,p4,p5,p6,p7 ) | | | Service.SendImg( cmd,img ) | | | Service.SendMessage( msg ) | | | Service.SetOnMessage( callback ) | | | Service.Stop() | | ===== Sample ===== //(posted by Dave Smart in the DroidScript Forum)// Create a new project called "Music Service" and copy the 2 files in the folder. **File 1:** //Called when service is started. function OnStart() { app.ShowPopup( "Hello from Service!" ); //Create media player. player = app.CreateMediaPlayer(); player.SetOnReady( player_OnReady ); player.SetOnComplete( player_OnComplete ); //Query media store for a nice long track. media = app.CreateMediaStore(); media.SetOnMediaResult( media_OnMediaResult ); media.QueryMedia( "duration > 120000", "", "external" ); } //Handle media query results. function media_OnMediaResult( result ) { if( result.length==0 ) return; //Play first file found. track = result[51]; player.SetFile( track.uri ); //Get album art. var img = app.CreateImage( null, 0.1, 0.1 ); var gotArt = media.GetAlbumArt( img, track.albumId, "external" ); //Show a notification with album art if available. notify = app.CreateNotification( "Ongoing" ); notify.SetMessage( track.title, track.title, track.album ); if( gotArt ) notify.SetLargeImage( img ); notify.Notify( "my_player_id" ); } //Called when we get a service message. function OnMessage( msg ) { //Show debug in WiFi IDE. console.log( msg ); //Handle commands from main App. if( msg=="play" ) player.Play(); else if( msg=="pause" ) player.Pause(); else if( msg=="quit" ) notify.Cancel( "my_player_id" ); } //Called when player is ready to play. function player_OnReady() { player.Play(); } //Called when playback has finished. function player_OnComplete() { notify.SetMessage( "Track Finished!", track.title, track.album ); notify.Notify( "my_player_id" ); } **File 2:** //Called when application is started. function OnStart() { //Create a layout. lay = app.CreateLayout( "linear", "VCenter,FillXY" ); //Create a 'Play' button. btn = app.CreateButton( "Play", 0.6, 0.1 ); btn.SetMargins( 0, 0.05, 0, 0 ); lay.AddChild( btn ); btn.SetOnTouch( btn_OnTouchPlay ); //Create a 'Pause' button. btn = app.CreateButton( "Pause", 0.6, 0.1 ); btn.SetMargins( 0, 0.05, 0, 0 ); lay.AddChild( btn ); btn.SetOnTouch( btn_OnTouchPause ); //Create a 'Stop Service' button. btn = app.CreateButton( "Stop Service", 0.6, 0.1 ); btn.SetMargins( 0, 0.05, 0, 0 ); lay.AddChild( btn ); btn.SetOnTouch( btn_OnTouchStop ); //Add layout to app. app.AddLayout( lay ); //Start/connect to our service. svc = app.CreateService( "this","this", OnServiceReady ); //This will cause your service to start at boot. app.SetAutoBoot( "Service" ); } //Called after our service has started. function OnServiceReady() { console.log( "Service Ready" ); } function btn_OnTouchStop() { //Tell service we are quitting. svc.SendMessage( "quit" ); //Stop the service. svc.Stop(); } function btn_OnTouchPlay() { //Tell service to play music. svc.SendMessage( "play" ); } function btn_OnTouchPause() { //Tell service to pause music. svc.SendMessage( "pause" ); } ==== Links ==== There is another background service sample at [[sample_code:file_service|Web file service]]