From: Ji-hoon Lee Date: Tue, 16 Apr 2019 10:47:33 +0000 (+0900) Subject: Add API : ma_set_background_volume X-Git-Tag: submit/tizen/20190911.070639~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5ca8d18e1c28f4d79865931e09ce0a6a94d70af6;p=platform%2Fcore%2Fuifw%2Fmulti-assistant.git Add API : ma_set_background_volume Change-Id: I0cbeb2b5a2192914e1e5f56a402bc4544d08c435 --- diff --git a/client/ma.c b/client/ma.c index 6c7ee1c..1df7170 100644 --- a/client/ma.c +++ b/client/ma.c @@ -1482,3 +1482,41 @@ int ma_get_recording_audio_source_type(char** type) { return ret; } + +int ma_set_background_volume(double ratio) +{ + SLOG(LOG_DEBUG, TAG_MAC, "[Manager] Adjust background volume"); + + if (0 != __ma_get_feature_enabled()) { + SLOG(LOG_DEBUG, TAG_MAC, "@@@ [Manager] not supported"); + return MA_ERROR_NOT_SUPPORTED; + } + + if (0 != __ma_check_privilege()) { + return MA_ERROR_PERMISSION_DENIED; + } + + ma_state_e state; + if (0 != ma_client_get_client_state(g_ma, &state)) { + SLOG(LOG_ERROR, TAG_MAC, "[ERROR] A handle is not available"); + SLOG(LOG_DEBUG, TAG_MAC, "@@@"); + return MA_ERROR_INVALID_STATE; + } + + /* check state */ + if (state != MA_STATE_READY) { + SLOG(LOG_ERROR, TAG_MAC, "[ERROR] Invalid State: Current state is not 'READY', state(%d)", state); + SLOG(LOG_DEBUG, TAG_MAC, "@@@"); + return MA_ERROR_INVALID_STATE; + } + + /* change system volume */ + int pid = getpid(); + int ret = ma_dbus_set_background_volume(pid, ratio); + if (0 != ret) { + SLOG(LOG_WARN, TAG_MAC, "[WARNING] retry to change volume"); + } else { + SLOG(LOG_DEBUG, TAG_MAC, "[DEBUG] Success to send"); + } + return ret; +} diff --git a/client/ma_dbus.c b/client/ma_dbus.c index abff3cb..67ea1bf 100644 --- a/client/ma_dbus.c +++ b/client/ma_dbus.c @@ -1112,3 +1112,52 @@ int ma_dbus_send_assistant_specific_command(int pid, const char* command) return 0; } + +int ma_dbus_set_background_volume(int pid, double ratio) +{ + if (0 != __dbus_check()) { + return MA_ERROR_OPERATION_FAILED; + } + + DBusMessage* msg; + + msg = dbus_message_new_method_call( + MA_SERVER_SERVICE_NAME, + MA_SERVER_SERVICE_OBJECT_PATH, + MA_SERVER_SERVICE_INTERFACE, + MA_METHOD_SET_BACKGROUND_VOLUME); + + if (NULL == msg) { + SLOG(LOG_ERROR, TAG_MAC, "@@ Request multi-assistant change system volume : Fail to make message"); //LCOV_EXCL_LINE + return MA_ERROR_OPERATION_FAILED; + } else { + SLOG(LOG_DEBUG, TAG_MAC, "[DEBUG] multi-assistant change system volume"); + } + + dbus_message_append_args(msg, + DBUS_TYPE_INT32, &pid, + DBUS_TYPE_DOUBLE, &ratio, + DBUS_TYPE_INVALID); + + dbus_message_set_no_reply(msg, TRUE); + + DBusError error; + dbus_error_init (&error); + if (!dbus_connection_send(g_conn_sender, msg, NULL)) { + + if (dbus_error_is_set (&error)) { + SLOG(LOG_ERROR, TAG_MAC, "[Dbus ERROR] Fail to Send : %s", error.message); //LCOV_EXCL_LINE + dbus_error_free (&error); + } else { + SLOG(LOG_ERROR, TAG_MAC, "[Dbus ERROR] Fail to Send"); //LCOV_EXCL_LINE + } + return MA_ERROR_OPERATION_FAILED; + } else { + SLOG(LOG_DEBUG, TAG_MAC, "[Dbus DEBUG] Success to Send"); + dbus_connection_flush(g_conn_sender); + } + + dbus_message_unref(msg); + + return 0; +} diff --git a/client/ma_dbus.h b/client/ma_dbus.h index a9f07e7..56ce898 100644 --- a/client/ma_dbus.h +++ b/client/ma_dbus.h @@ -21,7 +21,6 @@ #include "multi_assistant_common.h" - #ifdef __cplusplus extern "C" { @@ -56,6 +55,8 @@ int ma_dbus_send_assistant_specific_command(int pid, const char* command); int ma_dbus_get_recording_audio_source_type(int pid, char** type); +int ma_dbus_set_background_volume(int pid, double ratio); + #ifdef __cplusplus } #endif diff --git a/common/ma_defs.h b/common/ma_defs.h index c51d54d..bcbf510 100644 --- a/common/ma_defs.h +++ b/common/ma_defs.h @@ -76,6 +76,7 @@ extern "C" #define MA_METHOD_STOP_STREAMING_AUDIO_DATA "ma_method_stop_streaming_audio_data" #define MA_METHOD_UPDATE_VOICE_FEEDBACK_STATE "ma_method_update_voice_feedback_state" #define MA_METHOD_SEND_ASSISTANT_SPECIFIC_COMMAND "ma_method_send_assistant_specific_command" +#define MA_METHOD_SET_BACKGROUND_VOLUME "ma_method_set_background_volume" #define MA_METHOD_ERROR "ma_method_error" #define MA_UI_METHOD_INITIALIZE "ma_ui_method_initialize" diff --git a/include/multi_assistant.h b/include/multi_assistant.h index 5e1571e..d3c5927 100644 --- a/include/multi_assistant.h +++ b/include/multi_assistant.h @@ -564,6 +564,27 @@ int ma_assistant_info_get_name(ma_assistant_info_h handle, char** name); */ int ma_get_recording_audio_source_type(char** type); +/** + * @brief Sets the background volume. + * @since_tizen 5.5 + * @privlevel public + * @privilege %http://tizen.org/privilege/recorder + * + * @remarks The @a ratio must be in 0.0~1.0 . + * @param[in] ratio The volume ratio to be set + * + * @return @c 0 on success, otherwise a negative error value + * @retval #MA_ERROR_NONE Successful + * @retval #MA_ERROR_NOT_SUPPORTED Not supported + * @retval #MA_ERROR_PERMISSION_DENIED Permission denied + * @retval #MA_ERROR_INVALID_STATE Invalid state + * @retval #MA_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MA_ERROR_OPERATION_FAILED Operation failed + * + * @pre The state should be #MA_STATE_READY. + */ +int ma_set_background_volume(double ratio); + #ifdef __cplusplus } #endif