我正在使用新设计库开发Android应用程序.我想创建一个类似的滚动效果,用于新的Google相册应用.我希望AppBarLayout完全滚出屏幕,以便回收器视图在状态栏后面滚动.
我在应用程序的主题中将windowTranslucentStatus设置为true.这是主要活动的xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways" />
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
这是滚动下来时的样子:

工具栏不会完全消失.
感谢帮助!
android android-scroll google-photos material-design android-toolbar
android android-animation android-gesture android-activity google-photos
我不知道为什么会发生这种情况,但是我无法从Google相册提供者中选择图片。在API 27上进行测试。
如果我使用:
val intent = Intent(Intent.ACTION_GET_CONTENT)
intent.addCategory(Intent.CATEGORY_OPENABLE)
intent.type = "image/*"
Run Code Online (Sandbox Code Playgroud)
当我打开“照片”提供程序并浏览文件夹时,会看到很多这样的文件:
2019-03-02 12:04:15.164 17641-13395/? W/NetworkManagementSocketTagger: untagSocket(120) failed with errno -22
2019-03-02 12:04:22.528 13217-13217/? E/ResourceType: Style contains key with bad entry: 0x01010586
2019-03-02 12:04:22.535 13217-13217/? W/ResourceType: For resource 0x7f020366, entry index(870) is beyond type entryCount(468)
Run Code Online (Sandbox Code Playgroud)
当我单击图片时,我看到以下内容:
2019-03-02 12:04:34.150 13217-13217/? W/ResourceType: For resource 0x7f02036c, entry index(876) is beyond type entryCount(468)
2019-03-02 12:04:34.151 13217-13217/? W/ResourceType: For resource 0x7f02036c, entry index(876) is beyond type entryCount(468)
2019-03-02 12:04:34.229 2907-16891/? W/MediaExtractor: …Run Code Online (Sandbox Code Playgroud) android android-intent kotlin google-photos document-provider
我使用谷歌地方照片Api,我想通过placeid或城市标题获取所选城市的景象.
我尝试了两种方法:
1.我发送请求(使用伦敦胎盘)
https://maps.googleapis.com/maps/api/place/details/json?placeid=ChIJdd4hrwug2EcRmSrV3Vo6llI&key=API_KEY
Run Code Online (Sandbox Code Playgroud)
从响应中获取位置
"lat": 51.5073509
"lng": -0.1277583
Run Code Online (Sandbox Code Playgroud)
下一步是请求
https://maps.googleapis.com/maps/api/place/radarsearch/json?location=51.5073509,-0.1277583&radius=5000&types=park|church|cafe|food|bar|night_club|stadium|store&keyword=&key=API_KEY
Run Code Online (Sandbox Code Playgroud)
响应包含许多带有placeid的对象,我首先用于新请求
https://maps.googleapis.com/maps/api/place/details/json?placeid=ChIJ1eu1vwgIdkgRwjsifpZERQc&key=API_KEY
Run Code Online (Sandbox Code Playgroud)
response包含photo_reference对象,它是我的图像源的一部分
https://maps.googleapis.com/maps/api/place/photo?photoreference=CoQBcwAAAMLCk4X_WMliqIfISe-mgxRadycuzApodVcaCrTMGP6wQXJaquATedXMkvnjuLAfTG9xzBYQfSNm3iXV07wxHr_X_WDhfjz_yQjmqCYlKwYwK5hH-nl9qi-4ZZqKKtFuphFEY8ka25GYN2sTNMdd0v99j7YCzpR-lHJnl0zA9QoPEhBA5CnCgElBAU7Z92VTShg2GhQUes4fTRKiJlW6rYKYEaNilauWaA&key=API_KEY&maxwidth=1200
Run Code Online (Sandbox Code Playgroud)
这不是伦敦最好的照片......
2. 使用带有param query = sights + in + London的textsearch
https://maps.googleapis.com/maps/api/place/textsearch/json?query=sights+in+London&key=API_KEY
Run Code Online (Sandbox Code Playgroud)
此请求返回响应包含photo_reference对象.最后请求是
https://maps.googleapis.com/maps/api/place/photo?photoreference=CnRnAAAAlLsg47UJRPVLdM8_sUbeLSia70EJ_mTisVDfCDTVUYNXl-35BGqzRARtq-Lt1CNcBWy3sKigfBVuF0iCr9-xqp1khK2l5JV3806LKvZrHJCaONYW35UBxxIIwxvxV-df4I4hg6f_zgeeIkWXGSYQhhIQNGYJl0fvHb3HslymbhH1thoUdLhGe8rJVCnyl_y0xAagzkFWs-Y&key=API_KEY&maxwidth=1200
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到这样的图像,这些
目标是能够从Android设备上的Google相册中选择多张照片,然后使用常规的html文件输入控件将其上传。
我可以选择多张照片,但只能上传一张。
使用图库,我可以上传多张照片。知道为什么吗?
这是一个测试器:https : //jsfiddle.net/7sL1v46e/
<input id="fileInput" type="file" multiple accept="image/*">
Run Code Online (Sandbox Code Playgroud)
当选择多个文件时,所选文件的数目将显示在文件输入的前面。
编辑1:包含属性accept =“ image / *”。如果照片来源是Google相册,仍然无法正常工作
https://photos.google.com/activities/photos_likes返回共享相册中点赞的照片。我想使用 photoslibrary api 或 events api 在共享相册中查找喜欢的照片。
但是,我找不到有关如何使用活动 api 或从 photoslibrary api 执行此操作的文档。我尝试过 photoslibrary api mediaitems.search,但是,它似乎不包含 photos_likes 作为元数据值。
我可以使用 photoslibrary api mediaitems.search 中的哪个元数据值或标签来查找共享相册中喜欢的照片?如果这是错误的 api,我应该使用哪一个?
背景:我想看看如何使用我的 Google Photos 空间,我用 Python 编写了一个小脚本,它使用 Google Photos API 来检索我的所有相册及其内容(使用https://developers.google.com/photos /library/reference/rest/v1/mediaItems/search)。文件信息不存在,但使用mediaItem baseUrl(记录的https://developers.google.com/photos/library/reference/rest/v1/mediaItems#MediaItem)然后我可以执行HEAD请求并content-length从标头中获取文件信息。这对于照片来说似乎效果很好,但视频的大小被严重低估了。我的猜测是,Google Photos 正在准备流式传输视频,并且不会发送整个视频信息。
问题:有没有办法检索存储在 Google Photos 上的视频的文件大小,希望不必下载整个视频?该应用程序确实知道文件大小,但这似乎在 API 中不可用。有没有办法发送一些请求标头来获取文件大小?
额外信息:我正在使用 Python 和httplib2.Http()来处理我的HEAD请求(很高兴使用 requests 模块或任何其他替代方案)。
这是从 API 检索到的信息,该视频文件略高于 100MB(绝对不是 30k):
{
"id": "XYZ",
"productUrl": "https://photos.google.com/lr/photo/XYZ",
"baseUrl": "https://lh3.googleusercontent.com/lr/ABC",
"mimeType": "video/mp4",
"mediaMetadata": {
"creationTime": "2018-11-27T03:43:27Z",
"width": "1920",
"height": "1080",
"video": {
"fps": 120,
"status": "READY"
}
},
"filename": "VID_20181126_174327.mp4"
}
Run Code Online (Sandbox Code Playgroud)
HEAD这些是从请求接收到的标头baseUrl:
{ …Run Code Online (Sandbox Code Playgroud) python video-streaming http-headers google-photos google-photos-api
我正在编写一个程序来在本地备份我的 Google Photos 库,上周代码工作正常,但在过去几天里,我不断从 API 客户端返回错误,说“photoslibrary v1”不存在在 Google 的 API 库中。文档根本没有改变 - 是谷歌那边有问题还是我有问题?
from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
class Photos:
def __init__(self):
self.SCOPE = "https://www.googleapis.com/auth/photoslibrary"
self.CLIENT_SECRET = "client_id.json"
self.store = file.Storage("storage.json")
self.credentials = self.store.get()
if not self.credentials or self.credentials.invalid:
self.flow = client.flow_from_clientsecrets("client_id.json", self.SCOPE)
self.credentials = tools.run_flow(self.flow, self.store)
self.PHOTOS = discovery.build("photoslibrary", "v1", http=self.credentials.authorize(Http()))
photos = Photos()
googleapiclient.errors.UnknownApiNameOrVersion: name: photoslibrary version: v1
Run Code Online (Sandbox Code Playgroud) 我正在构建一个设计工具来创建完全可定制的照片产品,如相册。我使用 firebase(数据库和存储)和 angular4 等技术。为了将 google 照片与我的网络应用程序集成,我使用了 google 照片 api。当我尝试使用 html canvas (toDataUrl) 编辑用户的照片时,出现以下错误:
“对 '...' 图像的访问已被 CORS 策略阻止:没有 'Access-Control-Allow-Origin' 标头存在于请求的资源。”
我知道这意味着什么,但我找不到任何解决方案来编辑用户的照片并将它们用于打印目的。有人可以帮我吗?
我在这里创建了一个示例来重现这个问题。我在 API 级别为 29 的模拟器上运行这个项目,并从谷歌照片提供商处选择一个视频。
但我无法弄清楚如何获取所选文件的 mimeType。
我使用了 ContentResolver 的 getType 方法,它返回 null 和 ContentResolver 查询方法,它以某种方式向我抛出 IllegalArgumentException。我附上了一张截图。

注意:如果我通过浏览目录选择相同的文件,一切正常,但是当我使用 google 照片提供程序时,它会失败。
这是我的代码::
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (resultCode == RESULT_OK && requestCode == IMAGE_VIDEO_FETCH) {
Uri selectedFileURI = intent.getData();
String type = this.getContentResolver().getType(selectedFileURI);
if (type == null || TextUtils.isEmpty(type)) {
// This shouldn't happen right?
// Since https://developer.android.com/training/secure-file-sharing/retrieve-info
// mentions a FileProvider determines the file's MIME type from its filename …Run Code Online (Sandbox Code Playgroud) google-photos ×10
android ×5
python ×2
canvas ×1
html ×1
http-headers ×1
javascript ×1
kotlin ×1
mime-types ×1
oauth-2.0 ×1
python-3.x ×1
todataurl ×1