반응형
(각 모듈들의 사용 방법은 이전에 포스팅해두었으니 좀 더 자세히 확인하고 싶으시면 아래의 링크를 클릭해주세요.)
네트워크 통신을 위한 라이브러리 Volley 모듈 사용
Volley - 네트워크 통신 라이브러리 자세히 보러가기
- build.gradle (Module)
dependencies {
implementation 'com.android.volley:volley:1.2.1'
}
- AndroidManifests.xml
<uses-permission android:name="android.permission.INTERNET" />
썸네일을 앱에 출력해줄 Glide 모듈 사용
Glide 라이브러리 - 인터넷의 이미지를 URL주소로 앱에 이미지 출력하기 자세히 보러가기
- build.gradle (Module)
dependencies {
implementation 'com.github.bumptech.glide:glide:4.13.2'
annotationProcessor 'com.github.bumptech.glide:compiler:4.13.2'
}
YouTube API 호출과 파라미터(매개변수)
- API 요청 URL
GET https://www.googleapis.com/youtube/v3/search
- 자주 쓰는 매개변수
- part(id/snippet) : API 응답이 포함하는 검색 결과의 리소스 속성을 목록으로 지정
- snippet 속성은 결과의 제목, 설명 등을 식별하는 다른 속성을 모두 포함
- key : API를 사용할 사용자 지정, 자신의 API 키 입력
- q : 검색할 검색어를 지정
- maxResults : 결과로 보여줄 최대 항목 수 지정, 값은 0~50까지이며 기본값은 5로 설정
- type : 특정 유형의 리소스만 검색하도록 검색 쿼리를 제한, 값은 channel, playlist, video
- pageToken : 결과 집합의 특정 페이지를 식별
- nextPageToken / prevPageToken 속성은 검색할 기타 페이지를 식별
- order : API 응답에서 리소스를 지시하는데 사용하는 메소드 지정, 기본값은 relevance
- date : 최근 항목부터 시간 순서대로 정렬
- rating : 높은 평가부터 낮은 평가순으로 정렬
- relevance : 검색어에 대한 관련성을 기준으로 정렬, order의 기본 값
- title : 제목에 따라 문자순으로 정렬
- videoCount : 업로드한 동영상 수에 따라 채널을 내림차순 정렬
- viewCount : 조회수가 높은 항목부터 정렬
- 그 외 YouTube Data API 레퍼런스에서 자세한 매개변수 확인 가능
- https://developers.google.com/youtube/v3/docs/search/list?hl=ko
- part(id/snippet) : API 응답이 포함하는 검색 결과의 리소스 속성을 목록으로 지정
검색어를 이용하여 유튜브 검색하기
GET API 호출 URL 설정 (유튜브 검색)
- 구글 클라우드에서 생성한 YouTube Data API 키 확인
- 파라미터들을 이용하여 검색 결과 설정 (URL)
- Config.YOUTUBE_API_KEY : 보안을 위해 Config 클래스에 따로 API 키 값 저장
// 기본 검색 API URL
// 보안을 위해 API 키는 Config 클래스에 따로 저장하여 변수 호출, 자신의 API키를 입력
String searchURL = "https://www.googleapis.com/youtube/v3/search?part=snippet" + Config.YOUTUBE_API_KEY;
// 검색어 파라미터, 검색어 저장
String keyword = "&q=" + editSearch.getText().toString().trim();
// 최대 보여줄 데이터 갯수
String maxResultsParam = "&maxResults=20";
// 검색 URL, 전역 변수로 설정하는 것이 유용
URL = searchURL + keyword + maxResultsParam;
설정한 URL로 YouTube API 호출
- POSTMAN을 통해 데이터 교환 한 결과
- POSTMAN을 통해 데이터 교환 한 결과
검색어를 통해 유튜브를 검색해보기 (Android Studio)
- 이번 포스팅에서는 유튜브 API 사용 방법이 주가 된 관계로 viedoId 컬럼의 값만 가져와서 출력합니다.
- 다음 포스팅에서는 유튜브의 검색된 데이터로 썸네일과 제목, 내용을 화면에 출력하고 해당 썸네일을 클릭하면 웹 브라우저로 유튜브가 켜지는 것을 구현합니다.
VideoId
- 유튜브의 영상을 식별하는 영상의 ID
기능 설계
앱 실행시 "노래" 라는 검색어로 유튜브를 검색하고 검색된 유튜브 영상의 videoId를 출력
레이아웃 UI 설계
- 검색 된 결과를 뷰에 표시해줄 텍스트뷰 생성
소스 코드
public class MainActivity extends AppCompatActivity {
ArrayList<String> ytTest = new ArrayList<>();
String URL;
TextView txtResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// API 호출 URL 설정
String searchURL = "https://www.googleapis.com/youtube/v3/search?part=snippet" + Config.YOUTUBE_API_KEY;
String keyword = "&q=노래";
String maxResultsParam = "&maxResults=20";
URL = searchURL + keyword + maxResultsParam;
txtResult = findViewById(R.id.txtResult);
// 네트워크 통신을 위한 객체 생성
// 생성자 : http Method, API URL, 전달 할 데이터, 실행 코드(Listener)
RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, URL, null,
response -> {
// API 호출 결과 실행
try {
JSONArray jArr = response.getJSONArray("items");
for (int i = 0; i < jArr.length(); i++) {
JSONObject jData = jArr.optJSONObject(i);
// json Data = items - id, 유튜브 비디오 ID 값 저장
JSONObject jid = jData.optJSONObject("id");
String videoId = "\nvideoId " + i + ". = " + jid.optString("videoId");
// 검색 결과 videoId를 배열에 저장
ytTest.add(videoId);
}
txtResult.setText(ytTest+"");
} catch (JSONException e) {
e.printStackTrace();
}
}, error -> Log.i("onErrorResponse", "" + error));
requestQueue.add((jsonObjectRequest));
}
}
실행 화면
- 앱 실행시 "노래" 를 유튜브에 검색하여 검색된 영상의 id를 화면에 출력
반응형