小编Oli*_*ler的帖子

在onNext()中没有传递任何内容的Observable

我需要一个Observable,例如提供一个系统时钟,它不需要在onNext()中传递任何东西.我找不到允许我这样做的签名.

当然,我可以使用任何对象,然后传递null,但这没有多大意义.所以我的问题是,是否有更好的方法来做到这一点.

Observable.create(new Observable.OnSubscribe<Anyobject>() { // use any object in the signature

            @Override public void call(Subscriber<? super Anyobject> subscriber) {

                    subscriber.onNext(null); // then pass null
                    subscriber.onCompleted();

            }

        })
Run Code Online (Sandbox Code Playgroud)

java rx-java

36
推荐指数
3
解决办法
4万
查看次数

Android Studio不会为调试版本签署代码

Android Studio拒绝签署我的代码以进行调试构建.

我有一个较旧的项目,在build.gradle中没有任何签名说明,所以我根据这个Android gradle signingConfig错误和其他帖子添加了这些.

我在模块级别的build.gradle文件(唯一的模块)看起来像这样(摘录):

android {
    compileSdkVersion 21
    buildToolsVersion '21.1.2'
    defaultConfig {
        applicationId "cc.appname.android"
        minSdkVersion 11
        targetSdkVersion 21
        versionCode 1
        versionName '1.0'
    }
    signingConfigs {
        debug {
            storeFile file('../../../.android/debug.keystore')
            keyAlias 'androiddebugkey'
            keyPassword 'android'
            storePassword 'android'
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
    productFlavors {
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}
Run Code Online (Sandbox Code Playgroud)

可以找到storeFile,因为当我更改路径时,我收到编译错误.当路径正确时,它会编译,但是当我尝试在我的应用程序中使用Facebook SDK时,它会报告错误的键盘.

我注意到签署了Configs

signingConfig signingConfigs.debug
Run Code Online (Sandbox Code Playgroud)

带有错误消息"无法推断参数类型..."

所以我去了用户界面中的项目设置,删除了签名以及构建和签名之间的关系,保存了这个,并将其添加回来.同样的问题.

我确信这是一个非常小的东西,我只是忽略了,或谷歌重命名版本之间的命令,无论如何.

有人可以帮忙吗?

android code-signing gradle android-studio

16
推荐指数
1
解决办法
1万
查看次数

如何在okhttp中将Charset自动添加到Content-Type中

请考虑以下代码:

    OkHttpClient client = new OkHttpClient();

    MediaType mediaType = MediaType.parse("text/plain; charset=utf-8"); // [A]
    RequestBody body = RequestBody.create(mediaType, media);
    String[] aclHeader = "x-goog-acl:public-read".split(":");

    Request request = new Request.Builder()
            .addHeader("Content-Type", "text/plain") // [B]
            .addHeader(aclHeader[0], aclHeader[1])
            .url(url)
            .put(body)
            .build();

    Response response = client.newCall(request).execute();
Run Code Online (Sandbox Code Playgroud)

我从客户端访问GCS,并使用以前签名的URL.

问题:似乎okhttp将为身体[A]声明的字符集添加到URL中(至少对于text/plain),即使它未在[B]中声明.这会弄乱我签名的URL,GCS会返回403 Forbidden.

  • 如果我从[A]中删除字符集,它仍会被添加.
  • 如果我在签名之前将charset添加到签名URL,它就可以正常运行,GCS会返回200 OK.

但这不是应该的.至少在使用签名URL时,必须将这些URL完全按照声明的方式发送到服务器.

我尝试使用Apache http客户端(我不想在生产中使用,因为okhttpclient已经是我的安装的一部分)并且该客户端不会暴露这种行为:

        String[] aclHeader = "x-goog-acl:public-read".split(":");

        StatusLine statusLine = Request

                .Put(url)
                .addHeader("Content-Type", "text/plain")
                .addHeader(aclHeader[0], aclHeader[1])
                .bodyByteArray(media)

                .execute().returnResponse().getStatusLine();
Run Code Online (Sandbox Code Playgroud)

有没有办法抑制okhttp中的行为,它是添加到Content-Type还是冗余地传输了Body-Type中的Content-Type?

java google-cloud-storage okhttp pre-signed-url

14
推荐指数
1
解决办法
4065
查看次数

如何将自定义信息从App Engine身份验证器传递到端点?

我在这篇Google Cloud Endpoints帖子和用户身份验证中引用了@MinWan的精彩答案,他描述了一种向针对App Engine的Cloud Endpoints的请求添加自定义标头的方法.

很明显,我们可以添加一个自定义标头,并根据我们想要验证的每个服务(例如Google,Twitter,Facebook)编写验证器,其中每个验证器读取特定的标头并对服务进行身份验证.如果令牌有效,则服务通常会返回包含电子邮件地址或用户ID的响应,以及一些额外信息[A],我们会从中生成com.google.api.server.spi.auth.common.User,稍后将其作为com.google.appengine.api.users.User传递到端点方法.

第一个问题:为什么我们有两个不同的用户实体,例如具有不同命名空间的用户?看起来,这些都不是子/超类,所以它们可能在幕后明确地投射.

第二个问题:显式转换的User实体带来的问题,并且没有自定义字段,我可以放置服务返回的额外信息[A],这是额外的信息丢失.这样的额外信息可能有助于将外部服务的oauth2用户与本地用户或由其他服务返回的oauth2用户进行匹配.

有什么输入?处理多种身份验证服务的建议方法是什么?

authentication google-app-engine facebook-authentication google-cloud-endpoints google-oauth

12
推荐指数
1
解决办法
1306
查看次数

在Picasso中使用Callback获取图像?

我想展示一张照片系列,照片之间没有间隙,照片会定期更换.我意识到Picasso在开始下载之前初始化了ImageView,无论我是否在调用()之前获取(),它总是这样做.

我使用fetch()来保持图像之间的间隙较小,并使用.placeholder(R.color.black),但即使从内存加载图像,间隙仍然可见.

我的代码看起来像这样

Picasso.with(getContext()).load(url).fetch();
Run Code Online (Sandbox Code Playgroud)

然后延迟[目前正在修复,我想根据网络速度调整]

Picasso.with(getContext()).load(url).into(screenSurface);
Run Code Online (Sandbox Code Playgroud)

我注意到fetch()不支持任何回调参数并返回void,因此我似乎不可能知道缓存何时变暖.

两个问题:

  1. 在缓存图像时我能注意到吗?
  2. 是否有可能采用不同的方法摆脱图像之间的断裂并使它们经常出现.

[我知道我可以用某种方式手动编码,但如果Picasso支持它,我想使用它.]

android picasso

11
推荐指数
2
解决办法
1万
查看次数

带有Gradle的Google云端存储Java客户端库

Google在此处推广其新的Java客户端库:https://developers.google.com/appengine/docs/java/googlecloudstorageclient/

注意:我不是在谈论本机REST库.我想使用Java客户端库.

在网站上,Google没有为Gradle指定import指令.对于Maven,pom.xml看起来像这样:

<dependency>
    <groupId>com.google.appengine.tools</groupId>
    <artifactId>appengine-gcs-client</artifactId>
    <version>RELEASE</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

当我将其更改为使用我的Gradle项目时,它不起作用:

dependencies {
    compile 'com.google.appengine.tools:appengine-gcs-client:RELEASE'
}
Run Code Online (Sandbox Code Playgroud)

它在那里找到了工具,但无法解析com.google.appengine.tools.cloud存储(它解析了工具).

我做了什么:我删除了库并在Android Studio依赖项对话框中为"gcs"进行了分析; 它找到并将以下指令添加到build.gradle:

dependencies {
    compile 'com.google.appengine.tools:appengine-gcs-client:0.3.9@jar'
}
Run Code Online (Sandbox Code Playgroud)

与以前一样的问题:工具已解决,但不是tools.cloudstorage.

  • 我究竟做错了什么?库存在哪里/我需要将哪个import语句添加到Gradle?

我不想下载jar,因为我希望我的项目能够自动更新jar.设置了mavenCentral(),这是我的完整build.gradle文件,以防万一你需要它:

apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.google.appengine.tools:appengine-gcs-client:0.3.9@jar'
    compile 'com.google.http-client:google-http-client-android:1.18.0-rc'
}
Run Code Online (Sandbox Code Playgroud)

任何帮助表示感谢,谢谢!

java google-app-engine gradle google-cloud-storage android-studio

7
推荐指数
1
解决办法
1499
查看次数

使用gradle将jar上传到本地Maven存储库

这个问题已被问过几次,但不知怎的,我不知道这个问题.Gradle是一个很棒的工具,但它的文档不是很好.没有任何例子使得几乎不可能理解每天不使用它的人.

我正在使用Android Studio,我想将模块输出jar上传到我的本地Maven存储库.

apply plugin: 'java'

dependencies {
    compile 'com.google.http-client:google-http-client-android:1.18.0-rc'
}


apply plugin: 'maven'
configure(install.repositories.mavenInstaller) {
    pom.project {
        groupId 'com.example'
        artifactId 'example'
        packaging 'jar'
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在Android Studio中开始构建时,我可以在Gradle选项卡上看到

:install
Run Code Online (Sandbox Code Playgroud)

被调用.我的build文件夹中也有一个新jar,但是jar没有上传到Maven.[Maven回购存在且Google appengine gradle插件从同一项目的另一个模块上传它的jar就好了.]

我错过了什么?

gradle maven android-studio

7
推荐指数
1
解决办法
9277
查看次数

AppRTC服务器返回html而不是Json

我正在将WebRTC本地实现到Android中.我能够编译和运行这里描述的代码http://www.webrtc.org/native-code/android,但我遇到了一个问题,apprtc.appspot.com显然没有按照假设返回一个通道令牌:

01-05 20:01:51.230  15488-15488/org.appspot.apprtc E/AppRTCDemoActivity? Fatal error: Missing channelToken in HTML: <!DOCTYPE html>
    <!--
    *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
    *
    *  Use of this source code is governed by a BSD-style license
    *  that can be found in the LICENSE file in the root of the source
    *  tree.
    -->
    <html>
    <head>
    <title>WebRTC Reference App</title>
    <meta charset="utf-8">
    <meta name="description" content="WebRTC reference app">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">
    <script type='text/javascript'>window.mod_pagespeed_start = Number(new …
Run Code Online (Sandbox Code Playgroud)

android webrtc apprtcdemo

7
推荐指数
1
解决办法
2206
查看次数

我是否可以将流上传到Azure blob存储而不预先指定其长度?

我不知道它是否相关,但我使用Java与azure-storage-android-0.2.0.aar进行上传.

我可以将文件上传到Microsoft Azure blob存储

CloudBlockBlob blob = container.getBlockBlobReference("filename.ext");
blob.upload(inputStream, n);
Run Code Online (Sandbox Code Playgroud)

其中n是从文件派生的inputStream的长度.

这是我的问题:我想直接流式传输,例如来自相机,这显然是不可能的,因为Azure需要上传的长度参数,这在流式传输时是未知的.

我需要指定长度吗?(MD5?)有没有一种方法可以在流仍在生成时上传(这显然是Java中的InputStream的想法,InputStream没有长度属性的原因)?

java azure azure-storage

6
推荐指数
1
解决办法
2634
查看次数

毕加索在fetch()期间是否应用调整大小选项?

我指的是让毕加索预先获取即将出现的图像的帖子,其中@BillMote使用带有centerCrop()的fetch()和更多选项:

           Picasso.with(getApplicationContext())
                .load(url)
                .resizeDimen(R.dimen.article_image_preview_width, R.dimen.article_image_preview_height)
                .centerCrop()
                .fetch();
Run Code Online (Sandbox Code Playgroud)

毕加索是否会尊重这些选项,或者毕加索是否会将图像直接保存到缓存中以便忽略这些选项,以后应该在从缓存中提取图像并查看时使用?

它仍然不清楚(并且在6个月之后我没有找到任何明确定义的文件[我承认我没有调查过这个])如果毕加索在保存文件之前应用任何这样的选项缓存,或每次显示图像时重复.

在上面的语句中,像centerCrop()这样的东西对我来说没有意义,因为目前ImageView的大小还不清楚.对于resizeDimen(),这可能会有所不同,但我仍然怀疑Picasso会应用这些维度,因为JakeWharton曾在帖子中说Picasso依赖okhttp进行图像缓存.

请有人点光.

android caching picasso

6
推荐指数
0
解决办法
309
查看次数