Articles of mediastore

android中mediastore中MICRO_KIND和MINI_KIND之间的区别?

在我的android文档中,我没有micro_kind和mini_kind的含义,这两者有什么区别? 在显示图像时,两者有什么区别? 关注问题: MediaStore.Images和MediaStore.Video有什么不同,仍然给出图像的输出,路径包含video路径,为什么我甚至使用mediastore.images.thumbnail.mini_kind它还在显示图像呢? Bitmap bmp = ThumbnailUtils.createVideoThumbnail(videoPath, MediaStore.Images.Thumbnails.MINI_KIND); Bitmap bmp = ThumbnailUtils.createVideoThumbnail(videoPath, MediaStore.Video.Thumbnails.MINI_KIND);

Android游标错误 – “确保游标在从中访问数据之前已正确初始化…”

我有一个活动,其中一个viewflipper显示一个包含来自mediastore的艺术家的列表,onitem点击显示所选艺术家的专辑列表,然后显示该专辑中的歌曲。 单击一首歌后,它应该使用字符串’title’填充textview。 在此之前,所有游标都工作正常,但最后一个游标似乎以某种方式失去了位置。 谁能告诉我为什么logcat告诉我: 05-07 23:58:54.195: E/AndroidRuntime(1961): java.lang.IllegalStateException: Couldn’t read row 3, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it. 无法读取的特定行因所选择的艺术家/专辑/歌曲而异。 代码如下。 非常感谢您的帮助。 package music.flipper; import android.app.Activity; import android.database.Cursor; import android.os.Bundle; import android.provider.BaseColumns; import android.provider.MediaStore; import android.provider.MediaStore.Audio.AlbumColumns; import android.provider.MediaStore.Audio.ArtistColumns; import android.provider.MediaStore.Audio.AudioColumns; import android.provider.MediaStore.MediaColumns; import android.view.View; import android.widget.AdapterView; […]

列出Android中的所有相机图像

你如何获得Android设备的所有相机图像列表? 是通过MediaStore吗? 怎么样?

对于某些文件,Android MediaStore查询MediaStore.MediaColumns.TITLE列为null

我正在对Android的MediaStore文件数据库 – MediaStore.Files.getContentUri(“external”) – 对于某些特定文件夹, MediaStore.MediaColumns.TITLE和MediaStore.MediaColumns.DISPLAY_NAME为空,而对于其他文件夹这个值存在。 我找不到任何关于MediaStore.MediaColumns.TITLE的文档可能为null。 对于一些内部android目录会发生这种情况,例如: _data: /storage/emulated/0/Music, title: null, _display_name: null _data: /storage/emulated/0/Notifications, title: null, _display_name: null _data: /storage/emulated/0/Pictures, title: null, _display_name: null 但是,对于其他一些文件夹,标题是: _data: /storage/emulated/0/Android, title: Android, _display_name: null _data: /storage/emulated/0/DCIM, title: DCIM, _display_name: null _data: /storage/emulated/0/Download, title: Download, _display_name: null 所有数据都直接来自MediaStore查询。 我知道我可以直接使用数据但我正在尝试根据TITLE对查询进行排序,这会导致错误的结果,因为有些是null。 这是预期的行为吗? 如何处理它并检索按标题正确排序的所有文件?

Android MediaScanner:从图库中删除图像文件

我正在开发一个应用程序,它隐藏了库存应用程序中的图像文件。 为此,我正在创建一个.nomedia文件并要求MediaScanner进行更新。 这种技术适用于我必须显示隐藏文件的情况,即删除.nomedia文件并扫描该文件夹中的每个文件以显示在库中。 但是当我想要隐藏图像时,放入一个.nomedia文件,然后要求MediaScanner扫描该文件夹中的所有文件并不会隐藏图库中的那些图片。 我正在使用以下代码来扫描文件 private void refreshPic(String path) { Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); File f = new File(path); Uri contentUri = Uri.fromFile(f); mediaScanIntent.setData(contentUri); this.sendBroadcast(mediaScanIntent); } 我是以正确的方式做到的吗? 或者从Media Store中删除文件需要其他一些东西吗? 测试设备:Nexus 5(4.4.2) 谢谢。

MediaStore.Images.Thumbnails.getThumbnail返回错误的缩略图而不是NULL

考虑如下图所示的场景: 三张照片,其中一张是大型GIF文件(3MP)。 我正在查询MediaStore以检索相应的缩略图。 如果我使用此sortOrder通过CursorLoader初始化Cursor: MediaStore.Images.Media.DATE_ADDED + ” DESC”” 会发生什么: MediaStore返回先前成功检索的缩略图: 预期的行为:当MediaStore由于某种原因无法检索给定图像的缩略图时,它必须返回NULL,根据其Javadoc: “…返回一个Bitmap实例。如果与origId关联的原始图像不是,则它可以为null存在或记忆不够。“ 如果我用这个sortOrder初始化Cursor: MediaStore.Images.Media.DATE_ADDED + ” ASC”” 它运行得很好: 但是我不能简单地改变sortOrder,因为要求是先显示最新的图片。 下面是我的示例代码, 这里是完整的示例项目以及用于重现的三个图像 。 package com.example.getimagefrommediastore; import android.app.Activity; import android.database.Cursor; import android.graphics.Bitmap; import android.os.Bundle; import android.provider.MediaStore; import android.support.v4.content.CursorLoader; import android.widget.ImageView; import android.widget.TextView; public class GetThumbnailsFromMediaStoreSampleActivity extends Activity { TextView mThumb_id_01; TextView mThumb_id_02; TextView mThumb_id_03; ImageView mImg_01; ImageView […]

Android:如何获取应用程序专用的文件的video缩略图?

题: 如何获取应用程序专用文件的video缩略图? 具体来说,有没有办法直接从.mpeg文件中提取video帧? 背景: 我的应用程序包括一个可以录制video的相机。 出于产品原因,video文件最初是在应用程序的私有数据目录中以私有模式创建和编写的,使其对应用程序是私有的。 这是使用以下完成的: Context#openFileOutput(fileName, Context.MODE_PRIVATE) – 典型的文件路径如下所示:/ /data/data/[package.name]/files/[fileName].mp4 / Context#openFileOutput(fileName, Context.MODE_PRIVATE) /data/data/[package.name]/files/[fileName].mp4 – 仅供参考我已尝试使用Context.MODE_WORLD_READABLE而不是Context.MODE_PRIVATE但它没有帮助。 即使video最终可能最终存在于外部存储中(通过将文件移动到Environment#getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES) ) ,也必须在video处于应用程序专用存储中时显示缩略图。 看起来ThumbnailUtils.createVideoThumbnail(String, int)在将文件移动到公共目录后(无论是将其添加到MediaStore)都可以正常工作,但是当文件在内部存储中时,它会无提示失败(返回null )。 注意:只要video文件位于应用程序专用存储中,它就不会添加到MediaStore(设备库中的图像/video内容提供商提供)。 只有将video移动到外部存储后才能将其添加到MediaStore中。 这是与产品相关的决定,我无法环游; 除非有一种方法可以将video添加到媒体商店而不会被其他应用程序看到…我想知道应用程序私有存储中的video是否可以添加到媒体商店并保持应用程序私有但获得所有免费“服务” “由媒体商店提供,例如缩略图生成。

Android:保存新图像后刷新图库

因此,在我的应用程序中,我一度将一堆图像保存到临时文件夹中,我希望它们立即显示在图库中。 重新启动,他们这样做,但否则他们没有。 我尝试过使用sendBroadcast方法: sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse(“file://” + Environment.getExternalStorageDirectory()))); 但我得到一个权限错误: E/AndroidRuntime( 2628): java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.MEDIA_MOUNTED from pid=2628, uid=10068 我可以在AndroidManifest中丢失权限,还是不再支持? 谢谢

将video插入MediaStore

我正在尝试将video插入MediaStore ,就像使用此方法存储图像一样: MediaStore.Images.Media.insertImage(getContentResolver(), imagePath, null, null) 由于MediaStore.Video.Media上没有类似的方法,我试图将记录插入MediaStore.Video.Media.EXTERNAL_CONTENT_URI ,然后将文件复制到目的地,如下所示: ContentValues values = new ContentValues(); values.put(MediaStore.Video.Media.TITLE, “Title1”); values.put(MediaStore.Video.Media.MIME_TYPE, “video/mp4”); values.put(MediaStore.Video.Media.DATA, videoPath); Uri uri = cr.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values); try { OutputStream os = cr.openOutputStream(uri); … … } (FileNotFoundException e) { cr.delete(uri, null, null); } 返回的uri以content://media/external/video/media/{id}的formsnon-null ,这似乎是正确的。 但是当cr.openOutputStream(uri); 如果被激活,则抛出FileNotFoundException 。 最后一点与查看其源代码的Images.Media.insertImage类似。 顺便说一句,我有WRITE_EXTERNAL_STORAGE权限。 另外,我正在测试4.3和4.4。

尝试保存图像时,MediaStore.Images.Media.insertImage返回null

我正在使用自定义视图,并且我正在使用canvas,用户可以在其中绘制任何内容,之后我想将该图像保存在SD卡中,但是无法做到这一点。 不知道发生了什么事。 else if(view.getId()==R.id.save_btn){ //save drawing AlertDialog.Builder saveDialog = new AlertDialog.Builder(this); saveDialog.setTitle(“Save drawing”); saveDialog.setMessage(“Save drawing to device Gallery?”); saveDialog.setPositiveButton(“Yes”, new DialogInterface.OnClickListener(){ private FileOutputStream fOut; public void onClick(DialogInterface dialog, int which){ //save drawing drawView.setDrawingCacheEnabled(true); //attempt to save String imgSaved = MediaStore.Images.Media.insertImage( getContentResolver(), drawView.getDrawingCache(), UUID.randomUUID().toString()+”.png”, “drawing”); //feedback if(imgSaved!=null){ Toast savedToast = Toast.makeText(getApplicationContext(), “Drawing saved to Gallery!”, Toast.LENGTH_SHORT); […]