android.content.Intent#EXTRA_DOCK_STATE_UNDOCKED源码实例Demo

下面列出了android.content.Intent#EXTRA_DOCK_STATE_UNDOCKED 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: Wrox-ProfessionalAndroid-4E   文件: MyActivity.java
private void listing6_19() {
  // Listing 6-19: Determining docking state
  boolean isDocked = false;
  boolean isCar = false;
  boolean isDesk = false;

  IntentFilter dockIntentFilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);

  Intent dock = registerReceiver(null, dockIntentFilter);

  if (dock != null) {
    int dockState = dock.getIntExtra(Intent.EXTRA_DOCK_STATE,
      Intent.EXTRA_DOCK_STATE_UNDOCKED);

    isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;
    isCar = dockState == Intent.EXTRA_DOCK_STATE_CAR;
    isDesk = dockState == Intent.EXTRA_DOCK_STATE_DESK ||
               dockState == Intent.EXTRA_DOCK_STATE_LE_DESK ||
               dockState == Intent.EXTRA_DOCK_STATE_HE_DESK;
  }
}
 
源代码2 项目: android_9.0.0_r45   文件: DockObserver.java
@Override
public void onBootPhase(int phase) {
    if (phase == PHASE_ACTIVITY_MANAGER_READY) {
        synchronized (mLock) {
            mSystemReady = true;

            // don't bother broadcasting undocked here
            if (mReportedDockState != Intent.EXTRA_DOCK_STATE_UNDOCKED) {
                updateLocked();
            }
        }
    }
}
 
源代码3 项目: habpanelviewer   文件: DockingStateMonitor.java
@Override
public synchronized void updateFromPreferences(SharedPreferences prefs) {
    mDockStateItem = prefs.getString(Constants.PREF_DOCKING_STATE_ITEM, "");

    if (mDockStateEnabled != prefs.getBoolean(Constants.PREF_DOCKING_STATE_ENABLED, false)) {
        mDockStateEnabled = !mDockStateEnabled;

        if (mDockStateEnabled) {
            Log.d(TAG, "registering docking state receiver...");
            mCtx.registerReceiver(mDockStateReceiver, mIntentFilter);

            Intent dockStatus = mCtx.registerReceiver(null, mIntentFilter);
            Log.d(TAG, "updateFromPreferences: dockStatus=" + dockStatus);

            int dockState = (dockStatus == null ? Intent.EXTRA_DOCK_STATE_UNDOCKED :
                    dockStatus.getIntExtra(Intent.EXTRA_DOCK_STATE, -1));
            Log.d(TAG, "updateFromPreferences: dockState=" + dockStatus);

            mDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;
            mServerConnection.updateState(mDockStateItem, mDocked ? "CLOSED" : "OPEN");
        } else {
            Log.d(TAG, "unregistering docking state receiver...");
            mCtx.unregisterReceiver(mDockStateReceiver);
        }
    }

    mServerConnection.subscribeItems(this, mDockStateItem);
}
 
源代码4 项目: android_9.0.0_r45   文件: DockObserver.java
private void handleDockStateChange() {
    synchronized (mLock) {
        Slog.i(TAG, "Dock state changed from " + mPreviousDockState + " to "
                + mReportedDockState);
        final int previousDockState = mPreviousDockState;
        mPreviousDockState = mReportedDockState;

        // Skip the dock intent if not yet provisioned.
        final ContentResolver cr = getContext().getContentResolver();
        if (Settings.Global.getInt(cr,
                Settings.Global.DEVICE_PROVISIONED, 0) == 0) {
            Slog.i(TAG, "Device not provisioned, skipping dock broadcast");
            return;
        }

        // Pack up the values and broadcast them to everyone
        Intent intent = new Intent(Intent.ACTION_DOCK_EVENT);
        intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING);
        intent.putExtra(Intent.EXTRA_DOCK_STATE, mReportedDockState);

        boolean dockSoundsEnabled = Settings.Global.getInt(cr,
                Settings.Global.DOCK_SOUNDS_ENABLED, 1) == 1;
        boolean dockSoundsEnabledWhenAccessibility = Settings.Global.getInt(cr,
                Settings.Global.DOCK_SOUNDS_ENABLED_WHEN_ACCESSIBILITY, 1) == 1;
        boolean accessibilityEnabled = Settings.Secure.getInt(cr,
                Settings.Secure.ACCESSIBILITY_ENABLED, 0) == 1;

        // Play a sound to provide feedback to confirm dock connection.
        // Particularly useful for flaky contact pins...
        if ((dockSoundsEnabled) ||
               (accessibilityEnabled && dockSoundsEnabledWhenAccessibility)) {
            String whichSound = null;
            if (mReportedDockState == Intent.EXTRA_DOCK_STATE_UNDOCKED) {
                if ((previousDockState == Intent.EXTRA_DOCK_STATE_DESK) ||
                    (previousDockState == Intent.EXTRA_DOCK_STATE_LE_DESK) ||
                    (previousDockState == Intent.EXTRA_DOCK_STATE_HE_DESK)) {
                    whichSound = Settings.Global.DESK_UNDOCK_SOUND;
                } else if (previousDockState == Intent.EXTRA_DOCK_STATE_CAR) {
                    whichSound = Settings.Global.CAR_UNDOCK_SOUND;
                }
            } else {
                if ((mReportedDockState == Intent.EXTRA_DOCK_STATE_DESK) ||
                    (mReportedDockState == Intent.EXTRA_DOCK_STATE_LE_DESK) ||
                    (mReportedDockState == Intent.EXTRA_DOCK_STATE_HE_DESK)) {
                    whichSound = Settings.Global.DESK_DOCK_SOUND;
                } else if (mReportedDockState == Intent.EXTRA_DOCK_STATE_CAR) {
                    whichSound = Settings.Global.CAR_DOCK_SOUND;
                }
            }

            if (whichSound != null) {
                final String soundPath = Settings.Global.getString(cr, whichSound);
                if (soundPath != null) {
                    final Uri soundUri = Uri.parse("file://" + soundPath);
                    if (soundUri != null) {
                        final Ringtone sfx = RingtoneManager.getRingtone(
                                getContext(), soundUri);
                        if (sfx != null) {
                            sfx.setStreamType(AudioManager.STREAM_SYSTEM);
                            sfx.play();
                        }
                    }
                }
            }
        }

        // Send the dock event intent.
        // There are many components in the system watching for this so as to
        // adjust audio routing, screen orientation, etc.
        getContext().sendStickyBroadcastAsUser(intent, UserHandle.ALL);
    }
}
 
源代码5 项目: android_9.0.0_r45   文件: PowerManagerService.java
/**
 * Returns true if the device should automatically nap and start dreaming when the user
 * activity timeout has expired and it's bedtime.
 */
private boolean shouldNapAtBedTimeLocked() {
    return mDreamsActivateOnSleepSetting
            || (mDreamsActivateOnDockSetting
                    && mDockState != Intent.EXTRA_DOCK_STATE_UNDOCKED);
}
 
源代码6 项目: android_9.0.0_r45   文件: UiModeManagerService.java
void updateLocked(int enableFlags, int disableFlags) {
    String action = null;
    String oldAction = null;
    if (mLastBroadcastState == Intent.EXTRA_DOCK_STATE_CAR) {
        adjustStatusBarCarModeLocked();
        oldAction = UiModeManager.ACTION_EXIT_CAR_MODE;
    } else if (isDeskDockState(mLastBroadcastState)) {
        oldAction = UiModeManager.ACTION_EXIT_DESK_MODE;
    }

    if (mCarModeEnabled) {
        if (mLastBroadcastState != Intent.EXTRA_DOCK_STATE_CAR) {
            adjustStatusBarCarModeLocked();
            if (oldAction != null) {
                sendForegroundBroadcastToAllUsers(oldAction);
            }
            mLastBroadcastState = Intent.EXTRA_DOCK_STATE_CAR;
            action = UiModeManager.ACTION_ENTER_CAR_MODE;
        }
    } else if (isDeskDockState(mDockState)) {
        if (!isDeskDockState(mLastBroadcastState)) {
            if (oldAction != null) {
                sendForegroundBroadcastToAllUsers(oldAction);
            }
            mLastBroadcastState = mDockState;
            action = UiModeManager.ACTION_ENTER_DESK_MODE;
        }
    } else {
        mLastBroadcastState = Intent.EXTRA_DOCK_STATE_UNDOCKED;
        action = oldAction;
    }

    if (action != null) {
        if (LOG) {
            Slog.v(TAG, String.format(
                "updateLocked: preparing broadcast: action=%s enable=0x%08x disable=0x%08x",
                action, enableFlags, disableFlags));
        }

        // Send the ordered broadcast; the result receiver will receive after all
        // broadcasts have been sent. If any broadcast receiver changes the result
        // code from the initial value of RESULT_OK, then the result receiver will
        // not launch the corresponding dock application. This gives apps a chance
        // to override the behavior and stay in their app even when the device is
        // placed into a dock.
        Intent intent = new Intent(action);
        intent.putExtra("enableFlags", enableFlags);
        intent.putExtra("disableFlags", disableFlags);
        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
        getContext().sendOrderedBroadcastAsUser(intent, UserHandle.CURRENT, null,
                mResultReceiver, null, Activity.RESULT_OK, null, null);

        // Attempting to make this transition a little more clean, we are going
        // to hold off on doing a configuration change until we have finished
        // the broadcast and started the home activity.
        mHoldingConfiguration = true;
        updateConfigurationLocked();
    } else {
        String category = null;
        if (mCarModeEnabled) {
            if (mEnableCarDockLaunch
                    && (enableFlags & UiModeManager.ENABLE_CAR_MODE_GO_CAR_HOME) != 0) {
                category = Intent.CATEGORY_CAR_DOCK;
            }
        } else if (isDeskDockState(mDockState)) {
            if (ENABLE_LAUNCH_DESK_DOCK_APP
                    && (enableFlags & UiModeManager.ENABLE_CAR_MODE_GO_CAR_HOME) != 0) {
                category = Intent.CATEGORY_DESK_DOCK;
            }
        } else {
            if ((disableFlags & UiModeManager.DISABLE_CAR_MODE_GO_HOME) != 0) {
                category = Intent.CATEGORY_HOME;
            }
        }

        if (LOG) {
            Slog.v(TAG, "updateLocked: null action, mDockState="
                    + mDockState +", category=" + category);
        }

        sendConfigurationAndStartDreamOrDockAppLocked(category);
    }

    // keep screen on when charging and in car mode
    boolean keepScreenOn = mCharging &&
            ((mCarModeEnabled && mCarModeKeepsScreenOn &&
              (mCarModeEnableFlags & UiModeManager.ENABLE_CAR_MODE_ALLOW_SLEEP) == 0) ||
             (mCurUiMode == Configuration.UI_MODE_TYPE_DESK && mDeskModeKeepsScreenOn));
    if (keepScreenOn != mWakeLock.isHeld()) {
        if (keepScreenOn) {
            mWakeLock.acquire();
        } else {
            mWakeLock.release();
        }
    }
}
 
void doHandleEvent(EventsHandler eventsHandler/*, boolean forRestartEvents*/) {
    if (_enabled) {
        int oldSensorPassed = getSensorPassed();
        if (Event.isEventPreferenceAllowed(EventPreferencesPeripherals.PREF_EVENT_PERIPHERAL_ENABLED, eventsHandler.context).allowed == PreferenceAllowed.PREFERENCE_ALLOWED) {
            if ((_peripheralType == EventPreferencesPeripherals.PERIPHERAL_TYPE_DESK_DOCK) ||
                    (_peripheralType == EventPreferencesPeripherals.PERIPHERAL_TYPE_CAR_DOCK)) {
                // get dock status
                IntentFilter iFilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
                Intent dockStatus = eventsHandler.context.registerReceiver(null, iFilter);

                if (dockStatus != null) {
                    int dockState = dockStatus.getIntExtra(Intent.EXTRA_DOCK_STATE, -1);
                    boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;
                    boolean isCar = dockState == Intent.EXTRA_DOCK_STATE_CAR;
                    boolean isDesk = dockState == Intent.EXTRA_DOCK_STATE_DESK ||
                            dockState == Intent.EXTRA_DOCK_STATE_LE_DESK ||
                            dockState == Intent.EXTRA_DOCK_STATE_HE_DESK;

                    if (isDocked) {
                        if ((_peripheralType == EventPreferencesPeripherals.PERIPHERAL_TYPE_DESK_DOCK)
                                && isDesk)
                            eventsHandler.peripheralPassed = true;
                        else
                            eventsHandler.peripheralPassed = (_peripheralType == EventPreferencesPeripherals.PERIPHERAL_TYPE_CAR_DOCK)
                                    && isCar;
                    } else
                        eventsHandler.peripheralPassed = false;
                    //eventStart = eventStart && peripheralPassed;
                } else
                    eventsHandler.notAllowedPeripheral = true;
            } else if ((_peripheralType == EventPreferencesPeripherals.PERIPHERAL_TYPE_WIRED_HEADSET) ||
                    (_peripheralType == EventPreferencesPeripherals.PERIPHERAL_TYPE_BLUETOOTH_HEADSET) ||
                    (_peripheralType == EventPreferencesPeripherals.PERIPHERAL_TYPE_HEADPHONES)) {
                boolean wiredHeadsetConnected = ApplicationPreferences.prefWiredHeadsetConnected;
                boolean wiredHeadsetMicrophone = ApplicationPreferences.prefWiredHeadsetMicrophone;
                boolean bluetoothHeadsetConnected = ApplicationPreferences.prefBluetoothHeadsetConnected;
                boolean bluetoothHeadsetMicrophone = ApplicationPreferences.prefBluetoothHeadsetMicrophone;

                eventsHandler.peripheralPassed = false;
                if (wiredHeadsetConnected) {
                    if ((_peripheralType == EventPreferencesPeripherals.PERIPHERAL_TYPE_WIRED_HEADSET)
                            && wiredHeadsetMicrophone)
                        eventsHandler.peripheralPassed = true;
                    else
                    if ((_peripheralType == EventPreferencesPeripherals.PERIPHERAL_TYPE_HEADPHONES)
                            && (!wiredHeadsetMicrophone))
                        eventsHandler.peripheralPassed = true;
                }
                if (bluetoothHeadsetConnected) {
                    if ((_peripheralType == EventPreferencesPeripherals.PERIPHERAL_TYPE_BLUETOOTH_HEADSET)
                            && bluetoothHeadsetMicrophone)
                        eventsHandler.peripheralPassed = true;
                }
                //eventStart = eventStart && peripheralPassed;
            }

            if (!eventsHandler.notAllowedPeripheral) {
                if (eventsHandler.peripheralPassed)
                    setSensorPassed(EventPreferences.SENSOR_PASSED_PASSED);
                else
                    setSensorPassed(EventPreferences.SENSOR_PASSED_NOT_PASSED);
            }
        } else
            eventsHandler.notAllowedPeripheral = true;
        int newSensorPassed = getSensorPassed() & (~EventPreferences.SENSOR_PASSED_WAITING);
        if (oldSensorPassed != newSensorPassed) {
            //PPApplication.logE("[TEST BATTERY] EventPreferencesPeripherals.doHandleEvent", "peripherals - sensor pass changed");
            setSensorPassed(newSensorPassed);
            DatabaseHandler.getInstance(eventsHandler.context).updateEventSensorPassed(_event, DatabaseHandler.ETYPE_PERIPHERAL);
        }
    }
}
 
源代码8 项目: screenstandby   文件: DockReceiver.java
@Override
  public void onReceive(Context context, Intent intent) {
Logger.Log(context, intent);
  	SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
  	Boolean useDock = prefs.getBoolean("dockdetection", false);
  	launchPackage = prefs.getString("dockrunpackage", "");
  	killPackage = prefs.getBoolean("dockrun_close", false);
  	Boolean screenOff = false;
  	
  	if (useDock)
  	{
  		int state = intent.getIntExtra(Intent.EXTRA_DOCK_STATE, Intent.EXTRA_DOCK_STATE_UNDOCKED);
  		//if (state != Intent.EXTRA_DOCK_STATE_UNDOCKED)
  		//{
   		if (prefs.getBoolean("dockatrix", false))
   		{
   			if (getDeviceState("whisper_hid").equals("1") && 
   				getDeviceState("smartdock").equals("1"))
   			{
   				String docktype = getDeviceState("extdock");
   				if (docktype.equals("3")) //LAPDOCK
   				{
   					if (prefs.getBoolean("dockatrix_lapdock", true)) {
   						ScreenOff(context);
   						Toast.makeText(context, "Atrix Lapdock detected", Toast.LENGTH_SHORT).show();
   					}
   				}
   				else if (docktype.equals("4")) //HD DOCK
   				{
   					if (prefs.getBoolean("dockatrix_hddock", true)) {
   						ScreenOff(context);
   						Toast.makeText(context, "Atrix HD dock detected", Toast.LENGTH_SHORT).show();
   					}
   				}
   			}
   			else
   				ScreenOn(context);
   			return;
   		}
  		//}
  		
  		switch (state)
  		{
  			case Intent.EXTRA_DOCK_STATE_CAR:
  				screenOff = prefs.getBoolean("dockcar", true);
  				break;
  			case Intent.EXTRA_DOCK_STATE_DESK:
  				screenOff = prefs.getBoolean("dockdesk", true);
  				break;
  			case Intent.EXTRA_DOCK_STATE_HE_DESK:
  				screenOff = prefs.getBoolean("dockanalog", true);
  				break;
  			case Intent.EXTRA_DOCK_STATE_LE_DESK:
  				screenOff = prefs.getBoolean("dockdigital", true);
  				break;
  			case Intent.EXTRA_DOCK_STATE_UNDOCKED:
  				if (prefs.getBoolean("dockremoval", true)) ScreenOn(context);
  				return;
  		}
  		if (screenOff)
  			ScreenOff(context);
  	}
  }
 
 方法所在类
 同类方法