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

android - 如何知道 MediaScanner 之后数据库更新何时完成?

我一直在开发一个应用程序,其中包括使用设备相机。在我拍摄图像并将其保存在 SD 卡上后,我想通过 android 的媒体数据库获取它的缩略图。所以,我必须启动 MediaScanner 让系统知道我的图像,我做到了。

但是,在MediaScannerConnectionClient完成扫描之后,可以在这里知道

数据库更新好像没有正确完成,我的手机大约需要800ms才能完成这个过程,我怎么知道数据库什么时候完成了更新?请帮助我,如果您能发布您的代码将是最好的,非常感谢!

0 投票
1 回答
1426 浏览

android - 拍照后更新图库android相机应用程序失败

我正在构建一个相机应用程序并在拍照后(在 PictureCallback 中写入文件后),我想更新设备上的媒体文件,因此我使用 MediaScannerConnection(如以下代码所示)。但是,我无法在设备上的图库应用程序中查看图像。但是我可以在 PC 上查看图像(图像在 SD 卡上)。我错过了什么吗?

MediaScannerConnection.scanFile(this, new String[] {pictureFile.toString()}, null, new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.d("ExternalStorage", "Scanned " + path + ":");
Log.d("ExternalStorage", "-> uri=" + uri);
}
});

0 投票
1 回答
3149 浏览

android - 如何在收到完成通知的同时异步调用 MediaScannerConnection.scanFile()?

我想从 MediaStore 收集一些信息。有时 .nomedia 文件会导致文件未被扫描,因此我使用显式调用来确保文件已被扫描!

所以我打电话

...强制扫描。但是,这可能需要一段时间,所以我想在后台运行它......

我遇到了几个试图实现这一目标的问题:

  • 首先,我尝试从一个新线程调用 MediaScannerConnection,但这不起作用,因为扫描仪是在结束活动后最早启动的。我认为“上下文活动”参数将导致在结束此活动后启动。

  • 其次在另一个线程中等待结果并不总是可以的,因为这取决于结果如何继续。

因此两种方式都行不通。:-(

所以我的问题是:如何从MediaScannerConnection.scanFile()活动线程以外的线程开始?如果这不可能,完成异步处理的最佳实践是什么?恕我直言,等待必须发生在一个新线程中,但是使用结果来决定如何继续为时已晚。


第一次尝试的示例 - 永远不会返回结果:

第二次尝试的示例:

提前感谢任何有好主意解决这个问题的人!

0 投票
5 回答
13852 浏览

android - Android 的媒体扫描仪:如何删除文件?

我正在编写一个应用程序,该应用程序可以删除可能会或可能不会在任何一种媒体库(例如音乐或图片)中列出的文件。虽然我可以使用该MediaScannerConnection.scanFile方法文件添加到媒体库,但似乎没有任何调用来通知服务该文件已被删除。将不再存在的文件的路径发送给它也不会产生所需的行为。我应该如何从库中删除 Android 存储中不再存在的项目?

0 投票
1 回答
595 浏览

java - 媒体扫描仪完成其事件后如何响应

我在使用媒体扫描仪时遇到问题,在我的程序中我正在通过...运行媒体扫描仪 sendBroadcast(new Intent( Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));

上面的代码有效,但它以异步方式运行,这对我来说有点痛苦。

有什么方法可以停止直到 mediascanner 完成它的工作。

我正在从 sd 卡中获取音乐文件列表,问题是在 mediascanner 返回结果之前获取列表。

0 投票
2 回答
7710 浏览

android - MediaScanner ServiceConnectionLeaked

我使用这个类来扫描我在 SDCard 中的应用程序图像。

它有效,但在我的 LogCat 中它总是显示错误:

问题是什么?谢谢。

0 投票
0 回答
1308 浏览

android - Android:如何通知 MediaScanner 内容已删除?

我现在正在使用 MediaScanner 开发 Android 应用程序,现在我可以访问由 Sqlite 数据库管理的内容数据,并使用 scanFile 方法刷新新添加的内容。

我要做的是刷新(更新)MediaStore管理的Sqlite的数据。

我关闭电源并打开 Android,然后我可以显式启动 MediaScanner,然后我可以刷新 Sqlite MediaStore 上的数据,但是,我不知道如何通知 MediaScanner 内容(如 MP3 声音文件和 JPEG 图像文件)在 Android 时被删除已打开。

您能否告诉我如何通知 MediaScanner 的内容文件删除并更新 MediaStore 上的 Sqlite 数据?

谢谢并恭祝安康

0 投票
2 回答
584 浏览

android - Motoblur 阻止我强制媒体扫描仪运行

我有一个应用程序可以更改媒体文件夹中的一些文件(特别是 DCIM/Camera)

在我进行这些更改后,应用程序发送此广播以强制 MediaScanner 运行,以便我的更改在下次打开时反映在 Gallery 应用程序中。

这适用于运行股票 android 的设备。但是在带有 motoblur 的设备上它会失败并在日志中给我这个输出:

有什么方法可以使用这个INTERACT_BLUR_SERVICE权限吗?还是有其他方法可以让媒体扫描仪按命令运行?

0 投票
2 回答
1854 浏览

android - 如何通过代码扫描 sdcard 图像

我想扫描 sdcard 图像以在我的应用程序中显示图像。当我从相机拍摄照片时,我可以从应用程序将图像保存在 sdcard 中,但无法显示它们。但是当我在手机中手动复制图像时,sdcard 媒体扫描正在运行并且我能够显示图像。我的问题是,有没有办法通过编码对 sdcard 进行中值扫描?

0 投票
3 回答
5153 浏览

android - MediaStore 获取图像高度/宽度

我正在查询MediaStore.Images.Media.EXTERNAL_CONTENT_URI并且查询工作正常。我能够从具有常数的每一列中获取数据,例如:

宽度/高度列没有常数(no MediaStore.Images.Media.WIDTH),所以我尝试使用imagecursor.getLong(imagecursor.getColumnIndex("width"));.

尝试使用 getLong、getString、getInt... 什么都没有 - 总是同样的崩溃。

这是堆栈:

将不胜感激任何帮助...不知道我还能尝试什么。

谢谢!