По какой-то причине мое приложение для WearOS обновляется только при первом запуске. После этого он никогда больше не запрашивает новые данные из API...
Что мешает опросу проводиться более одного раза? Это должно происходить каждую минуту/60 секунд. Я поместил его внутри тега службы манифеста Android и указал 60 для значения интервала UPDATE_PERIOD_SECONDS. Он должен производить опрос, но больше никогда не проводит опрос, только при запуске.
Нужно ли что-то изменить в реальном коде службы? Я не могу найти подходящую документацию, в которой показано, как обновить интервал или разрешить его обновление через интервал...
По какой-то причине мое приложение для WearOS обновляется только при первом запуске. После этого он никогда больше не запрашивает новые данные из API... [code]@AndroidEntryPoint class CustomTextComplicationService : SuspendingComplicationDataSourceService() {
@Inject lateinit var dataStore: DataStore private val preferences by lazy { UserPreferencesRepository(dataStore).getPreferences() }
private fun openScreen(): PendingIntent? { val intent = Intent(this, MainActivity::class.java) intent.putExtra("$packageName.${Request.CUSTOM_TEXT.name}", true)
private suspend fun fetchApiData(): String? { Log.d(TAG, "POLLING"); val client = OkHttpClient.Builder() .sslSocketFactory(createTrustAllSslSocketFactory(), createTrustAllTrustManager()) .hostnameVerifier(createTrustAllHostnameVerifier()) .build()
val apiUrl = "https://hello.com/data/" val userApiKey = "KEY" // API key with special characters val userApiSecret = "SECRET" // Secret key val userId = "1"
// URL encode the parameters val encodedApiKey = URLEncoder.encode(userApiKey, StandardCharsets.UTF_8.toString()) val encodedApiSecret = URLEncoder.encode(userApiSecret, StandardCharsets.UTF_8.toString()) val encodedUserId = URLEncoder.encode(userId, StandardCharsets.UTF_8.toString())
// Construct the URL val url = "$apiUrl?userapikey=$encodedApiKey&userapisecret=$encodedApiSecret&userid=$encodedUserId"
val request = OkHttpRequest.Builder() .url(url) .build()
return try { val response = withContext(Dispatchers.IO) { client.newCall(request).execute() } if (response.isSuccessful) { val responseBody = response.body?.string() ?: "" val json = JSONObject(responseBody) json.getString("valueShortened"); } else { Log.w(TAG, "API request failed: ${response.code}") null } } catch (e: Exception) { Log.e(TAG, "Error fetching data from API", e) null } }
// Custom method to trust all certificates (bypass SSL verification) private fun createTrustAllSslSocketFactory(): javax.net.ssl.SSLSocketFactory { val sslContext = SSLContext.getInstance("TLS") val trustAllCerts = arrayOf(createTrustAllTrustManager()) sslContext.init(null, trustAllCerts, java.security.SecureRandom()) return sslContext.socketFactory }
private fun createTrustAllTrustManager(): X509TrustManager { return object : X509TrustManager { // Return an empty array instead of null override fun getAcceptedIssuers(): Array = arrayOf()
override fun checkClientTrusted(chain: Array?, authType: String?) { // Accept all client certificates }
override fun checkServerTrusted(chain: Array?, authType: String?) { // Accept all server certificates } } }
// Create a HostnameVerifier that accepts all hostnames private fun createTrustAllHostnameVerifier(): HostnameVerifier { return HostnameVerifier { _, _ -> true } }
override suspend fun onComplicationRequest(request: ComplicationRequest): ComplicationData? { val text = fetchApiData() ?: return null val title: String = preferences.first().customTitle
val complicationTitle = if (title.isBlank()) null else PlainComplicationText.Builder(text = title).build()
[/code] Что мешает опросу проводиться более одного раза? Это должно происходить каждую минуту/60 секунд. Я поместил его внутри тега службы манифеста Android и указал 60 для значения интервала UPDATE_PERIOD_SECONDS. Он должен производить опрос, но больше никогда не проводит опрос, только при запуске. Нужно ли что-то изменить в реальном коде службы? Я не могу найти подходящую документацию, в которой показано, как обновить интервал или разрешить его обновление через интервал...
У меня есть класс Manager, который запускает одну из нескольких задач (Poco::Util::TimerTask), которые периодически выполняются в отдельном потоке с использованием Poco::Util::Timer. При выполнении определенного условия эта задача должна...
Я работаю над проектом на своем ноутбуке уже несколько недель, а иногда (казалось бы, случайно), я запустим Unity, и редактор пройдет эту странную модель последовательных замораживаний. Он замораживает как в режимах редактирования, так и в...
Я разрабатываю приложение для Samsung Watch 6 ( WearOS ) на основе приложения Sample Excercision.
Я установил его в первый раз, оно запросило все разрешения. Затем я удалил его и установил снова, и он не запросил никаких разрешений. Я даже часы...
Я разрабатываю приложение для Samsung Watch 6 ( WearOS ) на основе приложения Sample Excercision.
Я установил его в первый раз, оно запросило все разрешения. Затем я удалил его и установил снова, и он не запросил никаких разрешений. Я даже часы...
Я пытаюсь обновить свое осложнение на основе общего значения SharedPreferences, которое я определяю в своем действии следующим образом
SharedPreferences.Editor editor = getSharedPreferences( MY_PREFS_NAME , MODE_PRIVATE).edit();
editor.putString(...