【Android开发VR实战】二.播放360°全景视频
2016-12-30 10:33
806 查看
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53924006
本文出自【DylanAndroid的博客】
那么,如何在Android中去开发VR功能的APP呢?我们利用谷歌提供的开源SDK去实现一个360°全景视频的功能
1
2
1
2
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
本文出自【DylanAndroid的博客】
【Android开发VR实战】二.播放360°全景视频
VR即Virtual Reality虚拟现实。虚拟现实技术是一种可以创建和体验虚拟世界的计算机仿真系统它利用计算机生成一种模拟环境是一种多源信息融合的交互式的三维动态视景和实体行为的系统仿真使用户沉浸到该环境中。那么,如何在Android中去开发VR功能的APP呢?我们利用谷歌提供的开源SDK去实现一个360°全景视频的功能
一.在build.gradle中引入谷歌VR的SDK依赖
compile 'com.google.vr:sdk-videowidget:1.10.0'1
1
二.注意支持的最小SDK
minSdkVersion 19 targetSdkVersion 251
2
1
2
三.界面布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="cn.bluemobi.dylan.vrdevelopvideo.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Android开发VR360度全景视频" /> <com.google.vr.sdk.widgets.video.VrVideoView android:id="@+id/vr_video_view" android:layout_width="match_parent" android:layout_height="250dp"></com.google.vr.sdk.widgets.video.VrVideoView> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageButton android:id="@+id/play_toggle" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@android:color/transparent" android:paddingStart="0dp" android:src="@drawable/pause" /> <SeekBar android:id="@+id/seek_bar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="0dp" android:layout_height="32dp" android:layout_weight="8" /> <ImageButton android:id="@+id/volume_toggle" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@android:color/transparent" android:paddingStart="0dp" android:paddingTop="4dp" android:src="@drawable/volume_on" /> </LinearLayout> </LinearLayout>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
四.加载360°全景视频
/** * 加载360度全景视频 */ private void load360Video() { vr_video_view = (VrVideoView) findViewById(R.id.vr_video_view); seek_bar = (SeekBar) findViewById(R.id.seek_bar); volume_toggle = (ImageButton) findViewById(R.id.volume_toggle); play_toggle = (ImageButton) findViewById(R.id.play_toggle); /**设置加载设置**/ VrVideoView.Options options = new VrVideoView.Options(); options.inputType = VrVideoView.Options.TYPE_STEREO_OVER_UNDER; /** * 设置加载监听 */ vr_video_view.setEventListener(new VrVideoEventListener() { /** * 视频播放完成回调 */ @Override public void onCompletion() { super.onCompletion(); /**播放完成后跳转到开始重新播放**/ vr_video_view.seekTo(0); setIsPlay(false); Log.d(TAG, "onCompletion()"); } /** * 加载每一帧视频的回调 */ @Override public void onNewFrame() { super.onNewFrame(); seek_bar.setProgress((int) vr_video_view.getCurrentPosition()); Log.d(TAG, "onNewFrame()"); } /** * 点击VR视频回调 */ @Override public void onClick() { super.onClick(); Log.d(TAG, "onClick()"); } /** * 加载VR视频失败回调 * @param errorMessage */ @Override public void onLoadError(String errorMessage) { super.onLoadError(errorMessage); Log.d(TAG, "onLoadError()->errorMessage=" + errorMessage); } /** * 加载VR视频成功回调 */ @Override public void onLoadSuccess() { super.onLoadSuccess(); /**加载成功后设置回调**/ seek_bar.setMax((int) vr_video_view.getDuration()); Log.d(TAG, "onNewFrame()"); } /** * 显示模式改变回调 * 1.默认 * 2.全屏模式 * 3.VR观看模式,即横屏分屏模式 * @param newDisplayMode 模式 */ @Override public void onDisplayModeChanged(int newDisplayMode) { super.onDisplayModeChanged(newDisplayMode); Log.d(TAG, "onLoadError()->newDisplayMode=" + newDisplayMode); } }); try { /**加载VR视频**/ vr_video_view.loadVideoFromAsset("congo.mp4", options); } catch (IOException e) { e.printStackTrace(); } /**设置声音按钮点击监听**/ volume_toggle.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { setIsMuted(!isMuted); } }); /**设置播放暂停按钮点击监听**/ play_toggle.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { setIsPlay(!isPlay); } }); /**设置进度条拖动监听**/ seek_bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { /** * 进度条拖动改变监听 * @param seekBar 拖动条 * @param progress 进度 * @param fromUser 是否是用户手动操作的 */ @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (fromUser) { /**调节视频进度**/ vr_video_view.seekTo(progress); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); } /** * 设置声音开关 * * @param isMuted 开关 */ private void setIsMuted(boolean isMuted) { this.isMuted = isMuted; volume_toggle.setImageResource(isMuted ? R.drawable.volume_off : R.drawable.volume_on); vr_video_view.setVolume(isMuted ? 0.0f : 1.0f); } /** * 设置播放暂停 * * @param isPlay 播放暂停 */ private void setIsPlay(boolean isPlay) { this.isPlay = isPlay; play_toggle.setImageResource(isPlay ?R.drawable.pause: R.drawable.play ); if(isPlay){ vr_video_view.playVideo(); }else{ vr_video_view.pauseVideo(); } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
五.GitHub
相关文章推荐
- 【Android开发VR实战】二.播放360°全景视频
- 【Android开发VR实战】二.播放360°全景视频
- 【Android开发VR实战】二.播放360°全景视频(自用笔记)
- [置顶] Android开发实战使用(VR技术实现360°全景视频播放功能)
- 【Android开发VR实战】二.播放360°全景视频
- Android开发VR实战之播放360度全景视频
- 【Android开发VR实战】一.给用户呈现一个360°全景图片
- 【Android开发VR实战】一.给用户呈现一个360°全景图片
- Android 360全景视频播放。
- Android开发之视频播放
- 老罗Android视频开发教程(百度地图实战开发)十集集合
- 微信开发实战入门视频教程(Android4.4.2)
- Android 360全景开发(PanoramaGL)
- 微信开发实战入门视频教程(Android4.4.2)
- Android开发 之 简单视频播放
- Android开发之MediaPlayer和SurfaceView播放视频
- android开发视频播放器-----视频播放 Vitamio框架的使用(一)
- android开发之播放资源文件中的视频
- Android开发之MediaPlayer多媒体(音频,视频)播放工具类
- Android实战开发租赁管理软件视频教程 Android项目实战教程