Media: add playing status

This commit is contained in:
李通洲
2022-09-20 17:46:01 +08:00
parent 431f570f05
commit e60537512e
4 changed files with 15 additions and 2 deletions
+1
View File
@@ -13,6 +13,7 @@ const FFMediaResult* ffDetectMedia(const FFinstance* instance)
ffStrbufInit(&result.artist);
ffStrbufInit(&result.album);
ffStrbufInit(&result.url);
ffStrbufInit(&result.status);
ffDetectMediaImpl(instance, &result);
+1
View File
@@ -14,6 +14,7 @@ typedef struct FFMediaResult
FFstrbuf artist;
FFstrbuf album;
FFstrbuf url;
FFstrbuf status;
} FFMediaResult;
const FFMediaResult* ffDetectMedia(const FFinstance* instance);
+7
View File
@@ -11,6 +11,7 @@ extern void MRMediaRemoteGetNowPlayingInfo(dispatch_queue_t dispatcher, void(^ca
extern void MRMediaRemoteGetNowPlayingClient(dispatch_queue_t dispatcher, void (^callback)(_Nullable id clientObj)) __attribute__((weak_import));
extern CFStringRef MRNowPlayingClientGetBundleIdentifier(id clientObj) __attribute__((weak_import));
extern CFStringRef MRNowPlayingClientGetParentAppBundleIdentifier(id clientObj) __attribute__((weak_import));
void MRMediaRemoteGetNowPlayingApplicationIsPlaying(dispatch_queue_t queue, void (^callback)(BOOL playing));
static const char* getMedia(FFMediaResult* result)
{
@@ -24,6 +25,12 @@ static const char* getMedia(FFMediaResult* result)
dispatch_group_t group = dispatch_group_create();
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
dispatch_group_enter(group);
MRMediaRemoteGetNowPlayingApplicationIsPlaying(queue, ^(BOOL playing) {
ffStrbufAppendS(&result->status, playing ? "Playing" : "Paused");
dispatch_group_leave(group);
});
dispatch_group_enter(group);
MRMediaRemoteGetNowPlayingInfo(queue, ^(_Nullable CFDictionaryRef info) {
if(info != nil) {
+6 -2
View File
@@ -5,7 +5,7 @@
#include <ctype.h>
#define FF_SONG_MODULE_NAME "Media"
#define FF_SONG_NUM_FORMAT_ARGS 4
#define FF_SONG_NUM_FORMAT_ARGS 5
static bool shouldIgoreChar(char c)
{
@@ -89,6 +89,9 @@ void ffPrintSong(FFinstance* instance)
fputs(" - ", stdout);
}
if (media->status.length > 0)
ffStrbufAppendF(&songPretty, " (%s)", media->status.chars);
ffStrbufPutTo(&songPretty, stdout);
}
else
@@ -97,7 +100,8 @@ void ffPrintSong(FFinstance* instance)
{FF_FORMAT_ARG_TYPE_STRBUF, &songPretty},
{FF_FORMAT_ARG_TYPE_STRBUF, &media->song},
{FF_FORMAT_ARG_TYPE_STRBUF, &media->artist},
{FF_FORMAT_ARG_TYPE_STRBUF, &media->album}
{FF_FORMAT_ARG_TYPE_STRBUF, &media->album},
{FF_FORMAT_ARG_TYPE_STRBUF, &media->status}
});
}