Guest User

Untitled

a guest
Jan 16th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.25 KB | None | 0 0
  1. // For pre lollipop and post lollipop
  2.  
  3. import android.content.IntentFilter
  4. import android.net.ConnectivityManager.CONNECTIVITY_ACTION
  5. import android.util.Log
  6. import com.firebase.jobdispatcher.JobParameters
  7. import com.firebase.jobdispatcher.JobService
  8. import com.osellers.fragments.HomeFragment
  9. import com.osellers.receiver.ConnectivityReceiver
  10.  
  11. class NetworkSchedulerFirebaseJobDispatcherService : JobService(),
  12. ConnectivityReceiver.ConnectivityReceiverListener {
  13. override fun onNetworkConnectionChanged(isConnected: Boolean) {
  14. HomeFragment.internetConnectionListener!!.callback(isConnected)
  15. }
  16.  
  17. private val TAG = NetworkSchedulerFirebaseJobDispatcherService::class.java.simpleName
  18.  
  19. private var mConnectivityReceiver: ConnectivityReceiver? = null
  20.  
  21. override fun onCreate() {
  22. super.onCreate()
  23. Log.i(TAG, "Service created")
  24. mConnectivityReceiver = ConnectivityReceiver(this)
  25. }
  26.  
  27.  
  28. override fun onStopJob(job: JobParameters?): Boolean {
  29. Log.i(TAG, "onStopJob")
  30. unregisterReceiver(mConnectivityReceiver)
  31. return true
  32. }
  33.  
  34. override fun onStartJob(job: JobParameters?): Boolean {
  35. Log.i(TAG, "onStartJob$mConnectivityReceiver")
  36. registerReceiver(mConnectivityReceiver, IntentFilter(CONNECTIVITY_ACTION))
  37.  
  38. return true
  39. }
  40. }
  41.  
  42. // initiate
  43. private fun scheduleFirebaseJob() {
  44. dispatcher = FirebaseJobDispatcher(GooglePlayDriver(context));
  45. val myJob = dispatcher.newJobBuilder()
  46. .setService(NetworkSchedulerFirebaseJobDispatcherService::class.java) // the JobService that will be called
  47. .setTag(C.NETWORK_JOB_SCHEDULE_TAG) // uniquely identifies the job
  48. .setConstraints(Constraint.ON_ANY_NETWORK, Constraint.DEVICE_CHARGING)
  49. .build()
  50.  
  51. dispatcher.mustSchedule(myJob);
  52. }
  53.  
  54. //Cancel the job
  55. override fun onStop() {
  56. dispatcher.cancel(C.NETWORK_JOB_SCHEDULE_TAG);
  57. super.onStop()
  58. }
  59. // Add them on android manifest
  60. <service
  61. android:exported="false"
  62. android:name=".services.NetworkSchedulerFirebaseJobDispatcherService">
  63. <intent-filter>
  64. <action android:name="com.firebase.jobdispatcher.ACTION_EXECUTE"/>
  65. </intent-filter>
  66. </service>
  67.  
  68. // For post lollipop only
  69. import android.app.job.JobParameters;
  70. import android.app.job.JobService;
  71. import android.content.Intent;
  72. import android.content.IntentFilter;
  73. import android.os.Build;
  74. import android.util.Log;
  75. import com.osellers.fragments.HomeFragment;
  76. import com.osellers.receiver.ConnectivityReceiver;
  77.  
  78. import androidx.annotation.RequiresApi;
  79.  
  80. import static android.net.ConnectivityManager.CONNECTIVITY_ACTION;
  81.  
  82. @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
  83. public class NetworkSchedulerService extends JobService implements
  84. ConnectivityReceiver.ConnectivityReceiverListener {
  85.  
  86. private static final String TAG = NetworkSchedulerService.class.getSimpleName();
  87.  
  88. private ConnectivityReceiver mConnectivityReceiver;
  89.  
  90. @Override
  91. public void onCreate() {
  92. super.onCreate();
  93. Log.i(TAG, "Service created");
  94. mConnectivityReceiver = new ConnectivityReceiver(this);
  95. }
  96.  
  97.  
  98. /**
  99. * When the app's NetworkConnectionActivity is created, it starts this service. This is so that the
  100. * activity and this service can communicate back and forth. See "setUiCallback()"
  101. */
  102. @Override
  103. public int onStartCommand(Intent intent, int flags, int startId) {
  104. Log.i(TAG, "onStartCommand");
  105. return START_NOT_STICKY;
  106. }
  107.  
  108.  
  109. @Override
  110. public boolean onStartJob(JobParameters params) {
  111. Log.i(TAG, "onStartJob" + mConnectivityReceiver);
  112. registerReceiver(mConnectivityReceiver, new IntentFilter(CONNECTIVITY_ACTION));
  113. return true;
  114. }
  115.  
  116. @Override
  117. public boolean onStopJob(JobParameters params) {
  118. Log.i(TAG, "onStopJob");
  119. unregisterReceiver(mConnectivityReceiver);
  120. return true;
  121. }
  122.  
  123. @Override
  124. public void onNetworkConnectionChanged(boolean isConnected) {
  125. HomeFragment.internetConnectionListener.callback(isConnected);
  126. }
  127. }
  128.  
  129. // initiate
  130. @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
  131. private fun scheduleJob() {
  132. val myJob = JobInfo.Builder(0, ComponentName(context!!, NetworkSchedulerService::class.java))
  133. .setRequiresCharging(true)
  134. .setMinimumLatency(1000)
  135. .setOverrideDeadline(2000)
  136. .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
  137. .setPersisted(true)
  138. .build()
  139.  
  140. val jobScheduler = context!!.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler?
  141. jobScheduler!!.schedule(myJob)
  142.  
  143. }
  144.  
  145. override fun onStart() {
  146. super.onStart()
  147.  
  148. val startServiceIntent = Intent(context, NetworkSchedulerService::class.java)
  149. context?.startService(startServiceIntent)
  150. }
  151.  
  152. override fun onStop() {
  153. context?.stopService(Intent(context, NetworkSchedulerService::class.java))
  154. super.onStop()
  155. }
  156.  
  157. // Add them on android manifest
  158. <service
  159. android:name=".services.NetworkSchedulerService"
  160. android:exported="true"
  161. android:permission="android.permission.BIND_JOB_SERVICE"/>
Add Comment
Please, Sign In to add comment