hal: fix voip device selection is not proper after voice call stop

In voip+voice concurrency case, when voip resume after voice call stop,
voip device still uses voice devices. This is due to in_call flag isn't
reset even if voice usecase doesn't exist.

Fix it by adding function to check voice usecase existence and get
correct device for non-voice usecases.

Change-Id: I39ba1092a0ab19c686baa1b80bb9913f64849590
diff --git a/hal/voice.c b/hal/voice.c
index ff6da5a..91eb3ff 100644
--- a/hal/voice.c
+++ b/hal/voice.c
@@ -363,6 +363,22 @@
     return session_id;
 }
 
+bool voice_check_voicecall_usecases_active(struct audio_device *adev)
+{
+    struct listnode *node;
+    struct audio_usecase *usecase = NULL;
+
+    list_for_each(node, &adev->usecase_list) {
+        usecase = node_to_item(node, struct audio_usecase, list);
+        if (usecase->type == VOICE_CALL) {
+            ALOGV("%s: voice usecase:%s is active", __func__,
+                   use_case_table[usecase->id]);
+            return true;
+        }
+    }
+    return false;
+}
+
 int voice_check_and_set_incall_rec_usecase(struct audio_device *adev,
                                            struct stream_in *in)
 {