Services: Non-interface components that run in the background for a long time
Create a new class Phoneservice class that inherits the Service class of the system
Configuration in the manifest file
Create a new node <service>, set the name android:name=. Phoneservice "
There are several important methods within the class
OnCreate () method, called when the service is created
Ondestory () method, called when the service is destroyed
Open service
Get Intent object,new Intent (This,phoneservice.class), Parameters: Context, byte code
Call the context object's StartService (intent), parameter:Intent Object
In the onCreate () method of the service , perform some long-term operations
Gets the telephoneymanager object, calling the getsystemservice (telephony_service) method
Call the Telephoneymanager object's listen (Istener,events) method, monitor the phone call status, parameters:
Phonestatelistener object, inherit it using the inner class class, to override some methods
Phonestatelistener.listen_call_state
Create a new inner class Myphonestatelistener inherit phonestatelistener,
Override method oncallstatechanged (state,incomingnumber), callback this function when the phone's phone status changes
In the above method,switch to determine the call status, there are the following three kinds of telephonymanager.call_state_idle idle state, Telephonymanager.call_state_ringing Bell State,
Telephonymanager.call_state_offhook Call Status
Requires permission Android.permission.READ_PHONE_STATE
Mainactivity.java
PackageCom.tsh.listentel;Importandroid.app.Activity;Importandroid.content.Intent;ImportAndroid.os.Bundle;ImportAndroid.view.Menu;ImportAndroid.view.MenuItem; Public classMainactivityextendsActivity {@Overrideprotected voidonCreate (Bundle savedinstancestate) {Super. OnCreate (savedinstancestate); Setcontentview (R.layout.activity_main); //Open ServiceIntent intent=NewIntent ( This, Phoneservice.class); StartService (Intent); }}
Phoneservice.java
PackageCom.tsh.listentel;ImportAndroid.app.Service;Importandroid.content.Intent;ImportAndroid.os.IBinder;ImportAndroid.telephony.PhoneStateListener;ImportAndroid.telephony.TelephonyManager; Public classPhoneserviceextendsService {@Override Publicibinder onbind (Intent Intent) {//TODO auto-generated Method Stub return NULL; } //Service Creation@Override Public voidonCreate () {Super. OnCreate (); System.out.println ("Service Creation"); Telephonymanager TM=(Telephonymanager) Getsystemservice (Telephony_service); Tm.listen (NewMyphonestatelistener (), phonestatelistener.listen_call_state); } //Inner class Private classMyphonestatelistenerextendsphonestatelistener{@Override Public voidOncallstatechanged (intState , String Incomingnumber) { Super. oncallstatechanged (State, Incomingnumber); Switch(state) { CaseTelephonyManager.CALL_STATE_IDLE:System.out.println ("Idle State"); Break; CaseTelephonyManager.CALL_STATE_RINGING:System.out.println ("Ringing status"); Break; CaseTelephonyManager.CALL_STATE_OFFHOOK:System.out.println ("Call status"); Break; default: Break; } } } //Service Destruction@Override Public voidOnDestroy () {System.out.println ("Service Destruction"); Super. OnDestroy (); }}
Manifest.xml
<?XML version= "1.0" encoding= "Utf-8"?><Manifestxmlns:android= "Http://schemas.android.com/apk/res/android" Package= "Com.tsh.listentel"Android:versioncode= "1"Android:versionname= "1.0" > <USES-SDKandroid:minsdkversion= "8"android:targetsdkversion= "All" /> <uses-permissionAndroid:name= "Android.permission.READ_PHONE_STATE"/> <ApplicationAndroid:allowbackup= "true"Android:icon= "@drawable/ic_launcher"Android:label= "@string/app_name"Android:theme= "@style/apptheme" > <ActivityAndroid:name=". Mainactivity "Android:label= "@string/app_name" > <Intent-filter> <ActionAndroid:name= "Android.intent.action.MAIN" /> <categoryAndroid:name= "Android.intent.category.LAUNCHER" /> </Intent-filter> </Activity> <ServiceAndroid:name=". Phoneservice "></Service> </Application></Manifest>
[Android] uses services to perform long-term background operations