2. SDK 설치하기

2.1. SDK 설치하기

  • FlipFlop Android SDK를 가져오기 위한 repository를 지정해주어야 합니다.
    • 사용중인 Gradle의 버전에 따라 추가 해주어야 하는 코드의 위치가 다를 수 있습니다.
    • Gradle 6.8 이상을 사용하고 있는 경우에는 settings.gradle에, Gradle 6.7 이전 버전을 사용하고 있는 경우에는 build.gradle에 다음의 내용을 추가합니다.
// Gradle 6.8 이상을 사용하고 있는 경우
dependencyResolutionManagement {
repositories {
maven { url 'https://jitpack.io' }
}
}
// Gradle 6.7 이전 버전을 사용하고 있는 경우
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
  • SDK를 사용할 모듈의 build.gradle에 아래의 코드를 추가합니다.
dependencies {
implementation(‘com.jocoos.jocoos-public:ff-android-sdk:0.25.0.beta’) {
transitive = true
}
}

2.2 앱 권한 설정하기

SDK를 사용하려면 앱 권한이 필요합니다. 이 권한들이 있어야 라이브를 할 수 있습니다. 아래의 내용을 AndroidManifest.xml에 추가합니다.

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-feature android:name="android.hardware.camera.autofocus"/>
<uses-feature
android:name="android.hardware.camera"
android:required="false" />

위의 권한 추가 후 앱 실행 후 라이브 송출을 하기 전에 관련 권한을 획득해야 합니다. 아래의 예는 권한 요청에 대한 코드 스니펫을 보여줍니다.

참고: Android Runtime Permission

private var permissions = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
arrayOf(
Manifest.permission.INTERNET,
Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.READ_MEDIA_IMAGES,
)
} else {
arrayOf(
Manifest.permission.INTERNET,
Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.READ_EXTERNAL_STORAGE,
)
}
private var permissionGranted = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
permissionGranted = requestPermission(permissions)
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
permissionGranted =
grantResults.isNotEmpty() && grantResults.all { it == PackageManager.PERMISSION_GRANTED }
when (requestCode) {
PERMISSIONS_REQUEST -> {
if (permissionGranted) {
initialized()
} else {
// need live permission
}
}
else -> {
}
}
}
private fun requestPermission(permissions: Array<String>): Boolean {
var mustRequest = false
for (permission in permissions) {
if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
mustRequest = true
break
}
}
if (mustRequest) {
ActivityCompat.requestPermissions(this, permissions, PERMISSIONS_REQUEST)
}
return !mustRequest
}