我正在使用MapView在地图上显示用户的当前位置。要在用户移动时更新位置,我必须选择:
但是我在这里看到,使用位置管理器可能不是一个好方法,而且MyLocationOverlay应该优先于此。
此外,请考虑我的应用是基于位置的应用,应该在用户移动时跟踪用户的位置。
人们可以建议哪种方法最佳实施,对电池的影响相对较小。
请注意,我是Android的初学者,所以请原谅任何明显的错误。
提前谢谢你, 安迪
答案 0 :(得分:2)
我使用Little Fluffy Location - 它是一个库,你设置更新或距离的时间,这个库创建一个广播接收器,实现LocationListener,n在位置变化时通知你的应用程序。
简单,快速,简单!
请参阅this链接:
更改位置后,在地图上更新叠加层! =)
如果您需要,我会发送完整的地点解决方案。
答案 1 :(得分:1)
使用小蓬松位置 1º:
in Manifest:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-feature android:name="android.hardware.location" android:required="true" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<Application...>
<service android:name="com.littlefluffytoys.littlefluffylocationlibrary.LocationBroadcastService" />
<receiver android:name="com.littlefluffytoys.littlefluffylocationlibrary.StartupBroadcastReceiver" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<receiver android:name="com.littlefluffytoys.littlefluffylocationlibrary.PassiveLocationChangedReceiver" android:exported="true" />
2º创建类以扩展应用程序
public class YourApplication extends Application {
public void onCreate(){
super.onCreate();
LocationLibrary.showDebugOutput(true);
LocationLibrary.initialiseLibrary(getBaseContext(), 0, 2 * 60 * 1000, "com.yourpackage.broadcastpackage");
}
public static Context getAppContext() {
return ApplicationVexPromoter.context;
}
}
3º创建广播接收器
public class Broadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
final LocationInfo locationInfo = (LocationInfo) intent.getSerializableExtra(LocationLibraryConstants.LOCATION_BROADCAST_EXTRA_LOCATIONINFO);
}
}
并使用:
在您的活动中:
public class YourActivity extends Activity {
LocationInfo info;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.id.yourview);
info = new LocationInfo(getBaseContext());
double latitude = info.lastLat;
double longitude = info.lastLong;
}
}
需要更多? Please refer this
适合我!