VoIP über Hörmuschel, ohne freisprechen

5 bin sind um :-D ich will die gefixte version :D:D
 
Okay, inzwischen funktioniert meine ADB wieder (komisch, letzte Woche ging sie noch, musste neue Treiber installieren -.-) und smali hab ich auch wieder runter geladen (komisch, das hab ich auf dem PC schon benutzt...), Ergebnis:

Viel viel Code, Verweise auf sipdroid :D und lustigerweise untersucht die App anscheinend schon welches Gerät es ist. Z.B. scheint es beim GalaxyS einen Unterschied zu machen ob es 2.1 oder 2.2 hat.
Die Stelle wo er auf den Speaker umschaltet hab ich noch nicht gefunden.

Edit: Ich überlege ob ich dem Ding einfach sage das Gerät hat 1.6....
 
Wenn der typ aus dem modaco forum auf anhieb die Hörmuschel freigeschaltet hat, dann wollte skype wohl Ärger mit den Anbietern vermeiden. Schließlich ist der bug ja nicht zwei Tage alt.
 
FelixL schrieb:
Die Stelle wo er auf den Speaker umschaltet hab ich noch nicht gefunden.

Ich kann nur wieder hier drauf verweisen:
On Orange San Francisco there problem seems to be related to not working am.setSpeakerphoneOn call. Old am.setMode call sets correct speaker.I am attaching my build with forced am.setMode call (and due to build problems commented some Bluetooth calls).

Das hatte er bei Sipdroid geändert damit's über die Hörmuschel kommt.
 
Das Problem ist das ich nicht mit dem Originalcode arbeiten kann sondern .smail-Dateien verwenden muss. Alle Variablen (auch die die früher einen sinnvollen Namen hatten) heißen v1,v2,v3... und so weiter. Dann kommen da hunderte Dateien raus. Ich glaub aber ich hab die Stelle gefunden. Nachdem ich jetzt eine halbe Stunde Text-Dateien mit Tastenkombinationen aufgemacht, nach "speak" durchsucht, geschlossen und zur nächsten gewechselt habe (5 Sekunden pro Datei :p). Mir tun die Finger weh :D

jedenfalls kommt
Landroid/media/AudioManager;->setSpeakerphoneOn(Z)V
in org/sipdroid/media/RtpStreamReceiver dreimal vor. Ich werde mal versuchen alle zu ersetzen, und noch ein bisschen weiter suchen, falls in den Unterdateien von RtpStreamReceiver nochmal was vorkommt.
 
FelixL schrieb:
Nachdem ich jetzt eine halbe Stunde Text-Dateien mit Tastenkombinationen aufgemacht, nach "speak" durchsucht, geschlossen und zur nächsten gewechselt habe (5 Sekunden pro Datei :p). Mir tun die Finger weh .

Dumme Frage: warum kein grep?
 
Weil ich das ganze auf Windows gemacht habe und grep bisher nicht kannte :p
Ich schau mal was findstr ausgibt. Danke auf jeden Fall für die Hilfe!

Edit:
Danke, findstr bestätigt was ich gefunden habe:

C:\Users\Felix\apks>findstr /s /i setSpeakerphoneOn *.*
Fritz\smali\org\sipdroid\media\RtpStreamReceiver.smali: invoke-virtual/range
{v27 .. v28}, Landroid/media/AudioManager;->setSpeakerphoneOn(Z)V
Fritz\smali\org\sipdroid\media\RtpStreamReceiver.smali: invoke-virtual {v1, v
3}, Landroid/media/AudioManager;->setSpeakerphoneOn(Z)V
Fritz\smali\org\sipdroid\media\RtpStreamReceiver.smali: invoke-virtual {v1, v
2}, Landroid/media/AudioManager;->setSpeakerphoneOn(Z)V
 
Zuletzt bearbeitet:
Okay, ich hab alle möglichen Code-Kombinationen ausprobiert, und rausgefunden das smali fies und gemein ist. Da wird mit Registern gearbeitet, und es lassen sich im smali-Code laut Doku keine Register zwischendrin einfach so hinzufügen. Hab das ausprobiert, die Doku hat Recht :D
Habs aber inzwischen (die letzten 5 Minuten, die 5 Stunden davor waren sinnlos :D) geschafft die bestehenden Register so zu manipulieren das ich das folgende Verhalten habe:
Ich rufe an
-->Ton ist auf Lautsprecher
-->Drücke Lautsprechertaste unten rechts
-->Ton ist in der Ohrmuschel :)
Ich lege auf und spiele Musik ab....
-->Ton ist in der Ohrmuschel :D

Der erste Fehler (Ton auf Lautprecher) liegt wohl daran das eine der drei Manipulationen nicht funktioniert. Der zweite Fehler (Ton bleibt nach dem Auflegen auf Ohrmuschel) liegt daran das eine der Manipulationen zu viel war.
Morgen mache ich vielleicht weiter, allerdings schreibe ich Donnerstag und Freitag nochmal zwei Klausuren, die ich vorbereiten muss.
Die Lösung ist aber auf jeden Fall der Wechsel der Methode, wie es die Leute von Sipdroid gesagt haben.

Die gepatchte apk von Sipdroid enthält die falsche Methode natürlich nicht mehr.
 
Denkst du du kriegst da was tolles noch für uns hin :) ?
 
Er ist ja nahe dran, und hat schonmal die richtigen Dateien vor sich liegen. Ich denke nicht das er jetzt aufgibt ;)
 
Wie gesagt frühestens am Wochenende, aber aufgegeben wird nicht. Im Moment bin ich außerdem bei meiner Freundin, und ohne Fritzbox lässt sich das ganze schlecht testen ;)
Hat denn inzwischen jemand Fritz angeschrieben? wenn nicht dann mache ich das Samstag.
 
Also du kannst auch ohne das du direkt bei deiner fritzbox bist machen wenn du ein dyndns eingerichtet hast ( auch auf den sip dienst) ;-)
 
Hab ich leider nicht. Hat das schon mal jemand ausprobiert? Ansich müsste man dann ja kostenlos von zu Hause telefonieren können...
Würde ein VPN auch gehen?

Ich hab auch gerade nochmal in den Code reingesehen, hab den Fehler in meinen Änderungen gefunden, der dafür sorgt das es nicht abschaltet wenn das Gerät vorbei ist, und muss jetzt nur nochmal zwei Testläufe machen für die 3. Stelle, ob die ein Speaker an oder ein Speaker aus sein muss.


Edit: Hammer, die App steht unter GNU-Lizenz, ich kann den Source-Code anfragen :D
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: art78250
Felix komm in die Gänge. Du schaffts das :)
 
Ich lade auch gerade mal die Labour-Version runter, vielleicht ist es da schon gefixt (in der Info dazu wird was in die Richtung erwähnt).
Kann ja vielleicht auch mal jemand der Zuhause ist machen. Ich kann es wie gesagt nicht einfach ausprobieren, sondern muss im Code schauen ob ich was finde.

AVM - FRITZ!App Fon für Android


Edit: Anscheinend kein Fix für das Lutea oder Blade enthalten. Da wo das Gerät untersucht wird sind alle anderen immer noch drin (Milestone, Galaxy S 2.1, Galaxy S 2.2, Defy....) aber das Blade oder das Lutea werden nicht erwähnt, und die Stelle an der setSpeakerphone benutzt wurde benutzt es immernoch :/
Vielleicht geht es ja trotzdem, weil sie es irgendwie anders unterscheiden?


NochEinEdit:
http://www.avm.de/de/Service/Service-Portale/Labor/app_android/labor_feedback_versionen.php
das ist der genaue Changelog, da wäre es erwähnt :(

NochEinNochEinEdit: Hab die mal angeschrieben. Mal schauen was bei raus kommt :)
 
Zuletzt bearbeitet:
Zu früh gefreut, das mod.skype lässt mit dem start alles über die Hörmuschel laufen auch App-Töne ect.
Hatte es allerdings schon deinstalliert ohne zu testen, ob der Lautsprecherbutton den Ton wieder umlenkt.
 
Fritz antwortet nicht auf meine Email. Ich werde die App morgen mal ordentlich reparieren, und dann hier online stellen. Mittwoch schreibe ich Fritz nochmal ne Mail.
Den Fehler den die mod.skype hat hab ich z.B. teilweise bei der Fritz-App auch noch.
 
  • Danke
Reaktionen: art78250
Hallo Felix, gibts schon was neues?
 
Sorry, bin nicht dazu gekommen, setze mich gleich noch mal dran. Fritz antwortet aber auch nicht -.-
 
  • Danke
Reaktionen: art78250
Hab jetzt nochmal dex2jar und JD-gui bemüht, aber was der ausspuckt führt mich auch nicht zur Erleuchtung. Genau an der wichtigen Stelle fehlt was -.-

Nur mal ein Auszug:
Code:
public void setMode(int paramInt, boolean paramBoolean)
  {
    SharedPreferences.Editor localEditor1 = PreferenceManager.getDefaultSharedPreferences(Receiver.mContext).edit();
    SharedPreferences.Editor localEditor2 = localEditor1.putBoolean("setmode", 1);
    boolean bool = localEditor1.commit();
    if (BuildHelper.isOs1())
      this.am.setMode(paramInt);
    while (true)
    {
      Receiver.onSpeakerChanged();
      return;
      if (!paramBoolean)
        break;
      if (!this.am.isSpeakerphoneOn())
        continue;
      [B]this.am.setSpeakerphoneOn(0);[/B]
    }
    int i = this.am.isSpeakerphoneOn();
    label94: AudioManager localAudioManager;
    if (paramInt == 0)
    {
      int j = 1;
      if (i == j)
        break label130;
      localAudioManager = this.am;
      if (paramInt != 0)
        break label132;
    }
    [B]int m;
    label130: label132: for (int k = 1; ; m = 0)
    {
      localAudioManager.setSpeakerphoneOn(k);[/B]
      break;
      m = 0;
      break label94;
      break;
    }

Die obere Stelle ist nicht das Problem, das hab ich im smali-Code richtig umgesetzt, da dort der Speaker immer ausgeschaltet wird ist das nicht schwer gewesen. Aber der untere Kram....
die nächste Preisfrage wäre dann auch: am.isSpeakerphoneOn()
funktioniert das auch noch wenn man statt setSpeakerphoneOn setMode benutzt?

Das wäre so viel einfacher wenn Fritz antworten würde :D
 
  • Danke
Reaktionen: art78250

Ähnliche Themen

R
Antworten
4
Aufrufe
952
citral
citral
B
Antworten
0
Aufrufe
1.255
Big Dunker
B
WAWA
Antworten
1
Aufrufe
1.173
aqua1
A
Zurück
Oben Unten