, , , .
BroadcastReceiver PhoneState.
, onCreate (), onStartCommand, .
, , onStartCommand, , .
, Inner PhoneListener, , onStartCommand , , , singelton.
, , Android Nougat:
public class Service extends IntentService
{
class PhoneListener extends PhoneStateListener
{
String TAG = getClass().getName();
@Override
public void onCallStateChanged(int state, String incomingNumber)
{
super.onCallStateChanged(state, incomingNumber);
switch (state)
{
case TelephonyManager.CALL_STATE_IDLE:
Log.d(TAG,"IDLE" );
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.d(TAG,"OFFHOOK");
break;
case TelephonyManager.CALL_STATE_RINGING:
Log.d(TAG,"RINGING");
break;
}
}
PhoneListener phoneListener = null;
public Service ()
{
super("ChatService");
}
@Override
public void onCreate()
{
super.onCreate();
}
@Override
public int onStartCommand (Intent intent, int flags, int startId)
{
if (phoneListener == null)
{
TelephonyManager tm = (TelephonyManager)getApplicationContext().getSystemService(TELEPHONY_SERVICE);
phoneListener = new PhoneListener();
tm.listen(listener,PhoneStateListener.LISTEN_CALL_STATE);
}
return START_STICKY;
}
}