android vr播放器 躺着,Android使用得图SDK开发VR播放器

Android SDK全景及VR播放器集成与使用指南

产品概述

Android SDK包含全景图片、VR视频、漫游主题等多种展示方式,支持小行星模式、陀螺仪、VR双屏沉浸式观看。文件下载、解码都在播放器中完成,您只需一个链接地址或是一条配置即可展现炫酷的全景效果。

注: 该SDK支持不低于4.0.0的Android版本(api14)。

下载并集成SDK

下载SDK最新版

下载最新版panoplay_android_jar SDK,解压SDK压缩包,将panoplay_android_jar文件夹中的'libs'和'res/raw'文件夹复制到你的项目工程根目录下(如使用'ADT 17'以下用户需要手动添加'libs'下的jar文件到工程Path中)。

AndroidManifest配置

增加权限

配置最低可运行版本

android:minSdkVersion="14"

android:targetSdkVersion="21"   />

在manifest根节点配置OpenGL版本:

为了达到最好的播放效果建议开启硬件加速:在Application节点中声明android:hardwareAccelerated="true"

初始化配置

由于本播放器使用universal-image-loader类库来管理图片,因此首先要在Application中初始化ImageLoader,若在您的项目中已使用到了该类库,只需保证 DisplayImageOptions 中bitmapConfig为Bitmap.Config.ARGB_8888类型,imageScaleType为ImageScaleType.NONE,并且开启了内存和磁盘缓存。 没有配置过的可以按以下方式配置:

DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()

.imageScaleType(ImageScaleType.NONE)

.cacheInMemory(true)

.cacheOnDisk(true)

.build();

ImageLoaderConfiguration config = new ImageLoaderConfiguration

.Builder(this)

.defaultDisplayImageOptions(defaultOptions)

.threadPriority(Thread.NORM_PRIORITY - 2)

.denyCacheImageMultipleSizesInMemory()

.discCacheFileNameGenerator(new Md5FileNameGenerator())

.tasksProcessingOrder(QueueProcessingType.FIFO)

.build();

ImageLoader.getInstance().init(config);

播放器引入

布局文件引用

播放器需要借助com.player.renderer.PanoPlayerSurfaceView(继承自android.opengl.GLSurfaceView)类来播放全景图片和视频,您可以根据需要自定义他的宽高和位置,还可以再继承自 PanoPlayerSurfaceView 根据需求自定义点击事件和滑动事件。

函数调用

创建播放渲染器:

播放器需要借助 com.player.panoplayer.PanoPlayer(PanoPlayerSurfaceView view, Context context)来控制OpenGL渲染。 首先获取布局文件播放器:

PanoPlayerSurfaceView ppsview;

创建渲染器并和播放器绑定:

PanoPlayer renderer=new PanoPlayer(ppsview, this);

ppsvVideo.setRenderer(renderer);

创建播放文件链接:

创建播放链接类PanoPlayerUrl加载文件 PanoPlayerUrl panoplayerurl = new PanoPlayerUrl();

加载视频或图像

加载视频或图像有三种方法:

1) 通过网络地址直接加载

加载视频方法: panoplayerurl.SetVideoUrlImage("视频地址","");

加载六面图方法: panoplayerurl.SetCubeUrlImage("六面图地址","六面图的预览图") 其中六面图的地址输入格式为:http://fwpano813.img.detuyun.cn/143461522655827dbad040a/oper/59gv8ty1gte1p9l2_html_%s.jpg 后面以%s结尾; 访问时可把%s换成f(/u/b/l/r/d);

加载2:1全景图方法: panoplayerurl.SetSphereUrlImage("2:1图的地址","");

2) 通过加载Xml文件: panoplayerurl. setXmlUrl("xml文件")

3) 通过构造xml加载:如构造一个鱼眼视频的xml

String T =

"

";

初始化XML配置

String xmlstring = String.format(T,"","video", "需要加载的地址", 240,1);

//[type=video,degree =240(鱼眼度数),device=1(鱼眼设备类型)]

加载xml

panoplayerurl.setXmlContent(xmlstring);

开始播放

renderer.Play(panoplayerurl);

注: 可使用的文件路径规则:

"http://site.com/image.png" // from Web

"file:///mnt/sdcard/image.png" // from SD card

"assets://image.png" // from assets

"drawable://" + R.drawable.img // from drawables

播放回调函数调用

播放图片回调:

在播放图片时可通过IPanoPlayerListener接口绑定播放事件:

renderer.setListener(IPanoPlayerListener listener);

播放视频回调:

在播放视频时需同时绑定IPanoPlayerListener和IPanoPlayerVideoPluginListener接口才可获取到完整的播放事件:

renderer.setListener(IPanoPlayerListener listener);

renderer.setVideoPluginListener(IPanoPlayerVideoPluginListener listener);

播放回调说明:

回调接口

包含回调

回调说明

IPanoPlayerListener

void PanoPlayOnLoading()

播放器数据正在加载中

void PanoPlayOnLoaded()

播放器数据加载完成

void PanoPlayOnEnter(PanoramaData var1)

播放器场景加载完成

void PanoPlayOnLeave(PanoramaData var1);

播放器场景已移除

void PanoPlayOnError(PanoPlayerErrorCode var1)

播放出错

IPanoPlayerVideoPluginListener

void PluginVideoOnInit()

播放器数据初始化完成

void PluginVideoOnStatusChanged(PanoVideoPluginStatus status)

播放状态变化

void PluginVideoOnProgressChanged(int curTime, int bufTime, int maxTime)

播放进度变化。其中curTime为当前播放的位置;bufTime为缓冲位置;maxTime为视频总长度

void PluginVideoOnSeekFinished()

视频进度拖动完成

void PluginVideOnPlayerError(PanoPlayerErrorStatus var1, String var2)

播放出错

模式切换

在播放图片和视频时还可进行模式切换,有两种方式: 直接切换和渐变切换,您可根据需要选择其中一种。

直接切换:renderer.setViewMode(ViewMode mode);

渐变切换 : prenderer.setAnimationViewMode(ViewMode mode);

模式说明

模式

说明

ViewMode.VIEWMODE_FISHEYE

鱼眼模式

ViewMode.VIEWMODE_LITTLEPLANET

小行星模式

ViewMode.VIEWMODE_DEF

默认模式

ViewMode.VIEWMODE_PLANE

平面模式

ViewMode.VIEWMODE_VR

VR 模式

其他设置

设置陀螺仪开关

可调用renderer.setGyroEnable(boolean enable);来设置播放器是否使用陀螺仪:enable 为true 时,陀螺仪可用;为false 时,陀螺仪不可用。

视频播放进度控制

在视频播放过程中还可进行视频播放控制。在public void PluginVideoOnInit()函数中获取播放器插件控制器:

@Override

public void PluginVideoOnInit() {

Plugin plugin = renderer.getCurPlugin();

if (plugin instanceof VideoPlugin) {

videoplugin = (VideoPlugin) plugin;

//设置播放器日志级别

//videoplugin.setLogLevel(IjkMediaPlayer.IJK_LOG_VERBOSE);

}

}

从某一时刻开始播放:

videoplugin.seekTo(int progress);

获取播放缓冲百分比:

int buffr = videoplugin.getreadBufferingPercent();

暂停播放:

videoplugin.pause();

开始播放:

videoplugin.start();

重新播放:

videoplugin.replayer();

注意事项

为了更好的管理播放器资源引用,您需在您的onDestroy() 方法手动销毁播放器,释放播放资源。

@Override

protected void onDestroy() {

super.onDestroy();

if (renderer != null) {

renderer.release();

}

}

更多内容请关注个人微信公众帐号:极客峰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值