본문 바로가기
안드로이드 웹앱 콘테츠 개발자 양성(국비지원)/Android 기능

Android Studio(기능) ExoPlayer이용 json 파싱 및 영상 보여주기1-2

by 차누감 2019. 11. 6.

Android Studio(기능) ExoPlayer이용 json 파싱 및 영상 보여주기1-1에서 여기까지 했다.

추가로 플레이 버튼이 영상 가운데에 오도록하고,  화면 밖으로 영상이 나갔을 때 재생이 안되게하고 전체화면도 해보자.

<최종 실행 화면>

 

 플레이 버튼이 영상 가운데에 오도록 하는 것은 레이아웃만 추가하면 알아서 적용이 된다.

exo_player_control_view.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">
 
    <ImageButton
        android:id="@id/exo_play"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#cccc0000"
        android:layout_centerInParent="true"
        style="@style/ExoMediaButton.Play"/>
    <ImageButton
        android:id="@id/exo_pause"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#cccc0000"
        android:layout_centerInParent="true"
        style="@style/ExoMediaButton.Pause"/>
 
</RelativeLayout>
 
 

적용된 모습을 볼 수 있다.

 화면 밖으로 영상이 나갔을 때 재생이 안되게 하겠다.

VideoAdaper에 오버라이드 메소드 추가

그리고 추가로 전체 화면 모드로 동영상을 재생을 해보자. 근데 따로 지원해주는 기능이 없어서..

버튼을 눌렀을 때, 새로운 액티비티를 띄워 화면 전체에 PlayView를 하겠다.

어댑터에서 목록하나하나 화면을 보여주므로 onclick은 안되고 id로 리스너를 달아줘야 한다.

onClick 부분에 새로운 액티비티를 써주면된다. 그전에 액티비티를 만들자.

activity_full_screen.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".FullScreenActivity">
 
        android:id="@+id/pv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
 
</RelativeLayout>
 
 
s
동영상을 전체화면은 보통 핸드폰 가로모드로 하므로 가로 모드로만 화면 구성되게 했다.

full 버튼을 눌렀을 시 새로운 액티비티로 가고,

지금 재생중인 영상을 이어서 보여주기 위해 getCurrentPosition 값도 보내줬다.

(안그러면 전체화면시 영상이 처음부터 다시 나온다.)

 

이제 새로 만든 액티비티에 코드 작성만 하면 끝난다.

FullScreenActivity.java

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
 
 
 
 
public class FullScreenActivity extends AppCompatActivity {
 
    PlayerView pv;
    SimpleExoPlayer player;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_full_screen);
 
        pv= findViewById(R.id.pv);
        player= ExoPlayerFactory.newSimpleInstance(thisnew DefaultTrackSelector());
        pv.setPlayer(player);
 
        Intent intent=getIntent();
        String videoUrl= intent.getStringExtra("videoUrl");
        long currentPos= intent.getLongExtra("currentPos",0);
 
        //미디어 소스 객체 생성
        DataSource.Factory factory= new DefaultDataSourceFactory(this"Ex90Exoplayer");
        ProgressiveMediaSource.Factory mediaFactory= new ProgressiveMediaSource.Factory(factory);
 
        ProgressiveMediaSource mediaSource= mediaFactory.createMediaSource(Uri.parse(videoUrl));
                player.prepare(mediaSource);
        player.setPlayWhenReady(true);
 
 
    }
}
 
 
 

<최종 실행 화면>

댓글