美文网首页
浅析《Google Android VR》开发基础—全景图

浅析《Google Android VR》开发基础—全景图

作者: 一个不掉头发的开发 | 来源:发表于2017-09-13 20:15 被阅读277次

最近项目需要,花了一段时间去研究这门技术。发现随着VR设备的流行开来,各大招聘平台上也发布了不少关于andorid VR开发相关的Android工程师岗位,从这点来说掌握VR在项目中的实际应用要点,有助于大家为自己的开发经验上增加前沿技术的积累。
经过研发市面上的主流vr app 的功能,抽取并整合项目中的vr开发知识点,希望大家掌握后,在企业相关vr app游刃有余。

1. 全景图片显示

GIF.gif

2. 导入全景图相关的三个开发库

commonwidget、common、panowidget(全景图)、videowidget(视频)
PS:最新的SDK已经没有这三个文件夹了,使用下一步的依赖库即可

2.1 或者添加依赖

compile 'com.google.vr:sdk-panowidget:1.30.0'
//compile project(':common')
//compile project(':commonwidget')
//compile project(':panowidget')
//google的一套序列化数据结构开发库
//compile 'com.google.protobuf.nano:protobuf-javanano:3.0.0-alpha-7'
PS:版本要求:<usessdkandroid:minSdkVersion="19"android:targetSdkVersion="22"/>

2.3 配置清单文件

<uses-permissionandroid:name="android.permission.INTERNET"/>
<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>
<applicationandroid:label="SimpleVrPanoramaActivity"
    android:largeHeap="true"
    android:theme="@android:style/Theme.Holo.Light">
    <activityandroid:name=".SimpleVrPanoramaActivity">
        <intent-filter>
            <actionandroid:name="android.intent.action.MAIN"/>
            <categoryandroid:name="android.intent.category.LAUNCHER"/>
            <categoryandroid:name="com.google.intent.category.CARDBOARD"/>
        </intent-filter>
    </activity>
</application>
PS:android:largeHeap="true" 全景图片比较耗资源

2.4 准备全景图片测试资源

放在assets目录 例:assets/img.jpg

3 布局加载 全景资源(图片)控件

<com.google.vr.sdk.widgets.pano.VrPanoramaView
    android:id="@+id/picView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

4 初始化控件以及监控加载事件

package com.fw.dagger.vr;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;

import com.google.vr.sdk.widgets.pano.VrPanoramaView;

import java.io.IOException;
import java.io.InputStream;

public class MainActivity extends AppCompatActivity {
    public VrPanoramaView vrPanoramaView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        vrPanoramaView = findViewById(R.id.vrPanoramaView);
        vrPanoramaView.setTouchTrackingEnabled(true);
        vrPanoramaView.setFullscreenButtonEnabled(true);
        vrPanoramaView.setInfoButtonEnabled(false);
        vrPanoramaView.setStereoModeButtonEnabled(false);

        VrPanoramaView.Options options = new VrPanoramaView.Options();
        options.inputType = VrPanoramaView.Options.TYPE_MONO;
        vrPanoramaView.loadImageFromBitmap(getBitmapFromAssets("timg.jpg"), options);
    }

    private Bitmap getBitmapFromAssets(String fileName) {
        if (TextUtils.isEmpty(fileName)) return null;
        try {
            InputStream inputStream = getAssets().open(fileName);
            return BitmapFactory.decodeStream(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onResume() {
        super.onResume();
        vrPanoramaView.resumeRendering();
    }

    @Override
    protected void onPause() {
        super.onPause();
        vrPanoramaView.pauseRendering();
    }

    @Override
    protected void onDestroy() {
        vrPanoramaView.shutdown();
        super.onDestroy();
    }
}

5 界面其他元素设置:

  • setFullscreenButtonEnabled (false);//隐藏全屏模式按钮
  • setVrModeButtonEnabled(false);//隐藏VR模式按钮
  • vrImage.setInfoButtonEnabled(false);//隐藏信息按钮

6 Options参数:

  1. public static final int TYPE_MONO = 1;
    图像被预期以覆盖沿着其水平轴360度,而垂直范围是根据图像的宽高比来计算。
    例如,如果一个1000x250像素的图像,给出所述全景将覆盖360x90度与垂直范围是-45至+45度
  2. public static final int TYPE_STEREO_OVER_UNDER = 2;
    包含两个大小相等的投影 全景图垂直叠加。顶部图像被显示给左眼、底部图像被显示给右眼
    图像将覆盖沿水平轴360度,而垂直范围是根据图像的宽高比来计算。
    例如,如果一个1000x500像素的图像中给出(即1000x250像素/每个眼睛),全景将覆盖360x90度与垂直范围是-45至+45度。

最终效果

微信图片_20170913200025.jpg
Google文章:https://code.tutsplus.com/tutorials/getting-started-with-android-vr-through-google-cardboard-panoramic-images--cms-27653
GitHub:https://github.com/ZQ330093887/VR

相关文章

网友评论

      本文标题:浅析《Google Android VR》开发基础—全景图

      本文链接:https://www.haomeiwen.com/subject/nyulsxtx.html