问题标签 [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.
android - 在 Android 内容观察器中观察 Audio.Media.EXTERNAL_CONTENT_URI 的变化
我正在开发一个 Android 应用程序,我必须在其中检测 Android SD 卡中音频文件的更改,其中包含文件名、文件路径和对其执行的操作。例如,如果我在我的 SD 卡中添加一个文件,那么我想知道
- 添加的文件名
- 文件路径
- 操作——添加
以前我尝试过文件观察器但为此我必须将它应用于每个目录。所以我搜索了一些其他解决方案并获得了有关Audio.Media.EXTERNAL_CONTENT_URI的信息。然后我创建了一个像这样的内容观察者
UriObserver.java -- 内容观察者
这是它的注册代码
它让我知道与音频文件相关的 sdcard 发生了一些变化。但它没有提供有关添加、编辑或删除哪个文件的任何信息。
然后我搜索了解决方案并得到了这篇文章
Android:通过 MTP 连接时如何检测 MediaStore 的变化
在这篇文章中, Bhiefer给出了一些代码作为答案,我认为它可以工作,所以我试图实现它,但我无法做到。
我能为此做些什么?
更新
我可以查询 Audio.Media.EXTERNAL_CONTENT_URI 的最新更改吗?这段代码:
没有给出最新的变化。还有其他方法可以获取最新更改吗?
android - 如何知道 MediaScanner 是否启用?
我真的不喜欢所有的 MediaScanner Android 系统以及它是如何实现的、电池消耗、卡无法访问等,所以我制作了一个基于目录的图像查看器。我知道如何从控制台禁用(启用)扫描仪:
现在,我想从查看器的 java 代码中执行此操作。当然我可以做一个Runtime.getRuntime().exec(...)
,但我有一些问题:
1)有没有办法做到这一点Runtime.getRuntime().exec()
?
2)我怎么知道MediaScannerReceiver
是启用还是禁用?我用谷歌搜索了这个,我找不到答案。MediaScannerConnection
似乎无法控制这一点。其实我也不知道是什么pm
...
3)是否可以在没有root访问权限的情况下执行此操作?
谢谢!
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
android - 将文件添加到 Android 中的媒体库时出现“java.lang.IllegalStateException:未连接到 MediaScannerService”
我在java.lang.IllegalStateException: not connected to MediaScannerService
我的应用程序的一些崩溃报告中收到此异常。
它们不是太多,但我不知道我的代码有什么问题,因为在我的手机/模拟器上它工作正常。我正在使用一种方法来调用根据如何获取和设置(更改)音频文件的 ID3 标记(元数据)中的 SO 问题/答案改编的 MediaScanner?
方法:
我的电话:
或者
如何避免这些异常?
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 个文件没有响应?在这种情况下我应该编写自己的下载管理器吗?
关于塞比
android - 将音频(wav 文件)添加到 android 媒体商店
我有一个Android
可以录制和播放音频的应用程序。Walkman
我的录音有问题,android默认音频播放器(在我的情况下)无法立即识别它们。此外,当我将手机连接到 PC 时,计算机的资源管理器看不到录音。我应该将每个录音添加到Media Store
? 如果是,我应该如何通过不触发整个SD
卡扫描来做到这一点,而只将记录本身包含到Media Server
数据库中?
如果可能的话,我想避免使用下面的行,因为我认为会触发整个SD
卡被扫描,所以这会耗尽电池:
android - 文件未添加到画廊 android
我正在制作的这个应用程序正在拍照并将其保存到 SD 卡,但图像没有显示在图库中...我的代码有问题吗
图像显示在图像视图中并保存到所需的目录,但现在显示在画廊中最后这是添加到画廊的代码
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之外,还有什么方法可以做到这一点?
提前致谢
android - 文件在 PC 上显示为空,但在智能手机上显示为非空
我的三星 Galaxy Nexus 有一个奇怪的问题,在我的应用程序中创建和写入的文件在手机本身(通过 ES 文件资源管理器)上访问时显示正常,但是当我尝试在我的 PC 上查看相同的文件时(通过 USB 连接手机),它们显示为 0 字节(打开时为空)。
这些应该是普通的文本文件,我使用 new File(dir, filename) 创建并使用 PrintWriter 的 write 方法写入。我还使用 MediaScannerConnection.scanFile 将新文件添加到内容数据库。
我在以前的应用程序(> 6 个月前)中使用了基本相同的代码,没有任何问题,所以我真的很困惑为什么它现在不起作用。有没有人遇到过类似的问题?
更新:
仍在解决这个问题......另外两个观察结果让我完全困惑:
我尝试在另一台 PC 上访问相同的文件,它们运行良好。这让我认为这可能是一些驱动程序问题,但这仍然很奇怪,因为我根本没有更改驱动程序(我之前从未遇到过这个问题)。
我尝试使用我之前创建的不同应用程序创建文件。它使用基本相同的 FileIO 类来创建文件等。此应用程序没有遇到此类问题。
android - 使用 adb 刷新 Android 媒体存储
我正在使用 adb 在安卓手机上同步音乐。本质上,我 rm 现有的音乐目录并推送替换音乐文件。
我希望能够使用 adb 强制重新扫描,以便谷歌音乐播放器(和其他应用程序)与新歌曲和播放列表正常工作。
根据如何在 Android 上刷新 MediaStore?您可以通过广播适当的意图来强制重新扫描。
adb 提供“shell am broadcast”,这似乎允许我从 adb 强制重新扫描。
或者,我可以运行重新扫描应用程序或重新启动,但我想从 adb 触发重新扫描
我应该发出什么 adb 命令?音乐文件和播放列表都在 /sdcard/music 中。