Autore Topic: dhcp request su usb0 da codice per usb reverse tethering (e setprop)  (Letto 772 volte)

Offline k0smik0

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    debian
Salve,

sto cercando di scrivere un app che attivi l'usb reverse tethering con una broadcast e/o click di un bottone.

per "attivi" si intende:
1) "enable" usb tethering
2) la request dhcp per l'interfaccia
3) eventualmente l'invocazione del setprop per la porta di adb, da -1 (usb) a 5555/a_scelta (tcp), perchè in alcuni kernel/rom (tipo il mio, samsung s5570 2.2) adb su usb viene disabilitato sull'attivazione dell'usb tethering.

per (1) ho risolto

per (2) e (3) ho risolto temporaneamente con "netcfg usb0 dhcp" e "setprop eccetera".. i quali vengono invocati da uno script di irssi-connectbot (cosi come 1, tramite un "am broadcast" di cui sopra).

pur tuttavia, vorrei includere la dhcp request nel codice, ed evitando di fare un wrap al netcfg con qualche chiamata system e similari...
vorrei proprio il metodo nativo, anche perché questa soluzione (il wrapping) richiede che si invochi netcfg tramite su - ergo: ci vuole il telefono rootato. Mentre, forse, con qualche metodo nativo ciò non occorre.

cercando per 2 giorni ho trovato l'unico probabile responsabile, tale NetworkUtils.java, che include una serie di metodi native, tra cui uno che invoca dhcp, e popola un oggetto DhcpInfo passatogli come argomento. epperò non funziona, perche logcat dice che non trova l'implementazione per quel metodo nativo. ho dovuto anche copiare la classe nel mio package, perche non v'è traccia nel core android (non accessibile allo sviluppatore, quantomeno).

eventualmente, anche un "setting ip, route, dns" statico, oltre al dhcp. ma questo è un discorso di poi.

Ovviamente non ho trovato traccia del sorgente di android responsabile della gestione dell'usb tethering, visto che all'avvio del medesimo viene avviato anche il dnsmasq/dhcpd interno - ergo: usano un wrapper a system o hanno un metodo native? sarebbe interessante da sapere.

per il setprop (sempre da codice) non ho ancora cercato, ma la ricerca infruttuosa di questa faccenda del dhcp mi ha stremato... perciò se qualcuno ne sa scriva pure :D



Saluti a tutti ;D

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:dhcp request su usb0 da codice per usb reverse tethering (e setprop)
« Risposta #1 il: 08 Gennaio 2012, 10:57:43 CET »
0
Premetto che sono abbastanza ignorante sulle problematiche da te sollevate, per cui ti posso essere ben poco di aiuto.

In merito a NetworkUtils.java, se non è presente nelle API pubbliche, è perchè è un'API privata in teoria non pensata per l'uso da parte degli sviluppatori. Tuttavia, puoi dovresti potervi accedere con java reflection. Almeno così dicono, perchè non ho mai provato personalmente. Questo è il primo risultato che ho trovato su come fare: telephony - How can I access Android private API's which doesn't exposed in TelephonyManager? - Stack Overflow

Spero ti possa essere di qualche aiuto.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store