Android开发中Google VR全景的实现
来源:互联网 发布:开淘宝店怎么做推广 编辑:程序博客网 时间:2024/06/06 21:02
VR在现在生活中已经随处可见,在移动端上的应用更是屡见不鲜,在android 开发中VR更是应用在多个领域,汽车、家装、景区等,下面我就使用google的vr-sdk简单实现全景:
1.效果图如下:
2.引入vr-sdk
compile 'com.google.vr:sdk-panowidget:1.80.0'
我用的是google的最新版的,后续可能还会有更新
3.layout中布局控件的引入
<com.google.vr.sdk.widgets.pano.VrPanoramaView android:id="@+id/pano_view" android:layout_width="match_parent" android:scrollbars="@null" android:layout_height="match_parent"/>
4.加载并展示图片
在加载的时候设置加载事件监听
vrPanoramaView.setEventListener(new ActivityEventListener());
其中view的方法如下所示:这里只列出了一些在demo图片加载我采用的是从assets中进行异步加载,如果在实际开发中基本上都是从网络中加载的
// vrPanoramaView.setFullscreenButtonEnabled (false); //隐藏全屏模式按钮// vrPanoramaView.setInfoButtonEnabled(false); //设置隐藏最左边信息的按钮// vrPanoramaView.setStereoModeButtonEnabled(false); //设置隐藏立体模型的按钮// vrPanoramaView.setEventListener(new ActivityEventListener()); //设置监听// panoOptions.inputType = VrPanoramaView.Options.TYPE_MONO;// //加载本地的图片源// vrPanoramaView.loadImageFromBitmap(BitmapFactory.decodeStream(istr), panoOptions); //其中type_MONO源码中有四种分别是 private static final int TYPE_START_MARKER = 0; public static final int TYPE_MONO = 1; public static final int TYPE_STEREO_OVER_UNDER = 2; private static final int TYPE_END_MARKER = 3;//在这里因为用到左右眼VR 所以用单声道模式,//图片中其中有上下两张图片,戴上全景设备之后分别能在 左右眼中分别看到//如果是单张的全景图片就用TYPE_STEREO_OVER_UNDER =2就可以
ActivityEventListener的实现如下:
public class ActivityEventListener extends VrPanoramaEventListener { @Override public void onLoadSuccess() { loadImageSuccessful = true; } @Override public void onLoadError(String errorMessage) { loadImageSuccessful=false; Toast.makeText(MainActivity.this, errorMessage, Toast.LENGTH_SHORT).show(); } }
这里只是对加载状态做一个toast,读者可以进行自定义这些
进行异步加载图片,避免堵塞UI线程
if (backgroundImageLoaderTask != null) { // Cancel any task from a previous intent sent to this activity. backgroundImageLoaderTask.cancel(true); } backgroundImageLoaderTask = new ImageLoaderTask(); backgroundImageLoaderTask.execute(Pair.create(fileUri, panoOptions));
具体加载过程如下:
public class ImageLoaderTask extends AsyncTask<Pair<Uri, VrPanoramaView.Options>, Void, Boolean> { @Override protected Boolean doInBackground(Pair<Uri, VrPanoramaView.Options>... fileInformation) { VrPanoramaView.Options panoOptions = null; // It's safe to use null VrPanoramaView.Options. InputStream istr = null; if (fileInformation == null || fileInformation.length < 1 || fileInformation[0] == null || fileInformation[0].first == null) { AssetManager assetManager = getAssets(); try { istr = assetManager.open("1110.jpg"); panoOptions = new VrPanoramaView.Options(); panoOptions.inputType = VrPanoramaView.Options.TYPE_STEREO_OVER_UNDER; } catch (IOException e) { Log.e(TAG, "Could not decode default bitmap: " + e); return false; } } else { try { istr = new FileInputStream(new File(fileInformation[0].first.getPath())); panoOptions = fileInformation[0].second; } catch (IOException e) { Log.e(TAG, "Could not load file: " + e); return false; } } vrPanoramaView.loadImageFromBitmap(BitmapFactory.decodeStream(istr), panoOptions); try { istr.close(); } catch (IOException e) { Log.e(TAG, "Could not close input stream: " + e); } return true; } }
5.结束语
github-demo下载地址
如果对以上有疑问,或者是想交流的小伙伴们可以加QQ群:570650538
阅读全文
0 0
- Android开发中Google VR全景的实现
- 二、VR全景图显示器开发 ---- Android VR视频/Google VR for Android /VR Pano/VR Video
- 四、VR全景图显示器开发 ---- Android VR视频/Google VR for Android /VR Pano/VR Video
- google vr sdk(全景图的播放)
- 通过Android实现简单的VR全景图
- android vr全景图片初探(仿微博360全景图片的实现)
- Google VR全景图片与视频功能开发详解
- Google VR全景图片与视频功能开发详解
- Google VR全景图片与视频功能开发详解
- VR 全景图实现
- Vr (全景图实现)
- Android VR 全景图
- Android开发实战使用(VR技术实现360°全景视频播放功能)
- Android VR Player(全景视频播放器) [3]:底部导航的实现
- Android VR Player(全景视频播放器) [4]:侧滑菜单的实现
- Android VR Player(全景视频播放器) [6]:视频列表的实现-本地视频
- Android VR Player(全景视频播放器) [7]:视频列表的实现-网络视频
- 【Android开发VR实战】二.播放360°全景视频
- GKEntity
- 在Windows环境中安装Neo4j
- 自定义ActionProvider ToolBar 自定义Menu小红点
- 使用urllib.urlretrieve(img_net_path, img_local_path)爬取淘宝商品细节图片,[Errno socket error] [SSL: UNKNOWN_PROT
- (CSU
- Android开发中Google VR全景的实现
- SQL Server,MySQL,Oracle三者的区别
- sql日期格式化
- 京东Java开发一面面经
- Hibernate的hql语句查询不到内容,但是库里有数据,直接执行SQL也能执行,能得到值,返回值取不到
- 十大云存储平台技巧
- 博客搬家说明
- 二分查找的应用
- Windows下tracert命令