小编pcj*_*pcj的帖子

为什么Firebase分析的自定义事件未显示在仪表板上?

我已将firebase集成到我的Android应用程序中.我发送自定义事件如下:

 Bundle bundle = new Bundle();
        bundle.putString("First Category", "First catValue");
        bundle.putString("sub Cat", "sub CatValue");
        bundle.putLong(FirebaseAnalytics.Param.VALUE, "value");
        firebaseAnalytics.logEvent("My Custom Event", bundle);
Run Code Online (Sandbox Code Playgroud)

我的自定义事件均未显示在firebase分析仪表板上的"事件"选项卡上.

我已经看过一些已经问过这样的问题:Android中的Android Firebase Analytics自定义事件报告

但无法解决我的问题,因为我在那里尝试了一些建议,就像建议测试超过10个用户能够获得我做的自定义事件但事件选项卡中没有显示任何内容.

我使用以下命令调试:

adb shell setprop log.tag.FA VERBOSE
adb shell setprop log.tag.FA-SVC VERBOSE
adb logcat -v time -s FA FA-SVC
Run Code Online (Sandbox Code Playgroud)

我的事件正在登录命令提示符,但没有反映在firebase仪表板上.

我错误地发送自定义事件了吗?我是否需要在firebase仪表板上配置任何内容才能获取自定义事件?

更新:

当我使用命令调试时:

 adb shell setprop log.tag.FA VERBOSE
    adb shell setprop log.tag.FA-SVC VERBOSE
    adb logcat -v time -s FA FA-SVC
Run Code Online (Sandbox Code Playgroud)

我发现这个重要的日志说明了 Name must consist of letters, digits or _ (underscores).

然后我改变了我的活动如下:

 Bundle bundle = new …
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-analytics firebase-console

17
推荐指数
2
解决办法
9854
查看次数

添加新库后,Android studio构建速度变慢了吗?

我的应用程序使用旧架构组件.我想转向新的Android架构组件.

为此,我在开始时添加了与房间相关的依赖项,之后构建正常.

但是,当我尝试添加了Lyfecycles,LiveData和视图模型的依赖,提到这里.

应用程序构建过程大大减慢,构建apk需要5分钟和更长的时间.

在app的build.gradle中添加了以下dependecies:

    compile "android.arch.lifecycle:runtime:1.0.0-alpha5"
    compile "android.arch.lifecycle:extensions:1.0.0-alpha5"
    annotationProcessor "android.arch.lifecycle:compiler:1.0.0-alpha5"
Run Code Online (Sandbox Code Playgroud)

此外,我必须启用插孔以实现Java 8兼容性,如下所示:

defaultConfig {
........
        jackOptions {
            enabled true
        }
    }
Run Code Online (Sandbox Code Playgroud)

添加所有这些组件后,构建过程已大大减慢.我尝试通过转到某些参数来进行一些自定义VM选项更改Help -> Edit custom VM options

-Xmx5120m
Run Code Online (Sandbox Code Playgroud)

我把它设置为几乎5 GB,但对我来说没有任何作用.我相信我的机器有足够的硬件.(8 GB RAM,Windows 10,1TB HDD,AMD A8)

我的应用程序使用了许多谷歌服务,如Gmail API,Firebase API,其他一些库我用尽了64K参考限制?但是我已经启用了这里提到的多索引.

这是因为新的架构组件还是其他原因而发生的?如何使构建过程更快?

更新:

下面的答案之一Budius提出了一个脚本,它将显示每个构建过程所采用的时间,我在我的应用程序中执行它的结果是:

BUILD SUCCESSFUL

Total time: 18 mins 28.44 secs
Task timings:
    480ms  :app:mergeDebugResources
   2516ms  :app:processDebugResources
 487725ms  :app:transformClassesWithPreJackPackagedLibrariesForDebug
  29213ms  :app:transformClassesWithPreJackRuntimeLibrariesForDebug
    752ms  :app:transformResourcesWithMergeJavaResForDebug
 556894ms  :app:transformJackWithJackForDebug
   5184ms  :app:transformNativeLibsWithMergeJniLibsForDebug
  17524ms  :app:packageDebug
Run Code Online (Sandbox Code Playgroud)

大多数时间都是杰克.

我尝试了下面的答案由Bryan …

android gradle android-build android-gradle-plugin

16
推荐指数
2
解决办法
2240
查看次数

在列表视图中滚动时Android Media Controller卡在某个位置?

我有一个使用Recycler View of android的卡片列表.我正在显示一些文字及其下方的视频视图.

该列表滚动顺利,播放视频流畅,直到我使用setMediaControll()启用控件.

当我向上/向下滚动列表时启用此视频媒体控件后,即使视频视图随列表视图滚动移动一起自由移动,控件也会保持在相同位置.

这些控件应与列表视图一起移动,并保持静止.可能是什么导致了这个?这是预期的平台行为吗?

更新代码:

布局:

<FrameLayout
                    android:layout_centerHorizontal="true"
                    android:layout_centerInParent="true"
                    android:layout_gravity="center_horizontal"
                    android:id="@+id/frame_layout_video_view"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">

                    <VideoView
                        android:id="@+id/video_view"
                        android:layout_width="360sp"
                        android:layout_height="225sp"
                        android:layout_gravity="center" />

                    <ImageView
                        android:id="@+id/image_button_play"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical|center_horizontal"
                        android:contentDescription="play_pause_button"
                        app:srcCompat="@drawable/ic_play_circle_filled_white_24px" />

                    <ProgressBar
                        android:id="@+id/progressbar_video"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical|center_horizontal"
                        android:visibility="gone" />

                </FrameLayout>
Run Code Online (Sandbox Code Playgroud)

在视图持有人:

MyViewHolder(View itemLayoutView) {
            super(itemLayoutView);
..........
myVideoView = itemLayoutView.findViewById(R.id.video_view);
..........
}
Run Code Online (Sandbox Code Playgroud)

开始视频播放的代码:

    ..........
    Uri uri = Uri.parse(url);
            holder.myVideoView.setVideoURI(uri);
            MediaController fsm = new MediaController(mContext,finalistFragment , url, holder.myVideoView);
            fsm.setAnchorView(holder.myVideoView);
            holder.myVideoView.setMediaController(fsm);
..........
Run Code Online (Sandbox Code Playgroud)

对于列表,我正在使用RecyclerView.

android android-videoview android-recyclerview

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

MediaRecorder替代Oreo之前的setNextOutputFile?

我在Oreo之前使用MediaRecorder API.我面临的问题是如果录制持续1或2小时,则录制发生在一个连续的大文件上.

由于Oreo(API级别26)MediaRecorder API引入了setNextOutputFile(),这对于记录多个文件而不会丢失数据非常有用.这些文件可以配置为小尺寸,这样在处理时它们不会占用大量的应用程序内存.

我的计划是以下列方式使用它们:

File current;
File nextFile;
// Code to initialize/create these file instances
.
.
.
// Code to initialize/create MediaRecorder insatance which will be in try catch
mRecorder.setOutputFile(currentFileName);
mRecorder.prepare();
mRecorder.setNextOutputFile(nextFile);
.
.
mRecorder.start();
.
.
mRecorder.setOnInfoListener(new MediaRecorder.OnInfoListener() {
      @Override
      public void onInfo(MediaRecorder mr, int infoCode, int extra) {
         Log.e(TAG, "Media recorder info : " + infoCode);
         if (infoCode == MediaRecorder.MEDIA_RECORDER_INFO_NEXT_OUTPUT_FILE_STARTED) {
         String path = getNewUniquePath();
         File nextFile = new File(path); 
         mRecorder.setNextOutputFile(nextFile);
      }
   } …
Run Code Online (Sandbox Code Playgroud)

android mediarecorder android-mediarecorder android-support-library

11
推荐指数
0
解决办法
689
查看次数

使用密码保护读取/写入NFC标签

我需要将文本数据写入/读取到NFC标签.我希望读/写的方式应该如下:

  1. 第一次写我应该能够设置密码.
  2. 下次当有人试图读或写时,如果他有密码,那么他应该能够进行读/写操作.
  3. 没有我在步骤1设置的密码,任何其他应用程序都无法修改我的标签.

我还有另一种方法是将加密数据写入标签一次,写完就使标签只读.我能做到这一点.但现在我意识到使标签只读是不那么有效.

我在互联网上搜索了很多,但还没找到任何可靠的文章或指南.因此,如果有人对NFC标签进行了密码保护,请指导我.

security authentication android nfc mifare

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

Google登录错误状态{statusCode = DEVELOPER_ERROR,resolution = null}

我正在通过以下线程在我的android应用程序中集成gmail登录:

https://developers.google.com/identity/sign-in/android/sign-in?configured=true

但我得到的错误是:

状态{statusCode = DEVELOPER_ERROR,resolution = null}

我在这里查看了这个状态代码文档:

https://developers.google.com/android/reference/com/google/android/gms/common/ConnectionResult.html#DEVELOPER_ERROR

以上链接无助于诊断问题,

我已经创建了调试密钥库文件,并使用keytool生成了SHA-1,同样在Google开发人员控制台中,我添加了包名称,因为它位于清单文件或gradle文件中.

但是所有人似乎都失败了,任何人都可以告诉我这个错误代码表明什么可能出错?

android google-signin

9
推荐指数
5
解决办法
2万
查看次数

如何从房间访问中获取游标对象列表?

我正在尝试使用我的代码来使用房间数据库API.对于文档表我已经定义了Entity类Document,当我查询getAll()它时返回我的所有文档.

现在我有了适应器的旧实现,它使用户Cursor(它的a CursorAdapter).在我的DocumentDao类中,我定义了一个方法来获取光标对象列表.我的Dao课程如下:

@Dao
public interface DocumentDao {

    @Query("SELECT * FROM documents")
    List<com.myapp.room.entity.Document> getAll();

    @Query("SELECT * FROM documents")
    List<Cursor> getCursorAll();
}
Run Code Online (Sandbox Code Playgroud)

在编译期间,我收到以下错误:

Error:(20, 18) error: Not sure how to convert a Cursor to this method's return type
Run Code Online (Sandbox Code Playgroud)

Room的官方指南指出:

如果您的应用程序逻辑需要直接访问返回行,则可以从查询中返回Cursor对象,如以下代码段所示:

@Dao
public interface MyDao {
    @Query("SELECT * FROM user WHERE age > :minAge LIMIT 5")
    public Cursor loadRawUsersOlderThan(int minAge);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我是否需要为此目的编写转换器?

android android-sqlite android-room

9
推荐指数
1
解决办法
4832
查看次数

房间错误:输入时没有可行的选择?

我正在尝试使用@Query注释的房间库来更新表,下面是我的代码(在Dao界面中):

@Query("UPDATE table_name SET table_name.col1 = :val1 WHERE table_name.col2 = :val2")
void updateValue(long val1, long val2);
Run Code Online (Sandbox Code Playgroud)

完整的错误字符串如下:

Error:(11, 10) error: no viable alternative at input 'UPDATE table_name SET table_name.'
Run Code Online (Sandbox Code Playgroud)

这是实体类:

@Entity(tableName = "table_name")
public class SampleTable {

    @PrimaryKey
    @ColumnInfo(name = "_id")
    private Long Id;

    @ColumnInfo(name = "col1")
    private Long column1;

    @ColumnInfo(name = "col2")
    private Long column2;

    public Long getId() {
        return Id;
    }

    public void setId(Long id) {
        Id = id;
    }

    public Long getColumn1() {
        return column1;
    }

    public …
Run Code Online (Sandbox Code Playgroud)

android android-room

9
推荐指数
2
解决办法
4952
查看次数

如何在 swagger 属性中添加多个示例值?

我正在使用 Swagger OpenAPI 规范工具,我在以下定义之一中有一个字符串数组属性:

cities:
        type: array
        items:
          type: string
          example: "Pune"
Run Code Online (Sandbox Code Playgroud)

我的 API 生成 JSON 结果,因此对于上述对象,以下结果出现在响应中:

{
  "cities": [
    "Pune"
  ]
}
Run Code Online (Sandbox Code Playgroud)

试过逗号分隔的字符串,如下所示:

cities:
            type: array
            items:
              type: string
              example: "Pune", "Mumbai", "Bangaluru"
Run Code Online (Sandbox Code Playgroud)

预期结果为:

{
      "cities": [
        "Pune",
        "Mumbai",
        "Bangaluru"
      ]
    }
Run Code Online (Sandbox Code Playgroud)

但是编辑器显示错误。“错误的缩进”

我想为示例标签提供多个值有什么办法吗?

更新

下面的用户 Helen 给出了正确答案我有缩进问题,因此有嵌套数组(二维数组)

正确方法:

cities:
        type: array
        items:
          type: string
        example: 
        - Pune
        - Mumbai
Run Code Online (Sandbox Code Playgroud)

我的方式(这是错误的)

cities:
        type: array
        items:
          type: string
          example: 
          - Pune
          - Mumbai
Run Code Online (Sandbox Code Playgroud)

example在上述两种情况下寻找标记的缩进,这会有所不同,它的 YAML 缩进很重要。

yaml swagger openapi

9
推荐指数
1
解决办法
8813
查看次数

封闭式alpha测试跟踪如何区分两个测试轨道?

我们正在使用Google Play Alpah测试曲目,可以由不同的测试团队针对各自的模块进行测试.

但是这些轨道生成的链接与如何获得可以添加到多个封闭的alpha测试轨道的成员的应用程序相同.

例如,我们有两个轨道Alpha Track 1Alpha Track2个,我们在这两个轨道中有几个常见的测试人员电子邮件,但大多数都是从Alpha Track 1第一个创建的轨道获取apk .他们如何Alpha Track 2从他们的测试电子邮件帐户安装apk ?或者他们是否需要为每首曲目设置完全不同的电子邮件ID?

android

9
推荐指数
1
解决办法
424
查看次数