82 lines
2.4 KiB
Kotlin
82 lines
2.4 KiB
Kotlin
package com.stand.standapp
|
|
|
|
import android.app.Application
|
|
import android.util.Log
|
|
import com.example.kingway.ptt.pttNative
|
|
import com.stand.standapp.utils.LogManager
|
|
import timber.log.Timber
|
|
|
|
class MyApplication : Application() {
|
|
|
|
// 单例实例
|
|
companion object {
|
|
private lateinit var mApp: MyApplication
|
|
|
|
@JvmStatic
|
|
fun getAppInstance(): MyApplication {
|
|
if (pNative == null) {
|
|
initPTT()
|
|
}
|
|
return mApp
|
|
}
|
|
|
|
@JvmStatic
|
|
fun initPTT() {
|
|
if (pNative != null) return
|
|
try {
|
|
pNative = pttNative()
|
|
|
|
pNative?.pttNativeSetPackageName(pageName)
|
|
pNative?.pttNativeSetAtCallback()
|
|
pNative?.pttNativeSetPlayCallback()
|
|
pNative?.pttNativeSetPalyStartCallback()
|
|
pNative?.pttNativeSetPlayStopCallback()
|
|
pNative?.pttNativeSetRecordStartCallback()
|
|
pNative?.pttNativeSetRecordStopCallback()
|
|
pNative?.pttNativeSetTTSCallback()
|
|
|
|
pNative?.pttNativePocTaskStart()
|
|
Log.i("PTT_INIT", "PTT init success")
|
|
} catch (e: Throwable) {
|
|
Log.e("PTT_INIT", "Failed to init PTT: ${e.message}")
|
|
}
|
|
}
|
|
|
|
var pageName: String = ""
|
|
var pNative: pttNative? = null
|
|
}
|
|
|
|
/**
|
|
* 获取 pttNative 实例(非空)
|
|
*/
|
|
fun getpNative(): pttNative? {
|
|
return pNative
|
|
}
|
|
|
|
override fun onCreate() {
|
|
super.onCreate()
|
|
mApp = this
|
|
pageName = packageName
|
|
initPTT()
|
|
// 第一步:初始化日志
|
|
LogManager.init(this)
|
|
|
|
// 初始化 xCrash 以捕获 Native (SO) 崩溃
|
|
xcrash.XCrash.init(this, xcrash.XCrash.InitParameters().apply {
|
|
setAppVersion(packageManager.getPackageInfo(packageName, 0).versionName)
|
|
setLogDir(getExternalFilesDir("tombstones")?.absolutePath)
|
|
setNativeDumpAllThreads(true)
|
|
|
|
setJavaCallback { logPath, emergency ->
|
|
LogManager.onCrashDetected(logPath, "Java-xCrash", null)
|
|
}
|
|
|
|
setNativeCallback { logPath, emergency ->
|
|
LogManager.onCrashDetected(logPath, "Native-xCrash", null)
|
|
android.util.Log.e("MyApplication", "NATIVE CRASH DETECTED at: $logPath")
|
|
}
|
|
})
|
|
|
|
Timber.tag("MyApplication").i("=== Application Starting ===")
|
|
}
|
|
} |