tutor i el android broadcast receiver

Upload: essafi-ennaceur

Post on 03-Apr-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/28/2019 Tutor i El Android Broadcast Receiver

    1/15

    1

    TutorielAndroid

    Communicationentreservices

    BroadCastReceiverRomainRaveaux

    Prambule.................................................................................................................................1

    Prrequis...................................................................................................................................2

    Architecture...............................................................................................................................3

    EnvoidunmessageauServiceS1..........................................................................................5

    Miseenuvre..........................................................................................................................6

    ModificationduManifest......................................................................................................7

    Lesclassesdututorial................................................................................................................8ClasseServiceS1.....................................................................................................................9

    ClasseServiceS2...................................................................................................................11

    ClasseTutoActivity..............................................................................................................13

    Manifestdelapplication.....................................................................................................15

    Prambule

    LesservicesnepeuventpascommuniquerparlebiaisdelinterfaceIBinder.LacommunicationparIBindernepermetquelacommunicationentreuneActivityetun

    service.LasolutionpourrsoudreleproblmeestdutiliserlesBroadCastReceiver

    ServiceS1 ServiceS2message

  • 7/28/2019 Tutor i El Android Broadcast Receiver

    2/15

    2

    PrrequisSavoirdmarreretarrterunservice.

    SavoircreruneapplicationAndroid.

  • 7/28/2019 Tutor i El Android Broadcast Receiver

    3/15

    3

    ArchitectureOncreunserviceServiceS1avecdeuxvariables:Unedonneenvoyeretunevariable

    pourrecevoirunmessage.

    publicclass ServiceS1 extends Service {String datatosend ="ping";

    String receiveddata;

    @Overridepublic IBinder onBind(Intent arg0) {// TODO Auto-generated method stubreturnnull;

    }

    /**

    * @param args*/publicstaticvoid main(String[] args) {

    // TODO Auto-generated method stub}

    A lintrieur de la classe ServiceS1 , on cre une classe

    BroadCastReceiver.

    publicclass S1Receiver extends BroadcastReceiver {@Overridepublicvoid onReceive(Context context, Intent arg1) {

    // TODO Auto-generated method stubToast.makeText(context, "reu !!!"

    ,Toast.LENGTH_LONG ).show();

    Log.d(this.getClass().getName(), "reu !!!");receiveddata = arg1.getExtras().getString("id");Toast.makeText(context, receiveddata

    ,Toast.LENGTH_LONG ).show();

    }

    }

    }

  • 7/28/2019 Tutor i El Android Broadcast Receiver

    4/15

    4

    OncreleconstructeurduserviceServiceS1 . La variable messageReceiver

    estuneinstancedeS1Receiver. Il faut enregistrer le S1Receiver pour

    avertir lapplication que le service ServiceS1 possde un BroadCast

    Receiver qui pourra tre appel par dautres services.

    MESSAGE_S1 est lidentifiant du BroadCast Receiver S1Receiver.

    S1Receiver messageReceiver;publicstatic String MESSAGE_S1 = "MESSAGE_S1";public ServiceS1(){

    super() ;

    messageReceiver = new S1Receiver();registerReceiver(messageReceiver, new

    IntentFilter(MESSAGE_S1));

    }

  • 7/28/2019 Tutor i El Android Broadcast Receiver

    5/15

    5

    EnvoidunmessageauServiceS1

    Pourillustrerlacommunicationentredeuxservices,nousavonsbesoindedeuxservices.

    On cre un autre service ServiceS2 .

    publicclass ServiceS2 extends Service {String datatosend ="pong";

    String receiveddata;

    @Overridepublic IBinder onBind(Intent arg0) {// TODO Auto-generated method stubreturnnull;

    }

    /**

    * @param args*/publicstaticvoid main(String[] args) {

    // TODO Auto-generated method stub}

    }

    LorsdudmarrageduserviceS2,cedernierenverraunmessageauserviceS1.

    LeserviceS2envoieparlebiaisdelamthodesendBroadcastunIntentcontenantla

    variabledatatosend.

    Intent sender = new Intent(ServiceS1.MESSAGE_S1);sender.putExtra("id", datatosend);

    sendBroadcast(sender);

  • 7/28/2019 Tutor i El Android Broadcast Receiver

    6/15

    6

    MiseenuvreLesservicessexcutententchedefonddemanireparallle.

    Pourexprimenternotrecommunicationentreservicesnousavonsbesoinduneactivit

    avecunboutonpermettantdedmarrerlesservices.

    Dmarragedelactivit

    Dmarragedu

    serviceS1

    Dmarragedu

    serviceS2

    EnvoidumessageaS1

    Miseenplacedu

    BroadCastReceiver

    Rceptiondu

    message

    temps

  • 7/28/2019 Tutor i El Android Broadcast Receiver

    7/15

    7

    VoicilecodedelamthodeonCreatedelactivit.Lorsdelappuiesurunbouton,on

    dmarreleserviceS1etleserviceS2.

    @Overridepublicvoid onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.tutolayout);

    start = (Button) this.findViewById(R.id.button1);start.setOnClickListener(new Button.OnClickListener(){

    @Override

    publicvoid onClick(View v) {// TODO Auto-generated method stub

    Intent starter = newIntent(TutoActivity.this,ServiceS1.class);

    startService(starter);

    starter = newIntent(TutoActivity.this,ServiceS2.class);

    startService(starter);

    }

    });

    }

    ModificationduManifest

    Danslemanifestdelapplication,ilfautrajouterladclarationdesservicesentrelesbalises

    application.

  • 7/28/2019 Tutor i El Android Broadcast Receiver

    8/15

    8

    Lesclassesdututorial

  • 7/28/2019 Tutor i El Android Broadcast Receiver

    9/15

    9

    ClasseServiceS1

    packagecom.example.carteauxtresors.services;

    importcom.example.carteauxtresors.services.Ordonnanceur.MyReceiver;

    importandroid.app.Service;

    importandroid.content.BroadcastReceiver;

    importandroid.content.Context;

    importandroid.content.Intent;

    importandroid.content.IntentFilter;

    importandroid.os.IBinder;

    importandroid.util.Log;

    importandroid.widget.Toast;

    publicclassServiceS1extendsService{

    Stringdatatosend="ping";

    Stringreceiveddata;

    S1ReceivermessageReceiver;

    publicstaticStringMESSAGE_S1="MESSAGE_S1";

    publicServiceS1(){

    super();

    }

    @Override

    publicintonStartCommand(Intentintent,intflags,intstartId){

    Log.d(this.getClass().getName(),"onStart");

    Log.d("LocalService","Receivedstartid"+startId+":"+intent);

    messageReceiver=newS1Receiver();

    registerReceiver(messageReceiver,newIntentFilter(MESSAGE_S1));

    returnSTART_NOT_STICKY;

    }

    @Override

    publicIBinderonBind(Intentarg0){

    //TODOAuto-generatedmethodstub

    returnnull;

    }

    /**

    *@paramargs

    */ publicstaticvoidmain(String[]args){

  • 7/28/2019 Tutor i El Android Broadcast Receiver

    10/15

    10

    //TODOAuto-generatedmethodstub

    }

    publicclassS1ReceiverextendsBroadcastReceiver{

    @Override

    publicvoidonReceive(Contextcontext,Intentarg1){

    //TODOAuto-generatedmethodstub

    Toast.makeText(context,"S1reu!!!",Toast.LENGTH_LONG).show();

    Log.d(this.getClass().getName(),"S1reu!!!");

    receiveddata=arg1.getExtras().getString("id");

    Toast.makeText(context,receiveddata,Toast.LENGTH_LONG).show();

    }

    }

    @Override

    publicvoidonDestroy(){

    Log.d(this.getClass().getName(),"onDestroy");

    unregisterReceiver(messageReceiver);

    }

    }

  • 7/28/2019 Tutor i El Android Broadcast Receiver

    11/15

    11

    ClasseServiceS2

    package com.example.carteauxtresors.services;import android.app.Service;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.IBinder;import android.util.Log;import android.widget.Toast;publicclass ServiceS2 extends Service {

    String datatosend ="pong";

    String receiveddata;

    public ServiceS2(){super();}

    @Overridepublicint onStartCommand(Intent intent, int flags, intstartId) {

    Log.d(this.getClass().getName(), "onStart");Log.d("LocalService", "Received start id " + startId + ":

    " + intent);

    Intent sender = new Intent(ServiceS1.MESSAGE_S1);sender.putExtra("id", datatosend);

    sendBroadcast(sender);

    returnSTART_NOT_STICKY;}

    @Overridepublic IBinder onBind(Intent arg0) {// TODO Auto-generated method stubreturnnull;

    }

    /**

    * @param args*/publicstaticvoid main(String[] args) {

    // TODO Auto-generated method stub

  • 7/28/2019 Tutor i El Android Broadcast Receiver

    12/15

    12

    }

    @Override

    publicvoid onDestroy() {Log.d(this.getClass().getName(), "onDestroy");

    }

    }

  • 7/28/2019 Tutor i El Android Broadcast Receiver

    13/15

    13

    ClasseTutoActivity

    package com.example.carteauxtresors;import com.example.carteauxtresors.services.Ordonnanceur;import com.example.carteauxtresors.services.ServiceS1;import com.example.carteauxtresors.services.ServiceS2;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;publicclass TutoActivity extends Activity {

    /**

    * @param args*/publicstaticvoid main(String[] args) {

    // TODO Auto-generated method stub}

    private Button start;@Overridepublicvoid onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

    setContentView(R.layout.tutolayout);

    start = (Button) this.findViewById(R.id.button1);start.setOnClickListener(new Button.OnClickListener(){

    @Overridepublicvoid onClick(View v) {// TODO Auto-generated method stub

    Intent starter = newIntent(TutoActivity.this,ServiceS1.class);

    startService(starter);

    starter = newIntent(TutoActivity.this,ServiceS2.class);

    startService(starter);

  • 7/28/2019 Tutor i El Android Broadcast Receiver

    14/15

    14

    }

    });

    }

    }

  • 7/28/2019 Tutor i El Android Broadcast Receiver

    15/15

    15

    Manifestdelapplication