@@ -38,6 +38,7 @@ import project.pipepipe.app.ui.component.CustomTopBar
3838import project.pipepipe.app.ui.component.StacktraceDialog
3939import java.text.SimpleDateFormat
4040import java.util.*
41+ import android.os.Build
4142
4243@Composable
4344fun LogSettingScreen (
@@ -229,9 +230,59 @@ private fun ErrorLogItem(
229230 }
230231}
231232
233+ private fun getOsString (): String {
234+ return (System .getProperty(" os.name" )? : " Linux" ) +
235+ " " + Build .VERSION .BASE_OS .ifEmpty { " Android" } +
236+ " " + Build .VERSION .RELEASE +
237+ " - " + Build .VERSION .SDK_INT
238+ }
239+
240+ private fun getDeviceString (): String {
241+ return " ${Build .MANUFACTURER } ${Build .MODEL } (${Build .DEVICE } )"
242+ }
243+
244+ private fun getAppVersionString (context : Context ): String {
245+ return try {
246+ val packageInfo = context.packageManager.getPackageInfo(context.packageName, 0 )
247+ val versionCode = if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .P ) {
248+ packageInfo.longVersionCode
249+ } else {
250+ @Suppress(" DEPRECATION" )
251+ packageInfo.versionCode.toLong()
252+ }
253+ " ${packageInfo.versionName} ($versionCode )"
254+ } catch (e: Exception ) {
255+ " Unknown"
256+ }
257+ }
258+
259+ private fun getSystemLanguage (): String {
260+ return Locale .getDefault().toString() // 例如: "en_US", "zh_CN"
261+ }
262+
263+ private fun getSystemTimezone (): String {
264+ val timeZone = TimeZone .getDefault()
265+ return " ${timeZone.id} (UTC${getTimezoneOffset(timeZone)} )" // 例如: "Asia/Shanghai (UTC+8:00)"
266+ }
267+
268+ private fun getTimezoneOffset (timeZone : TimeZone ): String {
269+ val offset = timeZone.rawOffset / (1000 * 60 * 60 ) // 转换为小时
270+ val minutes = (timeZone.rawOffset % (1000 * 60 * 60 )) / (1000 * 60 )
271+ return if (offset >= 0 ) {
272+ if (minutes != 0 ) " +$offset :${String .format(" %02d" , minutes)} " else " +$offset :00"
273+ } else {
274+ if (minutes != 0 ) " $offset :${String .format(" %02d" , - minutes)} " else " $offset :00"
275+ }
276+ }
277+
232278fun copyLogToClipboard (context : Context , log : project.pipepipe.database.Error_log ) {
233279 val json = buildJsonObject {
280+ put(" os" , getOsString())
281+ put(" device" , getDeviceString())
282+ put(" app_version" , getAppVersionString(context))
234283 put(" timestamp" , log.timestamp)
284+ put(" language" , getSystemLanguage())
285+ put(" timezone" , getSystemTimezone())
235286 put(" task" , log.task)
236287 put(" request" , log.request)
237288 put(" stacktrace" , log.stacktrace)
@@ -246,7 +297,12 @@ fun copyLogToClipboard(context: Context, log: project.pipepipe.database.Error_lo
246297
247298fun sendLogEmail (context : Context , log : project.pipepipe.database.Error_log ) {
248299 val json = buildJsonObject {
300+ put(" os" , getOsString())
301+ put(" device" , getDeviceString())
302+ put(" app_version" , getAppVersionString(context))
249303 put(" timestamp" , log.timestamp)
304+ put(" language" , getSystemLanguage())
305+ put(" timezone" , getSystemTimezone())
250306 put(" task" , log.task)
251307 put(" request" , log.request)
252308 put(" stacktrace" , log.stacktrace)
0 commit comments