首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Qt 4.8 -在mini上检测sd卡的插入和删除(OS )

Qt 4.8 -在mini上检测sd卡的插入和删除(OS )
EN

Stack Overflow用户
提问于 2013-01-15 00:11:27
回答 1查看 2K关注 0票数 10

我对在Mac上开发应用程序是完全陌生的。在这里,我只使用Qt开发了2-3个应用程序,没有一个使用objective/ cocoa。

是否有一种方法可以检测SD卡何时插入Qt 4(特别是4.8)中的mini (OS )?

我在网络上搜索了很多,也在堆栈溢出上搜索了很多--一些结果--但都是针对Android和Windows的--与Mac( mini )无关。

到目前为止,我发现了这个:

  • 在Mac (迷你)上,读卡器就像任何其他USB设备一样被对待。
  • 我还在中找到了这个示例。我希望大家都能接触到这个链接。 这个例子..。演示在将USB设备连接到系统或从系统中移除时,如何使用IOKitLib和IOUSBLib设置异步回调。因此,这是可以实现的。 我也想在Qt上做同样的事。

我想检测什么时候SD卡已经插入,然后我想显示我的应用程序,获得一些输入,并将选定的文件从卡到本地磁盘。

很明显,一切都很简单--仅仅是检测卡和显示应用程序(从托盘或最小化状态)是非常重要和困难的部分。

如果你能给我指明正确的方向,我会非常感激的。

提前谢谢!!

更新:

我进一步研究发现:

  • 在Linux上,我们可以使用udev(libudev)来实现这样的目标。
  • 但后来我发现了udev是Linux特有的,在OS中找不到这里use the diskutil activity command to continuously monitor disks being mounted or ejected建议的答案。 我发现了一些非常类似的这里这里,但是对于使用udev规则的Linux:(
  • 最新的,似乎是最相关的发现是:
    • diskutil plistIOKit(DiskArbitration)必须成为我所寻求的解决方案的一部分

  • 最后,这里我发现了launchd plistLingon

现在..。我比昨天有更多的东西,但我仍然需要帮助把所有这些放在一起,并在一个Qt应用程序中使用。我会非常感激有人指引我到最后的结果。如果我真的能创造一些有用的东西的话,我将继续做这件事,并更新。

谢谢!)

EN

回答 1

Stack Overflow用户

发布于 2013-01-20 10:07:30

我认为您需要创建一个使用发射剂来监视正在挂载的新磁盘的DiskArbitration框架。当用户登录时,此代理将被设置为在后台运行。当您的助手检测到一个新磁盘被挂载时,它可以检查表示磁盘的DADiskRef的属性,以确定它是否对您的应用程序感兴趣。如果是,则可以使用LaunchServices API启动应用程序面向用户的部分。

使用DiskArbitration注册磁盘挂载事件的代码概要如下:

代码语言:javascript
运行
复制
#include <Foundation/Foundation.h>
#include <DiskArbitration/DiskArbitration.h>

static void diskAppearedCallback(DADiskRef disk, void* context)
{
    CFDictionaryRef description = DADiskCopyDescription(disk);
    NSLog(@"Disk appeared: %@", description);
    CFRelease(description);
}

int main(int argc, char **argv)
{
    DASessionRef session = DASessionCreate(kCFAllocatorDefault);
    DARegisterDiskAppearedCallback(session, kDADiskDescriptionMatchVolumeMountable, diskAppearedCallback, 0);
    DASessionScheduleWithRunLoop(session, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);

    CFRunLoopRun();

    return 0;
}

DADiskCopyDescription返回的字典包含许多属性,您可能会发现这些属性在确定新安装的磁盘是否感兴趣方面很有用,包括媒体是否可移动、可弹出等等。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14329114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档