- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在我的应用程序中,我有一个 GpsStatus.Listener在用户启用或禁用 GPS 时接收事件。如果在我启动应用程序之前开启 GPS,一切正常。在这种情况下,我收到一个 GPS_EVENT_STARTED或 GPS_EVENT_STOPPED每次我打开或关闭 GPS 时。
问题是 GPS 在应用程序启动时关闭。在这种情况下,如果我打开或关闭 GPS,我不会收到事件。
有人能给我解释一下吗?
这是我的代码:
public class GPSTracker implements android.location.GpsStatus.Listener {
private final Context context;
private final LocationListener locListener;
private LocationManager locationManager;
private boolean isGPSEnabled = false;
public GPSTracker(Context context, LocationListener locListener) {
this.context = context;
this.locListener = locListener;
setupGPS();
}
private void setupGPS() {
locationManager = (LocationManager) getContext().getSystemService(Context.LOCATION_SERVICE);
locationManager.addGpsStatusListener(this);
isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(!isGPSEnabled) {
Toast.makeText(getContext(), "GPS disabled", Toast.LENGTH_SHORT).show();
} else {
locationManager.removeUpdates(locListener);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME, MIN_DISTANCE, locListener);
}
}
@Override
public void onGpsStatusChanged(int event) {
Log.e("onGpsStatusChanged", event+"");
switch(event) {
case GpsStatus.GPS_EVENT_STARTED:
Log.e("onGpsStatusChanged", "GPS_EVENT_STARTED");
break;
case GpsStatus.GPS_EVENT_STOPPED:
Log.e("onGpsStatusChanged", "GPS_EVENT_STOPPED");
break;
}
}
所以,我的 logcat 输出是(如果 GPS 在启动时打开):
GPS 关闭时的输出:无。
最佳答案
好吧,LocationListener
已提供:
onProviderDisabled()
, onProviderEnabled()
和 onStatusChanged()
正是为了这个目的。
GpsStatus.Listener
提供有关 GPS 服务内部工作的信息。它不用于告知 GPS 提供商的状态。
LocationListener
提供有关提供商的信息。当您向位置提供程序注册 LocationListener
时,onProviderEnabled()
/onProviderDisabled()
会相应地被调用,并且您的应用程序始终可以判断 GPS 何时可用打开或关闭。
试试这个:
public class test extends Activity implements LocationListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,10,this);
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
if(LocationManager.GPS_PROVIDER.equals(s)){
Toast.makeText(this,"GPS on",Toast.LENGTH_SHORT).show();
}
}
@Override
public void onProviderDisabled(String s) {
if(LocationManager.GPS_PROVIDER.equals(s)){
Toast.makeText(this,"GPS off",Toast.LENGTH_SHORT).show();
}
}
}
关于android - GpsStatus.Listener 仅在 GPS 开启时有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18259039/
本地帐户 从关于核心数据和iCloud的WWDC 2013 207 session中: You provide us a single store URL inside the application
我正在尝试快速打开一个类型。我不是要打开对象实例的类型,而是要打开实际类型本身。例如: let t: Any.Type = Int.self switch t { case is Int:
上一节主要是简单地说了一下关于yii2的防御csrf的攻击机制,接下来说一下关于如何全局和局部的开启使用csrf。 (1)全局使用,我们直接在配置文件中设置enableCookieValidati
apache往nginx去转,代码端用到了$_SERVER['PATH_INFO'],对于nginx默认是不开启pathinfo的。所以我们就要手动开启 1,url重写
我有什么 我有两个房间:rm_home和rm_options。我有声音:snd_Bgm。而且,我有三个对象:obj_bgm,obj_BtnOnClicked和obj_BtnOffClicked。 我想
我需要 JQuery 方面的帮助,我是编程的初学者。 我需要的是当我点击一个特定的按钮时,描述会出现,但是当我点击一个按钮时它们会同时出现。请帮助。谢谢 :) $(document).ready(
我的 Linux 服务器有问题。 配置:Linux 服务器 3.2.0-4-686-pae #1 SMP Debian 3.2.65-1+deb7u2 i686 Apache/2.2.22 (Debi
我有一个应用程序可以在 Activity 中保存帖子信息。在此 Activity 中,相关帖子列在帖子底部。用户通过点击相关帖子可以转到帖子 Activity 并查看该帖子信息和相关帖子。 如您在图片
当我点击屏幕上的“编辑”按钮时,我将 TableView 更改为编辑模式,并将编辑样式设置为复选框 func tableView(_ tableView: UITableView, editingSt
我使用这个 fanotify 示例来监控整个文件系统的打开/访问权限 (/):http://git.infradead.org/users/eparis/fanotify-example.git .
当我在我的 linux 控制台上为我键入的每个命令打开 bash -x 时,我得到了这个输出。 printf "\033]0;%s@%s:%s\007""${USER}""${HOSTNAME%%.*
本文实例讲述了mysql慢查询操作。分享给大家供大家参考,具体如下: mysql有些sql会执行很慢,有可能造成服务器负载飙升 首先查询 确定影响负载的是mysql ,使用top命令,ps命令等
我是 FFMpeg 的新手,所以这可能是一个愚蠢的问题,但我在文档中看不到答案。 我想从 DVD vob 文件中解码帧。打开组中的第一个 VOB 工作正常,但我如何告诉 ffmpeg 继续到下一个 V
我改变了创建数据表的方式,因为我想要动态创建列。我的数据表有一列用于披露详细信息。 function format (d) { console.log(d); var ou
如何从弹出页面 backingbean 获取 backingbean 内容到父 Window.Opener 页面? 最佳答案 您需要手动填写 window.opener通过 JavaScript 的输
我有一个指令在它的 link 函数中做这样的事情 angular.module('myApp') .directive('barFoo', function() { retur
我刚收到一封来自 Authorize.net 的电子邮件,通知他们使用 TLS1.0 和 TLS1.1 停用与其服务器的连接。 问题是 Godaddy SSL 和 Web 主机设置为 TLS1.2 连
由于我的项目太大,我需要运行proguard才能成功编译android。 但是当我设置 android:debuggable="true"以便我轻松调试时,它会自动关闭 proguard。有什么解决方
因此,我已经实现了新的 Fused Location Provider API 来获取用户的位置,但出于某种原因,除非打开 GPS,否则我无法获取任何位置。并非总是如此,用户会打开他们的 GPS,我不
我正在尝试在 Spring Boot 中启用 @GlobalMethodSecurity 以使用 CustomPermissionEvaluator。因此,我添加了相应的 MethodSecurity
我是一名优秀的程序员,十分优秀!