我正在学习KMM.我现在正在设计iosmain和Android Main 的共同位置提取 我的问题是,我不知道在iOSMAIN中将Swift映射到Kotlin 例如, 快速代码,获得位置是 var locationManager = CLLocationManager() locationManager.requestWhenInUseAuthorization() var currentLoc: CLLocation! if(CLLocationManager.authorizationStatus() == .authorizedWhenInUse || CLLocationManager.authorizationStatus() == .authorizedAlways) { currentLoc = locationManager.location print(currentLoc.coordinate.latitude) print(c
以下是关于 kotlin 的编程技术问答
我在KMM中创建了新的项目(Hello World),然后是他们的官方网站.在Android中,它的工作顺利,但是当我尝试在Xcode中运行时,它会出现错误,因为I am unable to build / run the xcode project>.我已经为错误附加了屏幕截图和日志. XCode方案某种程度上没有在我猜测的KMM平台中生成. 有人可以帮我了解我想念什么吗? 任何帮助都将被应用. Following is my dev env: Xcode 11.4.1 Android 4.1.2 Kotling Plugin version 1.4.30 (stable) KMM 0.2.0``` XCode Logs: > Task :shared:compileKotlinIosX64 Downloading native dependencies (LLVM, sysroot etc). This is a one-time action performed on
现在,这是我从智能手机拍照的代码,问题是图像很大,我想压缩它,一些帮助或想法? 感谢您的信息 执行方法abrircamara() private fun abrirCamara() { val values = ContentValues() values.put(MediaStore.Images.Media.TITLE, "Nueva foto") values.put(MediaStore.Images.Media.DESCRIPTION, "Desde la camara") image_uri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values) //intención de la cámara val cameraIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
我正在尝试使用Kotlin在房间数据库中插入用户记录,并且它正常工作. 现在,我想返回新插入的记录ID,以检查记录是否成功插入在房间数据库中. 但是,当我在插入方法中应用长返回类型并运行代码,我会收到以下错误. 错误:方法返回很长,但应返回以下一个: void, long[], java.lang.Long[], java.util.List.如果 您想返回查询中的行ID列表,您的插入 方法只能接收1个参数. public abstract long insertUser(@org.jetbrains.annotations.NotNull() 我正在使用此lib. 实现" android.ark.persistence.Room:runtime:1.0.0" kapt "android.arch.persistence.room:compiler:1.0.0" 这是我的插入查询. @Insert fun
是否有一种简单的(甚至是Kotlin的方式)来生成给定列表的所有排列(包含重复元素),其中: 保留元素的顺序 删除所有重复元素 包括所有元素 例如: 给定列表:[A, B, C, A, B, D, A],我希望以下结果: [A, B, C, D],[A, C, B, D],[B, C, A, D],[C, A, B, D],[C, B, A, A],[B, C, D, A], ...(如果还有更多组合) 以下结果无效: [A, B, C, A, D](重复A) [A, B, C, A](重复A和缺少D) [A, C, D, B](错误的顺序) 感谢您的帮助. 解决方案 Code on play.kotlinlang.org fun main() { val list = listOf('A', 'B', 'C', 'A', 'B', 'D', 'A') generatePermutations(lis
首先,我已经阅读了这样的帖子: intent in Intent in Intent 在与fileprovider共享文件时,请许可拒绝 和许多其他人无济于事. 在我的drawermenu中,我可以选择共享我的应用程序,该应用程序通过选定的意图发送9个屏幕截图,甚至该过程都可以使用(我已经通过gmail对其进行了测试),并且发送了带有图像的电子邮件,以下例外是始终显示在logcat中(在我的情况下重复6次): Writing exception to parcel java.lang.SecurityException: Permission Denial: reading com.xxxx.xxx.helpers.file.GenericFileProvider uri content://com.xxx.xxx.provider/cache/testme2.jpg from pid=5417, uid=1000 requires the provider b
我正在尝试将一些企业应用程序视为避免自动运行时许可的自动收集,因为它们是背景应用程序,用户与它们不经常交互. 但似乎(那是一个新的清单属性 " autoRevokePermissions" 不起作用(现在或现在,我不知道,因为它在API LVL 30上的新功能,但它也无法正常工作,也无法通过系统绕开...). 因此,我正在尝试向用户允许进行此操作,如这里所述: https://developer.android.com/guide/topics/topics/permissions/overview#auto-reset-reset-permissions-unused-apps 我的问题是,在某些应用程序上,这一部分设置已经完全消失了. 当我潜入权限设置时,没有切换或信息. 我从Android Studio安装它们 我已经更新了targetsdkversion,配置似乎相似... 有人知道为什么我会遇到这个问题吗? 是否有第三种方法可以推迟这种新设置? 我
我正在使用Kotlin为Android 10编写应用程序. 该应用必须从内部存储中读取名为number.txt的文件. 但总是没有这样做: java.io.FileNotFoundException: /storage/emulated/0/number.txt: open failed: EACCES (Permission denied) 我在清单中拥有的东西: ... ... 我只需要读取文件,因此清单中没有写入权限. 这是我的代码,您可以看到我使用运行时权限: 这是请求权限的功能,如果授予许可,请读取文件: private fun setupPermissions() { val permission = ContextCompat.checkSelfPermi
我有一个通用的抽象方法,该方法获取输入流(可以来自网络插座或本地存储上的文件),并将数据保存在磁盘上. 在该功能的小片段下方: fun saveToFile(data: InputStream, fileDestination: File) { val bytesWritten = Files.copy(data, fileDestination.toPath(), StandardCopyOption.REPLACE_EXISTING) println("$bytesWritten bytes were saved at ${fileDestination.absolutePath}") } 是否可以在过程/方法正在进行时测量数据保存在磁盘上的速度/速率?例如,是否有可能调用返回速率/速度或更新具有该数据的对象的函数? 如果我亲自使用InputStream/outputStream进行实现,则可以有以下内容:
我正在研究一个采用语音输入的应用程序,并将其匹配到清单中的已知项目. 清单中的每个项目都有一个别名列表,因此具有长标题的项目可以匹配较短的名称. 例如: class Product { itemname: "Old Stinky's Western Kentucky Big Rig Polish", aliases: ["old stinky", "other alias"] } ,然后加载到存储器中: public List Collection; Collection.Add(alltheproducts); 然后匹配: public String isProductOrAlias(String lowertext) for (Product p: products.Collection) { if(lowertext.equals(p.name.toLowerCase())) return p
我有10,000个具有两个属性的对象的集合:a string和a string[] class Product { String name; String[] aliases; } 每个对象大约为64个字节,因此我们在内存中查看整个集合的内存中,这对于Android可以在内存中进行搜索. 我想要与单个字符串或数组中的任何字符串完全匹配,然后返回对象的name属性. 但是,Android对Lambdas和.stream()有一些限制,这些限制不包括许多流行的搜索解决方案,而不会强迫用户拥有OS 7.0或更高,这将排除大约三分之一的用户.我想避免. 当前,以下代码正在工作,但是考虑到我在那里看到的一些选项,它似乎很糟糕. . public String isProductOrAlias(String lowertext) { //products is instantiated in the parent class //as a
每个构建需要额外的3-4秒,在日志输出打印以下后立即停止. [生命周期] [org.jetbrains.kotlin.gradle.plugin.kotlingradlebuildservices]强迫 system.gc() 为什么要"强迫"这个?我如何避免这种情况并加快我的构建? 解决方案 我已经研究了这一点,这是由于启用了Gradle的调试级记录(例如gradle --debug assemble)的结果. 运行gradle而无需调试记录启用(例如gradle --info assemble),这不应再发生. References: libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleBuildServices.kt 其他解决方案 kotlin gradle插件调用System.gc仅在启用调试日
我有要在列表中显示的产品单元,我使用了LazyColumn,但是性能很糟糕,我找不到为什么它如此慢.然后,我将Lazycolumn切换到列,突然的滚动非常平滑 Lazycolumn版本: LazyColumn() { items(cartItems, key = {it.cartItem.id}) { cartItemData -> CartItemWithActions(data = cartItemData) Divider(color = colorResource(id = R.color.separator_line)) } } 列版本 val state = rememberScrollState() Column(modifier = Modifier.verticalScroll(state)) { cartItems.forEach { cartItemData -> Ca
我正在学习Coroutines,我遇到了以下令人惊讶的行为.我想拥有一个并行地图.我考虑4种解决方案: 只是map,没有平行性 pmap来自在这里/li> 项目2的修改:我删除了coroutineScope并使用GlobalScope. Java的parallelStream. 代码: import kotlinx.coroutines.* import kotlin.streams.toList import kotlin.system.measureNanoTime inline fun printTime(msg: String, f: () -> Unit) = println("${msg.padEnd(15)} time: ${measureNanoTime(f) / 1e9}") suspend fun List.pmap(f: (T) -> U) = coroutineScope { map { async
我使用以下代码来衡量Kotlin中不同语法构造的性能 fun time(what: String, body: () -> Int) { val start = System.currentTimeMillis() var sum = 0 repeat(10) { sum += body() } val end = System.currentTimeMillis() println("$what: ${(end - start) / 10}") } val n = 200000000 val rand = Random() val arr = IntArray(n) { rand.nextInt() } time("for in range") { var sum = 0 for (i in (0 until n)) sum += arr[i] sum } time
我绝对是Kotlin的新手,看来我只是无法获得附加过程. 我的文件名是由val路径给出的:字符串=" ..... txt" 我想要一类使用行的方法:字符串并在文件末尾(在新行)的末尾附加. 我的测试案例是:两个不同行的conseq连接到方法,例如" foo"和" bar",我希望文件如下: foo bar 如果我的方法看起来像这样,则有效: fun writeLine(line: String) { val f = File(path!!) f.appendText(line + System.getProperty("line.separator")) } ,它绝对不会以任何方式工作: fun writeLine(line: String) { val f = File(path!!) f.bufferedWriter().use { out-> out.append(line)
对于为Spring/Kotlin注入豆子,我知道两种方法: 将其传递到构造函数: @Service open class MyService @Autowired constructor( @Autowired val myRepository: MyRepository ) 使用" LateInit"关键字: @Service open class MyService { @Autowired lateinit var myRepository: MyRepository } 我知道这两个作品,但我想知道哪一个是最好的?我可以使用一种解决方案而不是另一种解决方案遇到一些问题? 谢谢! 解决方案 我更喜欢构造函数.如果只有一个构造函数,则弹簧不再需要@Autow的注释.这样,您就不必让课堂打开(您为某些春季的事情做,例如@scheduled,但这是另一个问题)或使用var.它也很容易阅读. 这
假设我们有一个Java静态方法: //Java code public static void printFoo() { System.out.println("foo"); } 可以在Kotlin中调用该方法? 解决方案 是的,您可以. Java代码: public class MyJavaClass { public static void printFoo() { System.out.println("foo"); } } kotlin代码: fun main(args: Array) { MyJavaClass.printFoo() } 如此简单=) 其他解决方案 0wl的答案通常是正确的. 我只是想补充一点,一些Java课程映射到特殊的Kotlin课程.在这种情况下,您必须充分限定Java类才能工作. 示例: fun main(args: Array
我想在时间戳中将期限与AM/PM不同的符号使用.可以完成此翻译吗? 当前格式:dd/mm/yyyy hh:mm aa 例如. 01/02/2019 05:37 PM 必需: 01/02/2019 05:37chiều 注意"chiều"而不是PM.这是必需的. 解决方案 tl; dr 指定Locale. DateTimeFormatter.ofPattern( "hh:mm a" , locale ) // Pass a `Locale` to specify human language and cultural norms for localization. 是的,您可以本地化AM/PM 现代方法使用 java.Time 类,几年前取代了可怕的遗产课(Date,Calendar,SimpleDateFormat). 在DateTimeFormatter上指定的Locale确定本地化中使用的人类语言和文化规范. LocalT