-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDraft3
271 lines (216 loc) · 9 KB
/
Draft3
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
269
270
271
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 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;
import java.util.HashMap;
import java.util.Iterator;
class Thr extends Thread {
private Activity my = null;
private Lyrics ly = null;
private ButtonClas bc = null;
private MainActivity.YouTube mt=null;
Thr(final Activity my, Lyrics ly, ButtonClas bc, MainActivity.YouTube mt) {
this.mt=mt;
this.ly = ly;
this.bc = bc;
} // Thr 생성자
public void run() { // 여기서 터지넹..ㅋ
Log.v("dd","tHRE");
while (true) {
Log.v("dd","debug1");
if (ly.hm.containsKey((int)mt.myYouTubePlayer.getCurrentTimeMillis() / 1100 ))
{
bc.tv.setText((int)mt.myYouTubePlayer.getCurrentTimeMillis() / 1100);
Log.v("dd","debug2");
}// if 문
}// while 문
}// run()함수
} // Thr class
class Lyrics {
public HashMap<Integer, String> hm = null;
private Activity ac = null;
private ButtonClas bc = null;
public int key2[] = null;
Lyrics(final Activity myActivity, ButtonClas bc) {
this.ac = myActivity;
this.bc = bc;
hm = new HashMap<>();
hm.put(2, ac.getResources().getString(R.string.l1));
hm.put(4, ac.getResources().getString(R.string.l2));
Iterator<Integer> it = hm.keySet().iterator();
Integer key1[] = new Integer[hm.size()];
key2 = new int[hm.size()];
int i = 0;
while (it.hasNext()) {
key1[i] = it.next();
key2[i] = key1[i];
Log.d("dd", "" + key2[i]);
i++;
}
Log.d("dd", "finish");
}
}
class ButtonClas {
private Activity myActivity = null;
private Button phraseButton = null;
private Button songButton = null;
public TextView tv = null;
ButtonClas(final Activity myActivity) {
this.myActivity = myActivity;
phraseButton = (Button) myActivity.findViewById(R.id.button2);
songButton = (Button) myActivity.findViewById(R.id.button3);
tv = (TextView) myActivity.findViewById(R.id.textView); // 가사를 띄울 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); //더 이상누를수없게
}
});
} // constructor
}
class SubTitle {
private Activity ac;
private Spinner sp;
private String[] str;
private ArrayAdapter<String> adapter;
SubTitle(final Activity ac) {
this.ac = ac;
sp = (Spinner) ac.findViewById(R.id.spinner);
str = new String[]{"영어", "한국어", "영어+한국어"};
adapter = new ArrayAdapter<String>(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;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
}); // setOnItemSelected 함수 끝
} // constructor
}// SubTitle class
public class MainActivity extends YouTubeBaseActivity {
private YouTube youTube = null;
private ButtonClas 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 ButtonClas(this); // 레이아웃 클래스
st = new SubTitle(this); // 스피너 관리 클래스
ly = new Lyrics(this, bc); // 가사 해쉬맵 클래스
youTube = new YouTube(ly, thr); // 유튜브 영상 클래스 innerClass 로 생성
thr = new Thr(this, ly, bc,youTube);
} // 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 = null;
public YouTubePlayer myYouTubePlayer = null;
private Lyrics ly = null;
private Thr thr = null;
public YouTube(Lyrics ly, Thr thr) {
this.ly = ly;
this.thr = thr;
youTubePlayerView = (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()가 있음, 메소드의
//매개변수로 인스턴스 생성
}
@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(); //플레이 할때 스레드가 초 count
}
@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