问题标签 [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 - 媒体扫描仪无法在某些设备上拾取图像
我有一个应用程序将图像保存到 sdcard 上的目录中,然后我希望 MediaScanner 将其拾取,以便它们显示在设备上的图库/照片库中。
我的问题
我目前的解决方案在 Galaxy S3、Galaxy Ace 和 Sony Xperia U 上都能正常工作。它不能在 HTC Hero 上工作。
它更新其内容的唯一方法是重新启动设备,因为我将其添加到内容解析器,因此其他设备在添加它时会拾取它。我的代码如下所示。
我的问题
如何强制重新扫描或更新 MediaScanner,以便在不重新启动设备的情况下将新添加到该目录的图像显示在 HTC Hero 的照片库中?
提前致谢
android - MediaScanner, onScanCompleted 没有被调用
我对 MediaScanner 有疑问。我用它用这个代码扫描一个文件:
如果我在活动(onCreate)开始时扫描文件,它会完美运行。扫描仪已连接,它扫描文件,然后完成。
但是如果我调用扫描仪然后我转到另一个活动,MediaScanner 会泄漏内存,因为它没有调用 onScanCompleted 方法。而且,如果我在离开活动之前将 unbindService() 与扫描仪一起使用,则扫描仪将无法工作(该文件不会出现在图库应用程序中)。
我离开活动时需要使用扫描仪。我能做些什么?
android - 媒体扫描仪正在运行
在我的应用程序中,用户通过相机功能捕获图像之后,我将在网格视图中更新图像。但是经过长时间搜索后这些图像没有更新,我发现需要手动运行媒体扫描仪。我为此编写代码。但是当我捕获时图像反复出现错误。下面我发布了我的日志猫错误....
下面我发布了我的代码,我将在其中运行这个代码,并在评论中解释每一步。
//在这张照片上我写了媒体扫描仪的代码
我希望你明白我的意思我也试过了
但是我认为它扫描整个 sd 卡有点慢。所以任何人都可以指导我如何运行媒体扫描仪以及我可以在哪里运行我的代码。我搜索了很多,但这些都不能满足我的需求。
android - 如何在android中运行媒体扫描仪
我想在捕获图像时运行媒体扫描仪。捕获后,图像在网格视图中更新。为此,我需要运行媒体扫描仪。我找到了两种运行媒体扫描仪的解决方案,一种是广播 事件,另一种是运行媒体扫描仪类。我认为在 Ice Cream Sandwich (4.0) 中引入了媒体扫描器类。在版本之前需要设置广播事件以运行媒体扫描器。
谁能指导我如何以正确的方式运行媒体扫描仪。
android - 在android中扫描不同的内存类型
我有一些可能对其他人有用的问题。在 android 4.0 以后,
1)如何检查是否有外接sd卡支持?
2)如何在内部和外部内存中强制运行Mediascan?
3) 如何只扫描 sd 卡或内存?
java - 仅在单个目录中调用 MediaScanner (android)
我试图让 MediaScanner 只扫描一个目录时遇到问题。
我的应用程序拍摄照片,并将它们保存到 sd-card/DCIM/AppPictures/,显然我需要调用 MediaScanner 以使它们显示在图库应用程序中。以下代码确实适用于我的目的:
但这似乎太浪费了!当我知道文件的确切位置时,我不想使用资源来尝试扫描整个 SD 卡。我也尝试过以下方法:
但这无法产生任何结果。有人可以让我知道完成这项工作的正确方法吗?
android - DownloadManager 在下载后运行 MediaScanner 但不应该
似乎 MediaScanner 想要扫描我告诉它不要的文件。现在我想知道为什么。
我的应用程序从我的服务器下载了几个媒体文件,并在稍后通过播放列表显示它们。
为此,该应用程序使用 Android 系统的DownloadManager获取媒体文件。
使用Request.setDestinationUri(),下载将被保存到名为“pending”的getExternalCacheDir()的子目录中。
下载完成后,Android DownloadManager 会发送ACTION_DOWNLOAD_COMPLETE广播。然后,我的应用程序的广播侦听器将完成下载并将其从“待处理”文件夹移动到另一个名为“媒体”的文件夹。
所有这些都按预期工作。
但是,系统日志中充满了如下消息:
显然,我的应用程序告诉 DownloadManager 将图像/视频下载到“待处理”目录。它按照它的指示执行并发送“我完成下载”广播。我的应用程序接收广播并将完整文件移动到“媒体”目录。片刻之后,MediaScanner(或其他东西)尝试扫描“待处理”文件夹中的已完成文件,并输入系统日志。
现在我想知道:为什么 MediaScanner 仍然试图读取这些文件?
根据 setDestinationUri 的 Android API 文档: “ MediaScanner不会扫描下载的文件。但可以通过调用 allowScanningByMediaScanner() 使其可扫描。” 我不调用该方法,因此不应扫描下载的文件。
接下来,我尝试在应用程序的缓存目录中放置一个空的.ignore ,并通过ACTION_MEDIA_SCANNER_SCAN_FILE提醒 MediaScanner .ignore-file 的存在,但错误消息仍然存在。
为了增加神秘感,这些文件不会出现在系统的图库或视频应用程序中,所以是的,媒体扫描仪会忽略它们。但仍然:为什么它在不需要的时候尝试读取它们?是 MediaScanner 还是其他系统服务?
android - 当文件名在 Android 中不包含 mime 类型扩展时,如何确定音频文件的格式?
我有一个无扩展名的文件,为了这篇文章而命名MyAudioFile
,我知道这个音频文件的扩展名是aac
格式(我已经用一个名为 的程序对其进行了分析GSpot
),但是由于该文件没有任何扩展名,我无法使用 Android 中可用的任何方法来确定MIME
该文件的类型。
是否有任何Android
我不知道的内置实用程序方法,它可以让我读取音频文件的标题信息并吐出文件的扩展名或MIME
类型?
我已经尝试过MediaMetaDataRetriever
但MimeTypeMap
没有成功,我是否错过了可以在这里使用的任何其他课程?
SOX
是否可以使用除and之外的任何其他外部库FFMPeg
?
android - 如何在 Nexus 7 上触发 MediaScan?
因为我想确保 MediaStore 拥有最新信息而无需重新启动我想使用我在 SO 上找到的流行方式触发 MediaScanner
这在我的三星 S2 w/ICS 上运行良好,但在我的 Nexus 7 w/JellyBean 上运行良好。Logcat 在我的 Nexus 7 上显示:
最后一行在理论上听起来令人鼓舞,但即使在新文件被推送到 SD 卡(通过 adb push)之后,这些值也始终为 0。在我的旧设备(S2)上,它确实重新安装了 SD 卡。
我在我的 AndroidManifest.xml 中添加了以下权限,但它的行为与没有这些权限时相同:
有什么想法/替代方案吗?
编辑1:
请注意,我不知道新文件或已修改或已删除文件的任何文件路径。我只是想确保 MediaStore 是最新的。
android - 移动文件时来自媒体提供商的音乐 ID 是否会更改?
我们有这个文件,它在is/sdcard/music/file.mp3
中对应的 ID 。在以下情况下 ID 是否会更改:MediaStore
1
- 文件被移动,说移动到
/sdcard/music2/file.mp3
- 文件被重命名(可能和上面一样)
媒体扫描仪完成重新扫描后?
更新澄清,所以你可以看到我的目的。
虽然下面实际上不是我的真正目的,但想法是一样的:
我想将每个 mp3 文件与一个 URL 相关联(比如它的歌词)。我会将它保存在我自己的 sqlite 数据库中。我的 sqlite 数据库将具有 ID 和 URL 列,其中 ID 列与媒体提供程序中的 ID 相同。