Как заставить устройство Soni c Bomb дрожать от стороннего приложения Android? - PullRequest
0 голосов
/ 18 февраля 2020

Я недавно приобрел Soni c Bomb вибрационное сигнальное устройство, управляемое с телефонов.

Однако, похоже, нет публичного c API, доступного для управление им.

Есть ли способ инициировать встряхивание устройства из сторонних приложений без необходимости перепроектировать протокол связи?

1 Ответ

0 голосов
/ 18 февраля 2020

Я узнал, как это сделать, найдя список Android намерений, полученных официальным приложением Soni c Bomb .

Два Android намерения, которые мы ' Вы заинтересованы в: com.sonicalert.v2.intent.test_shake, com.sonicalert.v2.intent.alarm_dismiss

Использование:

val patterns = arrayOf(
    "!WLALALALALALALALA;", // default
    "!WTRG0TRG0TRG0TRG;", // pulse
    "!WPJ0FPV7S1J600;" // sos
    // you can add your own patterns by mixing and matching the vibration components
);

// strength is between 0 and 100; pattern follows the format seen above
fun SonicBomb_Shake(strength: Int, pattern: String, playAlarmAudio: Boolean = false) {
    val intent = Intent()
    intent.action = "com.sonicalert.v2.intent.test_shake"
    intent.putExtra("current strength m", strength)
    intent.putExtra("current pattern", pattern)
    intent.putExtra("current alarm audio", playAlarmAudio)
    MainActivity.instance!!.sendBroadcast(intent)
}
fun SonicBomb_StopShake() {
    val intent = Intent()
    intent.action = "com.sonicalert.v2.intent.alarm_dismiss"
    MainActivity.instance!!.sendBroadcast(intent)
}

Я могу подтвердить, что он работает просто отлично. :)

Обратите внимание, что для этого требуется, чтобы официальное приложение было установлено и запущено - но оно может быть в фоновом режиме, поэтому для меня это не проблема. (Вы также должны иметь возможность, чтобы ваше приложение запускало официальное приложение при запуске, хотя я еще не добавил это.)

Также должна быть возможность перепроектировать официальное приложение, чтобы выяснить, как общаться с устройством без необходимости его установки. Но в целом, усилия не кажутся мне стоящими, учитывая, насколько достаточно основанное на намерениях решение. Кроме того, таким образом вам не нужно поддерживать код для сопряжения с устройством и тому подобное, и это хорошо.

...