具体怎么使用视频播放屏幕的感重力切换横竖屏

之前 , 只是介绍了一些代码去实现视频播放的平复翻转这一功能!可以随你意进行屏幕的翻转,满足用户的需求。但是,当你真的去做一个像的时候,会有问题出现的哦!那到底是什么问题呢?待我。。娓娓道来!

是酱汁的,我在使用视频播放的时候会有点击屏幕切换的按钮来进行屏幕横竖屏的切换播放,当然我还有使用翻转屏幕通过感重力来自动的切换屏幕的横竖屏。那么,问题就出现了,点击按钮和感重力~~~会出现冲突!而冲突是这样子的:当前我将手机处于横屏(竖屏),然后此时的我想通过点击按钮来切换屏幕的方向。那么,你会遇到 我点击按钮来切换屏幕不起作用了!!!原因是,手机处于横屏的时候,此时的感重力命令是一直让手机处于横屏的,虽然你有通过点击按钮切换屏幕方向的命令。但是,感重力命令一直在执行并掩盖了按钮的命令。使的按钮的操作没什么用了。

/** OrientationSensorListener.java 类中     */
public void onSensorChanged(SensorEvent event) {

		float[] values = event.values;
        int orientation = ORIENTATION_UNKNOWN;
        float X = -values[_DATA_X];
        float Y = -values[_DATA_Y];
        float Z = -values[_DATA_Z];
        float magnitude = X * X + Y * Y;
        // Don't trust the angle if the magnitude is small compared to the y value
        if (magnitude * 4 >= Z * Z) {
            float OneEightyOverPi = 57.29577957855f;
            float angle = (float)Math.atan2(-Y, X) * OneEightyOverPi;
            orientation = 90 - (int)Math.round(angle);
            // normalize to 0 - 359 range
            if (orientation >= 360) {
                orientation -= 360;
            }
            if (orientation < 0) {
                orientation += 360;
            }
        }

        if(isClickFullScreenButton){

        	//竖屏
        	if(isLandscape && (((orientation > 315 && orientation <= 360) || (orientation >= 0 && orientation <= 45))
        			|| (orientation > 135 && orientation <= 225)) ){

        		isLandscape = false;
        		isClickFullScreenButton = false;
        		isSennor = true;
        	} 

        	//横屏
        	if(!isLandscape &&  ((orientation > 45 && orientation <= 135) || (orientation > 225 && orientation <= 315))){

        		isLandscape = true;
        		isClickFullScreenButton = false;
        		isSennor = true;
        	}

        }

        if(!isSennor){//判断是否要进行中断信息传递
			return ;
		}

        if (rotateHandler!=null) {
			rotateHandler.obtainMessage(888, orientation, 0).sendToTarget();
		}

	}

	/** 点击屏幕切换按钮的时候 同时调用该方法 : 中断Handler信息传递     */
	public  void setIsSennor(){

		isSennor = false;
	}
	/** 点击屏幕切换按钮的时候 同时调用该方法 : 确认此时屏幕的方向    */
	public  void setIsLandscape(boolean bool){

		isLandscape = bool;
	}
	/** 点击屏幕切换按钮的时候 同时调用该方法 :设置按钮是否已被点击      */
	public  void setButtonFullScreenClicked(){

		isClickFullScreenButton = true;
	}

那么,我们就这么来解决(思路):

感重力当被注册过之后,感重力的方法就会一直监听着并传递信息释放命令。其实就像是人体神经通过神经中枢来进行传递信息一样传递信息释放命令。那么,我们就下点药中断信息的传输并在此做点手脚就好了。

第一步:当你点击切换按钮的时候,发布信息到感重力说,此时你要中断信息的传输。

第二步:当你点击切换按钮的时候,发布信息到感重力说,我已经点击了屏幕的切换按钮。

第三步:当你点击切换按钮的时候,进行了第一步之后,还要告诉感重力说,此时屏幕所处于的状态:横屏或竖屏状态。

然后,由上面的代码来看。按照代码的读取方向讲,在onSensorChanged方法中。当用户点击按钮来切换了屏幕,而没有翻转屏幕的时候,程序读到 if(!isSennor) 的时候就会中断!感重力不起作用并完全由按钮的命令来控制屏幕翻转。而当用户翻转过来屏幕之后,程序一直进行读下去不会被中断并实现感重力的被激活。代码中当遇到 boolean变量(isClickFullScreenButton)时候继续向其方法中走读。然后会看到两个判断分别是横屏和竖屏状态,这个是按钮被点击时候的屏幕状态,假设是横屏。(此时用户翻转了屏幕)这时候就会设置状态值,因此也就激活了感重力(isSennor)使得程序会一直保持信息的传递,即是激活了感重力切换屏幕功能。

从而实现了,假设~横屏~状态下:用户通过点击按钮能够切换屏幕的竖屏状态,并一直保持下去。直到用户翻转屏幕到竖屏,并由此激活了感重力状态。由此用户又能够随意通过感重力翻转屏幕来切换横竖屏!

时间: 2024-08-26 16:27:45

具体怎么使用视频播放屏幕的感重力切换横竖屏的相关文章

重力感应 横竖屏切换

1,去掉StatusBar 在info.plist添加UIStatusBarHidden设置Boolean,设置为YES. 2,横屏 继续在info.list中添加UIInterfaceOrientation 设置UIInterfaceOrientationLandscapeRight xcode 4.3.2中为Inital interface orientation  设置为Landscape (right home button) 当然你输入上面的,xcode也会为你纠正,所以两种都可以!

重力感应 视频横竖屏切换

public class ScreenSwitchUtils { private static final String TAG = ScreenSwitchUtils.class.getSimpleName(); private volatile static ScreenSwitchUtils mInstance; private Activity mActivity; // 是否是竖屏 private boolean isPortrait = true; private SensorMan

Android-用重力传感器做横竖屏切换

在播放视频的时候,可能要做横竖屏的切换,但是,用户可以设置自己的手机关掉屏幕旋转,这个时候就需要想其他的办法了,比如:重力传感器. public class ScreenSwitchUtils { private static final String TAG = ScreenSwitchUtils.class.getSimpleName(); private volatile static ScreenSwitchUtils mInstance; private Activity mActiv

New UI-获取手机屏幕尺寸与分辨率,屏幕适配,横竖屏问题

New UI-获取手机屏幕尺寸与常用分辨率,屏幕适配,横竖屏问题 --转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途! 小猪Android开发交流群已建立,欢迎大家加入,无论是新手,菜鸟,大神都可以,小猪一个人的 力量毕竟是有限的,写出来的东西肯定会有很多纰漏不足,欢迎大家指出,集思广益,让小猪的博文 更加的详尽,帮到更多的人,O(∩_∩)O谢谢! 小猪Android开发交流群:小猪Android开发交流群群号:421858269 新Android UI实例大全目录:http:/

屏幕方向 横竖屏切换

屏幕方向的控制 屏幕方向是对Activity而言的,你可以在AndroidManifest.xml 文件中,通过activity的android:screenOrientation属性进行设定.在此配置的值会反映在Activity的getRequestedOrientation()方法的返回值中,与之对应的setRequestedOrientation()方法可以动态改变该属性的值. 另外, 还可以通过Configuration对象来取得Activity当前的显示方向 取值: unspecifi

IOS强制屏幕横竖屏相互切换

最近项目要做一个html5电子协议,里面涉及到签名,竖屏签名不够,所以需要把屏幕切换到横屏,签完字后把签字内容返回到竖屏中的方框内,由于项目不上AppStore,只用企业证书打包,所以使用下面方式来实现横竖屏切换功能. bool isPortrait = true; - (IBAction)changeOri:(id)sender { if (isPortrait) { if ([[UIDevice currentDevice] respondsToSelector:@selector(setO

U3D外包公司—北京动点(公司性质)承接U3D、Kinect、VR虚拟现实,增强现实,体感互动,大屏互动等各类外包

unity3d外包就找动点软件承接虚拟现实项目外包 承接U3D.Kinect.VR虚拟现实,增强现实,体感互动,大屏互动等各类外包 联系请加QQ:372900288 联系电话:13911652504 我们制作各类型严肃游戏,虚拟现实,增强现实项目! 品质保证,售后完备. 我们团队成立于2011年10月,是一个专业从事严肃游戏研发的团队,主做:Unity3D外包.VR虚拟现实外包.AR增强现实外包 .3DSMAX.MAYA建模外包.大屏互动外包.体感互动外包. 我们能为您提供的服务 一.项目负责

关于IOS屏幕旋转的几个问题1.常规设置2.个别页面强制固定横竖屏

1.常规设置屏幕旋转  (Device Orientation || info.plist-----这两个地方的设置是同步的) 1)targets->General->Deployment Info->Device Orientation  直接勾选想要的设备定位全局属性 2)Supporting Files->Info.plist->Supported interface orientations 增删属性值 2.个别页面强制横竖屏 新建一个NavigationContro

使所有页面都屏幕不能旋转(始终竖屏)

是不是很想有一种方法,使写一次代码,就可以使所有的页面屏幕都在不旋转(即在屏幕转的时候,字幕并不会改变) 首先上下结构图: 上代码: #import "AppDelegate.h" #import "RootViewController.h" @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDic