return false;
}
+bool CAudioSessionHandler::__checkNeedBlock(const char *focus_acquired_by) {
+ assert(focus_acquired_by != NULL);
+
+ if (!strcmp(focus_acquired_by, "alarm") ||
+ !strcmp(focus_acquired_by, "ringtone-voip") ||
+ !strcmp(focus_acquired_by, "ringtone-call") ||
+ !strcmp(focus_acquired_by, "voip") ||
+ !strcmp(focus_acquired_by, "call-voice") ||
+ !strcmp(focus_acquired_by, "call-video")) {
+ AUDIO_IO_LOGW("Blocked by session policy, focus_acquired_by[%s]", focus_acquired_by);
+ return true;
+ }
+
+ return false;
+}
+
int CAudioSessionHandler::getId() {
return __mId;
}
if (__mIsInit == false) {
THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Doesn't initialize CAudioSessionHandler");
}
+ if (!__mUseFocus || __mId < 0)
+ return;
if (__mUseFocus && __isFocusRequired(__mMultimediaSession, __mOptions)) {
if (__mId >= 0) {
if (!is_focus_cb_thread)
__unlockFocusCBMutex();
}
+ } else {
+ int ret = MM_ERROR_NONE;
+ char *stream_type = NULL;
+ char *ext_info = NULL;
+ int option = 0;
+
+ if ((ret = mm_sound_get_stream_type_of_acquired_focus(FOCUS_FOR_BOTH, &stream_type, &option, &ext_info)))
+ return;
+
+ AUDIO_IO_LOGD("Focus is acquired by stream_type[%s], option[%d], ext_info[%s]", stream_type, option, ext_info);
+
+ if (__checkNeedBlock((const char*)stream_type)) {
+ free(stream_type);
+ free(ext_info);
+ THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_POLICY_BLOCKED, "Blocked by an acquired focus");
+ }
+ free(stream_type);
+ free(ext_info);
}
}