Android 에서의 구루미 OPEN API 사용 가이드 입니다.
최소 요구 사항
- Android 21 이상 (SDK version 21)
- android.permission.CAMERA 허용 필수
- android.permission.RECORD_AUDIO 허용 필수
- android.permission.MODIFY_AUDIO_SETTINGS 허용 필수
☁️ Manifest 설정 (필수)
<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.MODIFY_AUDIO_SETTINGS" />
☁️ Manifest 설정 (옵션)
블루투스 기기 사용시 추가 권한 설정
<!-- Request legacy Bluetooth permissions on older devices. -->
<uses-permission android:name="android.permission.BLUETOOTH"
android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
android:maxSdkVersion="30" />
<!-- Android 12 Permission -->
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
☁️ Webview 설정 (필수)
webView.settings.userAgentString += " BizAOSWebviewApp"
// Gooroomee Android Guide : User-agent
//
// 1. 기본 User-agent 값에 "BizAOSWebviewApp" 를 추가
// 2. 위 설정이 없는 경우 앱내 웹뷰에서 정상동작하지 않음
//
private var chromeClient = object : WebChromeClient() {
override fun onShowCustomView(view: View, callback: WebChromeClient.CustomViewCallback) {
super.onShowCustomView(view, callback)
if (view is FrameLayout) {
if (view.focusedChild is VideoView) {
val video = view.focusedChild as VideoView
view.removeView(video)
video.start()
}
}
}
@RequiresApi(Build.VERSION_CODES.M)
override fun onPermissionRequest(request: PermissionRequest?) {
Log.e( TAG,"onPermissionRequest")
try {
GlobalScope.launch(Dispatchers.Main){
request?.grant(request.resources)
}
} catch (e: Exception) {
Log.e(TAG, "permissionRequest: $e")
}
}
}
// Gooroomee Android Guide : WebChromeClient
//
// 1. 크롬 웹 클라이언트를 사용
// 2. 웹뷰에서 카메라, 마이크 권한을 획득하도록 PermissionRequest 추가
//
var otpUrl = "https://biz.gooroomee.com/room/otp/biz_7cabdcc0806b4d189648420abed25a3926030ada2bf9418eb3580b48a2"
otpUrl = "$otpUrl?join=true"
webView.loadUrl(otpUrl)
// Gooroomee Android Guide : OTP URL Parameter
//
// 1. API 통해 생성된 OTP URL 에 join=true 파라매터를 포함
// 2. 해당 파라매터가 없는 경우 정상 동작하지 않거나 에러 페이지로 리다이렉트됨
//
webView.settings.javaScriptEnabled = true
webView.addJavascriptInterface(WebViewClientClass(), "aoscall")
// Gooroomee Android Guide : addJavascriptInterface
//
// 1. "aoscall" 이라는 사전 정의 메세지를 통해 JavaScript Message 가 전달됨
// 2. 해당 설정을 하지 않는 경우 이벤트에 대한 스크립트 메세지를 수신하지 못함
//
@JavascriptInterface
fun sendAOS(msg: String) {
Log.e("test", "sendAOS : $msg")
if (msg.contains("/room/exit")) {
Toast.makeText(context, "close called", Toast.LENGTH_SHORT).show()
}
}
// Gooroomee Android Guide : @JavascriptInterface
//
// 1. 웹페이지에서 이벤트발생시 sendAOS 가 호출됨
//