- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个对用户位置敏感的 Android 应用程序。
一旦用户在一个位置停留了很长时间(例如20分钟),那么我们应该做一些相应的事情(将最近的 parking 位状态设置为“忙碌”),一旦他离开那个位置设置状态最近的 parking 位最近的“免费”。
现在我可以获得已注册的 LocationListener
的用户位置,但是我有两个问题:
1)如何跟踪用户位置以确定他是否在指定时间在同一位置有风格?
我想创建一个 Handler
并运行一个任务来检查位置:
private Location mLastLocation;
private Location mCurrentLocation;
private Handler mHandler = new Handler();
private Runnable mLocationCalculateRunnable = new Runnable() {
@Override
public void run() {
if (mCurrentLocation != null) {
if (!userLocationChanged()) {
} else {
}
}
mHandler.postDelayed(mLocationCalculateRunnable,10000); //check every 10 seconds
}
private boolean userLocationChanged() {
return getDistance(mCurrentLocation, mLastLocation) > 5;
}
};
mHandler.postDelayed(mLocationCalculateRunnable,1000);
private void onLocationChanged(Location location) {
mLastLocation = mCurrentLocation;
mCurrentLocation = location;
}
但是我无法继续查看位置和时间。
2)即使用户点击back
键回到主屏幕,应用程序也应该运行,并且屏幕可能会熄灭,甚至cpu可能会进入休眠状态。
如果是这样,我可能无法获得新位置,处理程序也可能会停止。
我想知道我的位置检查想法是否正确以及如何让应用程序在任何情况下保持运行?
顺便说一句,我无法访问谷歌相关服务。
最佳答案
1) 使用定义为 LocationManager
设置适当的更新。这些定义是更新用户位置所需的最短时间和距离。
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
2) 运行将在后台运行的服务
。
小代码示例:
public class GPSservice extends Service implements LocationListener {
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 2;
private static final long MIN_TIME_BW_UPDATES = 1000 * 1;
double latitude, longitude;
boolean isGPSEnabled = false;
boolean isNetworkEnabled = false;
boolean canGetLocation = false;
Location location;
protected LocationManager locationManager;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
getLocation();
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onLocationChanged(Location location) {
new LocationReceiver(location, getApplicationContext());
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
public Location getLocation() {
try {
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
// getting GPS status
isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!isGPSEnabled && !isNetworkEnabled) {
Log.d("Network", "OFF");
} else {
this.canGetLocation = true;
if (isNetworkEnabled) {
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("Network", "ON");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
if (isGPSEnabled) {
if (location == null) {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("GPS Enabled", "ON");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return location;
}
}
关于android - 检查用户是否一直停留在同一个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26034464/
我有一个在 Android 市场上相当流行的应用程序,它允许数以万计的用户按下一个按钮并向它发出语音命令。然后我就可以做很多不同的事情,比如给他们提供当前的天气预报等等...... 无论如何,我的应用
令人惊讶的是,标题基本上解释了它。我们有一个我们的客户制作的页面,我们正在重新创建该页面。 页面高度会一直增加,直到(我假设是这样)浏览器达到它的极限。我已经尝试过 Firebug 和 W3 验证器,
我是 react-native 的新手,试图创建我自己的组件,但它一直显示一个空屏幕。 这是我的组件代码 class BoxComponent extends Component { cons
我正在为我的 PHP 元素创建一个非常简单的博客,但遇到了一个简单的问题。我无法让我的页眉图像一直 float 。我有一个横幅,左边有一些文字,我有一个 1px 的切片,在可以选择的任何分辨率的宽度上
为什么我可以在另一个 Controller 的 View 中访问一个 Controller 的辅助方法?有没有办法在不破解/修补 Rails 的情况下禁用它? 最佳答案 @George Schreib
我正在使用带有最新 ADT 插件的 Eclipse Kepler SP2。每隔一分钟 Eclipse 就会说“为 Android 4.4.2 加载数据”并阻止我想做的一切。我在不同的文件夹中有几个 E
我是一名优秀的程序员,十分优秀!