小编pro*_*m85的帖子

SQL:值的总和,但仅限于不同的ID - 条件求和?

我有以下结构:

具有typ1和typ2的多个事件的日,其中typ1和typ2具有各自日期的外键.Typ2也有持续时间.

现在我想计算所有typ1事件,所有typ2事件和typ2持续时间的总和.

示例数据:

天:

ID = 1 | Date = yesterday | ...
Run Code Online (Sandbox Code Playgroud)

TYP1:

ID = 1 | FK_DAY = 1 | ...

ID = 2 | FK_DAY = 1 | ...
Run Code Online (Sandbox Code Playgroud)

TYP2:

ID = 1 | FK_DAY = 1 | duration = 10

ID = 2 | FK_DAY = 1 | duration = 20
Run Code Online (Sandbox Code Playgroud)

我现在想要结果:

Day.ID = 1 | countTyp1 = 2 | countTyp2 = 2 | sumDurationTyp2 = 30
Run Code Online (Sandbox Code Playgroud)

我的问题是总和,我需要像"sum for distinct typ2.ID"这样的东西......有谁知道解决这个问题的方法?

我正在使用类似下面的东西,但那当然不能按我想要的方式工作:

SELECT day.id,
   count( …
Run Code Online (Sandbox Code Playgroud)

sql conditional sum

5
推荐指数
1
解决办法
8115
查看次数

ACTION_IMAGE_CAPTURE - 在默认位置拍照后获取 URI

我正在拍摄如下照片:

activity.startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE), BaseDef.REQUEST_CODE_CAMERA);
Run Code Online (Sandbox Code Playgroud)

之后,我只想获取新的图像路径、uri 或类似的(不是位图或图像数据),以便我知道新图像的位置。因此,我尝试检索 uri,如下所示:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if (requestCode == BaseDef.REQUEST_CODE_CAMERA)
    {
        if (resultCode == RESULT_OK)
        {
            Uri uri = data.getData();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但 uri 有时是null. 如何在此类设备上获取图像路径/uri?

编辑

我真的想保留使用任何相机应用程序创建的默认文件名!

当前的解决方法(我不知道这是否总是有效):

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if (requestCode == BaseDef.REQUEST_CODE_CAMERA)
    {
        if (resultCode == RESULT_OK)
        {
            String path = null;
            Uri uri = data.getData();
            if (uri != null)
                path = MediaUtil.getRealPathFromURI(uri);
            else
            { …
Run Code Online (Sandbox Code Playgroud)

camera android uri image

5
推荐指数
1
解决办法
5634
查看次数

MediaStore - 修改日期无法正常工作

我从媒体商店中检索以下值

MediaStore.Images.Media.DATE_TAKEN
MediaStore.Images.Media.DATE_MODIFIED
Run Code Online (Sandbox Code Playgroud)

并从结果中读取日期,如下所示:

int dateTakenColumn = cursor.getColumnIndex(MediaStore.Images.Media.DATE_TAKEN);
int dateModifiedColumn = cursor.getColumnIndex(MediaStore.Images.Media.DATE_MODIFIED);
String dateToken  = cursor.getString(dateTakenColumn);
String dateModified = cursor.getString(dateModifiedColumn);
long lDateToken = dateToken != null ? Long.parseLong(dateToken) : 0;
long lDateModified = dateModified != null ? Long.parseLong(dateModified) : 0;
Run Code Online (Sandbox Code Playgroud)

并且可以看到以下行为(示例值):

  • lDateToken 如下所示:1450696995000 <= 正确
  • lDateModified 如下所示:1450696995 <= 错误

好像修改日期都被截断了。我用文件浏览器检查了真实文件的最后修改日期,这些值应该没问题,但我总是从我的媒体文件中得到这么短的数字。

关于为什么会发生这种情况的任何想法?

PS:检查了这个http://developer.android.com/reference/android/provider/MediaStore.Images.ImageColumns.html,但修改后的字段没有在那里列出......

android mediastore

5
推荐指数
1
解决办法
2384
查看次数

在RecycleView中有效地加载数据

我正在填充一个数据列表,这个数据分3步加载,所以在第一步finsihed之后我已经向用户显示了数据.然后,每当数据加载状态发生变化时,我都会逐步更新UI ...

我用a RecyclerView来显示我的数据.我可以观察到,当单个步骤的加载非常快时,UI就会阻塞(特别是当用户当前滚动非常快时)...所以我需要对事件进行分组,并且每隔x ms只更新一次UI. ..

通过测试我看到,每150毫秒更新一次UI似乎看起来很好而且快速,并且不会导致任何明显的口吃.

但我不确定旧设备或其他设备的反应.

有没有人有这方面的经验,可以告诉我哪个价值会好?

一般问题

可能会更普遍地提出这个问题:在非常频繁地更新UI时,为避免阻止UI,最好的频率是什么?或者在再次更新UI之前等待的最短时间是多少

performance android android-asynctask android-recyclerview

5
推荐指数
1
解决办法
1052
查看次数

如何在USB OTG设备上列出文件

我知道如何做以下事项:

  • 听取附加和分离usb设备的事件
  • 获得所有连接的设备
  • 获取设备的权限

所以最后我有一个UsbDevice,我有权读/写它.怎么从这里继续?

我可以打开设备并获得FileDescriptor如下内容:

 UsbManager manager = (UsbManager) activity.getSystemService(Context.USB_SERVICE);
 UsbInterface intf = device.getInterface(0);
 UsbEndpoint endpoint = intf.getEndpoint(0);
 UsbDeviceConnection connection = manager.openDevice(device);
 boolean interfaceClaimed = connection.claimInterface(intf, true);
 int fileDescriptor = connection.getFileDescriptor();
Run Code Online (Sandbox Code Playgroud)

FileDescriptor现在该如何使用它?或者我怎样才能访问USB设备上的文件?

编辑

  • android <6的解决方案:不要打开一个UsbDeviceConnection只是尝试找到USB设备路径.然而,你有问题要区分多个USB设备,不知道哪个路径属于哪个设备......

  • android> = 6的解决方案:使用存储访问框架,实际上我不知道它是如何工作的......

usb android usb-otg

5
推荐指数
1
解决办法
4276
查看次数

从单个构造函数参数中推断泛型类类型参数

我想要的是:

大多数情况下,泛型类就像TestBuilder<X, X>,意味着T和O属于同一类型.因此我创建了两个不同的构造函数.我想做一些非常新的电话new TestBuilder<>(...)(我在<>这里称之为无关紧要).

以下4个构造函数示例存在:

1)工作构造函数调用

// Anonoumous, working
new TestBuilder<>(String.class, Integer.class)
    .withOnNext(new Action1<Integer>()
    {
        @Override
        public void call(Integer integer)
        {   
        }
});

// not anonoumous, classified, working
new TestBuilder<String, String>(String.class)
    .withOnNext(new Action1<String>()
    {
        @Override
        public void call(String string)
        {
        }
});
Run Code Online (Sandbox Code Playgroud)

2)构造函数调用有问题或无法工作

// Anonoumous and working
// PROBLEM: withOnNext is called with Object instead of String
new TestBuilder<>(String.class)
    .withOnNext(new Action1<Object>()
    {
        @Override
        public void call(Object o)
        {
        }
});

// Anonoumous and NOT …
Run Code Online (Sandbox Code Playgroud)

java generics constructor

5
推荐指数
1
解决办法
366
查看次数

Android Studio gradle - 避免重建模块

我可以以某种方式告诉 android studio 永远不要构建我的子模块吗?我将我的应用程序拆分为许多模块并在我的应用程序之间重用模块。我有一个应用程序的 10 多个模块...

所以为了速度,我想告诉 android studio,只检查我的主项目的依赖项,只构建我的主项目,如果我不通过干净的构建强制它,永远不要检查我的模块或对它们做任何事情。

那可能吗?如果我通过编译的 jar 包含所有模块,android studio 会像这样。即使我不包含 jars 但将模块添加到我的项目中,我也想要相同的行为。

如果我自己编译我的模块并将 jars 添加到我的项目中,我是否只能获得所需的行为,或者我是否可以以某种方式与模块具有相同的行为以及可以从我的主项目更改我的模块并强制重新编译通过干净的构建或类似的模块?

android android-studio

5
推荐指数
0
解决办法
286
查看次数

通知/服务 - 无法将位图复制到包裹 blob

在我的应用程序中,我启动了一个前台服务并为其创建了一个通知:

NotificationCompat.Builder builder = new NotificationCompat.Builder(this, channelId);
...
builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.icon));
...
Run Code Online (Sandbox Code Playgroud)

这会在我的用户设备之一上引发异常,如下所示(java.lang.RuntimeException: Could not copy bitmap to parcel blob.异常)。

我的图标确实有默认尺寸和小尺寸,不知道为什么它们会在一台设备上出现问题。

有谁知道真正的问题可能是什么?我如何避免这个问题或优雅地处理这种情况?好像是内存问题。

Mipmap 图标

我包含了以下图标:

  • mdpi (48x48, 3,51kB)
  • hdpi (72x72, 6,65kB)
  • xhdpi (96x96, 9,08kB)
  • xxhdpi (144x144, 17,2kB)
  • xxxhdpi (192x192, 22,0kB)

例外

java.lang.RuntimeException: Unable to start service com.my.app.services.OverlayService@ea0edcc with Intent { act=RESUME cmp=com.my.app/.services.OverlayService }: java.lang.RuntimeException: Could not copy bitmap to parcel blob.
    at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3079)
    at android.app.ActivityThread.access$2200(ActivityThread.java:163)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5585)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
    at …
Run Code Online (Sandbox Code Playgroud)

service android android-notifications

5
推荐指数
0
解决办法
1221
查看次数

构建 - 使模块/项目使用错误的构建类型

只要我使用android studio 3.1一切都运行正常.但在最近更新到3.2之后,我看到以下行为:

  • 调用"build"/"make module"会导致执行 Executing tasks: [assemble]
  • 调用"build"/"make project"导致相同的,也执行汇编任务

在更新之前,我能够执行正确的汇编任务(例如assembleDebug<...>).

有谁知道我可以纠正这个问题?我可以以某种方式检查哪些任务绑定到那些菜单并编辑它们?我只有一个项目有这个问题......

目前我必须手动执行gradle任务以获得我想要的东西,菜单条目似乎被打破了......

建立

  • 我正在使用口味
  • 我选择了调试类型的构建变体,我的所有模块都设置为调试:
    • 应用构建变体: devWithoutTestWithAccessibilityDebug
    • 所有其他模块构建变体: debug

当前解决方案

我将自己的gradle任务用于我最常见的开发构建,如下所示:

task runDev (type: Exec, dependsOn: 'installDevWithoutTestWithAccessibilityDebug') {
    commandLine android.getAdbExe().toString(), "shell",
        "monkey",
        "-p", "com.my.app.debug",
        "-c", "android.intent.category.LAUNCHER", "1"
}
Run Code Online (Sandbox Code Playgroud)

我尝试了什么

清洁项目如下:

  • 删除所有*.iml文件
  • 删除.gradle.idea文件夹
  • 删除所有临时文件
  • 再次导入项目
  • 使用gradle文件同步项目
  • 再次创建应用程序运行配置并启动它

我仍然以相同的结果结束......

android-studio android-studio-3.2

5
推荐指数
0
解决办法
94
查看次数

PackageManager 死了 - DeadObjectException - 小包裹上的交易失败

我有一个非常简单的功能,如下所示:

public static boolean isAppInstalled(String packageName) {
    PackageManager pm = MainApp.get().getPackageManager();
    try {
        pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
        return true;
    } catch (PackageManager.NameNotFoundException e) {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

有时这会在getPackageInfo具有以下堆栈跟踪的行上崩溃:

java.lang.RuntimeException: Package manager has died
    at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:151)
    ... code in my app => getPackageInfo line above ...
Caused by: android.os.DeadObjectException: Transaction failed on small parcel; remote process probably died
    at android.os.BinderProxy.transactNative(Native Method)
    at android.os.BinderProxy.transact(Binder.java:505)
    at android.content.pm.IPackageManager$Stub$Proxy.getPackageInfo(IPackageManager.java:2151)
    at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:145)
    ...
Run Code Online (Sandbox Code Playgroud)

任何想法为什么会发生这种情况?我认为这样的事情只有在同时安装/卸载应用程序时才会发生,但我有一个用户可以重复这个并且总是得到这个例外。

android android-package-managers

5
推荐指数
1
解决办法
1195
查看次数