问题标签 [android-mediascanner]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
8570 浏览

android - 删除照片后如何刷新 Android 的 MediaStore

问题:如何使媒体存储刷新其已删除文件的条目?

从外部存储中删除代码中的照片后,我仍然在图库中看到已删除照片的插槽 - 空白照片。

画廊似乎反映了媒体商店,并且在媒体商店中找到了已删除的照片,直到手机重新启动或通常 - 直到重新扫描媒体。

尝试扫描已删除的文件无助于扫描已删除的文件(仅适用于新文件或现有文件):(MediaScannerConnection.scanFile(Application.get(), new String[]{file.getPath()}, null, null)我也尝试扫描父文件夹)。

也试过ACTION_MEDIA_SCANNER_SCAN_FILE无济于事。例子:Application.get().sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)))

发送广播接收器以重新扫描整个外部存储(从而刷新媒体存储)就可以了:Application.get().sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.fromFile(Environment.getExternalStorageDirectory())))

但是,从4.4开始, Android 似乎在尝试手动发送 ACTION_MEDIA_MOUNTED 系统广播时引发了安全异常。请参阅@CommonsWare 的帖子:http ://commonsware.com/blog/2013/11/06/android-4p4-permission-regressions.html

因此,我无法在文件(/照片/视频/等)删除时刷新媒体存储的解决方案。

0 投票
1 回答
534 浏览

android-intent - 在android中使用图片/视频和音频文件制作单个文件

我正在开发一个 android 应用程序,用户将在屏幕上看到一些图片或视频,并对其进行语音评论。完成后,用户我们会看到一个新视频,其中将包含带有他的语音评论的图片或视频。

案例: 1)图片+语音评论-->新视频原图语音评论。2) 视频+语音评论--> 带有原始视频和语音评论的新视频。

我已经搜索了很多,但我没有得到如何实现这个?

根据我的观点,可能有以下选择:1)我分别存储音频和图片/视频文件,然后从中创建一个新视频。2)我在对图片/视频进行语音评论期间在后端并行创建了一个新视频。

但我不知道如何实现任何选项?有没有什么好的教程可以做同样的事情?

提前致谢。

还没有答案。我的问题是不清楚还是不可能?任何人请指导我。谢谢

0 投票
1 回答
1852 浏览

android - 即使在 Nexus/Kitkat 设备上,如何正确通知 MediaScanner 关于文件夹?

背景

我正在制作一个应用程序,它将一些图像从 Internet 下载到一个特定的文件夹中,该文件夹定义为:

我希望制作画廊和任何显示媒体的应用程序,以便收到这些图像的通知并能够显示它们。

可悲的是,我在 Nexus 4 上遇到了问题,它有 Kitkat 版本(确切地说是 4.4.2)。有时它有效,有时则无效。

问题

有很多关于这个问题的帖子,我已经尝试了很多,但没有一个使用简单的文件夹路径:

  • 使用 Intent 的意图。ACTION_MEDIA_SCANNER_SCAN_FILE ,如此所示。这在任何设备上都不起作用
  • 创建 MediaScannerConnectionClient 的实例并在连接完成后调用 scan ,如此此处所示。不确定这有什么问题,因为它确实连接成功。
  • 调用scanFile,如此处所示有和没有监听器。这在 Galaxy S3 上运行良好,但在 Nexus 4 上却不行。这是我选择做的,但我注意到它不能使用单个文件夹路径。相反,它需要一组文件来通知。

我试过的

这就是我所做的(同样,它在具有 Android 4.3 的 Galaxy S3 上运行良好,但有时在具有 Android 4.4.2 的 Nexus 4 上不起作用):

问题

我应该如何通知要扫描的整个文件夹?

为什么这种方法有时只在 Kitkat 上有效?它只是 Nexus 设备,还是其他设备?

应该使用什么来支持所有设备和 Android 版本?

0 投票
3 回答
5184 浏览

android - 如何获得关于画廊应用程序可见的每个新图像的通知?

背景

当用户下载新图像或使用相机拍摄时,图库应用程序将更新以显示新图像。

我需要在创建每个新图像时立即收到通知,无论它是如何创建的(相机、浏览器……),就像画廊应用程序显示的那样。

问题

事实证明,有一个 mediaScanner Android 组件负责扫描所有类型的媒体文件,当它完成时,它应该发送一个意图“ MEDIA_SCANNER_FINISHED ”(如本示例所示)。

所以我添加了下一个代码,希望每次用户从相机应用程序拍照时它都会显示一个祝酒词:

显现:

.java文件:

由于某种原因,此代码不起作用...

问题

代码有什么问题?

拍照后会调用广播接收器吗?

正确的方法是什么?

我真的需要使用 contentObserver 并监控它的变化(使用类似这样的东西),并为此保持应用程序运行吗?真希望不要...

0 投票
1 回答
169417 浏览

android - 某些设备不存在 Uri content://media/external/file

我对某些设备有疑问。我无法在任何设备上复制它,但我收到了一些用户报告的大量崩溃报告。

这是一个例外:

我用这个:

context.getContentResolver().delete(MediaStore.Files.getContentUri("external"), MediaStore.Files.FileColumns.DATA + "=?", new String[] { path });

之后我调用MediaScannerConnection.scanFile()文件的父目录,因为这是最实用的方式,如何通知 MediaScanner 文件删除以及如何刷新 MTP 内容。我尝试了我在 stackoverflow 上找到的所有其他方法(例如Android 如何使用 MediaScannerConnection scanFile),但没有什么比这更有效。

顺便提一句。我只将它用于 API 11 和更新版本。外部存储肯定已安装。

我有这些问题: 1. 你知道这个异常发生的任何原因吗?我不想只是忽略异常。当它对大多数设备都很好时,我不想删除它。2.您知道一些新的可靠方法如何通知MediaScanner以及如何在删除某些文件时立即刷新MTP的内容吗?

0 投票
1 回答
919 浏览

android - 自定义 MediaScanner 库/MediaStore 替代品?

是否有任何不依赖默认的自定义开源库MediaStore(这样我就不会重新发明轮子)?还是我必须编写自己的扫描仪?问题:-

我在 Android 中创建了一个音乐播放器,它还可以从本地文件创建播放列表。有关本地媒体的详细信息可从 Android 的MediaStore. 一切正常,直到我重新定位我的音乐文件。移动媒体文件时,Android 中其条目中的 ID 字段MediaStore会发生变化。显然,这意味着使用存储的(陈旧)ID 访问文件的任何尝试都将失败。我该如何解决这个问题?谢谢!

0 投票
4 回答
3633 浏览

android - 如何将拍摄的照片添加到 MediaStore

我想将拍摄的照片添加到 MediaStore,以便 Gallery 应用程序可以找到它们(无需重新启动设备)。应用程序的最小 sdk 为 9。任何帮助、博客或文档表示赞赏。

0 投票
1 回答
1820 浏览

android - 如何刷新整个 SD 卡?

我正在编写一个媒体播放器应用程序。我在网格视图中显示我的 sd 卡的所有视频。它工作正常。如果有人使用文件专家或文件管理器等其他应用程序对这些视频进行更改(如重命名、删除)不会影响我的网格视图。我的网格仍然显示旧名称和已删除的文件。为了解决这个问题,我添加了刷新按钮。在这个我使用

但这在 KITKAT 版本中不受支持。然后在谷歌之后,我得到了这个解决方案 Android How to use MediaScannerConnection scanFile 但我不知道如何在我的刷新按钮单击时使用 MediaScannerConnection 扫描我的 sdcard。

0 投票
0 回答
85 浏览

android - Activity 类中的 Android MediaScannerConnection 新实例抛出异常

我距离创建我的第一个 android 应用程序只有几步之遥,但似乎有一个问题,我自己无法解决......我需要一点帮助!:D

所以,在我的主要活动中,我想这样声明:

我在 onCreate() 方法中使用变量“con”并实现了 MediaScannerConnectionClient 接口来使用它。

我不可能在 onCreate() 方法中声明“con”,因为当我这样做并且用户更改屏幕方向时,运行时会终止活动并再次调用 onCreate()(就像我们都知道的那样:D)这导致我的应用程序无法完成扫描...

编译效果很好!但是当我启动我的应用程序 logcat 时,我会想到:

请帮我!我的第一个项目伙计们!!!我真的很努力地解决这个问题,但可以克服它...... :(

顺便说一句,我的语言...... :)

问候!

0 投票
1 回答
3709 浏览

android - 如何在带有元数据的 Android 4.4 KitKat SD 卡上将媒体添加到 MediaStore

背景:在 Android 4.4 中,Google 决定应用程序不应具有对 SD 卡的写入权限

但是,应用程序可以写入 /SDCard/Android/data/App 包名称。

所以这就是我所做的。我已将 MP3 文件写入 /Android/data/。然后我希望这个 MP3 文件显示在 Android 音乐播放器中。

我试过以下...

和....

和...

这两个都会将文件作为一个文件添加到 MediaStore,其 URI 类似于 content://media/external/file/xxxxx

但是,该文件不会作为音频添加。我可以更新 MediaStore 以将文件声明为音频,但未导入文件元数据。

除了编写我自己的标签阅读器之外,我怎样才能让媒体扫描仪扫描文件并插入元数据,就像它在内部存储器和预 KitKat SD 卡上所做的那样?