Articles of mediastore

Android – MediaStore.Video.query()返回null

我正在尝试使用MediaStore.Video.query()方法从video文件(标题,语言,艺术家)中检索元数据。 但是,该方法始终返回null。 代码如下: String[] columns = { MediaStore.Video.VideoColumns._ID, MediaStore.Video.VideoColumns.TITLE, MediaStore.Video.VideoColumns.ARTIST }; Cursor cursor = MediaStore.Video.query(getApplicationContext().getContentResolver(), videoUri,columns); if (cursor != null) { cursor.moveToNext(); } String title = cursor.getString(cursor.getColumnIndex(MediaStore.Video.VideoColumns.TITLE)); 关于如何使用android返回video元数据的任何建议? ==更新 当我在很多地方搜索时,我尝试了一个使用CursorLoader的解决方案。 但是,CursorLoader中的方法loadInBackground()也返回null。 代码如下所示: String[] columns = { MediaStore.Video.VideoColumns.TITLE }; Uri videoUri = Uri.parse(“content://mnt/sdcard/Movies/landscapes.mp4”); CursorLoader loader = new CursorLoader(getBaseContext(), videoUri, columns, null, null, null); Cursor cursor = […]

Android – 图像选择器无法在Kindle Fire上运行?

我有以下代码来显示一个imagepicker。 用户选择onActivityResult后调用图像,返回所选图像的数据。 然而,在kindle上,我得到一个resultCode为0,数据为null。 其他人之前都注意到了这个问题? 这个问题只发生在点燃火上。 startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), SELECT_PICTURE);

如何从MediaStore.File和MediaStore.File.FileColumn获取数据

我试图获取所有文件名中包含音频文件我已经使用Mediastore获取媒体商店音频,专辑,播放列表和音频数据,但我如何获取包含音频文件的文件或文件夹标题。这是我尝试过的代码,但它不正确,因为我无法设置External_Content_uri。 这是我试过的代码。 private void External() { try { String[] proj = {MediaStore.Files.FileColumns.TITLE, MediaStore.Files.FileColumns._ID, MediaStore.Files.FileColumns.PARENT, MediaStore.Files.FileColumns.DATA };// Can include more data for more details and check it. String selection =MediaStore.Files.FileColumns.MEDIA_TYPE+”=?”; String[] selectionArgs = {“MediaStore.Files.FileColumns.MEDIA_TYPE_AUDIO”}; String sortOrder = MediaStore.Audio.Media.TITLE + ” ASC”; Cursor audioCursor = getContentResolver().query(MediaStore.Files.getContentUri(“\”external\””), proj, selection, selectionArgs, sortOrder); if (audioCursor != null) { if (audioCursor.moveToFirst()) […]

是否可以在Android的媒体元sqlite数据库上进行原始查询?

我正在写一个小应用程序来播放音乐。 我的目标是Android API等级7及以上。 该应用程序应该仅列出和播放已经由用户通过偏好选择的特定types集合标记的音乐,例如“Pop”,“Rock”,“Hillbilly”。 现在我正在尝试find一种有效的方法来查找包含用所选流派标记的曲目的所有专辑ID和专辑名称。 这在SQL中很容易。 手机将媒体元数据存储在sqlite数据库中。 我在手机的内部存储器上find它,通过adb复制它并尝试了一些sqlite查询。 生成的查询是一个带有连接链的SQL一行,它工作正常。 在使用Android SDK的Java中,这似乎更难,至少在API等级7及以上。 我可以在MediaStore上使用managedQuery在同一个底层数据库上执行一些有限的SQL语法,但是如果我理解正确,那么在使用此API时没有JOIN和DISTINCT。 我也可能忽略了这一点,但MediaStore允许我搜索一种types的所有曲目,但不能搜索单个查询中几种types的所有曲目。 所以这一切都在java中获得了一些手动工作。 该程序现在必须为每个types执行几个managedQuery()调用,并且程序必须加入结果并使它们与sqlite(此工作所属的)之外的java不同。 这真的是必须要做的吗? 有没有办法只是将原始查询发送到sqlite数据库文件? 谢谢!

什么是MINI_THUMB_MAGIC以及如何使用它?

背景 我注意到MediaStore.Images.ImageColumns的一个奇怪的列叫做“ MINI_THUMB_MAGIC ”。 文档说的只是: 迷你拇指id。 types:INTEGER 常数值:“mini_thumb_magic” 这个问题 我的猜测是这个字段与MediaStore.Images.Thumbnails有关。 这是对的吗 ? 如果没有,这是什么以及如何使用它? 如果它是正确的,我还有其他相关的问题: 它是原始的迷你尺寸图像吗? 它是使用相同的宽高比还是对它进行中心裁剪? 为什么“MICRO”的大小是方形(96 x 96),“MINI”的大小是非方形矩形(512 x 384)? 你如何使用它? 我的猜测是它是通过使用“ THUMB_DATA ”完成的,这是一个blob,所以你这样使用它,但是如果你已经拥有这个字段,那么使用“ getThumbnail ”的目的是什么? 如果方向值不是0,它会获得旋转的缩略图吗? 意思是如果我想展示它,我不需要旋转图像? 是否可以与缩略图一起查询图像? 也许使用内连接? 它适用于所有Android设备和版本吗? 为什么它甚至被称为“魔术”? 是因为它也适用于video(由于某些原因,音乐不存在,例如,它可能是专辑的封面照片)?

缩略图不会立即刷新

我正在制作一个文件管理器,其中图片项目有一个小缩略图。 我使用MediaStore获取缩略图。 一切正常。 但是当我重命名或移动文件时,缩略图不会显示。 我find了一段代码来刷新MediaStore : getActivity().sendBroadcast( new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse(“file://” + Environment.getExternalStorageDirectory()))); 它工作但我必须等待4或5秒并刷新,然后缩略图更新。 重命名或移动后如何立即获取图像缩略图?

insertImage中的未知URI错误

尝试将位图保存到图库中 Bitmap bitmap = Bitmap.createBitmap(surfaceView.getWidth(), surfaceView.getHeight(), Bitmap.Config.ARGB_8888); surfaceView.draw(new Canvas(bitmap)); MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, “foo” , “bar”); 我在模拟器上运行了应用程序并获得了UnsupportedOperationException。 07-25 22:27:48.719: E/MediaStore(1918): Failed to insert image 07-25 22:27:48.719: E/MediaStore(1918): java.lang.UnsupportedOperationException: Unknown URI: content://media/external/images/media 07-25 22:27:48.719: E/MediaStore(1918): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:168) 07-25 22:27:48.719: E/MediaStore(1918): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:136) 07-25 22:27:48.719: E/MediaStore(1918): at android.content.ContentProviderProxy.insert(ContentProviderNative.java:415) 07-25 22:27:48.719: E/MediaStore(1918): at android.content.ContentResolver.insert(ContentResolver.java:730) 07-25 22:27:48.719: E/MediaStore(1918): at android.provider.MediaStore$Images$Media.insertImage(MediaStore.java:801) 不幸的是我现在没有任何Android设备,这是因为模拟器吗? […]

Android MediaStore sqlite db位置

我试图findMediaStore使用的sqlite数据库。 据我了解,MediaStore包含默认音乐应用程序中定义的播放列表。 我实际上想复制一个播放列表,但应用程序不允许这样做。 不知怎的,如果我能find实际的db文件,我想我可以解决这个问题。 但是我现在完全陷入困境,因为我找不到数据库。 顺便说一下,我正在运行FroYo。

获取相册名称为Android的专辑封面

我想在listview中显示带有专辑名称的专辑封面。 但我没有得到显示专辑封面的方式。 我从android上的封面艺术尝试过。 这是我的代码: Cursor cursor = managedQuery(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, null, null, null, null); if (cursor == null) { //Query Failed , Handle error. } else if (!cursor.moveToFirst()) { //No media on the device. } else { int titleColumn = cursor.getColumnIndex(android.provider.MediaStore.Audio.Albums.ALBUM_ART); int id = cursor.getColumnIndex(android.provider.MediaStore.Audio.Albums.ALBUM_ID); //here value im getting -1 . for(int i=0;i<cursor.getCount();i++) { if(id<0) { Long […]

在Android中选择video的最佳方式是什么?

我的照片里有一个完美的Intent.ACTION_PICK 。 startActivityForResult(new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI),SELECT_IMAGE); 但它不适用于video。 当我点击我的列表中的video时,它会播放video而不是发回给我。 startActivityForResult(new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Video.Media.INTERNAL_CONTENT_URI),SELECT_VIDEO); 一个主意 ?