查找一个数值中最小的N个数

fun queryMinK(arrs: MutableList,k: Int) {
var min = 0;
var smallTemp = arrs[0]
for (i in 0..k-1) {
smallTemp = arrs[i]
var smallIndex = i
for (j in k..arrs.size-1) {
if (smallTemp>arrs[j]) {
smallIndex = j
smallTemp = arrs[j]
}
}
if (smallIndex!=i) {
var temp = arrs[i]
arrs[i] = arrs[smallIndex]
arrs[smallIndex] = temp
}
}
}

Kotlin与Java混编,ButterKnife编译异常

1、nullpoint
针对此问题,只需将annotationProcessor com.jakewharton:butterknife-compiler:x.x.x
改为apt com.jakewharton:butterknife-compiler:x.x.x即可

kotlin项目:

plugins {
id ‘com.android.application’
id ‘kotlin-android’
id ‘kotlin-kapt’
}

2、https://blog.csdn.net/lky199024/article/details/75309776

3、如果配置都正常有可能是转AndroidX之后,使用了AppcompatActivity,但是manifest文件的style不是Appcompat

Android UDP广播地址

1、如果手机开热点,广播地址“192.168.43.255”
或者通过连接热点设备的IP来判断广播地址。
2、如果连接Wi-Fi
@Throws(UnknownHostException::class)
fun getBroadcastAddress(context: Context): InetAddress? {
val wifi = context.getSystemService(Context.WIFI_SERVICE) as WifiManager
val dhcp = wifi.dhcpInfo ?: return InetAddress.getByName(“255.255.255.255”)
val broadcast = dhcp.ipAddress and dhcp.netmask or dhcp.netmask.inv()
val quads = ByteArray(4)
for (k in 0..3) quads[k] = (broadcast shr k * 8 and 0xFF).toByte()
return InetAddress.getByAddress(quads)
}

视频转换工具

1、VLC播放器可以转换视频;
2、MacX Video Converter Pro可以转换。
碰到一个h265格式视频,直接用converter无法转换成功。
方法:先用VLC转换成mp4(mkv格式),然后再用converter将mkv格式转换成标准MP4

Hilt 使用

配置:
1、应用build.gradle目录下
dependencies {
classpath “com.android.tools.build:gradle:4.2.2”
classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version”
classpath “com.google.dagger:hilt-android-gradle-plugin:$hilt_version”
}
2、app的build.gradle下
plugins {
id ‘com.android.application’
id ‘kotlin-android’
id ‘kotlin-kapt’
id ‘dagger.hilt.android.plugin’
}
dependencies下增加

implementation “com.google.dagger:hilt-android:$hilt_version”
kapt “com.google.dagger:hilt-android-compiler:$hilt_version”

异常处理:
检查APP下gradle是否设置
defaultConfig {
applicationId “com.edutech.kotlinappexample”
minSdkVersion 21
targetSdkVersion 30
versionCode 1
versionName “1.0”
javaCompileOptions{
annotationProcessorOptions{
arguments += [
“room.schemaLocation” : “$projectDir/schemas”.toString(),
“room.incremental” : “true”,
“room.expandProjection”: “true”]
}
}
testInstrumentationRunner “androidx.test.runner.AndroidJUnitRunner”
}
这个arguments要设置为 +=

Mac AndroidStudio 报connectrefused错误

首先看下Gradle Scripts里面的 gradle.properties是否有设置代理,有的话删除,然后再尝试,如果不行请按下面步骤
1、检查gradle.properties看下该文件下是否有设置代理;
2、preferences-》Appearance & Behavior->System Settings ->Http Proxy看下是否设置了代理,将配置的代理删掉;
3、网络高级选项,看下是否有代理,有的话关闭;
最后删掉.gradle文件,关闭AndroidStudio,重启AndroidStudio