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(); } } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
本文向大家介绍Android 监听WiFi的开关状态实现代码,包括了Android 监听WiFi的开关状态实现代码的使用技巧和注意事项,需要的朋友参考一下 Android 监听WiFi的开关状态实现代码 WifiSwitch_Presenter 源码: WifiSwitch_Interface 源码 使用方式 MainActivity : 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
本文向大家介绍Android中监听软键盘显示状态实现代码,包括了Android中监听软键盘显示状态实现代码的使用技巧和注意事项,需要的朋友参考一下
本文向大家介绍Android BroadcastReceiver实现网络状态实时监听,包括了Android BroadcastReceiver实现网络状态实时监听的使用技巧和注意事项,需要的朋友参考一下 前言:最近公司项目重构,为了提高用户的体验,项目中要求添加当前网络状态的实时监听,以便在无网络状态时给用户友好的提醒并修改UI界面。本文将介绍使用四大组件之一的BroadcastReceiver实
本文向大家介绍iOS CoreTelephony 实现监听通话状态,包括了iOS CoreTelephony 实现监听通话状态的使用技巧和注意事项,需要的朋友参考一下 在程序中如果需要监听电话状态,可以引入CoreTelephony框架,这个框架包含了电话相关的API,可以实现监测来电,查看运营商信息等功能。下面就是具体的实现监测来电的代码。一定要把center写成一个单独的属性,并且是强引用(s
本文向大家介绍Android 广播监听网络状态详解及实例代码,包括了Android 广播监听网络状态详解及实例代码的使用技巧和注意事项,需要的朋友参考一下 Android 广播监听网络状态 我们在做多线程下载的时候,或者是在加载h5界面的时候,常常会遇到网络状态不好或者断网的时候,在这或者当我们的应用程序启动没有退出的时候,我们就需要对网络状态监听加以判断。 这时候,我们一般情况下,两种方式进行处
本文向大家介绍Android广播接实现监听电话状态(电话的状态,拦截),包括了Android广播接实现监听电话状态(电话的状态,拦截)的使用技巧和注意事项,需要的朋友参考一下 首先我们来理解下监听器的机制。 Android的事件处理机制有两种:监听和回调。 A基于监听的事件处理 主要涉及三类对象:EventSource(事件源),Event(事件),EventListener(事件监听器) 监听机