我的音乐节奏 Mac App

听歌很多,分类也很多,最后还是决定按 BMP 分类,当然是手动 BMP 分类(尝试音频识别失败,可能水平不够);
原来自己写了 iOS App 版和 Web 版,实际使用都不是很方便;
SO,决定搞一个全局热键 Mac 版,状态栏显示;

一、创建 Mac App

这还用说?so easy;

二、搞个状态栏

    // 状态栏控件
    self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
    [self.statusItem.button setTitle:@"music"];

虽然是个 Item,但是属性是个 NSButton,哇,API 太像了

三、监听键盘事件

  • 本地监听(App 打开时)
    // 本地事件
    [NSEvent addLocalMonitorForEventsMatchingMask:NSEventMaskKeyDown handler:^NSEvent * _Nullable(NSEvent * _Nonnull event) {
        if (event.type == NSEventTypeKeyDown) {
            if ([event keyCode] == 49) {
                [self musicLocalAction];
            }
        }
        return event;
    }];
  • 全局监听
    // 监听全局事件
    [NSEvent addGlobalMonitorForEventsMatchingMask:(NSEventMaskKeyDown)  handler:^(NSEvent * event) {
        if (event.type == NSEventTypeKeyDown) {
            if ([event keyCode] == 49) {// 空格实测,也不是 ASCII
                [self musicGlobalAction];
            }
        }
    }];
  • 补充操作,不然可能监听不到键盘事件
系统偏好 - 辅助功能 - 添加 App
info.plist - Privacy - AppleEvents Sending Usage Description

四、补充逻辑

状态栏和键盘全局监听都可以了,补充逻辑即可,刷新状态栏信息,舒服;
再优化一下界面;

五、附件

Demo 地址:https://github.com/JuYiWei/Mac-Status-Bar-Demo
网页版:http://www.jrscz.com/myServer/project/devTools/music.html
我的网易云音乐用户名:居然是村长