Multitasking feature 09/90809/4
authorbhutani.92 <bhutani.92@samsung.com>
Tue, 4 Oct 2016 09:36:47 +0000 (15:06 +0530)
committerbhutani.92 <bhutani.92@samsung.com>
Sun, 9 Oct 2016 10:55:19 +0000 (16:25 +0530)
Change-Id: I3bed2cd21ecd5a31c9e9e5b5fbd06f18a6c3ebfe
Signed-off-by: bhutani.92 <bhutani.92@samsung.com>
src/core/mp-player-mgr.c
src/include/music.h
src/mp-main.c
src/widget/mp-minicontroller.c
tizen-manifest.xml

index 610959d2107c33f2a8e39f57c2db68528366cf7c..7a0024c973e50da4c6d896bbfe27af93705ec7fe 100755 (executable)
@@ -24,6 +24,7 @@
 #include "mp-play.h"
 /* #include "mp-player-drm.h" */
 #include <player.h>
+#include <recorder.h>
 
 #include "mp-ta.h"
 #include "mp-player-debug.h"
@@ -860,7 +861,8 @@ mp_player_mgr_resume(void *data)
        startfunc;
        struct appdata *ad = data;
        MP_CHECK_FALSE(ad);
-       int err = -1,error = -1;
+       int err = -1;
+       int error = SOUND_MANAGER_ERROR_NONE;
        sound_stream_focus_state_e state_for_playback;
        sound_stream_focus_state_e state_for_recording;
        int ret = -1;
@@ -1151,26 +1153,33 @@ void mp_player_focus_callback(sound_stream_info_h stream_info, sound_stream_focu
 
        sound_stream_focus_state_e state_for_playback;
        sound_stream_focus_state_e state_for_recording;
-       int ret = -1;
+       int ret = SOUND_MANAGER_ERROR_INVALID_PARAMETER;
        ret = sound_manager_get_focus_state(ad->stream_info, &state_for_playback,
                        &state_for_recording);
        if(ret != SOUND_MANAGER_ERROR_NONE) {
                ERROR_TRACE("failed in sound_manager_get_focus_state");
        }
+
+       int req_flag = SOUND_BEHAVIOR_NONE;
+       sound_manager_focus_get_requested_behavior(ad->stream_info, &req_flag);
+
        if (state_for_playback == SOUND_STREAM_FOCUS_STATE_RELEASED) {
                mp_player_mgr_pause(ad);
 
+               sound_manager_get_focus_reacquisition(ad->stream_info, &reacquire_state);
                DEBUG_TRACE("reason for change is %d", reason_for_change);
                if (reason_for_change != SOUND_STREAM_FOCUS_CHANGED_BY_ALARM &&
-                               reason_for_change != SOUND_STREAM_FOCUS_CHANGED_BY_NOTIFICATION) {
-                       sound_manager_get_focus_reacquisition(ad->stream_info, &reacquire_state);
+                               reason_for_change != SOUND_STREAM_FOCUS_CHANGED_BY_NOTIFICATION &&
+                               reason_for_change == SOUND_STREAM_FOCUS_CHANGED_BY_RINGTONE &&
+                               reason_for_change == SOUND_STREAM_FOCUS_CHANGED_BY_VOIP &&
+                               reason_for_change == SOUND_STREAM_FOCUS_CHANGED_BY_CALL) {
                        if (!strcmp(additional_info, "cam_capture")) {
                                sound_manager_set_focus_reacquisition(ad->stream_info, EINA_TRUE);
-                       } else if ((reason_for_change == SOUND_STREAM_FOCUS_CHANGED_BY_RINGTONE) || (reason_for_change == SOUND_STREAM_FOCUS_CHANGED_BY_VOIP) || (reason_for_change == SOUND_STREAM_FOCUS_CHANGED_BY_CALL)) {
-                               sound_manager_set_focus_reacquisition(ad->stream_info, EINA_TRUE);
                        } else if (reacquire_state == EINA_TRUE) {
                                sound_manager_set_focus_reacquisition(ad->stream_info, EINA_FALSE);
                        }
+               } else if (req_flag & SOUND_BEHAVIOR_NO_RESUME) {
+                       sound_manager_set_focus_reacquisition(ad->stream_info, EINA_FALSE);
                }
        } else {
                mp_play_control_play_pause(ad, true);
index 3996922741fdf7cd2c2871e3ee1895bdbd4973a7..87e4a3035ed9b1da049e95680d25422a1f8410c6 100755 (executable)
@@ -32,6 +32,7 @@
 #include <errno.h>
 #include <libintl.h>
 #include <app.h>
+#include <recorder.h>
 
 #include <sys/times.h>
 #include <storage/storage.h>
@@ -256,6 +257,11 @@ struct appdata
        unsigned int caller_win_id;
 #endif
 
+       /* For recorder API's */
+       int recorder_id;
+       recorder_type_e recorder_type;
+       recorder_device_state_e recorder_state;
+
        /* Layout for each view */
        Evas_Object *conformant;
        Evas_Object *naviframe;
index fe5f1dfe8163bf54506df326d3753fde3bea91aa..cc7d7785818cb7335796c439007d9f8ad1f52568 100755 (executable)
@@ -126,6 +126,13 @@ _mp_main_exit_cb(void *data, Evas_Object * obj, void *event_info)
        mp_app_exit(data);
 }
 
+void mp_recorder_state_cb(recorder_type_e type, recorder_device_state_e state, void *user_data)
+{
+       struct appdata *ad = (struct appdata *)user_data;
+       ad->recorder_state = state;
+       ad->recorder_type = type;
+}
+
 static bool
 _mp_main_init(struct appdata *ad)
 {
@@ -133,6 +140,14 @@ _mp_main_init(struct appdata *ad)
        ad->paused_by_user = true;
 
        mp_media_info_connect();
+       int state = RECORDER_DEVICE_STATE_IDLE;
+       recorder_get_device_state(RECORDER_TYPE_VIDEO, &state);
+       DEBUG_TRACE("Recorder state: %d", state);
+
+       int ret = recorder_add_device_state_changed_cb(mp_recorder_state_cb, ad, &ad->recorder_id);
+       if (ret != RECORDER_ERROR_NONE) {
+               ERROR_TRACE("Unable to register callback for recorder state");
+       }
 
        /* window focus in/out event */
        evas_object_smart_callback_add(ad->win_main, "focused", _mp_main_win_focus_in_cb, ad);
@@ -1336,6 +1351,11 @@ mp_terminate(void *data)
 
        mp_volume_finalize();
 
+       int ret = recorder_remove_device_state_changed_cb(ad->recorder_id);
+       if (ret != RECORDER_ERROR_NONE) {
+               ERROR_TRACE("Unable to remove callback for recorder state");
+       }
+
        if(ad->stream_info) {
                int error = sound_manager_destroy_stream_information(ad->stream_info);
                if (error != SOUND_MANAGER_ERROR_NONE) {
index 0ab9934c24cbda6f0130ec4d14c9aa028d7b7d56..72bddab1405eee0c109ffa2de572dc2639af405f 100755 (executable)
@@ -29,6 +29,7 @@
 #include "mp-player-view.h"
 #include <device/display.h>
 #include <device/callback.h>
+#include <recorder.h>
 
 #define MINI_CONTROLLER_HEIGHT (93)
 #define WL_INDI_H 27           //Window Layout Indicator Height
@@ -572,7 +573,6 @@ static void _mp_minicontroller_update_btn(struct appdata *ad)
        } else {
                elm_object_signal_emit(ad->minicontroller_layout, "set_play", "c_source");
        }
-
 }
 
 static Eina_Bool
@@ -651,6 +651,11 @@ static void _mp_minicontroller_play_pause_btn_clicked_cb(void *data, Evas_Object
        struct appdata *ad = mp_util_get_appdata();
        MP_CHECK(ad);
 
+       if (ad->recorder_state == RECORDER_DEVICE_STATE_RECORDING) {
+               DEBUG_TRACE("Cannot resume Music Player. Video Recorder is in Use");
+               return;
+       }
+
        if (ad->player_state == PLAY_STATE_PLAYING) {
                mp_play_control_play_pause(ad, false);
        } else {
index af836cb8e2a862975a514afcfc3e640759b20c03..548414edbe7cb7ed2e9338851532991e791a93a1 100644 (file)
@@ -1,72 +1,73 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <manifest xmlns="http://tizen.org/ns/packages" api-version="3.0" package="org.tizen.music-player" version="1.0.0">
     <profile name="mobile"/>
-    <ui-application appid="org.tizen.music-player" exec="music-player" multiple="false" nodisplay="false" taskmanage="true" type="capp" hw-acceleration="on">
-                <label>Music</label>
-               <label xml:lang="hy-am">Երաժշտություն</label>
-               <label xml:lang="az-az">Musiqi</label>
-               <label xml:lang="eu-es">Musika</label>
-               <label xml:lang="bg-bg">Музика</label>
-               <label xml:lang="ca-es">Música</label>
-               <label xml:lang="zh-cn">音乐</label>
-               <label xml:lang="zh-hk">音樂</label>
-               <label xml:lang="zh-tw">音樂</label>
-               <label xml:lang="hr-hr">Glazba</label>
-               <label xml:lang="cs-cz">Hudba</label>
-               <label xml:lang="da-dk">Musik</label>
-               <label xml:lang="nl-nl">Muziek</label>
-               <label xml:lang="en-gb">Music</label>
-               <label xml:lang="en-us">Music</label>
-               <label xml:lang="et-ee">Muusika</label>
-               <label xml:lang="fi-fi">Musiikki</label>
-               <label xml:lang="fr-fr">Musique</label>
-               <label xml:lang="gl-es">Música</label>
-               <label xml:lang="ka-ge">მუსიკა</label>
-               <label xml:lang="de-de">Musik</label>
-               <label xml:lang="el-gr">Μουσική</label>
-               <label xml:lang="hu-hu">Zenék</label>
-               <label xml:lang="is-is">Tónlist</label>
-               <label xml:lang="ga-ie">Ceol</label>
-               <label xml:lang="it-it">Musica</label>
-               <label xml:lang="ja-jp">音楽</label>
-               <label xml:lang="kk-kz">Музыка</label>
-               <label xml:lang="ko-kr">음악</label>
-               <label xml:lang="lv-lv">Mūzika</label>
-               <label xml:lang="lt-lt">Muzika</label>
-               <label xml:lang="mk-mk">Музика</label>
-               <label xml:lang="nb-no">Musikk</label>
-               <label xml:lang="pl-pl">Muzyka</label>
-               <label xml:lang="pt-pt">Música</label>
-               <label xml:lang="pt-br">Músicas</label>
-               <label xml:lang="ro-ro">Muzică</label>
-               <label xml:lang="ru-ru">Музыка</label>
-               <label xml:lang="sr-rs">Muzika</label>
-               <label xml:lang="sk-sk">Hudba</label>
-               <label xml:lang="sl-si">Glasba</label>
-               <label xml:lang="es-es">Música</label>
-               <label xml:lang="es-us">Música</label>
-               <label xml:lang="sv-se">Musik</label>
-               <label xml:lang="tr-tr">Müzik</label>
-               <label xml:lang="uk-ua">Музика</label>
-               <label xml:lang="uz-uz">Musiqa</label>
-               <label xml:lang="ar-ae">الموسيقى</label>
-               <label xml:lang="zh-sg">音乐</label>
-               <label xml:lang="hi-in">संगीत</label>
-               <label xml:lang="en-ph">Music</label>
-               <label xml:lang="fr-ca">Musique</label>
-               <icon>org.tizen.music-player.png</icon>
-                <background-category value="media"/>
+    <ui-application appid="org.tizen.music-player" exec="music-player" hw-acceleration="on" multiple="false" nodisplay="false" taskmanage="true" type="capp">
+        <label>Music</label>
+        <label xml:lang="hy-am">Երաժշտություն</label>
+        <label xml:lang="az-az">Musiqi</label>
+        <label xml:lang="eu-es">Musika</label>
+        <label xml:lang="bg-bg">Музика</label>
+        <label xml:lang="ca-es">Música</label>
+        <label xml:lang="zh-cn">音乐</label>
+        <label xml:lang="zh-hk">音樂</label>
+        <label xml:lang="zh-tw">音樂</label>
+        <label xml:lang="hr-hr">Glazba</label>
+        <label xml:lang="cs-cz">Hudba</label>
+        <label xml:lang="da-dk">Musik</label>
+        <label xml:lang="nl-nl">Muziek</label>
+        <label xml:lang="en-gb">Music</label>
+        <label xml:lang="en-us">Music</label>
+        <label xml:lang="et-ee">Muusika</label>
+        <label xml:lang="fi-fi">Musiikki</label>
+        <label xml:lang="fr-fr">Musique</label>
+        <label xml:lang="gl-es">Música</label>
+        <label xml:lang="ka-ge">მუსიკა</label>
+        <label xml:lang="de-de">Musik</label>
+        <label xml:lang="el-gr">Μουσική</label>
+        <label xml:lang="hu-hu">Zenék</label>
+        <label xml:lang="is-is">Tónlist</label>
+        <label xml:lang="ga-ie">Ceol</label>
+        <label xml:lang="it-it">Musica</label>
+        <label xml:lang="ja-jp">音楽</label>
+        <label xml:lang="kk-kz">Музыка</label>
+        <label xml:lang="ko-kr">음악</label>
+        <label xml:lang="lv-lv">Mūzika</label>
+        <label xml:lang="lt-lt">Muzika</label>
+        <label xml:lang="mk-mk">Музика</label>
+        <label xml:lang="nb-no">Musikk</label>
+        <label xml:lang="pl-pl">Muzyka</label>
+        <label xml:lang="pt-pt">Música</label>
+        <label xml:lang="pt-br">Músicas</label>
+        <label xml:lang="ro-ro">Muzică</label>
+        <label xml:lang="ru-ru">Музыка</label>
+        <label xml:lang="sr-rs">Muzika</label>
+        <label xml:lang="sk-sk">Hudba</label>
+        <label xml:lang="sl-si">Glasba</label>
+        <label xml:lang="es-es">Música</label>
+        <label xml:lang="es-us">Música</label>
+        <label xml:lang="sv-se">Musik</label>
+        <label xml:lang="tr-tr">Müzik</label>
+        <label xml:lang="uk-ua">Музика</label>
+        <label xml:lang="uz-uz">Musiqa</label>
+        <label xml:lang="ar-ae">الموسيقى</label>
+        <label xml:lang="zh-sg">音乐</label>
+        <label xml:lang="hi-in">संगीत</label>
+        <label xml:lang="en-ph">Music</label>
+        <label xml:lang="fr-ca">Musique</label>
+        <icon>org.tizen.music-player.png</icon>
+        <background-category value="media"/>
     </ui-application>
     <privileges>
-        <privilege>http://tizen.org/privilege/network.get</privilege>
         <privilege>http://tizen.org/privilege/mediastorage</privilege>
-        <privilege>http://tizen.org/privilege/notification</privilege>
-        <privilege>http://tizen.org/privilege/externalstorage.appdata</privilege>
-        <privilege>http://tizen.org/privilege/content.write</privilege>
-        <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
         <privilege>http://tizen.org/privilege/telephony</privilege>
-        <privilege>http://tizen.org/privilege/display</privilege>
+        <privilege>http://tizen.org/privilege/network.get</privilege>
+        <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
         <privilege>http://tizen.org/privilege/volume.set</privilege>
+        <privilege>http://tizen.org/privilege/notification</privilege>
+        <privilege>http://tizen.org/privilege/display</privilege>
+        <privilege>http://tizen.org/privilege/externalstorage.appdata</privilege>
+        <privilege>http://tizen.org/privilege/recorder</privilege>
         <privilege>http://tizen.org/privilege/externalstorage</privilege>
+        <privilege>http://tizen.org/privilege/content.write</privilege>
     </privileges>
 </manifest>