问题标签 [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 投票
2 回答
9688 浏览

android - 在 Android 内容观察器中观察 Audio.Media.EXTERNAL_CONTENT_URI 的变化

我正在开发一个 Android 应用程序,我必须在其中检测 Android SD 卡中音频文件的更改,其中包含文件名、文件路径和对其执行的操作。例如,如果我在我的 SD 卡中添加一个文件,那么我想知道

  1. 添加的文件名
  2. 文件路径
  3. 操作——添加

以前我尝试过文件观察器但为此我必须将它应用于每个目录。所以我搜索了一些其他解决方案并获得了有关Audio.Media.EXTERNAL_CONTENT_URI的信息。然后我创建了一个像这样的内容观察者

UriObserver.java -- 内容观察者

这是它的注册代码

它让我知道与音频文件相关的 sdcard 发生了一些变化。但它没有提供有关添加、编辑或删除哪个文件的任何信息。

然后我搜索了解决方案并得到了这篇文章

Android:通过 MTP 连接时如何检测 MediaStore 的变化

在这篇文章中, Bhiefer给出了一些代码作为答案,我认为它可以工作,所以我试图实现它,但我无法做到。

我能为此做些什么?

更新

我可以查询 Audio.Media.EXTERNAL_CONTENT_URI 的最新更改吗?这段代码:

没有给出最新的变化。还有其他方法可以获取最新更改吗?

0 投票
1 回答
1288 浏览

android - 如何知道 MediaScanner 是否启用?

我真的不喜欢所有的 MediaScanner Android 系统以及它是如何实现的、电池消耗、卡无法访问等,所以我制作了一个基于目录的图像查看器。我知道如何从控制台禁用(启用)扫描仪:

现在,我想从查看器的 java 代码中执行此操作。当然我可以做一个Runtime.getRuntime().exec(...),但我有一些问题:

1)有没有办法做到这一点Runtime.getRuntime().exec()

2)我怎么知道MediaScannerReceiver是启用还是禁用?我用谷歌搜索了这个,我找不到答案。MediaScannerConnection似乎无法控制这一点。其实我也不知道是什么pm...

3)是否可以在没有root访问权限的情况下执行此操作?

谢谢!

0 投票
5 回答
3159 浏览

android - 防止 Media Scanner 扫描在 Android 上使用 DownloadManager 下载的 JPG?(开发商)

我的应用程序使用 DownloadManager 从网站下载 jpgs 并将它们存储在 /sdcard/Android/name.app/ 目录中,以便在应用程序的多个 Fragment 中使用。下载效果很好,但是 jpg 在 Gallery 应用程序中可见,这是我不想要的,因为它们只是我的应用程序的资产。我无法弄清楚如何让它们不出现在画廊应用程序中。我什至尝试将 .nomedia 文件添加到创建它们的目录中。任何帮助,将不胜感激!

这些问题似乎是因为 MediaScanner 正在将图像添加到系统数据库中,即使我没有要求它这样做。

我创建了一个演示该问题的测试应用程序。如果您单击“下载”按钮,Google 徽标将显示在应用程序中。如果您进入图库应用程序,您还应该在名为“下载”的图库中看到 Google 徽标。如果您转到设置 -> 应用程序并清除图库和媒体存储的数据,则 Google 徽标将消失并且不会再次显示在图库中,因为该文件位于 /sdcard/Android/data/ 下,受.nomedia 文件。您可以转到 /sdcard/Android/data/com.example.downloadmanagertest/files/Download/ 以验证图像是否仍在手机上。即使在重新启动后,如果您清除图库和媒体存储的数据,图像也不会显示在图库中。我已经在运行 4.2.2 的 Nexus 4 和 Nexus 7 上对此进行了测试。

来源:https ://dl.dropboxusercontent.com/u/114414/DownloadManagerTest.zip

0 投票
1 回答
4344 浏览

android - 将文件添加到 Android 中的媒体库时出现“java.lang.IllegalStateException:未连接到 MediaScannerService”

我在java.lang.IllegalStateException: not connected to MediaScannerService我的应用程序的一些崩溃报告中收到此异常。

它们不是太多,但我不知道我的代码有什么问题,因为在我的手机/模拟器上它工作正常。我正在使用一种方法来调用根据如何获取和设置(更改)音频文件的 ID3 标记(元数据)中的 SO 问题/答案改编的 MediaScanner?

方法:

我的电话:

或者

如何避免这些异常?

0 投票
0 回答
879 浏览

android - Android 下载管理器限制

我使用 Android 下载管理器(2.3 以上)下载许多具有不同文件扩展名(png、jpg、mov)的小文件。下载 30000 张图片后,android.process.media 停止工作并且没有任何异常消息。下载目录是 /mnt/sd/Android/com.app.example/chache/files

我还通过使用 .nomedia 文件来防止下载目录的媒体扫描。 http://android2know.blogspot.co.at/2013/01/create-nomedia-file.html 防止媒体扫描仪扫描在 Android 上使用 DownloadManager 下载的 JPG?(开发商)

Android 下载管理器是否对超过 40000 个文件没有响应?在这种情况下我应该编写自己的下载管理器吗?

关于塞比

0 投票
1 回答
980 浏览

android - 将音频(wav 文件)添加到 android 媒体商店

我有一个Android可以录制和播放音频的应用程序。Walkman我的录音有问题,android默认音频播放器(在我的情况下)无法立即识别它们。此外,当我将手机连接到 PC 时,计算机的资源管理器看不到录音。我应该将每个录音添加到Media Store? 如果是,我应该如何通过不触发整个SD卡扫描来做到这一点,而只将记录本身包含到Media Server数据库中?

如果可能的话,我想避免使用下面的行,因为我认为会触发整个SD卡被扫描,所以这会耗尽电池:

0 投票
1 回答
8621 浏览

android - 文件未添加到画廊 android

我正在制作的这个应用程序正在拍照并将其保存到 SD 卡,但图像没有显示在图库中...我的代码有问题吗

图像显示在图像视图中并保存到所需的目录,但现在显示在画廊中最后这是添加到画廊的代码

0 投票
0 回答
258 浏览

android - 如何定期扫描 SD 卡以查找特定类型的文件?

嗨,我是 android 的新手,正在开发一个需要扫描 SD 卡以获取 ppt 和 pdf 文件并将它们上传到 Google Drive 的应用程序。

我已经实现了一个MediaScannerConnectionClient类(与这个问题中的代码类似How to scan SD card for specific extension of files in android? ),它在调用scanFile时扫描并返回文件一次。

但是,即使在我的应用程序启动并调用了scanFile之后,我也需要能够上传添加到 SD 卡中的文件。

除了在固定的时间间隔后连续调用scanFile之外,还有什么方法可以做到这一点?

提前致谢

0 投票
2 回答
34685 浏览

android - 文件在 PC 上显示为空,但在智能手机上显示为非空

我的三星 Galaxy Nexus 有一个奇怪的问题,在我的应用程序中创建和写入的文件在手机本身(通过 ES 文件资源管理器)上访问时显示正常,但是当我尝试在我的 PC 上查看相同的文件时(通过 USB 连接手机),它们显示为 0 字节(打开时为空)。

这些应该是普通的文本文件,我使用 new File(dir, filename) 创建并使用 PrintWriter 的 write 方法写入。我还使用 MediaScannerConnection.scanFile 将新文件添加到内容数据库。

我在以前的应用程序(> 6 个月前)中使用了基本相同的代码,没有任何问题,所以我真的很困惑为什么它现在不起作用。有没有人遇到过类似的问题?

更新:

仍在解决这个问题......另外两个观察结果让我完全困惑:

  1. 我尝试在另一台 PC 上访问相同的文件,它们运行良好。这让我认为这可能是一些驱动程序问题,但这仍然很奇怪,因为我根本没有更改驱动程序(我之前从未遇到过这个问题)。

  2. 我尝试使用我之前创建的不同应用程序创建文件。它使用基本相同的 FileIO 类来创建文件等。此应用程序没有遇到此类问题。

0 投票
5 回答
32265 浏览

android - 使用 adb 刷新 Android 媒体存储

我正在使用 adb 在安卓手机上同步音乐。本质上,我 rm 现有的音乐目录并推送替换音乐文件。

我希望能够使用 adb 强制重新扫描,以便谷歌音乐播放器(和其他应用程序)与新歌曲和播放列表正常工作。

根据如何在 Android 上刷新 MediaStore?您可以通过广播适当的意图来强制重新扫描。

adb 提供“shell am broadcast”,这似乎允许我从 adb 强制重新扫描。

或者,我可以运行重新扫描应用程序或重新启动,但我想从 adb 触发重新扫描

我应该发出什么 adb 命令?音乐文件和播放列表都在 /sdcard/music 中。