Tag: kotlin

Android – 正确的通知方式和服务

我正在开发一个Android应用程序,它必须通过蓝牙保持连接并监听来电,如果它在前台运行。 当我得到蓝牙连接时保持服务正常运行,并在断开连接时停止服务,从而能够正常工作。 Service : public class ConnectionService extends Service { private final int NOTIFICATION_ID = 327; @Override public int onStartCommand(Intent intent, int flags, int startId) { return START_STICKY; } @Override public IBinder onBind(Intent intent) { throw new UnsupportedOperationException(“Not yet implemented”); } @Override public void onCreate() { //Creates notification Intent notificationIntent = new Intent(this, MainActivity.class); PendingIntent […]

JVM和JavaScript的无头单源库

我需要编写一个可以编译为Java类 (更具体地说:Android) 和JavaScript或TypeScript(现代浏览器和Node.js)的库。 该lib将处理与很多数字的对象列表,并且必须计算统计数据和过滤/操纵列表。 没有火箭科学,可以为每个环境弥补依赖关系。 没有十进制算术的问题。 (=>这些库可以在TypeScript和Java中开发,但是没有人愿意维护2个语义上相同的数据源。) 我不害怕学习一种新的语言,但整合应该是平滑的(即用标准的Java接口和Javatypes创建一个.jar文件,而没有数百KB的JavaScript / TypeScript文件的.js文件)。 我可以选择Scala / Scala.js吗? 它会和Kotlin一起工作吗? 你们有没有人成功地完成了平等的任务? 什么是警告?

如何正确使用Kotlin Android的URL

我想用 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val json = URL(“https://my-api-url.com/something”).readText() simpleTextView.setText(json) } 但是这个致命的错误发生 FATAL EXCEPTION: main Process: com.mypackage.randompackage, PID: 812 java.lang.RuntimeException: Unable to start activity ComponentInfo{ ***.MainActivity}: android.os.NetworkOnMainThreadException 我怎样才能简单地从URL链接读取JSON? async函数的包不存在。

如何检测我在一个航点附近

我想使用mapbox-android SDK在Android(Kotlin)上制作一个导航应用程序。 我需要创建一个具有特定航点的航线,并且想要知道我何时靠近其中一个航点(例如前200米)。 我已经设法使用NavigationRoute对象显示带有航点的地图,并使用NavigationLauncher对象启动逐向导航。 不过,我不知道如何知道我什么时候靠近航点。 我已经阅读了关于里程碑事件监听器(步骤或路由),RouteProgress(腿或路由)的事情,但是我不知道这是否是正确的方法。 我试图用STEP_DISTANCE_REMAINING_METERS声明一个里程碑,并添加一个MilestoneEventListener,但是在我的日志中没有任何东西激活。 就像我说的,我甚至不知道这是否是正确的方法。 val milestone = RouteMilestone.Builder() .setIdentifier(100) .setTrigger(Trigger.all( Trigger.lt(TriggerProperty.STEP_DISTANCE_REMAINING_METERS, 200) )) .build() navigation = MapboxNavigation(this@MainActivity, Mapbox.getAccessToken()) navigation.addMilestone(milestone) navigation.addMilestoneEventListener { _, _, milestone -> Log.d(TAG, “milestone triggered: ” + milestone.instruction) } navigationMapRoute = NavigationMapRoute(navigation, mapView, map, R.style.NavigationMapRoute) navigationMapRoute!!.addRoute(currentRoute) 我正在使用这些版本的mapbox SDK mapbox-Android的SDK 5.3.2 mapboxfunction的Android导航:0.9.0 mapbox-Android的导航界面:0.9.0

IncompatibleClassChangeError:类’java.lang.VirtualMachineError’没有实现接口’java.lang.CharSequence’

我的代码有奇怪的问题,我无法解释发生的任何事情。 它是在棉花糖崩溃,但没有牛轧糖,这使得这更离奇。 我可以指向一个错误发生的地方,但是错误本身并不清楚。 我不知道什么是崩溃,以及如何防止它。 以下是详细信息: 当我尝试打电话给服务器时发生崩溃。 为此,我使用RxJava旁边的RxJava ,我在Kotlin中做这个。 这是我的代码: fun login(username: String, password: String, callback: Login.OnLoginListener) { RestClient.getInstance().service .loginUser( // ( if (success.status) callback.onLoginSuccess() else callback.onLoginError() ) }, { error -> GenericErrorHandler.handleError(error, callback.retrieveContext()) } ) } 这里是logcat输出: java.lang.IncompatibleClassChangeError: Class ‘java.lang.VirtualMachineError’ does not implement interface ‘java.lang.CharSequence’ in call to ‘java.lang.String java.lang.CharSequence.toString()’ (declaration of ‘java.lang.Throwable’ appears in […]

KotlinReflectionInternalError数据类

尝试在Retrofit服务中使用数据类作为结果types时收到以下错误。 11-15 11:35:38.345 14693-14693/com.example.app E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.app, PID: 14693 kotlin.reflect.jvm.internal.KotlinReflectionInternalError: Incorrect resolution sequence for Java constructor public constructor AuthenticationResponse() defined in com.example.app.data.auth.AuthenticationResponse[JavaClassConstructorDescriptor@6d57dc3] (kotlin.reflect.jvm.internal.impl.load.java.structure.reflect.ReflectJavaClass: class com.example.app.data.auth.AuthenticationResponse) at kotlin.reflect.jvm.internal.RuntimeTypeMapper.mapSignature(RuntimeTypeMapper.kt:202) at kotlin.reflect.jvm.internal.KFunctionImpl.(KFunctionImpl.kt:46) at kotlin.reflect.jvm.internal.KClassImpl$Data$constructors$2.invoke(KClassImpl.kt:87) at kotlin.reflect.jvm.internal.KClassImpl$Data$constructors$2.invoke(KClassImpl.kt:39) at kotlin.reflect.jvm.internal.ReflectProperties$LazySoftVal.invoke(ReflectProperties.java:93) at kotlin.reflect.jvm.internal.ReflectProperties$Val.getValue(ReflectProperties.java:32) at kotlin.reflect.jvm.internal.KClassImpl$Data.getConstructors(Unknown Source:7) at kotlin.reflect.jvm.internal.KClassImpl.getConstructors(KClassImpl.kt:192) at kotlin.reflect.full.KClasses.getPrimaryConstructor(KClasses.kt:40) at com.squareup.moshi.KotlinJsonAdapterFactory.create(KotlinJsonAdapter.kt:160) at com.squareup.moshi.Moshi.adapter(Moshi.java:100) at retrofit2.converter.moshi.MoshiConverterFactory.responseBodyConverter(MoshiConverterFactory.java:90) at retrofit2.Retrofit.nextResponseBodyConverter(Retrofit.java:328) […]

Kotlin原生等同于System.exit(-1)

在下面的Kotlin / JVM程序中, System.exit(-1)用一个错误退出代码停止执行程序: fun main(args: Array) { if (args.size < 2) { println("too few args!") System.exit(-1) } println("Hello, ${args[1]} from ${args[0]}") } Kotlin / Native不能访问任何Java类,包括System 。 那么对于一个Kotlin / Native程序来说,用一个错误代码来停止程序的执行是什么呢?

使用Anko协程扩展的正确方法是什么?

所以我正在从RxJava移植一个示例应用程序到Kotlin / Anko Corountines,我想知道如果我正在做它最好的(第一)方法: fun getPopulationList() { val ref = asReference() async(UI) { try { ref().setCurrentState(ViewState.State.LOADING) val background = bg { repository.populationResponse().execute().body() } ref().let { it.response = background.await() it.mvpView?.onGetData(it.response) it.setCurrentState(ViewState.State.FINISH) } } catch (e: Exception) { e.printStackTrace() ref().mvpView?.onError(e) } } } 我正在使用MVP架构,其中我的Presenter基类有一个CompositeSubscription和在onDestroy的片段或活动方法简单退订,并清除CompositeSubscription对象。 但是我想知道如果从asReference()函数是相同的,没有必要保存一个Deferred的列表,然后迭代它并逐个取消。 顺便说一句,如果我添加一个Thread.sleep(5000)来模拟一个大事务,并销毁碎片,我可以在logcat中看到的HTTP响应即使片段不可见/销毁,而RxJava没有发生,所以我想我我没有正确使用。

如何在Kotlin中使用AndroidAnnotation @SharedPref

我正在尝试在kotlin中使用AndroidAnnotations @SharefPref,但Iget下面的错误 org.androidannotations.annotations.sharedpreferences.Pref can only be used on an element that extends org.androidannotations.api.sharedpreferences.SharedPreferencesHelper 我究竟做错了什么? //Interface @SharedPref(SharedPref.Scope.APPLICATION_DEFAULT) open interface MyPreferences { @DefaultInt(-1) fun someIntValue():Int } //Fragment @Pref lateinit open var sharedPref:CongressPreferences_ //usage within fragment val get: Int = sharedPref.selectedEventId().get()

抑制关于“没有文件com.foo.Bar $ toString()”的Dokka投诉?

我正在使用Gradle Dokka插件0.9.16-eap-1生成一些Kotlin代码的文档。 我是一个没有破窗户types的人,因此有点沮丧,插件生成吨的消息,我没有明确记录一个重写的方法,在基类中充分记录的类的消息, 例如 : package com.foo /** * A silly class to demonstrate silliness. */ class Bar : java.io.InputStream() { override fun read() = -1 override fun toString() = “BAZ!” } 对于这个class级,Dokka谴责: No documentation for com.foo.Bar$read() (Bar.kt:6) No documentation for com.foo.Bar$toString() (Bar.kt:7) 这有点乏味,因为我不想用复制粘贴文档冗余地冗余文档。 看看Dokka README.md ,我看到的唯一相关配置选项是: dokka { … // Emit warnings about not […]