android如何改变默认横竖屏方向

如何改变android默认的横竖屏,修改源码一个地方就可以了。


 public int rotationForOrientationLw(int orientation, int lastRotation,
            boolean displayEnabled) {

        if (mPortraitRotation < 0) {
            // Initialize the rotation angles for each orientation once.
            Display d = ((WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE))
                    .getDefaultDisplay();
            if (d.getWidth() > d.getHeight()) {
                mPortraitRotation = Surface.ROTATION_90;
                mLandscapeRotation = Surface.ROTATION_0;
                mUpsideDownRotation = Surface.ROTATION_270;
                mSeascapeRotation = Surface.ROTATION_180;
            } else {
                mPortraitRotation = Surface.ROTATION_0;
                mLandscapeRotation = Surface.ROTATION_90;
                mUpsideDownRotation = Surface.ROTATION_180;
                mSeascapeRotation = Surface.ROTATION_270;
            }
        }

		{
			Log.i(TAG, "MediaPlayer.is not PlayingVideo");
	        synchronized (mLock) {
	            switch (orientation) {
	                case ActivityInfo.SCREEN_ORIENTATION_PORTRAIT:
	                    //always return portrait if orientation set to portrait
	                    //return mPortraitRotation;
	                    return mUpsideDownRotation;
	                case ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE:
	                    //always return landscape if orientation set to landscape
	                    return mLandscapeRotation;
	                case ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT:
	                    //always return portrait if orientation set to portrait
	                    //return mUpsideDownRotation;
						return mPortraitRotation;
	                case ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE:
	                    //always return seascape if orientation set to reverse landscape
	                    return mSeascapeRotation;
	                case ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE:
	                    //return either landscape rotation based on the sensor
	                    mOrientationListener.setAllow180Rotation(
	                            isLandscapeOrSeascape(Surface.ROTATION_180));
	                    return getCurrentLandscapeRotation(lastRotation);
	                case ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT:
	                    mOrientationListener.setAllow180Rotation(
	                            !isLandscapeOrSeascape(Surface.ROTATION_180));
	                    return getCurrentPortraitRotation(lastRotation);
	            }

	            mOrientationListener.setAllow180Rotation(
                    orientation == ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR
                    || orientation == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);

	            // case for nosensor meaning ignore sensor and consider only lid
	            // or orientation sensor disabled
	            //or case.unspecified
	            if (mLidOpen) {
	                return mLidOpenRotation;
	            } else if (mDockMode == Intent.EXTRA_DOCK_STATE_CAR && mCarDockRotation >= 0) {
	                return mCarDockRotation;
	            } else if (mDockMode == Intent.EXTRA_DOCK_STATE_DESK && mDeskDockRotation >= 0) {
	                return mDeskDockRotation;
	            } else {
	                if (useSensorForOrientationLp(orientation)) {
	                    return mOrientationListener.getCurrentRotation(lastRotation);
	                }
	                return Surface.ROTATION_0;
	            }
	        }
	}
    }

修改上面倒数一行代码把return Surface.ROTATION_0改为你要的方向,记得这个要和上面的匹配,宽高不同,Surface.ROTATION_0也不同。因为代码开头就有

        if (mPortraitRotation < 0) {
            // Initialize the rotation angles for each orientation once.
            Display d = ((WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE))
                    .getDefaultDisplay();
            if (d.getWidth() > d.getHeight()) {
                mPortraitRotation = Surface.ROTATION_90;
                mLandscapeRotation = Surface.ROTATION_0;
                mUpsideDownRotation = Surface.ROTATION_270;
                mSeascapeRotation = Surface.ROTATION_180;
            } else {
                mPortraitRotation = Surface.ROTATION_0;
                mLandscapeRotation = Surface.ROTATION_90;
                mUpsideDownRotation = Surface.ROTATION_180;
                mSeascapeRotation = Surface.ROTATION_270;
            }
        }





你可能感兴趣的:(android,service,each)