上一篇地址: https://blog.csdn.net/qq_40803752/article/details/86304508
上2篇写完了,保活。这一篇写进入业务逻辑。
大概5分钟定一次位置,上传到服务器。并且展示。
定位的话,我这里使用的百度定位,说下一我写的时候一个逻辑错误,就是每次只定一次位置,担心百度定位那个持续定位
不能用,后面测试发现没有这个问题。gps定位基本一样的。 也是通过 保活维护着定位监听。下面放代码,
//定位
public class DownloadService extends Service { boolean sign=false; public Context mContext=this; LocationClient mLocationClient; public static final int NOTICE_ID = 100; private MediaPlayer mMediaPlayer; private DownloadBinder mDownloadBinder; private Timer mRunTimer; private int mTimeSec; private int mTimeMin; private int mTimeHour; private OnTimeChangeListener mOnTimeChangeListener; @Override public void onCreate() { super.onCreate(); mContext=this; mDownloadBinder = new DownloadBinder(); mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); //后台播放无声 音乐 mMediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.no_notice); mMediaPlayer.setLooping(true); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // 6.0 以上 jobservice useJobServiceForKeepAlive(); } // 通知栏 showNotification(); } /** * 使用JobScheduler进行保活 */ @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private void useJobServiceForKeepAlive() { JobScheduler jobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE); if (jobScheduler == null) { return; } jobScheduler.cancelAll(); JobInfo.Builder builder = new JobInfo.Builder(1024, new ComponentName(getPackageName(), ScheduleService.class.getName())); //周期设置为了2s builder.setPeriodic(1000 * 10); builder.setPersisted(true); builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); int schedule = jobScheduler.schedule(builder.build()); if (schedule <= 0) { } } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.e("TAG","onStartCommand"); mContext=this; new Thread(new Runnable() { @Override public void run() { startPlayMusic(); } }).start(); startRunTimer(); return START_STICKY; } private void startPlayMusic() { if (mMediaPlayer != null) { mMediaPlayer.start(); } } private void stopPlayMusic() { if (mMediaPlayer != null) { mMediaPlayer.stop(); } } @Nullable @Override public IBinder onBind(Intent intent) { return mDownloadBinder; } @Override public boolean onUnbind(Intent intent) { Log.e("TAG","onUnbind"); return super.onUnbind(intent); } @Override public void onDestroy() { super.onDestroy(); NotificationManager mManager = (NotificationManager) getSystemService(NOTIFICATION_SE