デバイスに書き込まれたときに新しいメディアを検出するための Android API の洗練された方法はありますか? 主にカメラで撮った写真、カメラで撮った動画、マイクで録音した音声に興味があります。
私が現在考えているのは、各メディア コンテンツ プロバイダーを定期的にスキャンし、最後のスキャン時間に基づいてフィルター処理することです。
リアルタイムで通知を受け取ることができるサービスがあるかどうか疑問に思っています。
デバイスに書き込まれたときに新しいメディアを検出するための Android API の洗練された方法はありますか? 主にカメラで撮った写真、カメラで撮った動画、マイクで録音した音声に興味があります。
私が現在考えているのは、各メディア コンテンツ プロバイダーを定期的にスキャンし、最後のスキャン時間に基づいてフィルター処理することです。
リアルタイムで通知を受け取ることができるサービスがあるかどうか疑問に思っています。
アプリケーションがメディア ストアに何か新しいものを書き込むたびに呼び出される特別なブロードキャスト インテントがあります。
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE
Broadcast Intent には、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));
これは、メディア ストア コンテンツ プロバイダーの 1 つに挿入されるファイルに対してのみ機能します。また、すべてのネイティブ(Google)アプリケーションが行うインテントをブロードキャストするアプリケーションに依存します。