Android API用于检测内置摄像头和麦克风的新媒体

20

在Android API中,是否有一种优雅的方法来检测在设备上写入新媒体?我主要关注相机拍摄的照片、视频和从麦克风录制的音频。

我目前的想法是定期扫描每个媒体内容提供程序并根据上次扫描时间进行过滤。

我只是想知道是否有一些服务可以获得实时通知。


请看以下关于编程的内容:查看类似帖子:https://dev59.com/6Gw15IYBdhLWcg3wZq1r - AlikElzin-kilaka
对于 Android N 及以上版本,应该按照以下方式进行操作:https://dev59.com/66Hia4cB1Zd3GeqPREdB#49348166 - intrepidis
2个回答

10

每当应用程序向媒体库写入任何新内容时,都应调用一个特殊的广播Intent:

Intent.ACTION_MEDIA_SCANNER_SCAN_FILE

广播意图包括指向新文件的路径,可通过Intent.getDataString()方法访问。

要监听它,只需创建一个BroadcastReceiver并使用下面所示的IntentFilter注册它:

registerReceiver(new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
      String newFileURL = intent.getDataString();
      // TODO React to new Media here.  
    }    
  }, new IntentFilter(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE));

这只对插入到媒体库内容提供程序之一的文件有效。此外,它取决于将其放置在那里的应用程序广播意图,所有本机(谷歌)应用程序都这样做。


3
这在我的Galaxy Nexus上没有生效。我尝试了上面的代码,甚至尝试修改了清单文件中的xml(接收器)。 - AlikElzin-kilaka

3

你能分享一下如何使用内容观察器来监视媒体变化吗? - Cristian Diaconescu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接