转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/70854942
本文出自【赵彦军的博客】

  • GPS_Presenter
package com.yiba.core;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.location.LocationManager;/*** Created by ${zhaoyanjun} on 2017/3/29.* GPS 开关监听*/public class GPS_Presenter {private Context mContext ;private Receiver receiver ;private GPS_Interface mInterface ;private String GPS_ACTION = "android.location.PROVIDERS_CHANGED" ;public GPS_Presenter(Context context , GPS_Interface mInterface ){this.mContext = context ;this.mInterface = mInterface ;observeWifiSwitch();}private void observeWifiSwitch(){IntentFilter filter = new IntentFilter();filter.addAction( GPS_ACTION );receiver = new Receiver() ;mContext.registerReceiver(receiver, filter);}/*** 释放资源*/public void onDestroy(){if ( receiver != null ){mContext.unregisterReceiver( receiver );}if (mContext!=null){mContext = null;}}class Receiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {if (intent.getAction().matches( GPS_ACTION )) {if ( mInterface != null ){mInterface.gpsSwitchState( gpsIsOpen( context ));}}}}/*** 判断GPS是否开启,GPS或者AGPS开启一个就认为是开启的* @param context* @return true 表示开启*/public boolean gpsIsOpen(final Context context) {LocationManager locationManager= (LocationManager) context.getApplicationContext().getSystemService(Context.LOCATION_SERVICE);// 通过GPS卫星定位,定位级别可以精确到街(通过24颗卫星定位,在室外和空旷的地方定位准确、速度快)boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);// 通过WLAN或移动网络(3G/2G)确定的位置(也称作AGPS,辅助GPS定位。主要用于在室内或遮盖物(建筑群或茂密的深林等)密集的地方定位)boolean network = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);if (gps || network) {return true;}return false;}
}
  • GPS_Interface 回调接口
package com.yiba.core;/*** Created by ${zhaoyanjun} on 2017/3/29.* gps 开关监听*/public interface GPS_Interface {void gpsSwitchState( boolean gpsOpen );
}
  • 在 Activity 中使用
package com.yiba.core;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;public class MainActivity extends AppCompatActivity implements GPS_Interface {private GPS_Presenter gps_presenter ;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);gps_presenter = new GPS_Presenter( this , this ) ;}@Overrideprotected void onDestroy() {super.onDestroy();//释放资源if ( gps_presenter != null ){gps_presenter.onDestroy();}}@Overridepublic void gpsSwitchState(boolean gpsOpen) {if ( gpsOpen ){Toast.makeText(this, " 手机GPS 打开", Toast.LENGTH_SHORT).show();}else {Toast.makeText(this, " 手机GPS 关闭", Toast.LENGTH_SHORT).show();}}
}

Android 监听手机GPS打开状态相关推荐

  1. Android中如何监听手机GPS打开状态

    位置坐标监听.GPS卫星状态监听在Android应用中常见,我们是否一进入应用就注册相应的监听? 答案当然不是的.比如,手机的GPS没有打开,而我们注册了监听,那有什么用呢? 所以,我们应该实时监听手 ...

  2. android 监听手机电量变化

    今天,简单讲讲如何监听手机电量的变化. 监听电量是不能静态注册的. 后来上网搜索,发现有五个不能静态注册的广播,这里记录一下,免得下次再后知后觉的发现并惊讶于自己的笨拙. 不能静态注册的广播: and ...

  3. Android监听手机网络变化

    Android监听手机网络变化 手机网络状态发生变化会发送广播,利用广播接收者,监听手机网络变化 效果图 注册广播接收者 <?xml version="1.0" encodi ...

  4. Android监听手机短信

    Android监听手机短信的方法有两种,分别为: 1.接受系统的短信广播:当手机收到新消息时,会发送一条广播,通过该广播就可以获取短信内容: 2.监听短信数据库:利用观察者模式监听短信数据库,当短信数 ...

  5. android 监听手机开机

    今天,简单讲讲  android 监听手机开机. 需求描述:有些时候,我们需要我们的程序在开机后能自动运行,在系统即将关闭时,能写入一些记录到指定的文件里. 一.开机广播监听: Android系统 ...

  6. Android监听手机返回键

    Android在做项目时,有时候点击返回按钮没反应(有冲突),那就需要我们监听返回键.重写onKeyDown()方法: // 监听手机返回键 @Override public boolean onKe ...

  7. Android监听手机屏幕解锁和判断屏幕状态

    开发后台服务的时候经常需要对屏幕状态进行判断,如果是想要监听屏幕解锁事件,可以在AndroidManifest配置里面注册action为 android.intent.action.USER_PRES ...

  8. android 监听手机屏幕唤醒和睡眠广播

    最近做APP要做一个android 手机屏幕唤醒和睡眠的监听. 但发现下面问题: 我想获取调用屏幕打开时应用.在我 AndroidManifest.xml 已经指定:android.intent.ac ...

  9. Android 监听手机来电和去电

    1.继承BroadcastReceiver,监听来去电状态 package com.example.callphonetest.receiver;import android.app.Service; ...

最新文章

  1. iOS 打电话回到当前应用
  2. SecureCRT如何显示颜色和高亮显示
  3. 三位数除以两位数竖式计算没有余数_苏教四上期末复习——两、三位数除以两位数...
  4. 自定义依赖注解无效_关于Apt注解实践与总结【包含20篇博客】
  5. 原创专栏:谈谈我对评分模型的理解
  6. seL4操作系统基础02:从Hello World开始
  7. Java中@WebServlet的使用方法
  8. 实验3-2 计算符号函数的值 (10 分)
  9. java 文件递归_java 递归,打印文件夹下所有的文件
  10. linux可运行的steam游戏吗,Steam现在可以在Linux上玩仅Windows游戏
  11. 基础的强化学习(RL)算法及代码详细demo
  12. 学习微信小程序开发框架之了解JavaScript
  13. 《信号与系统学习笔记》—线性时不变系统(一)
  14. 你不知道的原生js广播频道接口
  15. WebRTC禁用NACK
  16. 批处理文件*.bat打开后闪退的处理方法
  17. 利用python计算fasta文件中ATGC的含量
  18. 微信小程序封装echarts组件
  19. Opencv中Mat类详细解读(学习笔记)
  20. 华为OD机试真题 Python 实现【统一限载最小值】【2023 Q1 | 200分】

热门文章

  1. c语言综合程序设计问答题,C语言程序设计综合习题题目.doc
  2. python输入水果求个数问题_水果爱好者:用Python解决一个简单的分类问题
  3. java调用第三方dll文件 源码_C++调用python文件(包含第三方库)
  4. 三十七、Redis和MongoDB基本语法
  5. 十四、深入Python条件和循坏
  6. android跑步软件,手机跑步软件哪个好_安卓手机跑步记录软件_手机跑步app【最新】-太平洋电脑网...
  7. ICML 2021 | Option-GAI: 机器人任务太长太复杂?不妨试试层次化模仿学习
  8. CS这么难申,小哥哥你怎么拿到全美最高额度奖学金的?
  9. 直播 | 平安人寿资深算法工程师谢舒翼:智能问答系统探索与实践
  10. Java静态方法调用非静态方法