llamadas: lo que hay de verdad; SSB_server.js como en la APK oficial

Revisado en el emulador: la APK oficial 1.3.3 del dev pide microfono y camara
y trae un puente nativo (.audio_bridge) que graba, reproduce, saca la camara y
emite. Nuestra app Android no lo tiene, asi que en esta APK el Telefono dice
que no hay llamadas.

- README, guia, android/README y los dos esquemas lo cuentan asi
- SSB_server.js queda identico al de la APK oficial (su version de movil
  enchufa ya phone_*_android.js); fuera el enganche duplicado de main.js
- el aviso de bienvenida va encima del lanzador: en el primer arranque
  quedaba a 1.300px y no se veia
This commit is contained in:
hacklab 2026-10-19 13:55:16 +02:00
parent e6ea3f4b58
commit 10e47f9bc1
9 changed files with 40 additions and 38 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Before After
Before After

View file

@ -163,7 +163,7 @@ def esquema_rama():
((740, 210, 1060, 400), "RUTAS",
["fork_routes.js y", "mobile_layer.js, delante", "del router del dev: lo que", "no atienden pasa al suyo"], NEON),
((1080, 210, 1340, 400), "ANDROID",
["envoltorio propio:", "permisos de micro y", "cámara, y el puente", "de audio del Teléfono"], NEON),
["envoltorio propio y", "abierto: permisos,", "ficheros y servicio.", "Falta el puente de audio"], NEON),
]
for box, t, l, r in capa:
caja(d, box, t, l, r)
@ -178,29 +178,29 @@ def esquema_rama():
def esquema_llamadas():
"""Las llamadas son las del dev; la rama solo enchufa el movil."""
"""Las llamadas son las del dev; en Android pasan por un puente nativo de la app."""
W, H = 1400, 700
out = Image.new("RGB", (W, H), BG)
d = ImageDraw.Draw(out)
titulo(d, "LLAMADAS: LAS DEL DEV, CON EL MÓVIL ENCHUFADO",
"Teléfono y Salas son de Oasis. La rama no tiene llamadas propias: solo hace que suenen en Android.")
titulo(d, "LLAMADAS: LAS DEL DEV",
"Teléfono y Salas son de Oasis. En Android el sonido y la cámara pasan por un puente nativo de la app.")
cajas = [
((50, 200, 360, 430), "TELÉFONO Y SALAS",
["De Oasis, tal cual.", "Llamadas de uno a uno", "con buzón de voz; salas", "de hasta 50, con vídeo,", "grabación y emisión."], BG),
((400, 200, 700, 430), "LOS ENCHUFES",
["setAudioFactory", "setVideoFactory", "setStreamFactory", "", "Los deja el propio dev."], BG),
((740, 200, 1040, 430), "EL PUENTE",
["main.js enchufa ahí", "phone_*_android.js:", "el audio y la cámara", "pasan por la app de", "Android."], NEON),
["phone_*_android.js", "(del dev): se conectan", "a un puerto local que", "deja la app en", ".audio_bridge"], BG),
((740, 200, 1040, 430), "EL PUENTE NATIVO",
["Dentro de la app:", "R graba el micro", "P reproduce", "V saca la cámara", "S emite un fichero"], NEON),
((1080, 200, 1350, 430), "EL MÓVIL",
["Micrófono, cámara", "y altavoz. Los permisos", "se piden la primera vez", "que llamas o entras", "en una sala."], NEON),
["Micrófono, cámara", "y altavoz, con los", "permisos que se piden", "la primera vez."], BG),
]
for box, t, l, r in cajas:
caja(d, box, t, l, r)
for a, b in (((362, 315), (398, 315)), ((702, 315), (738, 315)), ((1042, 315), (1078, 315))):
flecha(d, a, b)
caja(d, (50, 480, 1350, 630), "¿Y CON LA APK OFICIAL?",
["No declara micrófono ni cámara y su navegador interno deniega esas peticiones:",
"en Android las llamadas no pueden sonar. Por eso esta rama trae su propio envoltorio."], BG)
caja(d, (50, 480, 1350, 630), "DÓNDE ESTÁ CADA COSA",
["La APK oficial trae el puente: ahí las llamadas suenan. La app de esta rama todavía no lo tiene,",
"así que en ella el Teléfono dice que no hay llamadas. Escribir ese puente es lo siguiente."], BG)
out.save(HERE / "esquema-llamadas.png", optimize=True)