当前位置: 编程技术>移动开发
本页文章导读:
▪关于mpmovieplayercontroller的蛋痛案例 关于mpmovieplayercontroller的蛋疼案例!
因公司安排分配一个AR的项目,在前4天完成一个demo给客户看效果,所以我开始负责这个demo。AR我完全不懂,不过也没关系,反正核心也是artoolkit公司写.........
▪ 在模拟器上装配和卸载.apk文件 在模拟器上安装和卸载.apk文件
adb install data/app/myandroid.apk //安装apkadb shell rm data/app/myandroid.apk //卸载apk
......
▪ 施用intent传递bitmap对象 使用intent传递bitmap对象
/**
* 存: i.putExtra("0", bitmap);
* 取: i = getIntent();
bitmap= i.getParcelableExtra("0");
*/
......
[1]关于mpmovieplayercontroller的蛋痛案例
来源: 互联网 发布时间: 2014-02-18
关于mpmovieplayercontroller的蛋疼案例!
因公司安排分配一个AR的项目,在前4天完成一个demo给客户看效果,所以我开始负责这个demo。
AR我完全不懂,不过也没关系,反正核心也是artoolkit公司写,我用用就可以了,这不是重点。
重点在于,有这样一个需求,识别marker后需要播放一段视频,本以为这是非常简单的一个功能,视频素材已有,那么应该10分钟内完成。
利用[[NSBoundle mainBoundle] pathForResource:@"xxx" ofType:@"xxx"]获取到该视频资源,然后利用NSURL:fileURLWithPath:NSBound获取到一个包含该视频资源的一个nsurl,然后对mpmovieplayercontroller进行alloc ,initWithContentOfURL:NSURL就完成了一个movieplayer的建立,什么都不用管,他自动会播放,因为shouldautoplay的属性default是YES。
咋看很简单,只需要控制play,stop等就可以进行初步操作,最多在对frame进行下设置,因为客户未某商家,该app用于宣传,所以只需要播放视频就ok,不需要对视频进行复杂的操作等,所以打完收工。哦,还有的,就是注册统治中心,处理结束时该干的事。
但是还没结束,客户要求视频为全频播放,支持4个方向旋转。
好的,在shouldautorotate...方法里面设置4个方向。在willanimaterotate...方法里面对frame再设置成合适的值(竖向:320*480,44的导航栏,20的状态栏;横向:480*320,30的导航栏,20的状态栏),最后设置player的controlstyle为fullscreen,又打完收工
这下问题出来了,前面的ui是设置成这样的:隐藏了状态栏,然后导航栏设置成半透明的。所以在viewdidiload的时候,设置的player会出现导航栏覆盖在上面的情况,鉴于此,只有先在播放视频的时候,暂时设置成半透明为NO,在其他的操作时,又设置回来,因为player的backgroundview本身默认是黑色的,所以看不出异样,问题1解决。
问题2最头疼,如果设置成全屏模式的话,那么状态栏这该死的东西居然会“跑”出来,引号的意思不是他真的跑出来,而是说他自己不显示出来,但是头顶上就出现了个20像素的空格,该死的,再设置一次隐藏状态栏([[UIApplication sharedApplication] setStatusBarHidden:YES])没有用,调整frame的位置同样没有用,肿么办!!!!
思索了一会,google一下,发现了好像大家都出现了这种问题,原来!!!这悲催的mpmovieplayercontroller只要在全屏状态下,状态栏一定会出现,如果你本来就没隐藏的话,那么没关系;如果你隐藏了的话,那么就一定会出现一个20像素的空白。
该死的,被迫换成mpmovieplayerviewcontroller,这玩意专门用来玩全屏的,用法完全一样,只不过这里面有个属性,叫做movieplayer这个属性,而该属性就是一个mpmovieplayercontroller的实例,所以用法不用多说,只不过uiviewcontroller有个方法,presentMoviePlayerViewControllerAnimated:mpmovieplayercontroller,可以非常好的播放视频,但是我需要显示出导航栏,还是老老实实的将新改的player加到了self.view上面。
那么开心了,这样已经可以比较完美的全屏播放了,好吧,咱们推出去,在来播放一次,享受下劳动成果吧,这一按back按钮,我勒个擦啊,居然所有画面都有一杠20单位的空白,这该死的状态栏又出来捣乱了,这让我如何是好啊。
崩溃了一下下后,又找了找资料,似乎也没有说到点子上,我在想怎么回事呢。他是一个20单位的空白,而不是导航栏,说明导航栏确实隐藏着的,而返回就一个pop,没有改动任何frame的位置,那也不是我的问题。而这个20单位的空白,本来就是全屏下这个player固有的问题,那么一定是全屏惹的祸。
好吧,既然这样,那么退出之前,我把controlstyle设置成default模式,这样的话,就不是全屏了,问题应该解决了,连接上真机一测试,果然好了。
所以问题是这样解决了,不过我不太了解这sdk为什么一定要出现这样的空白呢,全屏必须给状态栏的位置留出来到底是什么用意呢?
因公司安排分配一个AR的项目,在前4天完成一个demo给客户看效果,所以我开始负责这个demo。
AR我完全不懂,不过也没关系,反正核心也是artoolkit公司写,我用用就可以了,这不是重点。
重点在于,有这样一个需求,识别marker后需要播放一段视频,本以为这是非常简单的一个功能,视频素材已有,那么应该10分钟内完成。
利用[[NSBoundle mainBoundle] pathForResource:@"xxx" ofType:@"xxx"]获取到该视频资源,然后利用NSURL:fileURLWithPath:NSBound获取到一个包含该视频资源的一个nsurl,然后对mpmovieplayercontroller进行alloc ,initWithContentOfURL:NSURL就完成了一个movieplayer的建立,什么都不用管,他自动会播放,因为shouldautoplay的属性default是YES。
咋看很简单,只需要控制play,stop等就可以进行初步操作,最多在对frame进行下设置,因为客户未某商家,该app用于宣传,所以只需要播放视频就ok,不需要对视频进行复杂的操作等,所以打完收工。哦,还有的,就是注册统治中心,处理结束时该干的事。
但是还没结束,客户要求视频为全频播放,支持4个方向旋转。
好的,在shouldautorotate...方法里面设置4个方向。在willanimaterotate...方法里面对frame再设置成合适的值(竖向:320*480,44的导航栏,20的状态栏;横向:480*320,30的导航栏,20的状态栏),最后设置player的controlstyle为fullscreen,又打完收工
这下问题出来了,前面的ui是设置成这样的:隐藏了状态栏,然后导航栏设置成半透明的。所以在viewdidiload的时候,设置的player会出现导航栏覆盖在上面的情况,鉴于此,只有先在播放视频的时候,暂时设置成半透明为NO,在其他的操作时,又设置回来,因为player的backgroundview本身默认是黑色的,所以看不出异样,问题1解决。
问题2最头疼,如果设置成全屏模式的话,那么状态栏这该死的东西居然会“跑”出来,引号的意思不是他真的跑出来,而是说他自己不显示出来,但是头顶上就出现了个20像素的空格,该死的,再设置一次隐藏状态栏([[UIApplication sharedApplication] setStatusBarHidden:YES])没有用,调整frame的位置同样没有用,肿么办!!!!
思索了一会,google一下,发现了好像大家都出现了这种问题,原来!!!这悲催的mpmovieplayercontroller只要在全屏状态下,状态栏一定会出现,如果你本来就没隐藏的话,那么没关系;如果你隐藏了的话,那么就一定会出现一个20像素的空白。
该死的,被迫换成mpmovieplayerviewcontroller,这玩意专门用来玩全屏的,用法完全一样,只不过这里面有个属性,叫做movieplayer这个属性,而该属性就是一个mpmovieplayercontroller的实例,所以用法不用多说,只不过uiviewcontroller有个方法,presentMoviePlayerViewControllerAnimated:mpmovieplayercontroller,可以非常好的播放视频,但是我需要显示出导航栏,还是老老实实的将新改的player加到了self.view上面。
那么开心了,这样已经可以比较完美的全屏播放了,好吧,咱们推出去,在来播放一次,享受下劳动成果吧,这一按back按钮,我勒个擦啊,居然所有画面都有一杠20单位的空白,这该死的状态栏又出来捣乱了,这让我如何是好啊。
崩溃了一下下后,又找了找资料,似乎也没有说到点子上,我在想怎么回事呢。他是一个20单位的空白,而不是导航栏,说明导航栏确实隐藏着的,而返回就一个pop,没有改动任何frame的位置,那也不是我的问题。而这个20单位的空白,本来就是全屏下这个player固有的问题,那么一定是全屏惹的祸。
好吧,既然这样,那么退出之前,我把controlstyle设置成default模式,这样的话,就不是全屏了,问题应该解决了,连接上真机一测试,果然好了。
所以问题是这样解决了,不过我不太了解这sdk为什么一定要出现这样的空白呢,全屏必须给状态栏的位置留出来到底是什么用意呢?
[2] 在模拟器上装配和卸载.apk文件
来源: 互联网 发布时间: 2014-02-18
在模拟器上安装和卸载.apk文件
adb install data/app/myandroid.apk //安装apk
adb shell rm data/app/myandroid.apk //卸载apk
adb install data/app/myandroid.apk //安装apk
adb shell rm data/app/myandroid.apk //卸载apk
[3] 施用intent传递bitmap对象
来源: 互联网 发布时间: 2014-02-18
使用intent传递bitmap对象
/** * 存: i.putExtra("0", bitmap); * 取: i = getIntent(); bitmap= i.getParcelableExtra("0"); */
最新技术文章: