728x90
안녕하세요 이번시간에는 Picture-in-Picture 를 지원하는 방법에 대해서 소개하겠습니다.
PIP란?
이렇게 동영상, 이미지 등 축소된 화면을 한쪽에 배치되어 볼 수 있도록 합니다.
기본적으로 시스템은 PiP를 자동으로 지원하지 않습니다. 사용하기 위해서는 다음과 같이 매니페스트 파일에 추가합니다.
<activity android:name="VideoActivity"
android:supportsPictureInPicture="true"
android:configChanges=
"screenSize|smallestScreenSize|screenLayout|orientation"
해당 코드를 작성합니다
MainAcitivity.java
package com.example.pipexam;
import androidx.appcompat.app.AppCompatActivity;
import android.app.PictureInPictureParams;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.util.Rational;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private final String TAG=this.getClass().getSimpleName();
private TextView textView;
PictureInPictureParams.Builder pipBuilder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=findViewById(R.id.text_view);
}
/**
* 사용자 선택의 결과로 활동이 백그라운드로 이동하려고 할 때 활동 라이프사이클의 일부로 호출됩니다.
* 예를 들어, 사용자가 홈 키를 누를 때 onUserLeaveHint가 호출되지만 수신 전화로 인해
* 통화 중인 활동이 자동으로 전면에 표시되면 onUserLeaveHint는 중단된 활동에 대해 호출되지 않습니다.
* 호출된 경우 이 메서드는 활동이 일시 중지 콜백되기 직전에 호출됩니다.
* 이 콜백 및 onUser Interaction은 활동이 상태 표시줄 통지를 지능적으로 관리하는 데 도움을 주기 위한 것입니다.
* 특히 활동이 통지를 취소할 적절한 시간을 결정하는 데 도움을 주기 위한 것입니다.
* */
@Override
protected void onUserLeaveHint() {
Log.d(TAG, "onUserLeaveHint: ");
super.onUserLeaveHint();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
pipBuilder= new PictureInPictureParams.Builder();
enterPictureInPictureMode(pipBuilder.build());
textView.setText("PIP Mode!!!");
}
}
}
이 부분을 잘 활용하면 화상통화 앱, 동영상 앱 등 구현할 때 좋을것 같습니다!
'안드로이드 자바' 카테고리의 다른 글
[Android][Java] 네이버 맵 API 사용하기 (5) | 2023.04.10 |
---|---|
[Android][Java] TimeZone별 시간 가져오기 (0) | 2023.04.06 |
[Android][Java] 날짜순으로 정렬하기 (0) | 2023.03.29 |
[Android][Java] Material DatePicker 달력(캘린더) 사용하기 (0) | 2023.03.28 |
[Android][Java] 어디서나 사용가능한 프로그레스바 (0) | 2023.03.26 |