使用webview播放视频,全屏状态下适应横屏播放

原创 2015年07月06日 17:06:29

   最近在做播放视频的功能,选择在webview中加载视频,视频可以全屏播放,但是当设备横放时,播放内容不能随着设备的旋转而转成横屏的全屏播放模式。需要的效果是:应用其他页面只能是竖屏模式,当全屏播放视频时,要适应横屏。

  由于使用webview加载视频,不能直接控制播放视频的控件,没有办法知道视频是否进入全屏模式。

  经过网上一番搜索,找到以下几个方法,使用通知获取进入全屏状态:

一:

<span style="font-family:KaiTi_GB2312;font-size:14px;">    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(videoStarted:) name:MPMoviePlayerDidEnterFullscreenNotification object:nil];// 播放器即将播放通知
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(videoFinished:) name:MPMoviePlayerWillExitFullscreenNotification object:nil];// 播放器即将退出通知</span>
二:
<span style="font-family:KaiTi_GB2312;font-size:14px;">    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoStarted:) name:@"UIMoviePlayerControllerDidEnterFullscreenNotification" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoStarted:) name:@"UIMoviePlayerControllerDidExitFullscreenNotification" object:nil];
</span>

以上两种方法在iOS8中都接收不到通知,用下面这种方法可以


<span style="font-family:KaiTi_GB2312;font-size:14px;">[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoStarted:) name:UIWindowDidBecomeVisibleNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoFinished:) name:UIWindowDidBecomeHiddenNotification object:nil];</span>

收到通知执行方法:

-(void)youTubeStarted:(NSNotification *)notification

{

    NSLog(@"全屏开始");

    AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplicationdelegate];


    app.isFull = YES;

    

}


-(void)youTubeFinished:(NSNotification *)notification{

    NSLog(@"全屏结束");

    AppDelegate *appDelegate =(AppDelegate *) [[UIApplication sharedApplicationdelegate];

    

    appDelegate.isFull =NO;

    

    if ([[UIDevice currentDevicerespondsToSelector:@selector(setOrientation:)]) {

        

        SEL selector = NSSelectorFromString(@"setOrientation:");

        

        NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]];

        

        [invocation setSelector:selector];

        

        [invocation setTarget:[UIDevice currentDevice]];

        

        int val =UIInterfaceOrientationPortrait;


        [invocation setArgument:&val atIndex:2];

        

        [invocation invoke];

        

    }

}

然后在appdelegate里面:
.h

  1. @interface AppDelegate :UIResponder  
  2. {  
  3. BOOL _isFull; // 是否全屏  
  4. }  
  5. @property (nonatomic)BOOL isFull

.m
  1. - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {  
  2.   
  3. if(_isFull)  
  4.   
  5. returnUIInterfaceOrientationMaskAll;  
  6.   
  7. returnUIInterfaceOrientationMaskPortrait;  
  8.   
  9. }


Android中WebView播放网上视频,横竖屏切换

效果图: 源码下载
  • zhaihaohao1
  • zhaihaohao1
  • 2016年04月09日 17:46
  • 1005

iOS WKwebview自动实现缩放网页适应屏幕和侧滑返回上个页面

1、废话少说,上代码, (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the ...
  • sgliquangang
  • sgliquangang
  • 2016年11月11日 11:07
  • 5297

菜鸟学android——webview播放网络视频,由竖屏转换为横屏全屏播放

近来做一个应用,遇到了这样的问题,介绍一下场景吧: 从论坛上抓取
  • sollian
  • sollian
  • 2014年05月29日 16:27
  • 5516

iOS 单页UIWebView播放视频,需要横屏

在项目中遇到了一个小问题,就是在应用本身是竖屏情况下,有某个页面需要支撑横屏时,需要怎么修改。 首先 我需要横屏的 是一个通用UIWebView 播放视频的界面。 第一种方法:    AppDe...
  • xyybbl151
  • xyybbl151
  • 2016年10月09日 14:16
  • 535

[iOS]关于横屏后状态栏不显示的问题

在做一个页面强制横屏的操作后,发现状态栏不显示了,这是因为iOS系统(好像是iOS8之后)在视图横屏的时候默认把状态栏隐藏掉了,之后查了一些方法,总结如下: 1.在info.plist文件中,添加V...
  • lqq200912408
  • lqq200912408
  • 2016年04月07日 20:13
  • 7987

横竖屏切换时,简单解决webview重新载入问题

android:name=".MainActivity" android:configChanges="keyboardHidden|orientation|screenSize...
  • u014518723
  • u014518723
  • 2016年03月18日 15:21
  • 676

WebView 加载网页内部video 横向全屏播放问题

Android WebView 加载网页内部video 横向全屏播放问题 加载html中的video 无法全屏问题...
  • qq_30596077
  • qq_30596077
  • 2017年04月08日 15:00
  • 724

关于Android中使用WebView播放网络视频不能全屏的问题

之前公司要求的一个项目需要播放网络视频,给的是HTML的地址,所以只能用webView播放,但是,播放的时候点击自带的全屏按钮根本没反应,准确说是只有图标变化了,但是根本没有全屏。在网上找了好多资料,...
  • qq_30366811
  • qq_30366811
  • 2016年07月23日 14:34
  • 3001

Android webview网页视频无法全屏解决(onShowCustomView不调用)

Android使用webview来显示和控制网页上的信息。 然而在使用自己开发的浏览器中打开网页视频时,会出现部分网站的视频全屏存在问题。 问题:部分视频网站(如腾讯视频、搜狐视频、优酷等)全频时只是...
  • lx331675996
  • lx331675996
  • 2016年02月04日 13:36
  • 11180

Android WebView在屏幕旋转后,不重新加载URL及禁止横屏的方法

最近在开发一个web app,发现横屏后,URL会重新加载,体验很不好。 需要更改AndroidManifest.xml文件,在需要禁止重新加载的Activity中增加android:configC...
  • NingRanZuoZuo
  • NingRanZuoZuo
  • 2016年01月07日 10:25
  • 4583
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用webview播放视频,全屏状态下适应横屏播放
举报原因:
原因补充:

(最多只允许输入30个字)