gpt4 book ai didi

Android 服务未收到位置更新

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:53:34 25 4
gpt4 key购买 nike

尝试在我的服务中获取 LocationUpdates,但是,它似乎从未触发 LocationListener。

我的服务启动一个线程,然后使用 Handler.postDelayed() 循环 - 我最初使用 sleep(30000),但我认为这可能会阻止 locationUpdates。所有服务所做的就是启动这个线程 - onStartCommand 返回 STICKY 以保持它运行:

public class TST extends Thread {

final int DefaultNetworkTick = 120000; // 2 minutes
final int DefaultLocationTick = 20000; //600000;
boolean CustomLocationUpdateTick = false; // If the network requests faster updates
int CustomLocationUpdateTickMs = 600000; // Default 10 minutes

public boolean kill = false;
public Context context;

Handler handler = new Handler();

Date nextNetworkReadTick;

@Override
public void run() {
Log.i("TST", "Start run() iteration");
// Set the ticks to the appropriate values
// Network gets read every 2 minutes

nextNetworkReadTick = new Date();
nextNetworkReadTick.setTime(nextNetworkReadTick.getTime() + DefaultNetworkTick);
Log.i("TST", "Set next Network tick to " + nextNetworkReadTick.toString());
Looper.prepare();
Log.i("TST", "Performing location update setup...");
SetupLocationListenerDefault();
handler.postDelayed(runFunc, 2000);
Looper.loop();
}

// We do our networking and stuff in here
public Runnable runFunc = new Runnable(){
public void run()
{
Log.i("TST", "run() iteration");

if( new Date().after(nextNetworkReadTick) ) {
// Set next tick
nextNetworkReadTick = new Date();
nextNetworkReadTick.setTime(nextNetworkReadTick.getTime() + DefaultNetworkTick);

UpdateNetwork();
}

handler.postDelayed(runFunc, 1000);
}
};

private void UpdateNetwork() {
// TODO Auto-generated method stub
}

LocationManager locMgr;

PendingIntent locationUpdateIntentPending;
Intent locationUpdateIntent;

LocationListener locationListener = new LocationListener()
{
@Override
public void onLocationChanged(Location arg0) {
// TODO Auto-generated method stub
Log.i("TST", "OnLocationChanged: " + arg0.toString());
}

@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
Log.i("TST", "OnProviderDisabled: " + provider);
}

@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
Log.i("TST", "OnProviderEnabled: " + provider);
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
Log.i("TST", "OnStatusChanged");
}

};

private void SetupLocationListenerDefault() {
// Reset location manager
if( locMgr != null ) {
locMgr.removeUpdates(locationListener);
locMgr = null;
}

locMgr = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
String provider = locMgr.getBestProvider(criteria, true);

locMgr.requestLocationUpdates(provider, DefaultLocationTick, 0, locationListener);
}

}

最佳答案

重新启动我的手机并开始获取更新 - Android 似乎卡在了某个地方!

关于Android 服务未收到位置更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6666181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com