Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to use Service to notify App which is in background
    primarykey
    data
    text
    <p>I am writing an application that has service in it. This service should do some long running background activities say getting Geo coordinates. Now, I want this service to notify the app after a particular interval of time that some thing is to be done like an alarm. I have confusions at this part. i am not getting, how can I make the service update the app about some actions and then show some alert alarms etc. </p> <p>Below is my code,</p> <p><strong>Activity:</strong></p> <pre><code>public class BroadcastTest extends Activity { private static final String TAG = "BroadcastTest"; private Intent intent; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); intent = new Intent(this, BroadcastService.class); } private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { updateUI(intent); } }; @Override public void onResume() { super.onResume(); startService(intent); registerReceiver(broadcastReceiver, new IntentFilter( BroadcastService.BROADCAST_ACTION)); } @Override public void onPause() { super.onPause(); unregisterReceiver(broadcastReceiver); stopService(intent); } private void updateUI(Intent intent) { boolean gps = intent.getBooleanExtra("gps", false); if (gps) { String counter = intent.getStringExtra("counter"); String time = intent.getStringExtra("time"); // Log.d(TAG, counter); // Log.d(TAG, time); TextView txtDateTime = (TextView) findViewById(R.id.txtDateTime); TextView txtCounter = (TextView) findViewById(R.id.txtCounter); txtDateTime.setText(time); txtCounter.setText(counter); } else { } } } </code></pre> <p><strong>Service:</strong></p> <pre><code> public class BroadcastService extends Service { private static final String TAG = "BroadcastService"; public static final String BROADCAST_ACTION = ""; private final Handler handler = new Handler(); Intent intent; int counter = 0; GPSTracker gps; @Override public void onCreate() { super.onCreate(); intent = new Intent(BROADCAST_ACTION); //Notification notification = new Notification(R.drawable.icon, "MyService", 1000); //Intent notifIntent = new Intent(this, BroadcastTest.class); //PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notifIntent, 0); //notification.setLatestEventInfo(getApplicationContext(), "ForeGroundService", "Service is Running", pendingIntent); //startForeground(1, notification); } @Override public void onStart(Intent intent, int startId) { handler.removeCallbacks(sendUpdatesToUI); handler.postDelayed(sendUpdatesToUI, 1000); // 1 second } private Runnable sendUpdatesToUI = new Runnable() { public void run() { DisplayLoggingInfo(); handler.postDelayed(this, 10000); // 10 seconds } }; private void DisplayLoggingInfo() { gps = new GPSTracker(getApplicationContext()); double latitude = 0, longitude = 0; // check if GPS enabled System.out.println(gps.isGPSEnabled); if (gps.canGetLocation()) { latitude = gps.getLatitude(); longitude = gps.getLongitude(); } else { // can't get location // GPS or Network is not enabled // Ask user to enable GPS/network in settings //gps.showSettingsAlert(); } Log.d(TAG, "entered DisplayLoggingInfo"); intent.putExtra("time", Double.toString(latitude)); intent.putExtra("counter", Double.toString(longitude)); sendBroadcast(intent); } @Override public IBinder onBind(Intent intent) { return null; } @Override public void onDestroy() { handler.removeCallbacks(sendUpdatesToUI); super.onDestroy(); } } </code></pre> <p>Can any body tell me how can I trigger the application after a particular interval of time say after 4hours or after 50kms to show a notification</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload