Android Uygulaması (Düğüm)
Not: Android uygulaması henüz herkese açık olarak yayımlanmadı. Kaynak koduapps/androidaltında OpenClaw repository içinde mevcuttur. Java 17 ve Android SDK kullanarak kendiniz derleyebilirsiniz (./gradlew :app:assemblePlayDebug). Derleme talimatları için apps/android/README.md dosyasına bakın.
Destek özeti
- Rol: yardımcı düğüm uygulaması (Android Gateway barındırmaz).
- Gateway gerekli: evet (macOS, Linux veya Windows üzerinde WSL2 aracılığıyla çalıştırın).
- Kurulum: Başlangıç + Eşleştirme.
- Gateway: Çalışma kılavuzu + Yapılandırma.
- Protokoller: Gateway protokolü (düğümler + kontrol düzlemi).
Sistem denetimi
Sistem denetimi (launchd/systemd) Gateway ana makinesinde bulunur. Bkz. Gateway.
Bağlantı Çalışma Kılavuzu
Android düğüm uygulaması ⇄ (mDNS/NSD + WebSocket) ⇄ Gateway Android doğrudan Gateway WebSocket’e bağlanır ve cihaz eşleştirmesini kullanır (role: node).
Tailscale veya genel ana makineler için Android güvenli bir uç nokta gerektirir:
- Tercih edilen:
https://<magicdns>/wss://<magicdns>ile Tailscale Serve / Funnel - Ayrıca desteklenir: gerçek bir TLS uç noktası olan diğer tüm
wss://Gateway URL’leri - Şifrelenmemiş
ws://, özel LAN adreslerinde /.localana makinelerinde, ayrıcalocalhost,127.0.0.1ve Android emülatör köprüsünde (10.0.2.2) desteklenmeye devam eder
Ön koşullar
- Gateway’i “master” makinede çalıştırabiliyor olmanız gerekir.
- Android cihazı/emülatörü gateway WebSocket’ine erişebilmelidir:
- Aynı LAN üzerinde mDNS/NSD ile, veya
- Wide-Area Bonjour / unicast DNS-SD kullanarak aynı Tailscale tailnet üzerinde (aşağıya bakın), veya
- El ile gateway ana makinesi/portunu girerek (yedek yöntem)
- Tailnet/genel mobil eşleştirme ham tailnet IP
ws://uç noktalarını kullanmaz. Bunun yerine Tailscale Serve veya başka birwss://URL’si kullanın. - Gateway makinesinde CLI (
openclaw) çalıştırabiliyor olmanız gerekir (veya SSH üzerinden).
1) Gateway’i başlatın
listening on ws://0.0.0.0:18789
wss:// / https:// uç noktası sağlar. Ayrı olarak TLS sonlandırması da yapmadığınız sürece, ilk kez uzaktan Android eşleştirmesi için yalnızca düz bir gateway.bind: "tailnet" yapılandırması yeterli değildir.
2) Keşfi doğrulayın (isteğe bağlı)
Gateway makinesinden:local. ile yapılandırılmış geniş alan etki alanını tek geçişte gösterir ve yalnızca TXT ipuçları yerine çözülmüş
hizmet uç noktasını kullanır.
Unicast DNS-SD ile tailnet (Viyana ⇄ Londra) keşfi
Android NSD/mDNS keşfi ağlar arasında çalışmaz. Android düğümünüz ve gateway farklı ağlardaysa ancak Tailscale üzerinden bağlıysa, bunun yerine Wide-Area Bonjour / unicast DNS-SD kullanın. Keşif tek başına tailnet/genel Android eşleştirmesi için yeterli değildir. Keşfedilen yol yine de güvenli bir uç nokta gerektirir (wss:// veya Tailscale Serve):
- Gateway ana makinesinde bir DNS-SD bölgesi (örnek
openclaw.internal.) kurun ve_openclaw-gw._tcpkayıtlarını yayımlayın. - Seçtiğiniz etki alanını bu DNS sunucusuna yönlendiren Tailscale split DNS’i yapılandırın.
3) Android’den bağlanın
Android uygulamasında:- Uygulama gateway bağlantısını bir foreground service (kalıcı bildirim) aracılığıyla canlı tutar.
- Connect sekmesini açın.
- Setup Code veya Manual modunu kullanın.
- Keşif engelleniyorsa, Advanced controls içinde ana makine/portu el ile girin. Özel LAN ana makineleri için
ws://hâlâ çalışır. Tailscale/genel ana makineler için TLS’yi açın ve birwss:/// Tailscale Serve uç noktası kullanın.
- El ile girilen uç nokta (etkinse), aksi takdirde
- Son keşfedilen gateway (best-effort).
4) Eşleştirmeyi onaylayın (CLI)
Gateway makinesinde:5) Düğümün bağlı olduğunu doğrulayın
-
Düğüm durumu üzerinden:
-
Gateway üzerinden:
6) Sohbet + geçmiş
Android Chat sekmesi oturum seçimini destekler (varsayılanmain, ayrıca mevcut diğer oturumlar):
- Geçmiş:
chat.history(görüntüleme için normalleştirilmiş; satır içi yönerge etiketleri görünür metinden kaldırılır, düz metin araç çağrısı XML yükleri (şunlar dahil:<tool_call>...</tool_call>,<function_call>...</function_call>,<tool_calls>...</tool_calls>,<function_calls>...</function_calls>ve kısaltılmış araç çağrısı blokları) ile sızan ASCII/tam genişlikli model kontrol belirteçleri kaldırılır, tam olarakNO_REPLY/no_replyolan saf sessiz belirteçli asistan satırları atlanır ve aşırı büyük satırlar yer tutucularla değiştirilebilir) - Gönder:
chat.send - Anlık güncellemeler (best-effort):
chat.subscribe→event:"chat"
7) Canvas + kamera
Gateway Canvas Host (web içeriği için önerilir)
Düğümün, ajanın disk üzerinde düzenleyebileceği gerçek HTML/CSS/JS içeriğini göstermesini istiyorsanız, düğümü Gateway canvas host’una yönlendirin. Not: düğümler canvas içeriğini Gateway HTTP sunucusundan yükler (gateway.port ile aynı port, varsayılan 18789).
-
Gateway ana makinesinde
~/.openclaw/workspace/canvas/index.htmloluşturun. - Düğümü buna yönlendirin (LAN):
.local yerine bir MagicDNS adı veya tailnet IP kullanın; örneğin http://<gateway-magicdns>:18789/__openclaw__/canvas/.
Bu sunucu, HTML içine bir live-reload istemcisi ekler ve dosya değişikliklerinde yeniden yükleme yapar.
A2UI host’u http://<gateway-host>:18789/__openclaw__/a2ui/ adresinde bulunur.
Canvas komutları (yalnızca foreground’da):
canvas.eval,canvas.snapshot,canvas.navigate(varsayılan iskeleye dönmek için{"url":""}veya{"url":"/"}kullanın).canvas.snapshot,{ format, base64 }döndürür (varsayılanformat="jpeg").- A2UI:
canvas.a2ui.push,canvas.a2ui.reset(canvas.a2ui.pushJSONLeski takma adı)
camera.snap(jpg)camera.clip(mp4)
8) Ses + genişletilmiş Android komut yüzeyi
- Ses: Android, Voice sekmesinde konuşma metni yakalama ve
talk.speakoynatımı ile tek bir mikrofon aç/kapat akışı kullanır.talk.speakkullanılamadığında yalnızca yerel sistem TTS kullanılır. Uygulama foreground’dan çıktığında ses durur. - Voice wake/talk-mode geçişleri şu anda Android UX/runtime’dan kaldırılmıştır.
- Ek Android komut aileleri (kullanılabilirlik cihaza + izinlere bağlıdır):
device.status,device.info,device.permissions,device.healthnotifications.list,notifications.actions(aşağıdaki Bildirim yönlendirme bölümüne bakın)photos.latestcontacts.search,contacts.addcalendar.events,calendar.addcallLog.searchsms.searchmotion.activity,motion.pedometer
Asistan giriş noktaları
Android, sistem asistanı tetikleyicisinden OpenClaw başlatmayı destekler (Google Assistant). Yapılandırıldığında, ana ekran düğmesine basılı tutmak veya “Hey Google, ask OpenClaw…” demek uygulamayı açar ve istemi sohbet oluşturucuya iletir. Bu, uygulama manifestinde tanımlanan Android App Actions meta verilerini kullanır. Gateway tarafında ek yapılandırma gerekmez — asistan intent’i tamamen Android uygulaması tarafından işlenir ve normal bir sohbet mesajı olarak iletilir.App Actions kullanılabilirliği cihaza, Google Play Services sürümüne
ve kullanıcının OpenClaw’u varsayılan asistan uygulaması olarak ayarlayıp ayarlamadığına bağlıdır.
Bildirim yönlendirme
Android, cihaz bildirimlerini olay olarak gateway’e yönlendirebilir. Birkaç denetim, hangi bildirimlerin ne zaman yönlendirileceğini kapsamlandırmanızı sağlar.| Key | Type | Description |
|---|---|---|
notifications.allowPackages | string[] | Bildirimleri yalnızca bu paket adlarından yönlendirir. Ayarlanırsa diğer tüm paketler yok sayılır. |
notifications.denyPackages | string[] | Bildirimleri bu paket adlarından asla yönlendirmez. allowPackages sonrasında uygulanır. |
notifications.quietHours.start | string (HH:mm) | Sessiz saatler aralığının başlangıcı (yerel cihaz saati). Bildirimler bu aralıkta bastırılır. |
notifications.quietHours.end | string (HH:mm) | Sessiz saatler aralığının bitişi. |
notifications.rateLimit | number | Paket başına dakikada yönlendirilebilecek en fazla bildirim sayısı. Fazla bildirimler atılır. |
Bildirim yönlendirme, Android Notification Listener iznini gerektirir. Uygulama kurulum sırasında bunu ister.