Creative Commons Lizenzvertrag

Donnerstag, 24. Januar 2013

Telefonieren mit dem Galaxy Tab 10.1N

Das Samsung Galaxy Tab 10.1N (P7501) hat zwar ein GSM Modul, aber damit kann man nicht telefonieren. Gleiches gilt für das Galaxy Tab 10.1 (P7500). SMS kann man damit allerdings versenden und empfangen. Die neueren Modelle Tab 2 erlauben allerdings Telefonate. Wenn man SMS versenden und empfangen kann dann sollte es eigentlich auch möglich sein zu telefonieren. Ein wenig googlen und man findet eine Lösung. Die Entwicker von xda-developers haben eine Lösung die recht einfach ist. Sie funktioniert sowohl mit dem Original-ROM als auch mit Custom-Roms. Einzige Vorraussetzung ist ein Tablet mit einen freien Recovery. Wer noch kein entsprechendes Recovery hat muss sich dieses als erstes installieren. Ich benutze ClockworkMod und habe es mit Odin geflasht.

Nun müsst ihr nur 2 Zip-Dateien laden wobei eine abhängig ist welche Firmware ihr verwendet. Die beiden Dateien findet ihr auf xda-developers. Dies ladet ihr am besten ins Wurzelverzeichnis der (eingebauten) SD-Karte eures Tablets. Danach nur noch euer Gerät im Recovery Modus starten. und dann "Install from SD Card" auswählen. Dann die beiden Dateien auswählen und installieren. Dabei hat es sich als praktisch erwiesen zuerst CWM_I9103XXLQ3_Modem.zip zu installieren. Danach die Voice_Call_Enable_XXX.zip installieren, wobei XXX für euer verwendetes ROM steht. Danach müsst ihr euer Tablet nur neu booten und schon habt ihr ein Galaxy Tab 10.1 bzw. 10.1N welches eine Telefonfunktion besitzt. Wer ganz sicher gehen will kann vorm Reboot noch ein "Wipe Cache & Dalvik Cache" durchführen, aber dies ist im Prinzip nicht notwendig. Bei mir funktionierte es problemlos ohne.


Samstag, 19. Januar 2013

Google+ als RSS-Stream

Google+ bietet ja von Hause kein RSS an. Es gibt aber viele Seiten die euren Stream in RSS wandeln. Wer aber will kann dieses auch anders lösen. Der Google+ Stream kann per API abgerufen werden und man erhält die Daten als JSON-Objekt. Dieses ist nur in das RSS-Format umzuwandeln. Die Umwandlung geht wiederum recht einfach, entweder ein kleines Script in einer Sprache eurer Wahl auf eurem Server oder auch  clientseitig per Javascript ist dies möglich. Beachtet dabei aber das die Aufrufe der Google+ API limitiert sind. Wem dieses Limit nicht ausreicht der kann dieses Limit kostenpflichtig erhöhen. 

Eine weitere Möglichkeit ist es die Yahoo-Pipes zu benutzen. Ich habe diese benutzt und rufe die RSS-Ausgabe der Pipe dann mit Feedburner ab und Poste dann in Twitter. Das Limit erreiche ich mit dieser Variante nicht. 

In einer neuen Pipe braucht man nur 3 Elemente. Das erste Element ist "Fetch Data" und holt die Daten von Google+ und  gebt als auszuwertenden Pfad "items" an. Die Adresse für die Daten lautet: https://www.googleapis.com/plus/v1/people/EUREGOOGLEPLUSID/activities/public?alt=json&pp=1&key=EUERKEY

EUREGOOGLEPLUSID ist dann die entsprechende ID für euren Account oder auch für eure Seite, welche ihr bei Google+ besitzt. EUERKEY ist das entsprechende Zugriffstoken welches ihr auf der Google API Console erhaltet. Dazu müsst ihr dort ein Projekt anlegen und die Google+ API einschalten und dann den entsprechenden Key generieren.

Das zweite Element in der Pipe ist "Rename" und wandelt die Namen der Einträge des empfangenen JSON-Objekts in die Namen für RSS um. Was genau umgewandelt erden muss ist im Screenshot zu sehen.

Und das dritte Element ("Pipe Output") gibt dann nur noch die Daten aus. Diese können dann per RSS abgerufen werden.

Freitag, 2. November 2012

Muss man Leser an den Blog binden?

Diese Frage stellte ich mit als ich das Wochenthema des WebmasterFriday las. Wer mich kennt weiß ja das ich mich fast nie an solchen Aktionen beteilige. Aber irgendwie kam bei mir eben die Frage auf muss man Leser wirklich an sein Blog binden? Ich meine NEIN oder doch JA. Die Frage ist eben nicht mit einen klaren Ja oder Nein zu beantworten. Es kommt meiner Meinung nach auf die Art und die Inhalte des Blogs an. Normale 081-Blogs welches die meisten ja sind, müssen Leser binden und sich darüber Gedanken machen. Spezial Blogs die nur ein Thema behandeln welches vielleicht noch sehr speziell ist brauchen sich darüber keine Gedanken machen. Da reichen die Inhalte um Leser anzulocken.

Je spezieller das Thema ist um so größer ist dieser Effekt. Zu dieser Erkenntnis bin ich jedenfalls gekommen. Mir persönlich ist es egal wer hier oder auf meinen anderen Seiten etwas liest. Schon gar nicht erwarte ich das Leser hier jeden Tag herkommen, dazu schreibe ich zu selten. Oft kommt es vor das ich nur einen Post im Monat bringe und was sollen die Leser dann in der Zwischenzeit hier? 

Manchmal verbinde ich auch meine Blogs, besonders dann wenn es Postings sind die auf mehreren Blogs stehen könnten. Dort erhalten Leser auf einem Blog nur die ersten Zeilen und beim Klick auf "Weiterlesen"  werden sie dann automatisch auf den Originalpost auf einem anderen Blog umgeleitet.

Für mich ist es wichtig das wenn ich etwas schreibe es die richtigen Leser erreicht. Und die kommen von ganz alleine wie die Analyse der Seiten zeigt. Wichtig ist nur das die Leser informiert werden wenn etwas neues geschrieben wurde. Um dies zu erreichen benutze ich soziale Netzwerke, hauptsächlich Google+ und Twitter. Facebook benutze ich dagegen relativ selten um nicht zu sagen fast nie. Zusätzlich bite ich die Inhalte noch mobilgerecht aufgearbeitet bei Google Currents an. Oftmals lohnt es sich auch gar nicht einen kompletten Post zu schreiben, dann veröffentliche ich nur ein paar Zeilen zum Thema bei Google+.

Die Analyse der Zugriffe gibt mir insofern recht das dies funktioniert indem sich die Besucherzahlen nach einem Posting ungefähr um das bis zu 100fache ansteigen. Für mich sind wichtig die Inhalte die ich publiziere und nicht die Reaktionen der Leser. Dies finden auch statt durch retweeten, 1+ geben und was weiß ich noch. Allerdings soll dies nicht heißen das mir die Leser egal sind, sondern ich will durch Inhalte überzeugen und nicht durch technische Maßnahmen. Allerdings reagiere ich auf Kommentare wenn man reagieren muss wie bei gestellten zusätzlichen Fragen. Bei reinen Zustimmungen zum Inhalt reagiere ich meistens aber nicht.

Und nun zum Schluß noch eine Nachricht die sich viele Blogbetreiber wahrscheinlich überhaupt nicht vorstellen können: Ich schließe bestimmte Usergruppen von meinen Blogs komplett aus und leite sie automatisch an das Ende des Internets. Dies werde ich allerdings noch ändern und es komplett hier realisieren. 

Samstag, 20. Oktober 2012

Android Programmierung unter Google TV

Über meine Erfahrungen mit Google TV als User hatte ich ja bereits berichtet und heute schreibe ich über meine Erfahrungen der Programmierung. Google TV ist ja im Prinzip nichts weiter als ein Android Gerät mit ein paar Besonderheiten. Ich möchte hier nicht alle Aspekte beleuchten sondern nur meine eigenen Erfahrungen bei der Anpassung von Andlin, dem Android-Client für weblin mitteilen.

Montag, 15. Oktober 2012

Google TV - Ein erster Eindruck

Seit Anfang Oktober gibt es ja die Google TV Box NSZ-GS7 von Sony offiziell in Deutschland. Nachdem ich mir vorige Woche eine direkt kaufen wollte und ich feststellen musste das sie überall bei mir in der Umgebung entweder noch nicht im Sortiment der Händler ist bzw, bei denen die sie bereits führen bereits vergriffen ist habe ich mir sie bestellt. Und heute wurde sie geliefert und ich konnte sie testen. 

Der Anschluß der Box war ganz unproblematisch. HDMI Kabel vom Sat-Receiver in den HDMI-Eingang der Box und den HDMI-Ausgang der Box in den Fernseher und dann noch den die Stomversorgung herstellen und das war es bei mir. Wer möchte kann auch noch ein LAN-Kabel zum Router verlegen, aber ich bevorzugte die WLAN-Anbindung. Als erstes kam auf dem Bildschirm eine Anleitung wie man die Batterien in die Fernbedienung der Box einlegen muss. Danach startete die Box mit dem Setup. Das war eigentlich unproblematisch. 

Nur mir ist es nicht gelungen den Sat-Receiver der Box bekanntzumachen. Damit kann ich die Fernbedienung der Box nicht für den Sat-Receiver mit benutzen. Für den Fernseher ging es allerdings ohne Probleme. Ich werde mal sehen ob ich noch ein baugleiches Gerät finde welches ich dann dort eingeben kann. Nach dem Start der Box erfolgte sogleich ein Systemupdate. Die Qualität der Ausgabe (1080p) finde ich hervorragend. Alle Funktionen sind zu meiner Zufriedenheit. Der einige Kritikpunkt an der Hardware ist die Fernbedienung, mir ist sie eindeutig zu schwer.

Was ein wirklich störend ist sind die nur wenigen vorhandenen Apps. Das ist aber kein Problem von Sony, sondern liegt daran, dass die App-Entwickler ihre Apps nicht für Google TV bereitstellen. Entäuschend fand ich allerdings dass selbst die meisten Apps von Google nicht zur Verfügung stehen. Es gibt kein Google+, kein GMail, kein Google Drive, kein Google Maps usw. Diese Funktionen muss ich eben dann über den Browser benutzen. Wenigstens ist Google Chrome vorinstalliert. Für Freunde des Fuchses gleich noch die Mitteilung auch FireFox ist nicht für Google TV zur haben. Auch die Facebook-App steht nicht zur Verfügung. Auch habe ich noch keinen Virenscanner gefunden. Insgesamt ist das Angebot an Apps also noch sehr dürftig.

FAZIT: Insgesamt gut, aber noch nicht ausgereift, es fehlen vor allen noch Apps.

Montag, 1. Oktober 2012

ShowDialog unter Android

In den Dot.Net-Sprachen gibt es die Möglichkeit mit ShowDialog() ein Programm anzuhalten bis der Dialog beendet ist. Diese Möglichkeit gibt es so ohne weiteres in Android nicht. Der AlertDialog.Builder kennt nur ein show() und diese Funktion hält das aufrufenden Programm nicht an. Um eine modale Darstellung zu bekommen ist es am einfachsten dies mir einer eigenen Klasse zu realisieren die man aus der Klasse Dialog ableitet. Für die Darstellung muss noch ein Layout in einer XML-Datei erstellt werden. Dies lasse ich hier einfach mal weg, jeder der Androidprogramme entwickelt sollte dazu in der Lage sein. Das Beispiel macht nichts weiter als zu warten bis der OK bzw. Abbrechen-Button geklickt wurde. Zusätzliche Funktionalität muss jeder selbst noch implementieren. Hier der entsprechende Quelltext:


   1:  public enum DialogResult{Cancel, Ok}
   2:   
   3:  public class InputDialog extends Dialog{
   4:      private DialogResult dialogResult;
   5:      private Handler mHandler ;
   6:   
   7:      public InputDialog(Activity context){
   8:          super(context);
   9:          setOwnerActivity(context);
  10:          onCreate();
  11:          this.setTitle(context.getString(R.string.app_title));
  12:      }
  13:      
  14:      public DialogResult getDialogResult(){
  15:          return dialogResult;
  16:      }
  17:      
  18:      private void setDialogResult(DialogResult dialogResult){
  19:          this.dialogResult = dialogResult;
  20:      }
  21:      public void onCreate(){
  22:          setContentView(R.layout.inputdialog);
  23:          findViewById(R.id.cancel).setOnClickListener(View.OnClickListener() {
  24:   
  25:              @Override
  26:              public void onClick(View paramView){
  27:                  endDialog(DialogResult.Cancel);
  28:              }
  29:          });
  30:          findViewById(R.id.ok).setOnClickListener(new View.OnClickListener(){
  31:   
  32:              @Override
  33:              public void onClick(View paramView){
  34:                  endDialog(DialogResult.Ok);
  35:              }
  36:          });
  37:      }
  38:      
  39:      public void endDialog(DialogResult result){
  40:          dismiss();
  41:          setDialogResult(result);
  42:          Message m = mHandler.obtainMessage();
  43:          mHandler.sendMessage(m);
  44:      }
  45:   
  46:      public DialogResult showDialog() {
  47:          mHandler = new Handler() {
  48:               @Override
  49:                public void handleMessage(Message mesg){
  50:                  throw new RuntimeException();
  51:                }
  52:          };
  53:          super.show();
  54:          try{
  55:              Looper.getMainLooper().loop();
  56:          }
  57:          catch(RuntimeException e){
  58:              if ((BuildConfig.DEBUG) && (e != null)
  59:                      && (e.getMessage() != null))
  60:                  Log.e(LOG, e.getMessage());
  61:          }
  62:          return dialogResult;
  63:      }
  64:   
  65:  }

Dieser muss nur noch angepasst werden und damit sind dann modale Dialoge unter Android möglich.

Donnerstag, 20. September 2012

Bedingte Compilierung und Versionierung unter Java

Leider kennt ja Java keinen Präprozessor-Anweisungen wie die C-Sprachen. Gerade die Möglichkeiten der bedingten Compilierung fehlen hier. Aber es gibt mindestens 2 Ersatz-Lösungen:

Montag, 27. August 2012

Warum ich kein Nexus 7 will

Seit heute gibt es ja das Google Nexus 7 offiziell in Deutschland zu kaufen. Ein eigentlich schönes Tablet, was mir persönlich aber nicht zusagt. Folgende Punkte sind dies besonders:



  1. Kein GSM/UMTS/LTE enthalten.
    Damit ist für mich das Gerät nicht mobil nutzbar. Viele sagen nun du hast doch ein Handy dabei dann nutze dies um ein mobiles Internet per Tethering/Hotspot auf dem Nexus 7 zu benutzen. Dies ist aber leider nur bedingt möglich. Ich bin darauf angewiesen Telefon und Internet gleichzeitig zu benutzen und dies ist damit leider nur in 3G-Netzen und höher uneingeschränkt möglich. Unterwegs im Zug oder auch Auto und auch oftmals in Gebäuden steht leider nur 2G zur Verfügung und damit ist dieses nicht möglich da die Provider kein DTM unterstützen. Zusätzlich gibt es das Problem das fast alle Androidgeräte (und auch viele andere) während des Telefonierens in den GSM-Modus umschalten!
  2. Formfaktor 7 Zoll
    Für mich ist 7 Zoll zu klein, ich habe es getestet. Ich kann 10 Zoll Geräte ohne Probleme in einer Hand halten und auch bedienen. Ich bin ja Entwickler und entwickle Apps zum Teil direkt auf dem Gerät und da ist ein größerer Bildschirm auf alle Fälle besser.Auch das Ansehen von Fotos, Filmen oder TV ist einfach auf einem 10 Zöller besser.
  3. Fehlender SD-Slot 
    Auf diesen könnte ich notfalls verzichten, aber mir sind die max. 16 GB leider zu wenig. Besser wären 64 GB oder ein Slot zur Aufnahme von SD-Karten. Natürlich ist dies ein geringeres Problem da es ja möglich ist externe Datenträger per USB anzubinden.
Da ich allerdings bereits ein 10 Zoll Tablet besitze brauche ich zur Zeit kein weiteres Tablet. Sollte es allerdings irgendwann mal ein Nexus 10 mit GSM/UMTS/LTE geben würde ich dieses Tablet allen anderen vorziehen, alleine schon aus Gründen der Update-Politik der Hersteller. Mit einem Nexus egal ob Tablet oder Smartphone ist man eben immer auf dem aktuellsten Stand von Android. Zumindest für einen längeren Zeitraum als bei anderen Geräten.

Ich persönlich sehe das Nexus 7 so wie es jetzt verkauft wird als Einsteigermodell an und wünsche allen denen die es kaufen viel Spaß damit.

Montag, 6. August 2012

Google Music API

In meinem Radio Player, ein Programm welches Radiostreams, CDs und MP3-Files abspielt und dann die Titel in verschiedene soziale Netzwerke posten kann wollte ich auch das abspielen von Songs die bei Google Music gespeichert sind ermöglichen. Leider stellt Google dazu (bisher?) keine API zur Verfügung. Allerdings gibt es dazu Alternativen. ich habe bisher folgende gefunden:

Freitag, 27. Juli 2012

Das HTC Desire HD Disaster [UPDATE]

Ich gehöre ja zu den zahlreichen Besitzern eines HTC Desire HD (DHD). Als ich es vor ca. 1,5 Jahren kaufte hatte es noch Android 2.2 und ich war eigentlich zufrieden. Später gab es dann ein Update auf die Version 2.3.5 mit dem Ergebnis das es stellenweise langsamer wurde. Ob die gefühlt ist oder real sei dahingestellt, aber die Batterie hielt auf alle Fälle bei mir danach länger. Mag sein das andere User da andere Erfahrungen haben. Ich war aber schon etwas verärgert das HTC es nicht schafft seine Geräte zügig auf Android 4.0 zu bringen. 
Das allerdings das Update bestätigt wurde, um es danach 2 Tage später endgültig abzusagen ist mehr als eine Frechheit. Darüber bin ich nun echt sauer. Das DHD ist von der Verarbeitung eigentlich ein gutes Smartphone und nicht so einfacher Plastikmüll. HTC begründet nun die Absage mit fehlender „User Experience“, was auch immer dies sein soll. Dies ist in meinen Augen nur eine vorgeschobene Begründung seitens HTC zumal es zur Zeit keine weiteren Erklärungen dazu gibt. Die XDA-Developers-Community hat ja bewiesen das es geht. Auch wenn es bei deren Custom-ROMs noch Einschränkungen gibt, was aber an den ihn fehlenden Treibern liegt. Unverständlich auch bei vielen Usern ist das leistungsärmere Geräte von HTC trotzdem ein Update bekommen. Das dies dann zum Teil heftige Reaktionen im Netz auslöst ist dann auch nicht verwunderlich. Auch eine entsprechende weltweite Petition gibt es.
In meinen Augen wäre es ehrlicher gewesen wenn HTC von Anfang an gesagt hätte das DHD bekommt kein Update. Ich glaube es gibt nur kein Update weil HTC möchte das ihr neues Flagschiff das HTC One gekauft wird. Ob dies wirklich soviel besser ist? Dazu gibt es viele gegenteilige Meinungen, ich kann es nicht beurteilen. Würde HTC wirklich seine Kunden binden wollen würden sie jetzt nicht de Kopf in den Sand stecken und das Update wenigestens für Interessierte zum Download anbieten bzw. die Quellen den Leuten von XDA.Developpers zur Verfügung stellen. Auch eine großzügiger Umtausch des DHD zu einem One (gegen geringe Gebühr (ca. 10% z.B.)) wäre eine geeignete Maßnahme. Sollte HTC nicht bald vernünftig reagieren, werden bestimmt viele User keine HTC-Geräte mehr kaufen, zumal sie den selben Fehler ja bereits beim HTC Desire (ohne HD) gemacht hatten. Zur Zeit sieht es so aus als möchte HTC das Problem aussitzen.
Ich werde jedenfalle keine HTC Geräte mehr empfehlen, was ich bisher gerne getan habe. Ich entschuldige mich bei allen die wegen mir ein HTC haben und nun enttäuscht sind. Wenn mein nächstes Gerät ansteht wird es auf alle fälle eins aus der Nexus Serie, wer auch immer dann der Hersteller sein wird. Wenn HTC so weiter macht wird es so wie Nokia bald in der Bedeutungslosigkeit versinken.

Das größer Disaster ist für mich allerdings das es mir nicht gelingt ein Costom-ROM auf mein DHD zu bringen. Das Gerät ist zwar gerootet, aber mehr geht aus mir unbekannten Gründen nicht. Es ist mir nicht gelungen das Gerät in den S-Off Modus zu bringen und dann ein Rcovery wie z.B. ClockWorkMod Recovery zu flashen. Dadurch kann ich dann auch kein Custom-ROM aufspielen. Sämtliche Anleitungen im Internet funktionierten bei mir bisher nicht. Sollte wer noch eine mir bisher unbekannte neue Lösung haben würde ich mich freuen.


[UPDATE  28.07. 2012]
HTC hat inzwischen bekanntgegeben dass sie kein Update bringen können weil dann der Speicher neu partitioniert werden müsste und da dann  ja alle Daten verloren gehen kann man das dem User nicht zumuten. Verdammt noch mal dann bietet es wenigstens für Interessierte an. Die Daten kann man vorher ja auch sichern. Ihr vergrault (potentielle) Kunden immer mehr durch solche Aussagen. Der kunde ist also dumm? Ich dachte bisher immer das nimmt nur Apple von seinen Kunden an.


[UPDATE  04.08. 2012]
Inzwischen ist es mir gelungen af mein DHD ein ICS Custom ROM aufzuspielen. Das es nicht ging bisher lag an einer defekten SD-Karte.
Marmel powered by Instant Communities