Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to trigger broadcast receiver when gps is turn on/off?

public class BootReceiver extends BroadcastReceiver  {      @Override     public void onReceive(Context context, Intent intent) {         if (intent.getAction().matches("android.location.PROVIDERS_CHANGED")) {             Toast.makeText(context, "in android.location.PROVIDERS_CHANGED",                 Toast.LENGTH_SHORT).show();             Intent pushIntent = new Intent(context, LocalService.class);             context.startService(pushIntent);         } else {             Toast.makeText(context, "not in android.location.PROVIDERS_CHANGED",                 Toast.LENGTH_SHORT).show();             Intent pushIntent = new Intent(context, LocalService.class);             context.startService(pushIntent);         }     }      @Override     public void onLocationChanged(Location arg0) {      } } 

In my app , i need to trigger broadcast receiver when gps is turn on/off. look into the matter and suggest best one to implement in app.

like image 553
Teekam Avatar asked Dec 19 '13 04:12

Teekam


2 Answers

This is useful when user want to trigger any action on turn On/Off location provides

You should add this action in manifest

<action android:name="android.location.PROVIDERS_CHANGED" /> 

and after add this action you can trigger your broadcast receiver

<receiver android:name=".GpsLocationReceiver">     <intent-filter>         <action android:name="android.location.PROVIDERS_CHANGED" />         <category android:name="android.intent.category.DEFAULT" />     </intent-filter> </receiver> 

And in your BroadcastReceiver class you have to implement LocationListener in that class which is given following below..

public class GpsLocationReceiver extends BroadcastReceiver {             @Override     public void onReceive(Context context, Intent intent) {         if (intent.getAction().matches("android.location.PROVIDERS_CHANGED")) {             Toast.makeText(context, "in android.location.PROVIDERS_CHANGED",             Toast.LENGTH_SHORT).show();             Intent pushIntent = new Intent(context, LocalService.class);             context.startService(pushIntent);         }     } } 
like image 59
Deepak Gupta Avatar answered Sep 21 '22 05:09

Deepak Gupta


I want to add @Deepak Gupta answer. I want to add code for how to register a dynamic brodacsast receiver in your fragment or activity when GPS status changed.

Register your broadcast receiver as below in your activity or fragment.

private BroadcastReceiver gpsReceiver = new BroadcastReceiver() {     @Override     public void onReceive(Context context, Intent intent) {         if (intent.getAction().matches(LocationManager.PROVIDERS_CHANGED_ACTION)) {             //Do your stuff on GPS status change         }     } }; 

For fragment:

getContext().registerReceiver(gpsReceiver, new IntentFilter(LocationManager.PROVIDERS_CHANGED_ACTION)); 

For activity:

registerReceiver(gpsReceiver, new IntentFilter(LocationManager.PROVIDERS_CHANGED_ACTION)); 

This can be used any place where you have access to a Context, not just inside an activity or fragment. I hope its helps.

like image 25
pRaNaY Avatar answered Sep 22 '22 05:09

pRaNaY