自学内容网 自学内容网

Android 通过接收广播int值来控制GPS开关

/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

//*/add gps control
import android.location.LocationManager;
//*/

  //*/add gps control
    int currentMode;
    //*/

     IntentFilter filter = new IntentFilter();
        filter.addAction(UiModeManager.ACTION_ENTER_CAR_MODE);
        filter.addAction(UiModeManager.ACTION_EXIT_CAR_MODE);
        filter.addAction(UiModeManager.ACTION_ENTER_DESK_MODE);
        filter.addAction(UiModeManager.ACTION_EXIT_DESK_MODE);
        filter.addAction(Intent.ACTION_DOCK_EVENT);
        filter.addAction("sys.gps.switch");//*/add gps
        Intent intent = context.registerReceiver(mDockReceiver, filter);

  BroadcastReceiver mDockReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (Intent.ACTION_DOCK_EVENT.equals(intent.getAction())) {
                mDockMode = intent.getIntExtra(Intent.EXTRA_DOCK_STATE,
                        Intent.EXTRA_DOCK_STATE_UNDOCKED);
            } else {
                try {
                    IUiModeManager uiModeService = IUiModeManager.Stub.asInterface(
                            ServiceManager.getService(Context.UI_MODE_SERVICE));
                    mUiMode = uiModeService.getCurrentModeType();
                } catch (RemoteException e) {
                }
            }
            updateRotation(true);
            synchronized (mLock) {
                updateOrientationListenerLp();
            }
            //*/add gps
            if (intent.getAction().equals("sys.gps.switch")) {
                int mydata =  intent.getIntExtra("gpsSwitch", 0);//1 open 2 close
                   currentMode = Settings.Secure.getInt(mContext.getContentResolver(), Settings.Secure.LOCATION_MODE,Settings.Secure.LOCATION_MODE_OFF);
                   if (mydata == 1) {

                        Intent intent2 = new Intent("com.android.settings.location.MODE_CHANGING");
                        intent2.putExtra("CURRENT_MODE", currentMode);
                        intent2.putExtra("NEW_MODE",

Settings.Secure.LOCATION_MODE_SENSORS_ONLY);
                        mContext.sendBroadcast(intent2, android.Manifest.permission.WRITE_SECURE_SETTINGS);
             Settings.Secure.setLocationProviderEnabled(mContext.getContentResolver(), LocationManager.GPS_PROVIDER,true);            Settings.Secure.putInt(mContext.getContentResolver(),Settings.Secure.LOCATION_MODE,Settings.Secure.LOCATION_MODE_SENSORS_ONLY);
                        Log.e("GPS","=====LOCATION_MODE_ON=====");
                   } else {
                        Intent intent2 = new Intent("android.location.MODE_CHANGED");
                        intent2.putExtra("CURRENT_MODE", Settings.Secure.LOCATION_MODE_SENSORS_ONLY);
                        intent2.putExtra("NEW_MODE", Settings.Secure.LOCATION_MODE_OFF);
                        mContext.sendBroadcast(intent2, android.Manifest.permission.WRITE_SECURE_SETTINGS);
                        Settings.Secure.setLocationProviderEnabled(mContext.getContentResolver(), LocationManager.GPS_PROVIDER,false);
                        Settings.System.putInt(mContext.getContentResolver(), Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_OFF);
                        Log.e("GPS","=====LOCATION_MODE_OFF=====");
                   }

            }
            //*/

        }
    };


原文地址:https://blog.csdn.net/qq_46687516/article/details/140698843

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!