根据官方文档,由于 getActiveNetworkInfo 现在在 Android 中已被弃用,因此我使用下面的实现来获取有关互联网连接的回调。
private val connectivityManager: ConnectivityManager by lazy {
getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
}
private val builder: NetworkRequest.Builder by lazy {
NetworkRequest.Builder()
}
private val networkCallback: NetworkCallback by lazy {
object : NetworkCallback() {
override fun onAvailable(network: Network?) {
println("Connection is online")
}
override fun onLost(network: Network?) {
println("Connection is offline")
}
}
}
override fun onResume() {
super.onResume()
connectivityManager.registerNetworkCallback(builder.build(), networkCallback)
}
override fun onPause() {
super.onPause()
connectivityManager.unregisterNetworkCallback(networkCallback)
}
Run Code Online (Sandbox Code Playgroud)
当连接在线时注册此回调时,它可以正常工作,但当互联网关闭然后我们注册回调时,它不能正常工作。为了测试这种情况,我关闭了我的应用程序。然后保持互联网连接关闭,然后打开应用程序。
我们有什么办法知道应用程序正在打开吗?如果有的话,请帮忙分享一下。谢谢。
使用自定义画家绘制形状时,在将最后一个点与第一个点连接时删除锐边/角度的问题。
我正在尝试使用 CustomPainter 创建自定义形状。我使用一些点创建了路径。对于绘制路径,我使用贝塞尔曲线。我的代码如下。但是当最后一个点连接到第一个点时,它会产生锐角。我怎样才能避免它?
// preparing path points for shape.
for (int i = 0; i < steps; i++) {
borderPoints.add(BorderPoint(xPoint, yPoint, radian, randomRadius, MovementDirection.INWARD));
}
borderPoints.add(borderPoints[0]);
// here, we are creating path for our shape.
jellyPath.moveTo(borderPoints[0].dx, borderPoints[0].dy);
int i = 1;
for (i = 1; i < borderPoints.length - 2; i++) {
var xc = (borderPoints[i].dx + borderPoints[i + 1].dx) / 2;
var yc = (borderPoints[i].dy + borderPoints[i + 1].dy) / 2;
jellyPath.quadraticBezierTo(
borderPoints[i].dx, borderPoints[i].dy, xc, yc);
}
jellyPath.quadraticBezierTo(borderPoints[i].dx, …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建警报,一切正常,但即使我使用流类型也始终是媒体STREAM_ALARM,因为setStreamType已弃用,我正在使用,setAudioAttributes但它似乎不起作用。这是我的代码:
class AlarmRingtoneManager(val context: Context) {
private lateinit var mediaPlayer: MediaPlayer
fun start() {
mediaPlayer = MediaPlayer.create(context, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM))
.apply {
setAudioAttributes(AudioAttributes.Builder()
.setFlags(AudioAttributes.FLAG_AUDIBILITY_ENFORCED)
.setLegacyStreamType(AudioManager.STREAM_ALARM)
.setUsage(AudioAttributes.USAGE_ALARM)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build())
isLooping = true
start()
}
}
fun stop() {
mediaPlayer.stop()
}
}
Run Code Online (Sandbox Code Playgroud)