google vr 入门之制作简易的VR播放器及去除界面控制按钮(1),上海大厂Android面试经历

这篇具有很好参考价值的文章主要介绍了google vr 入门之制作简易的VR播放器及去除界面控制按钮(1),上海大厂Android面试经历。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

<ImageView

android:id=“@+id/play”

android:layout_width=“@dimen/x90”

android:layout_height=“@dimen/y90”

android:layout_gravity=“center_vertical”

android:src=“@mipmap/stop”/>

<SeekBar

android:id=“@+id/video_progress”

style=“@style/Widget.AppCompat.ProgressBar.Horizontal”

android:layout_width=“@dimen/x600”

android:layout_height=“@dimen/y100”

android:layout_marginLeft=“@dimen/x_20”/>

<TextView

android:id=“@+id/video_duration”

android:layout_width=“@dimen/x240”

android:layout_height=“wrap_content”

android:layout_gravity=“center_vertical”

android:textColor=“@color/colorFFFFFF”/>

<ImageView

android:id=“@+id/video_vr”

android:layout_width=“@dimen/x90”

android:layout_height=“@dimen/x90”

android:layout_gravity=“center_vertical”

android:src=“@mipmap/icon_vr”/>

PlayerActivity

public class PlayerActivity extends Activity implements View.OnClickListener {

private VrVideoView mVideoView;

private String mUrl;

private TextView mVideoDuration;

private SeekBar mSeekBar;

private View mVideoPorgressContainer;

private String mTotalDuration;//视频总时长, 00:08格式

private ImageView mPlayView;

private boolean isPlaying;

private View mVideoVr;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_player);

Intent intent = getIntent();

mUrl = intent.getStringExtra(“url”);//上一个Activity传递过来的url播放地址

initView();

initData();

initListener();

}

@Override

protected void onNewIntent(Intent intent) {

setIntent(intent);

//TODO handleIntent

}

private void initView() {

mVideoView = (VrVideoView) findViewById(R.id.video_view);

mPlayView = (ImageView) findViewById(R.id.play);

mVideoDuration = (TextView) findViewById(R.id.video_duration);

mSeekBar = (SeekBar) findViewById(R.id.video_progress);

mVideoPorgressContainer = findViewById(R.id.video_progress_container);

mVideoVr = findViewById(R.id.video_vr);

mVideoView.setInfoButtonEnabled(false);//设置左侧信息原圈不可见

mVideoView.setFullscreenButtonEnabled(false);//设置全屏按钮不可见

mVideoView.setStereoModeButtonEnabled(false);//设置立体眼镜模式按钮不可见

}

private void initData() {

Uri uri;

if (“”.equals(mUrl)) {

uri = Uri.parse(“http://resource.vr-store.cn/appfile/6cc160ba38394af0a251d4275ea66c29.mp4”);//坝上的云

} else {

uri = Uri.parse(mUrl);

}

VrVideoView.Options option = new VrVideoView.Options();

try {

mVideoView.loadVideo(uri, option);

} catch (IOException e) {

e.printStackTrace();

}

}

private void initListener() {

mPlayView.setOnClickListener(this);

mVideoVr.setOnClickListener(this);

mSeekBar.setOnSeekBarChangeListener(new SeekBarListener());

mVideoView.setEventListener(new VrVideoEventListener() {

@Override

public void onClick() {

//处理控制面板的显示和隐藏

int visibility = mVideoPorgressContainer.getVisibility();

mVideoPorgressContainer.setVisibility(visibility == View.VISIBLE ? View.GONE : View.VISIBLE);

}

/**

  • Make the video mPlayView in a loop. This method could also be used to move to the next video in

  • a playlist.

*/

@Override

public void onCompletion() {

//播放完成后的操作

//mVideoView.seekTo(0);//循环播放效果

}

@Override

public void onNewFrame() {

updateVideoProgress();

}

@Override

public void onLoadSuccess() {

long duration = mVideoView.getDuration();//视频总时长,毫秒

mTotalDuration = RegularExpress.parseDuration(duration);

mSeekBar.setMax((int) duration);

}

@Override

public void onLoadError(String errorMessage) {

super.onLoadError(errorMessage);

Toast.makeText(PlayerActivity.this, “加载视频失败”, Toast.LENGTH_SHORT).show();

}

@Override

public void onDisplayModeChanged(int newDisplayMode) {

super.onDisplayModeChanged(newDisplayMode);

}

});

}

/**

  • 更新播放进度

*/

private void updateVideoProgress() {

long currentPosition = mVideoView.getCurrentPosition();

String currentPos = RegularExpress.parseDuration(currentPosition);

mSeekBar.setProgress((int) (currentPosition));//更新播放进度

StringBuilder sb = new StringBuilder();

sb.append(currentPos);

sb.append(" / ");

sb.append(mTotalDuration);

mVideoDuration.setText(sb);

}

@Override

public void onClick(View view) {

switch (view.getId()) {

case R.id.play:

performClickPlay();

break;

case R.id.video_vr:

performClickVideoVr();

break;

default:

break;

}

}

private void performClickVideoVr() {

mVideoView.setDisplayMode(3);//enterStereoMode,眼镜模式

}

/**

  • 播放暂停切换

*/

private void performClickPlay() {

if (isPlaying) {

mVideoView.pauseVideo();

mPlayView.setImageResource(R.mipmap.play);

isPlaying = false;

} else {

mVideoView.playVideo();

mPlayView.setImageResource(R.mipmap.stop);

isPlaying = true;

}

}

@Override

protected void onPause() {

super.onPause();

// Prevent the view from rendering continuously when in the background.

mVideoView.pauseRendering();

// If the video is playing when onPause() is called, the default behavior will be to pause

// the video and keep it paused when onResume() is called.

isPlaying = false;

}

@Override

protected void onResume() {

super.onResume();

// Resume the 3D rendering.

mVideoView.resumeRendering();

}

@Override

protected void onDestroy() {

//https://developers.google.com/vr/android/reference/com/google/vr/sdk/widgets/common/VrWidgetView#shutdown()

mVideoView.shutdown();

super.onDestroy();

}

/**

  • 播放器进度条监听

*/

private class SeekBarListener implements SeekBar.OnSeekBarChangeListener {

@Override

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

if (fromUser) {

mVideoView.seekTo(progress);

}

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

//手指离开进度条,三秒钟后隐藏控制面板

}

}

}

由于代码逻辑都比较简单,也都有注释,这里不再做过多的阐述。

下面介绍一下如何去除VR模式下界面上google自带的退出按钮和设置按钮。

集成过google vr或者玩过google vr sdk中提供的sample工程的童鞋都见过下面的两个按钮,在VR模式下,这两个按钮分别在页面的左上角和右上角。

去除方式多种多样,这里介绍比较简单实用的一种

在自己项目res/values/style.xml文件中添加如下样式:

那么中间的竖线如何去掉呢?

在自己项目的res/values/values.xml文件中添加如下代码:

0mm

0dip

112dip

效果如下:

为什么我们写一个style属性就能去掉返回和设置按钮呢?

查找源码发现com.google.vr:sdk-base1.10.0中layout文件夹下面有几个布局文件

back_button.xml

<?xml version="1.0" encoding="utf-8"?>

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

google vr 入门之制作简易的VR播放器及去除界面控制按钮(1),上海大厂Android面试经历,程序员,vr,android,面试

google vr 入门之制作简易的VR播放器及去除界面控制按钮(1),上海大厂Android面试经历,程序员,vr,android,面试

google vr 入门之制作简易的VR播放器及去除界面控制按钮(1),上海大厂Android面试经历,程序员,vr,android,面试

google vr 入门之制作简易的VR播放器及去除界面控制按钮(1),上海大厂Android面试经历,程序员,vr,android,面试

google vr 入门之制作简易的VR播放器及去除界面控制按钮(1),上海大厂Android面试经历,程序员,vr,android,面试

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

google vr 入门之制作简易的VR播放器及去除界面控制按钮(1),上海大厂Android面试经历,程序员,vr,android,面试

最后

总之啊,家里没矿的同学们,如果你们想以后的日子过得好一些,多想想你们的业余时间怎么安排吧;

技术方面的提升肯定是重中之重,但是技术外的一些“软实力”也不能完全忽视,很多时候升职确实是因为你的技术足够强,但也与你的“软实力”密切相关

在这我也分享一份大佬自己收录整理的 Android学习PDF+架构视频+面试文档+源码笔记 ,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这些都是我闲暇还会反复翻阅并给下属员工学习的精品资料。在脑图中,每个知识点专题都配有相对应的实战项目,可以有效的帮助大家掌握知识点。

总之也是在这里帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习

google vr 入门之制作简易的VR播放器及去除界面控制按钮(1),上海大厂Android面试经历,程序员,vr,android,面试

google vr 入门之制作简易的VR播放器及去除界面控制按钮(1),上海大厂Android面试经历,程序员,vr,android,面试

相信自己,没有做不到的,只有想不到的

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!文章来源地址https://www.toymoban.com/news/detail-846423.html

/>

最后

总之啊,家里没矿的同学们,如果你们想以后的日子过得好一些,多想想你们的业余时间怎么安排吧;

技术方面的提升肯定是重中之重,但是技术外的一些“软实力”也不能完全忽视,很多时候升职确实是因为你的技术足够强,但也与你的“软实力”密切相关

在这我也分享一份大佬自己收录整理的 Android学习PDF+架构视频+面试文档+源码笔记 ,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这些都是我闲暇还会反复翻阅并给下属员工学习的精品资料。在脑图中,每个知识点专题都配有相对应的实战项目,可以有效的帮助大家掌握知识点。

总之也是在这里帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习

[外链图片转存中…(img-qfVAMCRd-1712539227634)]

[外链图片转存中…(img-xQ4sIy6w-1712539227635)]

相信自己,没有做不到的,只有想不到的

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

到了这里,关于google vr 入门之制作简易的VR播放器及去除界面控制按钮(1),上海大厂Android面试经历的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分享VR眼镜加密播放器OEM方案

    随着科技的发展,电子成品更新换代很快,用户的娱乐工具也更加多样化,从电脑、手机、平板在到现在使用越来越多的 VR眼镜 ,给用户的体验也越来越多样。而对于内容提供商来说,内容是其竞争优势所在。那么如何做好视频在VR眼镜中的安全播放呢? 考虑VR眼镜的特殊性

    2024年02月07日
    浏览(38)
  • C#制作简易视频播放器

    1.打开vs2019新建一个窗体项目,选用框架.net framework4.7.2 2.在【工具箱】里随便选中一个控件,右键单击它 看到图片中的【选择项】了嘛,单击它,打开添加组件的一个窗体 在添加组件窗体中的【COM组件】中找到【Window Media Player】组件并勾选,然后【确定】 3.可以看到我们的

    2024年02月12日
    浏览(56)
  • 测试C#调用Aplayer播放视频(3:编写简易播放器)

      学习了参考文献1中的示例代码,也找出了前一篇文章中自己测试控件但无法播放视频的问题(没有将解码库文件复制到可执行程序所在的codecs文件夹内),本文基于APlayer组件编写简单的视频播放器,主要实现以下功能: 序号 功能 说明 1 自定义logo 调用SetCustomLogo函数设

    2024年02月05日
    浏览(67)
  • PyQt5实现简易音乐播放器

    环境 vscode python 3.10.0 PyQt5 5.15.4 功能目标 能够读取本地的音乐文件,并实现播放的开关、曲目的切换和音量的加减 具体实现 新建一个文件夹,在文件夹下再新建一个文件夹,命名为music,将歌曲放入其中。在vscode中打开该文件夹。 在QtDesigner中搭建出UI界面,并使用pyuic工具转

    2024年02月13日
    浏览(37)
  • 【Harmony OS】【ArkUI】ets开发 简易视频播放器

    前言:这一次我们来使用ets 的Swiper 组件、List 组件和Video 组件制作一个简易的视频播放器。本篇是以HarmonyOS 官网的codelab 简易视频播放器(eTS )为基础进行编写。本篇最主要的内容就是一个主界面包括顶部的视频海报轮播,中部的视频播放列表,以及点击海报和播放列表进

    2023年04月27日
    浏览(40)
  • 【OpenCV+Qt】实现简易视频播放器——支持进度条拖动

    OpenCV实现视频播放器,其思路大致就是在线程中使用OpenCV中的VideoCapture循环读取本地视频的每一帧Mat,然后发送到界面转换成QImage进行显示,而进度条拖动则用到了VideoCapture中的set函数,进度条则是使用Qslider;并且通过自定义新的进度条类实现点击跳转功能; 效果: 1.进行

    2023年04月08日
    浏览(54)
  • ChatGpt+人工修正 PyQt5 实现简易视频播放器

    支持功能: 1. 视频播放速度调整 2. 视频声音调整 3. 视频当前播放帧截帧(用的ffmpeg 怎么装自己百度去,截取准确度很高,QT自带的截帧那玩意信号不触发,不好使) 4. 视频暂停

    2024年02月16日
    浏览(42)
  • 简易但很实用的javaswing/gui音乐播放器

    视频浏览地址 很实用的一个javaswing音乐播放器。可以展示歌名,上一曲下一曲。 源码下载地址 支持:远程部署/安装/调试、讲解、二次开发/修改/定制

    2024年02月08日
    浏览(33)
  • Qt 实现简易的视频播放器,功能选择视频,播放,暂停,前进,后退,进度条拖拉,视频时长显示

    1.效果图 2.代码实现 2.1 .pro文件 2.2 .h文件 2.3 .cpp文件

    2024年04月12日
    浏览(44)
  • 038-第三代软件开发-简易视频播放器-自定义Slider (二)

    : Qt 、 Qml 、 3 、 4 、 5 欢迎来到我们的 QML C++ 项目!这个项目结合了 QML(Qt Meta-Object Language)和 C++ 的强大功能,旨在开发出色的用户界面和高性能的后端逻辑。 在项目中,我们利用 QML 的声明式语法和可视化设计能力创建出现代化的用户界面。

    2024年02月07日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包