N
no1Ltan
Fortgeschrittenes Mitglied
- 7
Android Studio 2023.3.1
compileSdk = 34
Windows 10 Pro 64 Bit
TicWatch Pro 3
Hallo zusammen,
ich versuche seit über 1 Woche einen WakeLock in meine WearOS-App einzubinden.
Aktuell habe ich nur die Standard-App, die mit Android Studio kommt.
(Schwarzer Hintergrund mit TextView und Uhr-Anzeige.)
Das Problem ist, dass nach rund 30 Sekunden Inaktivität die App nicht mehr im Vordergrund ist,
wenn ich die Uhr reaktiviere.
Nutze ich hingegen einen Full WakeLock, ist die App dauerhaft im Vordergrund, aber der Bildschirm geht nicht aus.
Mein Ziel ist es, dass der Bildschirm der Uhr ausgehen kann und die App beim Reaktivieren wieder im Vordergrund ist,
selbst wenn sie 5 Minuten inaktiv war.
Bin für jede Hilfe dankbar.
-----------------------------------------------------------------------------
compileSdk = 34
Windows 10 Pro 64 Bit
TicWatch Pro 3
Hallo zusammen,
ich versuche seit über 1 Woche einen WakeLock in meine WearOS-App einzubinden.
Aktuell habe ich nur die Standard-App, die mit Android Studio kommt.
(Schwarzer Hintergrund mit TextView und Uhr-Anzeige.)
Das Problem ist, dass nach rund 30 Sekunden Inaktivität die App nicht mehr im Vordergrund ist,
wenn ich die Uhr reaktiviere.
Nutze ich hingegen einen Full WakeLock, ist die App dauerhaft im Vordergrund, aber der Bildschirm geht nicht aus.
Mein Ziel ist es, dass der Bildschirm der Uhr ausgehen kann und die App beim Reaktivieren wieder im Vordergrund ist,
selbst wenn sie 5 Minuten inaktiv war.
Bin für jede Hilfe dankbar.
Code:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-feature android:name="android.hardware.type.watch" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@android:style/Theme.DeviceDefault">
<service
android:name=".tile.MainTileService"
android:exported="true"
android:label="@string/tile_label"
android:permission="com.google.android.wearable.permission.BIND_TILE_PROVIDER">
<intent-filter>
<action android:name="androidx.wear.tiles.action.BIND_TILE_PROVIDER" />
</intent-filter>
<meta-data
android:name="androidx.wear.tiles.PREVIEW"
android:resource="@drawable/tile_preview" />
</service>
<uses-library
android:name="com.google.android.wearable"
android:required="false" />
<meta-data
android:name="com.google.android.wearable.standalone"
android:value="true" />
<activity
android:name=".presentation.MainActivity"
android:exported="true"
android:taskAffinity=""
android:theme="@style/MainActivityTheme.Starting">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
-----------------------------------------------------------------------------
Java:
package com.example.testapp.presentation
import android.content.Context
import android.os.Bundle
import android.os.PowerManager
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Devices
import androidx.compose.ui.tooling.preview.Preview
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import androidx.wear.compose.material.MaterialTheme
import androidx.wear.compose.material.Text
import androidx.wear.compose.material.TimeText
import com.example.testapp.R
import com.example.testapp.presentation.theme.TestAppTheme
class MainActivity : ComponentActivity() {
private var mWakeLock: PowerManager.WakeLock? = null
private val TAG = "MyApp::WakeLockTag"
override fun onCreate(savedInstanceState: Bundle?) {
installSplashScreen()
super.onCreate(savedInstanceState)
setTheme(android.R.style.Theme_DeviceDefault)
val pm = getSystemService(Context.POWER_SERVICE) as PowerManager
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG)
mWakeLock?.acquire(10*60*1000L /*10 minutes*/)
setContent {
WearApp("Android")
}
}
override fun onDestroy() {
mWakeLock?.let {
if (it.isHeld) {
it.release()
}
}
super.onDestroy()
}
}
@Composable
fun WearApp(greetingName: String) {
TestAppTheme {
Box(
modifier = Modifier
.fillMaxSize()
.background(MaterialTheme.colors.background),
contentAlignment = Alignment.Center
) {
TimeText()
Greeting(greetingName = greetingName)
}
}
}
@Composable
fun Greeting(greetingName: String) {
Text(
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
color = MaterialTheme.colors.primary,
text = stringResource(R.string.hello_world, greetingName)
)
}
@Preview(device = Devices.WEAR_OS_SMALL_ROUND, showSystemUi = true)
@Composable
fun DefaultPreview() {
WearApp("Preview Android")
}