上一篇地址: https://blog.youkuaiyun.com/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 = (NotificationMan

本文是关于Android应用中如何保持后台定位并实现数据定时上传及轨迹展示的续篇。作者提到之前的文章已解决保活问题,现在将介绍如何每5分钟获取一次位置信息并上传至服务器,同时展示定位轨迹。使用了百度定位API,虽然曾对持续定位功能存疑,但后续测试表明并无问题。代码示例省略,GPS定位的详细实现将在后续文章中单独探讨。
最低0.47元/天 解锁文章
6430

被折叠的 条评论
为什么被折叠?



