Autore Topic: L'incredibile impossibile...  (Letto 715 volte)

Offline vicvondoom

  • Utente junior
  • **
  • Post: 71
    • Mostra profilo
    • vicvondoom
  • Dispositivo Android:
    Sony XPeria U
  • Play Store ID:
    Orlando Davide
  • Sistema operativo:
    Windows 8
L'incredibile impossibile...
« il: 27 Luglio 2010, 17:20:10 CEST »
A quanto pare se voglio fare una chiamata via codice da un mio software android è banale, ma poter rispondere 'Accept' da una chiamata in arrivo (anche rilevare la notifica è banale), sempre via codice, sembra impossibile!
A meno di rootare e flashare una versione apposita del sistema operativo...
Perlomeno mi pare così, ma se è vero, che ne pensate?

Un deluso Dave..
"Non c'è cattivo più cattivo di un buono quando diventa cattivo!" Bud Spencer in 'Chi trova un amico trova un tesoro'.

Offline acquariusoft

  • Utente normale
  • ***
  • Post: 157
    • Mostra profilo
    • Visita il mio blog
  • Dispositivo Android:
    Galaxy ace, Asus eee transformer
  • Play Store ID:
    acquariusoft
  • Sistema operativo:
    Windows 7
Re:L'incredibile impossibile...
« Risposta #1 il: 27 Luglio 2010, 17:47:54 CEST »
E si, a volte android è proprio complicato!!
Io volevo fare uno screenshoot dello schermo ma la cosa sembra quasi impossibile.

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:L'incredibile impossibile...
« Risposta #2 il: 27 Luglio 2010, 19:09:03 CEST »
Perlomeno mi pare così, ma se è vero, che ne pensate?

Diciamo che è impossibile farlo tramite delle apposite API, ma se vuoi intraprendere una strada lunga e tenebrosa che potrebbe non portarti da nessuna parte potresti a chiamare tramite reflection il metodo answerRingingCall presente all'interno dell'interfaccia com.android.internal.telephony.ITelephony.

Prova a dare un occhio qui: Reflection to access advanced telephony features - Stack Overflow
« Ultima modifica: 28 Luglio 2010, 10:22:40 CEST da Ricky`, Reason: correzione »

Offline vicvondoom

  • Utente junior
  • **
  • Post: 71
    • Mostra profilo
    • vicvondoom
  • Dispositivo Android:
    Sony XPeria U
  • Play Store ID:
    Orlando Davide
  • Sistema operativo:
    Windows 8
Re:L'incredibile impossibile...
« Risposta #3 il: 27 Luglio 2010, 20:39:58 CEST »
:)
Ma questo si che è interessante!! Un colpaccio!!
Grande Ricky!! Grazie!!
Mi butto a capofitto!

Un felice Dave :)
"Non c'è cattivo più cattivo di un buono quando diventa cattivo!" Bud Spencer in 'Chi trova un amico trova un tesoro'.

Offline vicvondoom

  • Utente junior
  • **
  • Post: 71
    • Mostra profilo
    • vicvondoom
  • Dispositivo Android:
    Sony XPeria U
  • Play Store ID:
    Orlando Davide
  • Sistema operativo:
    Windows 8
Re:L'incredibile impossibile...
« Risposta #4 il: 30 Luglio 2010, 17:05:34 CEST »
Mumble.. ho scartabellato tra il tuo link e altri trovati..un pò complesso, più che altro gli stralci di codice trovati non sono autoesplicativi NOR specifici al problema dell'aggancio chiamata da software.. praticamente, guardando qua e là, si potrebbe usare la reflection per beccare i metodi che si intenderebbe chiamare, ma il mio kung-fu, pardon, java è un pò arruginito (servirebbe usare JNI giusto?)
Un'altra soluzione è importare il codice di com.android.internal.telephony dai repository ufficiali e c'è molta gente che chiede come fare.. in realtà sembra banale, basterebbe usare git e repo (android.git.kernel.org Git e Get Android Source Code | Android Open Source), ci proverò nel uichend :)
Però è interessante notare, per esempio sui gruppi ufficiali di google, come "certe" persone sconsiglino vivamente di fare ciò! Puzza di controllo delle masse :)
Mah, io ce provo, se ho nuove, visto che ti ho "trovato" (almeno credo) interessato all'argomento anche su altre discussioni, ti dico quaccheccosa, ciao!

Davide.
"Non c'è cattivo più cattivo di un buono quando diventa cattivo!" Bud Spencer in 'Chi trova un amico trova un tesoro'.

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:L'incredibile impossibile...
« Risposta #5 il: 30 Luglio 2010, 17:24:49 CEST »
Hai visto questo progetto??

http://tinyurl.com/35bzzsn

Praticamente devi utilizzare il file .aidl per la dichiarazione della classe (andando a metterla nel correto package) e poi la carichi con questo metodo:
Codice (Java): [Seleziona]
          try
            {
                    // "cheat" with Java reflection to gain access to TelephonyManager's ITelephony getter
                    Class c = Class.forName(tm.getClass().getName());
                    Method m = c.getDeclaredMethod("getITelephony");
                    m.setAccessible(true);
                    telephonyService = (ITelephony)m.invoke(tm);

            } catch (Exception e) {
                    e.printStackTrace();
                    Log.e("call prompt","FATAL ERROR: could not connect to telephony subsystem");
                    Log.e("call prompt","Exception object: "+e);
                    finish();
            }

A quel punto puoi chiamare i vari metodi.

Offline vicvondoom

  • Utente junior
  • **
  • Post: 71
    • Mostra profilo
    • vicvondoom
  • Dispositivo Android:
    Sony XPeria U
  • Play Store ID:
    Orlando Davide
  • Sistema operativo:
    Windows 8
Re:L'incredibile impossibile...
« Risposta #6 il: 30 Luglio 2010, 17:30:29 CEST »
Azz. non mi apre la pagina web..ma è un link che mi avevi già messo noto.
Riguarda la reflection giusto?  Ma l'oggetto tm sarebbe il TelephonyManager giusto?
E poi telephonyService lo si userebbe per invocare metodi non documentati? Ci azzecco o dico minkiate? :)
In effetti sarebbe un buon punto di partenza
"Non c'è cattivo più cattivo di un buono quando diventa cattivo!" Bud Spencer in 'Chi trova un amico trova un tesoro'.

Offline vicvondoom

  • Utente junior
  • **
  • Post: 71
    • Mostra profilo
    • vicvondoom
  • Dispositivo Android:
    Sony XPeria U
  • Play Store ID:
    Orlando Davide
  • Sistema operativo:
    Windows 8
Re:L'incredibile impossibile...
« Risposta #7 il: 18 Agosto 2010, 16:28:16 CEST »
Funziona!
L'impossibile adesso è playare un file 3gpp al chiamante...qui proprio non c'è verso, l'hardware stesso non lo permette...evabbè..
"Non c'è cattivo più cattivo di un buono quando diventa cattivo!" Bud Spencer in 'Chi trova un amico trova un tesoro'.