-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDraft4
268 lines (210 loc) · 8.92 KB
/
Draft4
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
package com.example.zomebie.myapplication01;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import java.util.HashMap;
import java.util.Iterator;
import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayer.ErrorReason;
import com.google.android.youtube.player.YouTubePlayer.PlayerStateChangeListener;
import com.google.android.youtube.player.YouTubePlayer.Provider;
import com.google.android.youtube.player.YouTubePlayerView;
import com.google.android.youtube.player.YouTubePlayer.PlaybackEventListener;
class Thr extends Thread {
private Lyrics ly;
private ButtonClass bc;
private MainActivity.YouTube mt;
Thr(Lyrics ly, ButtonClass bc, MainActivity.YouTube mt)
{
this.ly = ly;
this.bc = bc;
this.mt=mt;
} // Thr 생성자
public void run()
{
while (true)
{
if (ly.hm.containsKey(mt.myYouTubePlayer.getCurrentTimeMillis() / 1000 ))
{
bc.tv.setText(ly.hm.get(mt.myYouTubePlayer.getCurrentTimeMillis() / 1000));
}// if 문
}// while 문
}// run()함수
} // Thr class
class Lyrics {
public HashMap<Integer, String> hm; // key->seconds, value->lyrics
public int key2[]; // an int type container for key
Lyrics(final Activity myActivity)
{
hm = new HashMap<>();
hm.put(0, myActivity.getResources().getString(R.string.l1));
hm.put(4, myActivity.getResources().getString(R.string.l2));
hm.put(8, myActivity.getResources().getString(R.string.l3));
hm.put(12, myActivity.getResources().getString(R.string.l4));
hm.put(16, myActivity.getResources().getString(R.string.l5));
hm.put(20, myActivity.getResources().getString(R.string.l6));
Iterator<Integer> it = hm.keySet().iterator();
key2 = new int[hm.size()];
int i = 0;
while (it.hasNext())
{
key2[i] = it.next();
i++;
} // while
} // Lyrics 생성자
} // Lyrics 클래스
class ButtonClass {
private Button phraseButton; // 가사를 저장할 버튼
private Button songButton; // 재생할 영상(제목)을 저장할 버튼
public TextView tv; // 가사를 띄울 TextView
ButtonClass(final Activity myActivity)
{
phraseButton = myActivity.findViewById(R.id.button2);
songButton = myActivity.findViewById(R.id.button3);
tv = myActivity.findViewById(R.id.textView);
phraseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 영상과 가사 멈추기
// textView 에서 해당 가사 받아서 넘겨주기( 단어장 페이지 완성되면 )
Toast.makeText(myActivity, "문장이 추가되었습니다.", Toast.LENGTH_LONG).show(); // 넘겨줬으면 확인 메세지 띄워주고
// 영상, 타이머 다시 시작
}
});
songButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(myActivity, "영상이 즐겨찾기에 추가되었습니다.", Toast.LENGTH_LONG).show();
songButton.setBackgroundColor(Color.argb(0xff, 132, 132, 130)); // 버튼의 색깔 회색으로 바뀌고
songButton.setClickable(false); // 더 이상누를수없게
}
});
} // ButtonClass 생성자
} // ButtonClass 클래스
class SubTitle {
private Spinner sp;
private String[] str;
private ArrayAdapter<String> adapter;
SubTitle(final Activity ac) {
sp = ac.findViewById(R.id.spinner);
str = new String[]{"영어", "한국어", "영어+한국어"}; // 스피너에 넣고 싶은 목록
adapter = new ArrayAdapter<>(ac, android.R.layout.simple_spinner_item, str); // 스퍼너와 스피너 목록을 연결시켜 줄 어댑터
sp.setAdapter(adapter); // 스피너에 만들어준 어댑터 채우기
sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (position)
{
case 0:
break; // 영어 가사
case 1:
break; // 한국어 가사
case 2:
break; // 영어와 한국어 같이
default:
break;
} // switch
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
}); // setOnItemSelected 함수 끝
} // SubTitle constructor
}// SubTitle class
public class MainActivity extends YouTubeBaseActivity {
private YouTube youTube = null;
private ButtonClass bc = null;
private SubTitle st = null;
private Lyrics ly = null;
private Thr thr = null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bc = new ButtonClass(this); // 레이아웃(버튼2개와 텍스트뷰) 클래스
st = new SubTitle(this); // 스피너 관리 클래스
ly = new Lyrics(this); // 가사 저장 클래스
youTube = new YouTube(); // 유튜브 영상 클래스 ( innerClass 로 생성 )
thr = new Thr(ly,bc,youTube); // sync thread class
} // OnCreate 함수 끝
// innerClass YouTube
class YouTube implements YouTubePlayer.Provider
{
public static final String API_KEY = "AIzaSyCsaiAc4liJ9if0n1N_xAMUygpav0OB3YM ";
public static final String VIDEO_ID = "aOJAWl12kII";
public YouTubePlayerView youTubePlayerView;
public YouTubePlayer myYouTubePlayer = null;
public YouTube()
{
youTubePlayerView = findViewById(R.id.youtube_player); // 영상 띄울 곳
youTubePlayerView.initialize(API_KEY, new YouTubePlayer.OnInitializedListener() { // 어떤 영상을 띄울 지
@Override
public void onInitializationSuccess(Provider provider, YouTubePlayer youTubePlayer, boolean b) {
youTubePlayer.setPlayerStateChangeListener(playerStateChangeListener);
youTubePlayer.setPlaybackEventListener(playbackEventListener);
if (!b) {
youTubePlayer.cueVideo(VIDEO_ID); // 우리가 넣고자 하는 영상 넣기
}
myYouTubePlayer = youTubePlayer; // YouTubePlayer interface 안에 우리가 쓰고자 하는 getCurrentTimeMills()가 있음, 메소드의
//매개변수로 YouTubePlayer 인스턴스 생성
}
@Override
public void onInitializationFailure(Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
Log.d("mini1", "initialization fail");
}
});
} // youTubePlayerView.initialize
private PlaybackEventListener playbackEventListener = new PlaybackEventListener() {
@Override
public void onPlaying() {
Log.v("dd","onPlaying");
thr.start(); //플레이 할때 스레드 시작
}
@Override
public void onPaused() {
}
@Override
public void onStopped() {
}
@Override
public void onBuffering(boolean b) {
}
@Override
public void onSeekTo(int i) {
}
}; // PlaybackEventListener interface
private PlayerStateChangeListener playerStateChangeListener = new PlayerStateChangeListener() {
@Override
public void onLoading() {
}
@Override
public void onLoaded(String s) {
}
@Override
public void onAdStarted() {
}
@Override
public void onVideoStarted() {
}
@Override
public void onVideoEnded() {
}
@Override
public void onError(ErrorReason errorReason) {
}
}; //PlayerStateChangeListener interface
@Override
public void initialize(String s, YouTubePlayer.OnInitializedListener onInitializedListener) {
}
} // YouTube innerclass
} // MainActivity class