Android 谷歌推荐的VR实现方式(分享)

谷歌有专门的SDK来完成VR,我这次以一个全景图片的例子来说一下这个SDK实现VR的基本过程,首先全景图片就是百度地图里的那样,能够看到周围环境360的图片。

添加依赖

compile 'com.google.vr:sdk-panowidget:1.80.0'

添加权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.GET_TASKS"/>

实现代码

public class GoogleVRActivity extends AppCompatActivity {
 private VrPanoramaView mVrPanoramaView;
 private VrPanoramaView.Options paNormalOptions;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_google_vr);
  initVrPaNormalView();
 }
 @Override
 protected void onPause() {
  super.onPause();
  mVrPanoramaView.pauseRendering();
 }
 @Override
 protected void onResume() {
  super.onResume();
  mVrPanoramaView.resumeRendering();
 }
 @Override
 protected void onDestroy() {
  // Destroy the widget and free memory.
  super.onDestroy();
  mVrPanoramaView.shutdown();
 }

 //初始化VR图片
 private void initVrPaNormalView() {
  mVrPanoramaView = (VrPanoramaView) findViewById(R.id.mVrPanoramaView);
  paNormalOptions = new VrPanoramaView.Options();
  paNormalOptions.inputType = VrPanoramaView.Options.TYPE_STEREO_OVER_UNDER;
//  mVrPanoramaView.setFullscreenButtonEnabled (false); //隐藏全屏模式按钮
  mVrPanoramaView.setInfoButtonEnabled(false); //设置隐藏最左边信息的按钮
  mVrPanoramaView.setStereoModeButtonEnabled(false); //设置隐藏立体模型的按钮
  mVrPanoramaView.setEventListener(new ActivityEventListener()); //设置监听
  //加载本地的图片源
  mVrPanoramaView.loadImageFromBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.andes), paNormalOptions);
  //设置网络图片源
//  panoWidgetView.loadImageFromByteArray();
 }
 private class ActivityEventListener extends VrPanoramaEventListener {
  @Override
  public void onLoadSuccess() {//图片加载成功
  }

  @Override
  public void onLoadError(String errorMessage) {//图片加载失败
  }
  @Override
  public void onClick() {//当我们点击了VrPanoramaView 时候触发   super.onClick();
  }
  @Override
  public void onDisplayModeChanged(int newDisplayMode) {
   //改变显示模式时候出发(全屏模式和纸板模式)
   super.onDisplayModeChanged(newDisplayMode);
  }
 }
}
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:background="@android:color/white">
 <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:padding="10dip"
  android:id="@+id/main_layout"
  android:orientation="vertical" >
  <TextView
   style="@style/ContentText"
   android:id="@+id/title"
   android:textSize="@dimen/title_text_size"
   android:textStyle="bold"
   android:textColor="@color/colorAccent"
   android:text="第二种谷歌官方VR演示" />
  <TextView
   style="@style/ContentText"
   android:id="@+id/subtitle"
   android:textColor="@color/colorAccent"
   android:textSize="@dimen/caption_text_size"
   android:text="谷歌纸壳子demo" />
  <TextView
   style="@style/ContentText"
   android:id="@+id/paragraph1"
   android:textColor="@color/colorAccent"
   android:textSize="@dimen/paragragh_text_size"
   android:text="鱼和熊掌不可兼得" />
  <com.google.vr.sdk.widgets.pano.VrPanoramaView
   android:id="@+id/mVrPanoramaView"
   android:layout_width="match_parent"
   android:layout_height="250dip"/>

 </LinearLayout>
</ScrollView>

VrPanoramaView这个类和Activity有着类似的生命周期,全屏显示是它自己设置的,这个VR 的SDK完成度很高,可以多去参考。

以上这篇Android 谷歌推荐的VR实现方式(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Android自定义谷歌风格ProgressBar

    本文实例为大家分享了谷歌风格ProgressBar的具体代码,供大家参考,具体内容如下 具体代码 package zms.demo.colorprogress; import android.content.Context; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.draw

  • Android开发VR实战之播放360度全景视频

    VR即Virtual Reality虚拟现实.虚拟现实技术是一种可以创建和体验虚拟世界的计算机仿真系统它利用计算机生成一种模拟环境是一种多源信息融合的交互式的三维动态视景和实体行为的系统仿真使用户沉浸到该环境中. 那么,如何在Android中去开发VR功能的APP呢?我们利用谷歌提供的开源SDK去实现一个360°全景视频的功能 一.在build.gradle中引入谷歌VR的SDK依赖 compile 'com.google.vr:sdk-videowidget:1.10.0' 二.注意支持的最小

  • Android 谷歌推荐的VR实现方式(分享)

    谷歌有专门的SDK来完成VR,我这次以一个全景图片的例子来说一下这个SDK实现VR的基本过程,首先全景图片就是百度地图里的那样,能够看到周围环境360的图片. 添加依赖 compile 'com.google.vr:sdk-panowidget:1.80.0' 添加权限 <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="an

  • 分享实现Android图片选择的两种方式

    Android选择图片的两种方式: 第一种:单张选取 通过隐式启动activity,跳转到相册选择一张返回结果 关键代码如下: 发送请求: private static final int PICTURE = 10086; //requestcode Intent intent = new Intent(); if (Build.VERSION.SDK_INT < 19) {//因为Android SDK在4.4版本后图片action变化了 所以在这里先判断一下 intent.setAction

  • Android应用中使用及实现系统“分享”接口实例

    为了应用的推广.传播,很多的应用中都有"分享"功能,一个按钮,点击后会出现短信.微博等等一切实现了分享功能的应用列表.这一篇文章主要介绍怎么调用分享功能和怎么实现分享接口让自己应用出现分享列表中.Android应用中能很方便的完成这些功能,这也正是Android的伟大之处,他能很简单的完成应用之间的沟通以相互整合. 调用分享功能 1.分享文本 分享功能使用的隐式启动Activity的方法,这里的Action使用的是 ACTION_SEND. Intent sendIntent = ne

  • 深入理解Android M 锁屏密码存储方式

    Android M 之前锁屏密码的存储 在 Android M 之前,锁屏密码的存储格式很简单,其使用了 64 位随机数作为 salt 值,此 salt 值被存储在 SQLite 数据库 /data/system/locksettings.db 中.密码在存储的时候,会将输入的密码加上此随机数组成新的字符串.然后对新的字符串分别进行 SHA-1 和 MD5 加密,将加密后的密文通过 MD5 + SHA-1 的方式进行字符串拼接,组成新的密文存储在 /data/system/password.ke

  • Android 中WebView 截图的实现方式

    Hybrid App 中网页部分的分享方式越来越趋向于多元化,比较常见的用户操作方式有:复制网页链接式,直接选择目标应用自动分享式等.其中,截图行为,越来越成为丰富用户操作.备受用户喜爱的互动方式之一,我们在很多内容社区类应用中都能看到这种功能.这篇文章总结一下 Android 应用中 WebView 截图的实现方式. WebView 作为一种特殊的控件,自然不能像其他系统 View 或者截屏的方式来获取截图(多为截取长图).如: public static Bitmap getScreenSh

  • Android三种常见的图片压缩方式

    下面就为大家带来3种比较常见的压缩方式 先给出一组数据 原图:width:2976; height:2976 原图实际:--->byte:2299820 Mb:2.19328 质量压缩 size--->:byte:1599831 kb:1562.33496 按比例压缩 size--->:byte:191707 kb:187.21387 鲁班压缩 size--->:byte:143792 kb:140.42188 压缩效果:鲁班压缩 > 按比例压缩 > 质量压缩 1.质量

  • Android 单例模式的四种实现方式

    一.饿汉式 public class SingletionStarving { private static final SingletionStarving mInstance = new SingletionStarving(); private SingletionStarving() { } public static SingletionStarving getInstance() { return mInstance; } } 构造函数用private修饰,外部无法访问 声明静态对象

  • Go语言读取YAML 配置文件的两种方式分享

    目录 前言 yaml.v3 包 读取 yaml 文件 viper 包 读取 yaml 文件 小结 前言 在日常开发中,YAML 格式的文件基本上被默认为是配置文件,其内容因为缩进带来的层级感看起来非常直观和整洁.本文将会对 YAML 内容的读取进行介绍. yaml.v3 包 yaml.v3 的包,可以让我们在 Go 里面轻松地操作 yaml 格式的数据(如将 yaml 格式转成结构体等).在使用 yaml.v3 包之前,我们需要先安装它: go get gopkg.in/yaml.v3 读取 y

  • Android 以任意比例裁剪图片代码分享

    公司的一个小伙伴写的,可以按照任意比例裁剪图片.我觉得挺好用的.简单在这里记录一下,以后肯定还会用到. public class SeniorCropImageView extends ImageView implements ScaleGestureDetector.OnScaleGestureListener, View.OnLayoutChangeListener { /* For drawing color field start */ private static final int

  • Android高仿微信聊天界面代码分享

    微信聊天现在非常火,是因其界面漂亮吗,哈哈,也许吧.微信每条消息都带有一个气泡,非常迷人,看起来感觉实现起来非常难,其实并不难.下面小编给大家分享实现代码. 先给大家展示下实现效果图: OK,下面我们来看一下整个小项目的主体结构: 下面是Activity的代码: package com.way.demo; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import jav

随机推荐