Creative Commons Lizenzvertrag

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.
Marmel powered by Instant Communities