Table of Contents

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:

Service.js
//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:

Music Service.js
//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" );
}

There is another background service sample at Web file service