小编Tim*_*Tim的帖子

如何从 Jetpack compose 中的 drawable 加载图像?

我试过下面的代码,但它在 UI 中没有反映任何东西,我在这里遗漏了什么?

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            loadUi()
        }
    }

    @Composable
    fun loadUi() {
        CraneWrapper {
            MaterialTheme {
                Image(
                    (ResourcesCompat.getDrawable(
                        resources,
                        R.mipmap.ic_launcher,
                        null
                    ) as BitmapDrawable).bitmap
                )
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

android image androidx android-jetpack-compose

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

如何禁用引号的自动配对

我的Windows 7安装会自动尝试配对报价并且工作非常糟糕.例如,当我在单词没有任何反应之前按下引号键时,但是当我将光标移动到单词的结尾并再次按下引号键时,两个引号都会在单词后面插入.基本上我无法插入一个引用,这是非常烦人的.

它是一个Windows功能,因为它发生在所有程序中.

我该如何禁用它?

windows keyboard

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

如何检测BLE设备何时不在范围内?

我使用LeScanCallback(不能使用更新的扫描方法,因为我正在为api 18开发.不重要,因为android 5.0+ apis不提供此功能)以检测何时检测到附近的BLE设备:

private BluetoothAdapter.LeScanCallback bleCallback = new BluetoothAdapter.LeScanCallback() {

    @Override
    public void onLeScan(BluetoothDevice bluetoothDevice, int i, byte[] bytes) {
        discoveredDevices.add(bluetoothDevice);
    }
};
Run Code Online (Sandbox Code Playgroud)

我没有与设备配对或连接,因为这不是必需的,我只是想看看附近有哪些设备.

我正在尝试提供一项服务,每隔5分钟左右,就会调用一个网络服务器来更新当时附近的设备.

棘手的部分是Android设备将移动,所以现在附近的蓝牙设备可能不会在5分钟内.在那种情况下,我需要将其删除discoveredDevices.

理想情况下,我希望在蓝牙设备处于范围之前接收回叫,但现在不再.但是这个回调不存在.

(我知道android.bluetooth.device.action.ACL_CONNECTEDandroid.bluetooth.device.action.ACL_DISCONNECTED广播,但这些是你连接到蓝牙设备,我不想要.)

一个选项是每隔5分钟进行一次新的扫描,但是你无法判断所有附近的设备何时被发现,所以你必须进行定时扫描,例如扫描5秒然后将收集的数据发送到网络服务.
这听起来很脏并且有风险,因为您无法确定所有附近的设备是否在规定的时间内被发现,因此我非常希望避免这样做.

还有另一种方法吗?


编辑
某些设备会持续报告附近蓝牙设备的发现,即使它们之前已经被发现过.如果该功能是通用的,我可以解决我的问题,但这是特定于设备的.

例如,我的手机的蓝牙适配器只能发现附近的设备一次.我测试过的其他一些设备不断报告相同的附近设备,但不是所有设备都这样,所以我不能不依赖它.

android bluetooth-lowenergy android-bluetooth

22
推荐指数
1
解决办法
6659
查看次数

JVM什么时候决定重用旧的lambda?

请考虑以下代码片段:

public static Object o = new Object();

public static Callable x1() {
    Object x = o;
    return () -> x;
}

public static Callable x2() {
    return () -> o;
}
Run Code Online (Sandbox Code Playgroud)

方法x2()将始终返回相同的lamba对象,而x1()始终会创建新的对象:

    System.out.println(x1());
    System.out.println(x1());
    System.out.println(x2());
    System.out.println(x2());
Run Code Online (Sandbox Code Playgroud)

会打印出这样的东西:

TestLambda$$Lambda$1/821270929@4a574795
TestLambda$$Lambda$1/821270929@f6f4d33
TestLambda$$Lambda$2/603742814@7adf9f5f
TestLambda$$Lambda$2/603742814@7adf9f5f
Run Code Online (Sandbox Code Playgroud)

哪里(在JVM规范中我猜?)是描述了这种lambda重用规则?JVM如何确定重用与否?

java lambda jvm java-8

21
推荐指数
3
解决办法
923
查看次数

在Android 8.1.0上关闭屏幕时,BLE扫描无效

我使用像素与最新的Android 8.1.0更新.

我正面临与BLE广告扫描有关的问题.每当我关闭屏幕(即按下电源按钮)时,我的扫描将停止.它会在打开屏幕后立即重启.

我查看了BLE的最新代码.谷歌新推出此功能(参考链接).

有没有办法跳过这部分,我的意思是扫描不应该停止,无论屏幕打开或关闭.

android bluetooth-lowenergy android-8.1-oreo

20
推荐指数
1
解决办法
4680
查看次数

为什么这会导致长整数溢出

我检查了文件long= int64已范围超过900,000,000,000,000

这是我的代码:

int r = 99;
long test1 = r*r*r*r*r;
Run Code Online (Sandbox Code Playgroud)

在运行时它给了我919,965,907而不是正确的9,509,900,499.

另一个考验

long test2 = 99*99*99*99*99;
Run Code Online (Sandbox Code Playgroud)

它拒绝编译,说整数溢出.

但如果我这样做

long test3 = 10100200300;
Run Code Online (Sandbox Code Playgroud)

这很好用.

c# integer

19
推荐指数
2
解决办法
862
查看次数

18
推荐指数
2
解决办法
896
查看次数

添加"记住我"复选框

我想有一个复选框按钮来记住用户ID和密码.任何人都可以指导我正确的方向如何开始?

android

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

angularjs controllerAs注册$ destroy

angular的文档说,为了在控制器被销毁时执行清理代码,应该在范围内注册$ destroy事件.

$scope.$on("$destroy", function() { ... } );
Run Code Online (Sandbox Code Playgroud)

但是,当您使用controllerAs语法时,您无权访问$ scope.你如何注册$ destroy事件?

angularjs

18
推荐指数
1
解决办法
3514
查看次数

MySQL - TIMESTAMP的默认值(3)

我的数据库是MySql 5.6.

我想使用CURRENT_TIMESTAMP作为默认值,属性类型为TIMESTAMP(3).

但我得到错误:

错误1067(42000):"已更新"的默认值无效

我认为这是因为CURRENT_TIMESTAMP只有第二精度.

如何将当前时间设置为timestamp带小数部分的默认值?

mysql

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