在Android API中,是否有一种优雅的方法来检测在设备上写入新媒体?我主要关注相机拍摄的照片、视频和从麦克风录制的音频。
我目前的想法是定期扫描每个媒体内容提供程序并根据上次扫描时间进行过滤。
我只是想知道是否有一些服务可以获得实时通知。
在Android API中,是否有一种优雅的方法来检测在设备上写入新媒体?我主要关注相机拍摄的照片、视频和从麦克风录制的音频。
我目前的想法是定期扫描每个媒体内容提供程序并根据上次扫描时间进行过滤。
我只是想知道是否有一些服务可以获得实时通知。
每当应用程序向媒体库写入任何新内容时,都应调用一个特殊的广播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));
这只对插入到媒体库内容提供程序之一的文件有效。此外,它取决于将其放置在那里的应用程序广播意图,所有本机(谷歌)应用程序都这样做。