使用Google相册应用,我正在尝试选择未在设备上缓存的视频.
我正在使用ACTION_GET_CONTENT意图来启动选项对话框,并从那里选择Google相册应用.
在选择本地视频时,它会以此形式返回Uri.
内容://媒体/外部/视频/媒体/ 6708
然后,我查询内容提供程序以检索实际的文件位置,然后从那里继续.文件位置如下所示.
/ storage/emulated/0/WhatsApp/Media/WhatsApp Video/VID-20131102-WA0000.mp4
现在,当我选择在线视频时,即:我的设备上尚未提供的视频,以及需要下载以供使用的视频,返回的Uri如下所示:
内容://com.google.android.apps.photos.content/1/ https://lh6.googleusercontent.com/_RD-QTO_SK5jlaPldTe2n5GANqMc3h-ukcbNoFlF1NLy=s0-d
现在,有了这个,没有记录的ContentProvider可以帮助我获得这个视频的实际链接.即使我进行查询,它也不会返回DISPLAY_NAME和SIZE列.
DISPLAY_NAME包含video.mpeg(不同视频的显示名称相同)
SIZE可能会告诉我实际文件的大小.
我检查了各种帖子,并认为我必须通过内容提供商获取视频的InputStream,保存文件,并使用该文件.然而,选择图像文件可以正常工作,但对于视频则不然.
因此,要将流复制到文件,我有这个代码.
InputStream inputStream = context.getContentResolver().openInputStream(Uri.parse(path));
最后写入临时文件.该文件已创建,但似乎没有正确格式化.VLC播放文件,但始终只显示第一帧.
如果我从上面给出的URI的最后一部分获取URL,并尝试在浏览器上查看它,它会下载一个GIF文件.我猜这是问题所在.但我不知道如何获得视频的mpeg格式.
有谁经历过同样的经历?
android android-intent android-photos google-plus google-photos
我想使用比android kitkat高的设备获取图像。目前,我使用filedescriptor和parcelfiledescriptor来获取图像。我成功获得图像,但是旋转了。由于图片存储在Google驱动器上,因此我无法直接使用inputstream。我该如何解决?(我知道图像数据通常存储在exif中,但如果尝试获取exif数据,旋转始终为0),我也尝试过使用lib:https://github.com/coomar2841/image-chooser-library,但我在这里得到同样的问题。
ParcelFileDescriptor parcelFileDescriptor;
try {
parcelFileDescriptor = activity.getContentResolver().openFileDescriptor(selectedImage, "r");
FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
image = ExifUtil.rotateBitmap(selectedImagePath, image);
parcelFileDescriptor.close();
if (cropCircle) {
imageView.setImageBitmap(ImageUtils.cutCircle(image));
} else {
imageView.setImageBitmap(image);
}
return image;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud) 我想直接从Google相册应用中获取图片.我希望绕过通常在使用时启动的应用选择器,Intent.ACTION_GET_CONTENT如果用户已安装它,则直接转到Google相册,并允许用户选择一个图像,然后将其返回到我在ActivityResult中的应用.
我试图通过以下方式执行此操作:
if (callingActivity != null && isGooglePhotosInstalled(callingActivity)) {
Intent intent = callingActivity.getPackageManager().getLaunchIntentForPackage(GOOGLE_PHOTOS_PACKAGE_NAME);
intent.setAction(Intent.ACTION_GET_CONTENT); // ALSO TRIED Intent.ACTION_PICK
intent.setType("image/*");
try {
callingActivity.startActivityForResult(intent, MediaPickerActivity.REQUEST_PHOTO_FROM_GOOGLE_PHOTOS);
} catch (ActivityNotFoundException e) {
showErrorMsgDialog(callingActivity, "You don't have Google Photos installed! Download it from the play store today.");
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
要检查是否安装了Google相册,我正在使用:
private static final String GOOGLE_PHOTOS_PACKAGE_NAME = "com.google.android.apps.photos";
public static boolean isGooglePhotosInstalled(Context context) {
PackageManager packageManager = context.getPackageManager();
try {
return packageManager.getPackageInfo(GOOGLE_PHOTOS_PACKAGE_NAME, PackageManager.GET_ACTIVITIES) != null;
} catch (PackageManager.NameNotFoundException e) {
return …Run Code Online (Sandbox Code Playgroud) 我收到了来自Android 6.0.1用户的崩溃报告:
STACK_TRACE=java.lang.SecurityException: Permission Denial: reading com.google.android.apps.photos.contentprovider.MediaContentProvider uri content://com.google.android.apps.photos.contentprovider/0/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F19181/ORIGINAL/NONE/443149508 from pid=18891, uid=10128 requires the provider be exported, or grantUriPermission()
at android.os.Parcel.readException(Parcel.java:1620)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:146)
at android.content.ContentProviderProxy.openTypedAssetFile(ContentProviderNative.java:692)
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1104)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:942)
at android.content.ContentResolver.openInputStream(ContentResolver.java:662)
at fr.free.nrw.commons.upload.UploadService.uploadContribution(UploadService.java:176)
at fr.free.nrw.commons.upload.UploadService.handle(UploadService.java:114)
at fr.free.nrw.commons.upload.UploadService.handle(UploadService.java:27)
at fr.free.nrw.commons.HandlerService$ServiceHandler.handleMessage(HandlerService.java:19)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.os.HandlerThread.run(HandlerThread.java:61)
Run Code Online (Sandbox Code Playgroud)
从周围看,这似乎与Google相册许可有关com.google.android.apps.photos.permission.GOOGLE_PHOTOS。我的清单中已经具有此权限,但是该用户正在运行API 23,该API需要运行时权限。
问题是,如何为此调用运行时权限?我知道如何针对https://developer.android.com/training/permissions/requesting.html#perm-check所述的标准权限执行此操作,但是当我尝试执行此操作时
ActivityCompat.requestPermissions(thisActivity,
new String[]{com.google.android.apps.photos.permission.GOOGLE_PHOTOS},
Run Code Online (Sandbox Code Playgroud)
它不会编译。
我需要在运行时请求才能从Google相册访问图像的权限的名称是什么?
android android-permissions google-photos android-6.0-marshmallow
我目前正在使用picasa API在我自己的网页上显示多个用户的公开和私人相册.要查看picasa相册,我需要一个userId,一个albumId和一个authkey.
我曾经从picasaweb.google.com得到这些ID的,但由于谷歌停止该服务有利于photos.google.com的,我不能得到的ID了.
我想切换到photos.google.com,但还没有API photos.google.com(还).
有没有什么办法,以蒸馏userId并albumId从谷歌的照片共享链接(https:// goo.gl / photos / something)?
我正在编写一个Android应用程序,无需登录Google帐户(身份验证)即可查看Google相册中的共享(公开)相册.是否有针对此要求的Google相册REST API?请点亮一些光.
编辑:我想更新问题的真正所在。在三星手机上,您有“图库”,在“图库”中,您还可以看到您的谷歌照片备份。这是我想要的照片选择。现在在其他应用程序 (Close5) 上,它们只是显示一条消息,指出 “不支持该照片”。但为什么?为什么我们不能让这个 url (https://lh3.googleusercontent) 工作?
E/BitmapFactory:无法解码流:java.io.FileNotFoundException:/https:/lh3.googleusercontent.com/-Llgk8Mqk-rI/U8LK0SMnpWI/AAAAAAAAFk4/0cktb59DnL8GgblJ-IJIUBDuP9MQXCBPACHM/I/120jpg50:/IJIUBDuP9MQXCBPACHM21/IMG50:/这样的文件或目录)
你们都可以清楚地看到这是一张带有真实网址的真实照片:
https:/lh3.googleusercontent.com/-Llgk8Mqk-rI/U8LK0SMnpWI/AAAAAAAAFk4/0cktb59DnL8GgblJ-IJIUBDuP9MQXCBPACHM/I/IMG_20140711_085012.jpg
Run Code Online (Sandbox Code Playgroud)
一切正常,直到我从照片或谷歌照片图像而不是从图库中选择,我尝试处理异常 ( Sorry, that image isn't supported. Try another gallery!) 但这似乎不完整。我尝试在这里查看其他解决方案,但没有一个适用于谷歌照片。谢谢!
错误是一个空指针:
应用程序 E/BitmapFactory:无法解码流:java.io.FileNotFoundException:/https:/lh3.googleusercontent
@Override
public void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (resultCode != Activity.RESULT_CANCELED) {
if (requestCode == 1) {
try{
String selectedImagePath = getAbsolutePath(data.getData()); ((PostAdParentTabHost)getActivity()).getMap_of_picture_paths().put(1, selectedImagePath);
post_ad_camera_img_1.setImageBitmap(decodeSampledBitmapFromFileToCustomSize(selectedImagePath, 150, 150));
animation_master.fade(post_ad_camera_img_1);
}catch(Exception e){
e.printStackTrace();
((PostAdParentTabHost)getActivity()).getMap_of_picture_paths().remove(requestCode);
Toast.makeText(getActivity(), "Sorry, that image isn't supported. Try another gallery! ", Toast.LENGTH_SHORT).show();
}
//------------------------------------------------------Methods:
public String getAbsolutePath(Uri uri) { …Run Code Online (Sandbox Code Playgroud) 我想留下Google照片,并且已经使用Google Takeout下载了所有照片。现在,我有一大堆包含json文件(我认为包含exif数据)和图像的文件夹。结构如下所示:home / user / Billeder / Takeout / Google Photos / 2011-06-09 / file.json。主页/用户/ Billeder / Takeout(2)/ Google相册/2011-07-09/file.json。
我想将json数据与正确的图像结合起来,并在与它们的创建日期相对应的文件夹中组织图像。我一直在看Exiftool,但是到目前为止找到的所有答案仅显示了如何针对单个图像执行此操作。我正在寻找的是一种将所有数据与正确的图像批量合并的方法。
我正在尝试在linux命令行中执行此操作。有没有办法做到这一点?
我正在尝试使用阅读Google Photos API文档的API来获取全分辨率视频的链接。
它说,concatenate the base URL in the following format with your required dimensions但是关于尺寸什么也没说。
我正在使用${baseUrl}=dv,我得到了一个低分辨率视频的下载链接,但是如果我在Google相册网站中查看该视频,则可以看到它具有更高分辨率。
google-photos ×10
android ×6
picasa ×2
drive ×1
excel ×1
exiftool ×1
gallery ×1
google-api ×1
google-plus ×1
image ×1
java ×1
json ×1
rest ×1
vba ×1