Initial commit

This commit is contained in:
2025-11-07 18:20:15 +08:00
parent d350924b13
commit 41726d5006
39 changed files with 1232 additions and 0 deletions
@@ -0,0 +1,20 @@
package com.yuanxuan.rokid
import android.os.Bundle
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_main)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
}
}
@@ -0,0 +1,11 @@
package com.yuanxuan.rokid.app
import android.app.Application
class RokidApplication : Application() {
override fun onCreate() {
super.onCreate()
}
}
@@ -0,0 +1,82 @@
package com.yuanxuan.rokid.keeplive
import android.app.Notification
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.Service
import android.content.Intent
import android.os.IBinder
import android.os.PowerManager
import androidx.core.app.NotificationCompat
import com.yuanxuan.rokid.R
/**
* 提高APP进程优先级 保持长链接状态
*/
class KeepLiveService : Service() {
private lateinit var wakeLock: PowerManager.WakeLock
companion object {
const val NOTIFICATION_CHANNEL_ID = "KeepLiveServiceChannel"
const val NOTIFICATION_CHANNEL_NAME = NOTIFICATION_CHANNEL_ID
const val NOTIFICATION_ID = 101 // 使用一个唯一的ID
const val WAKE_LOCK_TAG = "KeepLiveService:WakeLock"
}
override fun onBind(intent: Intent?): IBinder? {
return null
}
override fun onCreate() {
super.onCreate()
createNotificationChannel()
initWakeLock()
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
startForeground(NOTIFICATION_ID, createNotification())
return START_STICKY
}
override fun onDestroy() {
super.onDestroy()
if (::wakeLock.isInitialized && wakeLock.isHeld) {
wakeLock.release()
}
}
private fun initWakeLock() {
wakeLock =
(getSystemService(POWER_SERVICE) as PowerManager)
.newWakeLock(
PowerManager.PARTIAL_WAKE_LOCK,
WAKE_LOCK_TAG
)
.apply {
if (isHeld.not())
acquire()
}
}
private fun createNotificationChannel() {
// 最低支持Android 9 就不判断了
val channel = NotificationChannel(
NOTIFICATION_CHANNEL_ID,
NOTIFICATION_CHANNEL_NAME,
NotificationManager.IMPORTANCE_LOW
)
val manager = getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)
}
private fun createNotification(): Notification {
return NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID)
.setContentTitle(NOTIFICATION_CHANNEL_NAME)
.setContentText(NOTIFICATION_CHANNEL_NAME)
.setSmallIcon(R.mipmap.ic_launcher)
.setOngoing(true)
.build()
}
}