est*_*con 13 java android google-directions-api
我正在实施Google 的 Directions API。我的应用程序支持minSdkVersion 23,java.time.Instant这里不支持。
是否有解决方案,或者我应该检查用户的版本并在支持该版本的情况下允许此功能?
DirectionsResult directionsResult = DirectionsApi.newRequest(geoApiContext)
.mode(TravelMode.DRIVING)
.origin(new com.google.maps.model.LatLng(mapFragment.getUserCoords().latitude, mapFragment.getUserCoords().longitude))
.destination(tabHandlerCommunication.destinationBarCoords)
.departureTime(Instant.now()) // <-- error here
.await();
Run Code Online (Sandbox Code Playgroud)
错误:
调用需要 API 级别 26(当前最小值为 23):java.time.Instant#now less... (Ctrl+F1) 检查信息:此检查扫描应用程序中的所有 Android API 调用并警告任何调用不适用于此应用程序针对的所有版本(根据清单中的最小 SDK 属性)。如果你真的想使用这个 API 并且不需要支持旧设备,只需在你的 build.gradle 或 AndroidManifest.xml 文件中设置 minSdkVersion 。如果您的代码有意访问较新的 API,并且您已确保(例如使用条件执行)此代码只会在受支持的平台上调用,那么您可以使用指定本地最小 SDK 的 @TargetApi 注释来注释您的类或方法申请,例如@TargetApi(11),以便此检查将 11 而不是清单文件的最低 SDK 作为所需的 API 级别。如果您有意在样式定义中设置 android: 属性,请确保将其放在 values-vNN 文件夹中,以避免在某些设备上遇到运行时冲突,其中制造商添加了自定义属性,而这些自定义属性的 id 与以后平台上的新属性发生冲突. 同样,您可以在 XML 文件中使用 tools:targetApi="11" 来指示元素只会在适当的上下文中膨胀。问题编号:NewApi 确保将其放在 values-vNN 文件夹中,以避免在某些设备上遇到运行时冲突,这些设备制造商添加了自定义属性,其 id 与更高平台上的新属性冲突。同样,您可以在 XML 文件中使用 tools:targetApi="11" 来指示元素只会在适当的上下文中膨胀。问题编号:NewApi 确保将其放在 values-vNN 文件夹中,以避免在某些设备上遇到运行时冲突,这些设备制造商添加了自定义属性,其 id 与更高平台上的新属性冲突。同样,您可以在 XML 文件中使用 tools:targetApi="11" 来指示元素只会在适当的上下文中膨胀。问题编号:NewApi
HBG*_*HBG 25
如果您使用 Gradle 插件 4.0 或更高版本(Android Studio 4.0 或更高版本),您可以利用 D8 核心库脱糖。这包括java.time可以java.time.Instant在项目中使用的功能子集;即使您需要支持早于 API 26 的版本。
在您的模块build.gradle文件中:
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
coreLibraryDesugaringEnabled true
}
// If using Kotlin
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8
}
}
dependencies {
…
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.5'
}
Run Code Online (Sandbox Code Playgroud)
您现在应该可以无误地使用此类。
一些来源:
在查看了开发人员指南后,结果表明:String now,
以及常见的intUNIX 纪元时间戳都是可接受的值:
\n\n\n\n
departure_time\xe2\x80\x94 指定所需的出发时间。您可以将时间指定为自 UTC 1970 年 1 月 1 日午夜以来以秒为单位的整数。或者,您可以指定一个值now,将出发时间设置为当前时间(精确到最接近的秒)。
在检查源代码时Java时,有一个方便的方法:
public DirectionsApiRequest departureTimeNow() {\n return param("departure_time", "now");\n}\nRun Code Online (Sandbox Code Playgroud)\n\n所以java.time.Instant可以规避,以实现向后兼容性。
我已提交问题 #559 ...分叉库似乎是设置其他时间戳的唯一方法。
\n| 归档时间: |
|
| 查看次数: |
7347 次 |
| 最近记录: |