当前位置: 移动技术网 > IT编程>移动开发>Android > Android 监听手机GPS打开状态实现代码

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

兰陵缭乱第二部,珠海国际人才网,2013新歌排行榜

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();
    }
  }
}

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网