Я хочу получать обратные вызовы callerId в моем приложении Android. Я следовал примеру, предоставленному его создателями, который доступен здесь .
Моя функция прослушивания выглядит следующим образом (точная копия, но в Kotlin):
private fun startListening() {
val socket = DatagramSocket(null)
val address = InetSocketAddress("255.255.255.255", 3520)
socket.reuseAddress = true
socket.broadcast = true
socket.bind(address)
var looping = true
var buffer = ByteArray(65507)
while (looping) {
val dp = DatagramPacket(buffer, buffer.size)
try {
log.debug("Waiting for call")
socket.receive(dp)
val recString = String(dp.data, 0, dp.length)
log.debug("Received new message: $recString")
_callReceivedLive.postValue(recString)
} catch (e: Exception) {
log.error("Exception in CallerIdListener", e)
looping = false
}
}
}
После установки на устройство с версией Android 5.1.1 все выглядит нормально. Каждое отдельное обращение с использованием эмулятора Ethernet принимается приложением. Теперь, после запуска этого приложения на Samsung Galaxy Tab с Android версии 9, оно получает только около 30% звонков.
Есть идеи, что может быть не так?