Android 监听手机GPS打开状态实现代码

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 {    @Override    public 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 ;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    gps_presenter = new GPS_Presenter( this , this ) ;  }  @Override  protected void onDestroy() {    super.onDestroy();    //释放资源    if ( gps_presenter != null ){      gps_presenter.onDestroy();    }  }  @Override  public void gpsSwitchState(boolean gpsOpen) {    if ( gpsOpen ){      Toast.makeText(this, " 手机GPS 打开", Toast.LENGTH_SHORT).show();    }else {      Toast.makeText(this, " 手机GPS 关闭", Toast.LENGTH_SHORT).show();    }  }}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

更多相关文章

  1. Android手机分辨率问题
  2. android 获取局域网内其他手机的ip
  3. Google 推出「Android Beam」基于 NFC 技术的手机分享应用(影片)
  4. 基于Android的淘宝网手机客户端开发见解(配完整视频教程讲解)
  5. Android - 利用Android studio + Android Killer工具在手机未ROO
  6. Android精品资源汇总,10个源码(持续更新)
  7. 【高明鑫】014 android之 资源管理详解
  8. 调查:Android手机用户75%集中在北美

随机推荐

  1. android > 建立WIFI 热点
  2. android 输入法的使用
  3. Android(安卓)启动Tomcat服务报错,端口占
  4. android framework在launcher中隐藏指定a
  5. android 自带图标介绍
  6. android 判断是否有可用网络
  7. Android(安卓)SQLiteDatabase的使用
  8. Android弹出式提示框 PopupWindow
  9. Android漂亮的Help提示框
  10. android 仿写 screen lock