因此,我们的应用程序可以选择拍摄照片或视频.如果用户拍照,我们可以使用MediaStore.Images.Media.insertImage函数将新图像(通过文件路径)添加到手机的图库并生成content:// style URI.对于捕获的视频,是否有类似的过程,因为我们只有它的文件路径?
我试图找到MediaStore使用的sqlite数据库.据我所知,MediaStore包含默认音乐应用程序中定义的播放列表.我实际上想要复制一个播放列表,但应用程序不允许这样做.不知何故,如果我能找到实际的db文件,我想我可以解决这个问题.但是我现在完全陷入了困境,因为我找不到数据库.顺便说一下,我正在运行FroYo.
在Android中,如何从SD卡显示图像(任何大小),而不会出现内存不足错误?
是否有必要先将图像放入Media Store?
非常感谢伪代码示例.如果显示的图像与设备的内存级别一样大,则为额外点.
我的照片里有一个完美的Intent.ACTION_PICK.
startActivityForResult(new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI),SELECT_IMAGE);
但它不适用于视频.当我点击列表中的视频时,它会播放视频而不是发回给我.
startActivityForResult(new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Video.Media.INTERNAL_CONTENT_URI),SELECT_VIDEO);

一个主意 ?
所以我的问题是如何查询播放列表内容.我可以进行查询以显示所有播放列表,但是如何进行查询以显示特定播放列表中的歌曲.
谢谢
我正在写一个小应用程序来播放音乐.我的目标是Android API等级7及以上.
应用程序应该仅列出和播放已经由用户通过偏好选择的特定类型集合标记的音乐,例如"Pop","Rock","Hillbilly".
现在我正试图找到一种有效的方法来查找包含用所选流派标记的曲目的所有专辑ID和专辑名称.
这在SQL中很容易.手机将媒体元数据存储在sqlite数据库中.我在手机的内部存储器中找到它,通过adb复制它并尝试了一些sqlite查询.生成的查询是一个带有连接链的SQL一行,它工作正常.
在使用Android SDK的Java中,这似乎更难,至少在API等级7及以上.我可以在MediaStore上使用managedQuery在同一个底层数据库上执行一些有限的SQL语法,但是如果我理解正确的话,那么在使用这个API时就没有JOIN和DISTINCT.
我也可能忽略了这一点,但MediaStore允许我搜索一种类型的所有曲目,但不能搜索单个查询中几种类型的所有曲目.
所以这一切都在java中获得了一些手动工作.该程序现在必须为每个类型执行几个managedQuery()调用,并且程序必须加入结果并使它们与sqlite(此工作所属的)之外的java不同.
这真的是必须要做的吗?有没有办法只是将原始查询发送到sqlite数据库文件?
谢谢!
我有两个清单.我们称之为AlbumsList和PicturesList.
我已经使用File类完成了它,但它工作得太慢,当我只需要来自库的那些时,它会在设备上找到所有图像.我读过有关MediaStore内容提供商但从未使用过它.所以我有两个问题:
编辑:似乎MediaStore.Images.Media.DATA列包含文件路径,所以我可以获取相册文件夹.MediaStore.Images.Media.Display_NAME看起来像文件名,但我不确定它总是如此.我可以在不进行第二次查询的情况下将缩略图数据列添加到这些列中吗?
我的代码行有问题:
String path = MediaStore.Images.Media.insertImage(activity.getContentResolver(), bitmap, "feedback", null);
Run Code Online (Sandbox Code Playgroud)
Activity不为null,位图不为null.
我收到错误:
0-22 11:23:59.644 29514-29527/? E/DatabaseUtils: Writing exception to parcel
10-22 11:23:59.644 29514-29527/? E/DatabaseUtils: java.lang.SecurityException: Permission Denial: writing com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=1380, uid=10136 requires android.permission.WRITE_EXTERNAL_STORAGE, or grantUriPermission()
10-22 11:23:59.644 29514-29527/? E/DatabaseUtils: at android.content.ContentProvider.enforceWritePermissionInner(ContentProvider.java:679)
10-22 11:23:59.644 29514-29527/? E/DatabaseUtils: at android.content.ContentProvider$Transport.enforceWritePermission(ContentProvider.java:494)
10-22 11:23:59.644 29514-29527/? E/DatabaseUtils: at android.content.ContentProvider$Transport.insert(ContentProvider.java:258)
10-22 11:23:59.644 29514-29527/? E/DatabaseUtils: at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:163)
10-22 11:23:59.644 29514-29527/? E/DatabaseUtils: at android.os.Binder.execTransact(Binder.java:453)
10-22 11:23:59.645 1380-1467/? E/MediaStore: Failed to insert image
10-22 11:23:59.645 1380-1467/? E/MediaStore: java.lang.SecurityException: Permission …Run Code Online (Sandbox Code Playgroud) 在API级别Q中不推荐使用MediaStore.MediaColumns.DATA常量。
应用程序可能没有文件系统权限来直接访问此路径。应用程序不应尝试直接打开此路径,而应使用ContentResolver#openFileDescriptor(Uri,String)获得访问权限。对于定位到Build.VERSION_CODES.Q或更高版本的应用,此值始终为NULL。
我想使用Python和Signature v4将mp4文件发布到AWS MediaStore。我正在尝试使用PutObjectMediaStore中的操作。对于这项工作,我无法使用SDK或CLI。
我可以在没有SDK或CLI的情况下使用Python向MediaStore发出GET请求,但是关于POST请求,我不知道如何处理有效负载。我收到以下错误:
<InvalidSignatureException>
<Message>The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.</Message>
</InvalidSignatureException>
Run Code Online (Sandbox Code Playgroud)
# NON WORKING CODE
import sys, os, base64, datetime, hashlib, hmac
import requests # pip install requests
method = 'PUT'
service = 'mediastore'
host = 'qwerty123.data.mediastore.ap-northeast-1.amazonaws.com'
region = 'ap-northeast-1'
endpoint = 'https://qwerty123.data.mediastore.ap-northeast-1.amazonaws.com'
request_parameters = 'Action=PutObject&Path=dummyfile.mp4&Version=2017-09-01'
cwd = os.getcwd()
def sign(key, msg):
return hmac.new(key, msg.encode('utf-8'), …Run Code Online (Sandbox Code Playgroud)