19

在将新媒体写入设备时,Android API 中是否有任何优雅的方式来检测新媒体?我主要对相机拍摄的照片、相机拍摄的视频和麦克风录制的音频感兴趣。

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

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

4

2 回答 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));

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

于 2008-10-25T17:54:42.560 回答
3

啊哈!

我需要一个内容观察者!

这是我发现它的地方

于 2008-10-24T00:43:16.017 回答