Microsoft Research TouchStudio Microsoft Research TouchStudio - Seite 2
Seite 2 von 8 ErsteErste ... 23 ... LetzteLetzte
Ergebnis 21 bis 40 von 148
  1. 12.04.2011, 20:39
    #21
    Also das mit dem Live tile wäre wohl SEHR aufwendig zu programmieren... entweder für uns oder für MS...
    0
     

  2. Beispiel "Musik-Scanner":
    (Dieses Script besteht nur aus der einen action "scan".)

    Scanprogramm, welches alle Songs für eine vom Benutzer gewählte Zeit (in Sekunden) anspielt.
    Beim Start des Scriptes wird vom Benutzer die gewünschte Anspieldauer in Sekunden erfragt.
    Anschließend werden die gewählte Zeit (Sekunden) pro Titel und die Gesamtanzahl der Titel ausgegeben. Während das Script läuft, wird der aktuelle Titel bzw. dessen Index-Nummer angezeigt.

    Da TouchStudio nicht den Lockscreen deaktivieren kann, stoppt/pausiert das Script beim Bildschirmschoner und der Player spielt das aktuelle Lied weiter (ohne Zeitbegrenzung).
    Wer den gesamten Scanvorgang über eine längere Zeit durchlaufen möchte, sollte zuvor in den Einstellungen den Bildschirmschoner deaktivieren.
    Code:
    action scan():Nothing
    x:= 0
    wait:=phone -> number box("Wie viel Sekunden soll das Lied angespielt werden?")
    wait -> post to wall
    "Sekunden pro Titel" -> post to wall
    "   " -> post to wall
    titel:= media -> songs -> count
    titel -> post to wall
    "Titel gesamt" -> post to wall
    "   " -> post to wall
    "Aktueller Titel:" -> post to wall
    for 0 < i < titel do
       player -> play(media -> songs -> get(i))
       x:= i + 1
       x -> post to wall
       phone -> sleep(wait)
    Wie man(n) an dem beigefügten Screenshot erkennt, habe ich insgesamt 51 Songs auf dem Handy und eine Anspielzeit von 10 Sekunden gewählt. Der Screenshot wurde während des 5. Songs angefertigt.

    Microsoft Research TouchStudio-screenshot-script-scan.jpg

    Bei einfügen der folgenden Zeile in der "for-Schleife" wird dann zusätzlich der Titel des aktuell angespielten Songs angezeigt:
    Code:
    media -> songs -> get(i) -> name -> post to wall
    Geändert von jrahe (13.04.2011 um 09:56 Uhr)
    1
     

  3. Beispiel "Wecker"
    (Auch dieses Script besteht aus nur einer action "wecker".)
    Es ein wenig schwierig, hier den Code lesbar und nachvollziehbar darzustellen. Hoffe es hilft dem einen oder anderen trotzdem.

    Bei diesem kleinen Programm haben wir zwei ineinander verschachtelte "if...then...else" Bedingungen.
    Erste Abfrage, ob in Stunden geweckt werden soll, wenn nicht, dann Abfrage, ob in Minuten geweckt werden soll; wenn auch nicht, beenden des Programms.

    Vorab kann der Benutzer noch die Nummer (=Index) des gewünschten Weckliedes eingeben.

    Während der Laufzeit wird die verbleibende Anzahl von Sekunden angezeigt.
    Auch hier gilt: der Lockscreen darf sich nicht aktivieren, ansonsten stoppt das Script.

    Viel Spaß beim probieren.

    Code:
    action wecker():Nothing
    s := 0
    titel := phone -> number box("Titelnummer")
    if phone -> confirmation box("fuer Minuten bitte Abbrechen","Stunden") then
       h := phone -> number box ("Stunden")
       s := h * 60 * 60
     else
       if phone -> confirmation box("zum Beenden bitte Abbrechen","Minuten") then
          m := phone -> number box ("Minuten")
          s := m * 60
         else
          engine -> stop
    x := s
    for 0 < i < s do
       phone -> sleep(1)
       x := x - 1
       print := "verbleibende Sekunden:  "
       print -> concat(x) -> post to wall
    player -> play(media -> songs -> get(titel))
    1
     

  4. Hi Leute. Erstma danke für die Tutorials. Hat einer einen Befehl parat wie ich den Bildschirm löschen bzw. von Zeichen befreien kann? (Wie nach dem Start eines Scriptes). Bei T.P. war das ja z.b. "Cls", also ne Idee?thx

    Mit der kostenlosen PocketPC.ch App von meinem OMNIA7 aus geschrieben.
    0
     

  5. ...nein, sorry, ich habe bisher noch keine ähnliche Funktion ausfindig machen können.

    Auch die Idee, ein Bild per "post to wall" auf die executive-wall zu senden bringt nichts, da das Bild nur unten angefügt wird.
    Die "wall" scrollt noch nicht einmal selbstständig. Schade.
    0
     

  6. Beispiel: Wecker bzw Timer
    Dieses Script enthält mehrere actions. Alle actions müssen sich in dem selben Script befinden.
    Durch die Aufteilung in mehrere actions und das Auslagern wiederholt benötigter Routinen bleibt das Programm etwas übersichtlicher beim "tippen".
    Außerdem lassen sich so z.B. Design- und Layouteinstellung zentral für alle Funktionen einstellen.

    Die Funktionen "getZeit()" und "strZeit()" haben einen Übergabeparameter mit drei zulässigen Werten:
    1 = Stunden
    2 = Minuten
    3 = Sekunden

    Neben der hier beschriebenen action "TimerMinuten" habe ich noch "TimerStunden" und "TimerSekunden" erstellt. Diese greifen ebenso auf die hier beschriebenen actions zu. Beim Aufrufen werden nur die entsprechenden Übergabeparameter verwendet.

    Beim Aufrufen der action "getLied" kann eine 0 oder eine 1 übergeben werden.
    Bei einer 0 erscheint eine Eingabeaufforderung, in der der Benutzer die Nummer des gewünschten Liedes einträgt.
    Bei einer 1 wird das Lied per Zufall aus den auf dem Handy vorhandenen Songs ausgewählt.
    (...dies ist in dem nachfolgenden Beispiel der Fall)

    Wenn die noch verbleibende Zeit größer als eine Stunde ist, erfolgt die Ausgabe auf die "executive wall" (= Bildschirm) Stundenweise.
    Anschließend alle 5 Minuten, ab 5 Minuten Restzeit minütlich und in der letzten Minute alle 10 Sekunden.
    So behält man(n) den Überblick und der Bildschirm wird auch bei längeren Laufzeiten nicht zu schnell "vollgemüllt".

    Auch hier gilt: das Handy darf über die gesamte Laufzeit keinen Lockscreen aktivieren. Ansonsten pausiert das "Weckerporgramm".

    Ganz allgemein läßt sich sagen, daß solche Anwendungen schon das "schnelle Eingeben" von Programmen übersteigen.
    Und da weder das Kopieren ganzer actions noch das Sichern bzw. Versenden per eMail unterstüzt werden, haben wir hier einen gewaltigen Arbeitsaufwand in einem unsicheren Umfeld.
    (...jaja, wenn ich mein vorzeitiges Nodo-Update per Hardreset und neu Flashen zurücksetzen muß, sind alle Scripte unwiederbringlich verloren...)

    Code:
    action TimerMinuten():Nothing
    lied := getLied(1)
    sec := getZeit(2)
    strLied(lied) -> post to wall
    strZeit(2) -> concat(sec/60) -> post to wall
    strLinie() -> post to wall
    
    while sec > 3600 do
       getRest(sec) -> post to wall
       phone -> slepp(3600)
       sec := sec - 3600
    
    while sec > 300 do
       getRest(sec) -> post to wall
       phone -> slepp(300)
       sec := sec - 300
    
    while sec > 60 do
       getRest(sec) -> post to wall
       phone -> slepp(60)
       sec := sec - 60
    
    for 0 < i < sec do
       getRest(sec) -> post to wall
       phone -> slepp(10)
       i := i + 10
       sec := sec - 10
    
    player -> play(media -> songs -> get(lied))

    Code:
    action getLied(typ):Number
    if typ = 0 then
       b := phone -> number box("Lied")
    else
       b := math -> rand(media -> songs -> count)
    b

    Code:
    action getZeit(typ):Number
    b := 0
    if typ = 1 then
       b := phone -> number box("Stunden")
       b := b * 3600
    else
       if typ = 2 then
          b := phone -> number box("Minuten")
          b := b * 60
       else
          if typ = 3 then
             b := phone -> number box("Sekunden")
          else
             engine -> stop
    b
    Code:
    action getRest(sec):String
    str := "leer"
    if sec > 3600 then
       str1 := "Stunden:  "
       str := str1 -> concat(math -> floor(sec/3600))
    else
       if sec > 60 then
          str2 := "Minuten:  "
          str := str2 -> concat(math -> floor(sec/60))
       else
          str3 := "Sekunden:  "
          str := str3 -> concat(sec)
    str
    Code:
    action strLied(lied):String
    str := "Song:  " -> concat(media -> songs -> get(lied) -> name)
    str
    Code:
    action strZeit(typ):String
    if typ = 1 then
       str := "Stunden:  "
    else
       if typ = 2 then
          str := "Minuten:  "
       else
          if typ = 3 then
             str := "Sekunden:  "
          else
             str := "Fehler"
    str
    Code:
    action strLinie():String
    str := "=================="
    str
    Microsoft Research TouchStudio-screenshot-phone-7-script-wecker.jpg
    Geändert von jrahe (14.04.2011 um 11:37 Uhr)
    1
     

  7. 13.04.2011, 22:33
    #27
    Wow, jrahe!
    Ich glaube du solltest deinen Kenntnis-Stauts mindesten eins hinauftun!
    Super, wirklich! Wobei ich das mit dem getZeit nicht 100 Prozentig verstehe...
    0
     

  8. Hallo ahref2, (ahref2 => AEG)
    ...kurz zu Deinen drei Punkten
    a) Live-Tiles
    b) die action "getZeit"
    c) mein Kenntnis-Status

    a) Live-Tiles für TouchStudio
    Die Live-Tiles waren von mir ja nur als "Wunsch" geäußert, um eine deutliche Steigerung des Nutzwertes zu erhalten. Ob und in wie weit dies für die Programmierer schwierigg sein könnte, weiß ich nicht.

    Auf jeden Fall bietet Microsoft eine API für Tiles an. Jedes (?) Programm läßt sich ja als Tile auf den Startbildschirm legen. In den meisten Fällen allerdings nur in der obersten Ebene. Ich kann z.B. "Musik-Hub" als Tile nutzen, nicht aber einzelne Songs oder Alben. Beim "Kontakte-Hub" können wir auch eine Ebene tiefer als Tile nutzen, nämlich einzelne Kontakte. Nicht aber z.B. gezielte Nummern eines Kontaktes für eine Sofortwahl. Auch beim "Office-Hub" können wir sowohl diesen als Tile nutzen als auch eine Ebene tiefer einzelne Dokumente/OneNote-Notizen.
    => für TouchStudio hätte ich gerne Tiles zwei Ebenen tiefer (Programmstart -> Script -> action), um einzelne actions sofort ausführen zu können.

    => alternativ hätte ich gerne Tiles eine Ebene tiefer (= Script) mit der gleichzeitigen Option, Scripte mit einer definierten "Haupt-action" (z.B. main) sofort starten zu können.

    Auch für Live-Tiles bietet Microsoft Unterstützung an. Programme wie z.B. "WeatherDuck" nutzen diese auch. Und wenn die Informationen auf dem Live-Tile nur beim Aufruf des Programms oder in diesem Fall einer action aktualisiert werden, wäre das vollkommen ausreichend.
    Auch hier sollte sich der Programmieraufwand für die Profis von MS Research in Grenzen halten.


    b) Die action "getZeit" in meinem Beispielprogramm wird von dem "Haupt-Programm" action TimerMinuten() aufgerufen. Bei diesem Aufruf wird in Klammern der Wert 2 übergeben, der in der action "getZeit" der Variablen "typ" zugewiesen wird. Damit kann eine Differenzierung erfolgen, ob der Benutzer in der Eingabeaufforderung phone -> number box(""..."") Stunden, Minuten oder Sekunden eingeben soll.
    (typ=1 steht für Stunden, typ=2 steht für Minuten, typ=3 steht für Sekunden)
    Der so abgefragte Wert wird dann der Variablen b zugewiesen und entsprechend des typs wieder in Sekunden umgerechnet, so daß der Rückgabewert b immer in Sekunden erfolgt.
    Für den Fall eines ungültigen Übergabewertes (nicht 1,2 oder 3) wird das Programm beendet mit engine -> stop.

    Diese action "getZeit" nutze ich auch von anderen "Hauptprogrammen" wie z.B. einem Kurzzeit-Timer, der von dem Benutzer nur die gewünschte Sekundenzahl abgefragt wissen möchte. Hier wird die action "getZeit" dann mit dem Übergabewert 3 aufgerufen.
    Analog dazu bei einem Langzeit-Timer, wo der Benutzer die Anzahl der Stunden eingeben soll, erfolgt der Aufruf mit dem Übergabewert 1.

    In allen Fällen liefert die action "getZeit" einen Wert in Form einer Zahl = Sekunden zurück. Mit diesen Sekunden können die aufrufenden Programme dann entsprechend weiter rechnen.


    c) meinen Kenntnisstand sehe ich relativ. In Bezug auf das neue Windows Phone 7 bin ich sicher ein "normaler Anwender". Wenn in einigen Bereichen die Kenntnisse darüber hinaus gehen, so habe ich z.B. Defizite in allem, was mit "social networking" zusammenhängt.

    Somit habe ich nach der Device "keep it simple" einfache Angaben erstellt.
    Was sonst sollte ich z.B. angeben bei dem von mir genutzten Betriebssystem?
    Hier der Versuch einer kurzen Beschreibung:
    Auf meinem Rechner (VIA Epia 1 GHz / 1 GB RAM) läuft komplett lüfterlos und lautlos (keine bewegliche Teile, keine HD, kein Laufwerk) das gesamte Betriebssystem inkl. 2 Datenpartitionen auf einem 8 GB USB-Stick.
    Die beiden Datenpartitionen (2 GB Daten für temporäre Speicherung, 1,5 GB für permanentes online-Backup inkl. Versionierung) sind auf dem USB-Stick nicht gesondert schreibgeschützt, dafür besteht aber außerhalb des Systems keinerlei Zugriffsmöglichkeit. (USB-Stick erscheint physikalisch als 4 GB-Stick)
    Auf der 4 GB Systempartition ist ein "nLite Windows XP Prof. SP3 partly embedded EWF protected" installiert. In dieser Version können keinerlei Änderungen am System vorgenommen werden, es ist komplett schreibgeschützt. Das gesamte System wird virtuell in den Arbeitsspeicher geladen und arbeitet nur dort. Bei einem Neustart "grüßt täglich das Murmeltier" = alles unverändert.
    Das System ist sauschnell, relativ sicher und wenig anfällig gegen Viren oder "zumüllen" beim Antesten neuer Programme.
    Da erschienen mir die Angaben "Windows XP" und "normaler Anwender" am ehesten verständlich, oder ???

    Gruß Jörg
    Geändert von jrahe (28.04.2011 um 08:48 Uhr)
    1
     

  9. 14.04.2011, 10:26
    #29
    A)
    Das war eher darauf abgezielt, dass es wohl seehrschwer waere fuer ein einzlnes Skript ein eigenes Live tile zu machen.

    B)

    Achso... Jetzt versteh ich

    C)

    Du hast sehr viel gemacht, ohne irgendwelche Dokumentationen, das hat mich beeindruckt


    Mit der kostenlosen PocketPC.ch App von meinem OMNIA7 aus geschrieben.
    0
     

  10. Hallo ahref2,
    ...im Prinzip sind alle strukturierten Programmiersprachen gleich aufgebaut.

    ...und eine gewisse "Grund"Dokumentation bzw. Hilfe ist ja gegeben:
    a) beim Start des TouchStudios auf "Help", dort sind auf der dritten Seite "api" alle Funktionen inkl. Kurzbeschreibung aufgelistet
    b) beim Arbeiten mit dem Editor werden immer nur zulässige Funktionen angezeigt
    c) als weitere Hilfe werden im Editor in einer kleinen Zeile zwischen Code und Eingabeblock die Angaben über zulässige/erforderliche Parameter u.ä. dargestellt
    d) Fehlerkorrektur durch Debugger (z.B. rot dargestellte ungültige Variablen nach copy & paste von Programmzeilen in andere action)
    e) automatische Korrektur aller Elemente innerhalb des gleichen Scriptes/action (z.B. bei Umbenennungen)

    Und im übrigen warten wir jetzt nicht nur auf die Dokumentation, sondern auch auf die Implementierung der 1500 neu freizugebeden apis (z.B. auf Kontakte und Kalender)
    s.a. Bericht und Video

    Cooles Beispiel für die Grafik-Programmierung ist hier zu finden:
    Video Demonstration der Entwickler von TouchStudio
    Geändert von jrahe (14.04.2011 um 11:51 Uhr)
    1
     

  11. Hallo,
    ...hier als nächste Testanwendung eine neudeutsch "fun-app", mit der mehrfach gedrehter farbiger Text auf ein Bild projiziert wird, welches anschließend unter "Gespeicherte Bilder" wiederzufinden ist. Viel Spaß beim Probieren.

    Die Applikation greift auf die Kamera zu, wartet, bis ein Bild erstellt worden ist, und fragt dann den gewünschten Text und die erforderlichen Parameter ab, um das Ergebnis anschließend in "Gespeicherte Bilder" zu sichern.

    Mit dieser Anwendung ließen sich auch nach leichter Modifikation Fotografien mit eingeblendetem aktuellem Datum erstellen oder allen gespeicherten Aufnahmen per Serienscript ein Wasserzeichen resp. Copyright einfügen. Der Phantasie sind keine Grenzen gesetzt (...außer den gesperrten Apis durch MS. Aber auch das wird sich mit dem nächsten update hoffentlich ändern).

    (...inspiriert wurde dies durch das Video des MS Research Teams)

    ACHTUNG: Auf Grund der unvollständigen Implementierung der deutschen Sprachversion können keine Werte zwischen 0 und 1 eingegeben werden resp. werden diese falsch interprtiert.
    Im Falle der Funktion "sleep" führt dies bei einem Wert von 0, also "sleep(0)", zu einem Einfrieren des Gerätes.
    Alle Werte außer 0 sin zulässig. Werte kleiner als 1 werden als 1 interpretiert.

    Das Script besteht aus insgesamt 6 actions:
    1.) main => startet das Programm und ruft die anderen actions auf
    2.) getColor => gibt die vom Benutzer gewünschte Textfarbe zurück
    3.) getFontSize => gibt die Schriftgröße in Abhängigkeit von der Buchstabenanzahl zurück
    4.) strDrehen => gibt den Abfragetext, wie oft der Text gedreht werden soll
    5.) strFarbe => gibt den Abfragetext, welche Farbe gewünscht wird
    6.) strText => gibt den Abfragetext, welcher Text auf dem Bild erscheinen soll

    In der action "getFontSize" hat sich für die Schriftgröße der Wert "2800/Anzahl der Buchstaben" als relativ ausgewogen und Bildfüllend erwiesen.

    In der action "getColor" habe ich mit einem flag gearbeitet, um die "if...then...else"-Abfragen nach dem übergebenen z-Wert auf zwei Bereiche aufteilen zu können. Dies war notwendig auf Grund des eingeschränkten Platzes auf dem Editor-Bildschirm.

    Code:
    action main():Nothing
    senses -> snap camera picture
    pic := senses -> camera picture
    pic -> post to wall
    text := phone -> string box (strText())
    drehen := phone -> number box(strDrehen())
    farbe := phone -> number box(strFarbe())
    font := getFontSize(text)
    i := 0
    x := 5
    while i < x * drehen do
       pic -> draw text(i, i, text, font, i, getColor(farbe))
       phone -> sleep(1)
       i := i + x
    phone -> screenshot -> save to library
    Code:
    action getColor(z):Color
    x := z
    flag := 0
    if x = 1 then
       color := colors -> red
       flag := 1
    else
       if x = 2 then
          color := colors -> blue
          flag := 1
       else
          if x = 3 then
             color := colors -> yellow
             flag := 1
          else
             if x = 4 then
                color := colors -> green
                flag := 1
    if flag = 0 then
       if x = 5 then
          color := colors -> white
       else
          if x = 6 then
             color := colors -> grey
          else
             if x = 7 then
                color := colors -> black
             else
                color := colors -> rand
    color
    Code:
    action getFontSize(text):Number
    x := text -> count
    size := math -> floor(2800/x)
    size
    Code:
    action strDrehen():String
    str := "Wie oft soll der Text gedreht werden?
              Bitte eine Zahl zwischen 0 und 9 eingeben."
    str
    Code:
    action strFarbe():String
    str := "Wählen Sie eine Farbe.
              1= Rot   2= Blau   3= Gelb   4= Grün
              5= Weiß   6= Grau   7= Schwarz
              0 oder jede andere Zahl = Zufall"
    str
    Code:
    action strText():String
    str := "Welcher Text soll auf dem Bild erscheinen?"
    str
    Die vier folgenden Bilder sind als Beispiele mit dieser kleinen Anwendung erstellt worden:
    (...wie gesagt, die Schriftgröße ist von dem Programm automatisch nach Anzahl der Buchstaben gewählt worden)

    Microsoft Research TouchStudio-screenshot-phone-7-funapp-1.jpg Microsoft Research TouchStudio-screenshot-phone-7-funapp-4.jpg Microsoft Research TouchStudio-screenshot-phone-7-funapp-3.jpg Microsoft Research TouchStudio-screenshot-phone-7-funapp-2.jpg

    P.S.: Wenn ich die Ergebnisse so sehe, kann mann(n) mit dieser Anwendung direkt ein Kunstprojekt starten.

    Dazu bietet sich folgender Kulturtip an:
    Hamburg: 11. Lange Nacht der Museen: 16. April 2011
    Lange Nacht der Museen, Hamburg 2011
    Sorry, das war zwar OT, mußte aber sein
    Geändert von jrahe (15.04.2011 um 10:13 Uhr)
    1
     

  12. Hier als "seriöse" Anwendung noch ein kleines Script, mit dem sich z.B. zu Dokumentationszwecken Fotos mit sofort eingeblendetem Datum erstellen lassen, die dann im Ordner "Gespeicherte Bilder" abgelegt werden.

    Natürlich läßt sich anstelle des Datums oder auch zusätzlich jeder beliebige andere Text einfügen.

    Dieses Script besteht aus einer einzigen action "fotoDatum"

    Code:
    action fotoDatum():Nothing
    senses -> snap camera picture
    pic := senses -> camera picture
    pic -> post to wall
    pic -> draw text(10,10, phone -> now, 60, 0, colors -> white)
    phone -> sleep(1)
    phone -> screenshot -> save to library
    Dieses kleine Script läßt sich innerhalb von 2-3 Minuten eingeben (...mit Übung noch schneller).
    Fast alles wird nur durch "antippen" zusammengestellt.
    (Erstellen von Scripten ist z.B. sehr gut in diesem Video von MS Research zu sehen)

    Wichtig hier sind die Werte in "pic -> draw text(...)"
    Die beiden ersten Werte geben die Position des Textes auf dem Bild an.
    Dann folgt der Text, in diesem Fall mit der Funktion "phone -> now" das aktuelle Datum + Zeit
    Es folgen die Schriftgröße, die Drehung des Textes in Grad und schließlich die Farbe.

    Als Ergebnis mit den obigen Einstellungen sehen die Bilder folgendermaßen aus:

    Microsoft Research TouchStudio-screenshot-phone-7-datumfoto.jpg
    Geändert von jrahe (15.04.2011 um 10:14 Uhr)
    1
     

  13. Bisher habe ich die Ergebnisse aus TouchStudio als Screenshots gespeichert.
    Hier jetzt noch ein kleines Script, mit dem Text auf Fotos in der Originalauflösung eingetragen wird.

    Über dieses Script lassen sich z.B. alle Fotos mit individuellen Informationen versehen.
    In dem folgenden Beispiel lasse ich in der oberen Ecke einen Copyright-Vermerk eintragen.

    Die Anwendung nimmt zunächst das Foto auf und speichert es in "Gespeicherte Bilder" ab. Dieses Original bleibt erhalten. Es wird von der Anwendung erneut geöffnet und der gewünschte Text eingetragen. Anschließend wird dieses wieder abgespeichert.
    Wir erhalten also immer eine unveränderte Originalaufnahme und eine individuell modifizierte Aufnahme.

    Auch dieses Script besteht aus nur einer action "fotoDatumGross"

    Für dieses Script mache ich mir die Eigenschaft von Windows Phone 7 zu Nutze, alle Fotos nach Erstellungsdatum zu indizieren. Dies bedeutet, daß die zuletzt gespeicherte Aufnahme den höchsten Index erhält.
    Da der Index aber bei 0 anstelle von 1 beginnt, muß für die Auswahl des letzten Fotos mit der Funktion "get(index)" die Anzahl der Fotos minus 1 genommen werden.

    Für die Verarbeitung der einzelnen Schritte braucht das Handy etwas Zeit, darum sind die Schritte "phone -> sleep(1)" eingefügt.
    z.B. muß die Original-Aufnahme erst korrekt abgespeichert sein, bevor per Index darauf zugegriffen werden kann.

    Code:
    action fotoDatumGross():Nothing
    senses -> snap camera picture
    pic := senses -> camera picture
    pic -> save to library
    phone -> sleep(1)
    x := media -> pictures -> count
    pic1 := media -> pictures -> get(x-1)
    pic1 -> draw text(20, 20, "c by XYZ 2011", 40, 0, colors -> black)
    phone -> sleep(1)
    pic1 -> post to wall
    phone -> sleep(1)
    pic1 -> save to library
    Alternativ läßt sich hier z.B. auch das Jahr dynamich einfügen anstelle einer statischen Angabe.
    Die Zeile für "pic1 -> draw text()" könnte dann so aussehen
    Code:
    pic1 -> draw text(20, 20, "c by Name  " -> concat(phone -> now -> year), 40, 0, colors -> black)
    Das hier beigefügte Foto habe ich auf 25% der Originalgröße reduziert. In der oberen linken Ecke ist der dezente Copyright-Vermerk zu sehen.

    Microsoft Research TouchStudio-foto-phone-7-copyright.jpg
    Geändert von jrahe (15.04.2011 um 11:43 Uhr)
    1
     

  14. Zitat Zitat von jrahe Beitrag anzeigen
    Auf jeden Fall bietet Microsoft eine API für Tiles an. Jedes (?) Programm läßt sich ja als Tile auf den Startbildschirm legen. In den meisten Fällen allerdings nur in der obersten Ebene. Ich kann z.B. "Musik-Hub" als Tile nutzen, nicht aber einzelne Songs oder Alben.
    Nur mal eben als Berichtigung, auch Alben und Songs lassen sich als Tile auf den Startscreen ziehen.

    Ansonsten aber echt coole erste "Apps", bin gespannt was hier noch alles gebastelt wird
    0
     

  15. ...sorry, meine voreilige Formulierung.

    Beim Musik-Hub lassen sich u.a. Alben, Künstler, einzelne Songs, Playlisten und Radiosender in beliebiger Anzahl auf den Startschirm pinnen. Sicherlich geht noch mehr... Das spricht auf jeden Fall für die Machbarkeit von (Live)Tiles für Scripte/actions des TouchStudios.

    Mit der kostenlosen PocketPC.ch App von meinem 7 Mozart aus geschrieben.
    0
     

  16. 15.04.2011, 18:40
    #36
    Ich bin da weiterhin skeptisch
    Aber wir werden sehen, was die Zukunft bringt.
    0
     

  17. 15.04.2011, 22:24
    #37
    Hallo!

    Nachdem ich hier nun seit fast einem halben Jahr mitlese, habe ich mich jetzt registriert und versuche gleich mal etwas beizutragen...

    Diese Funktion macht 2 Bilder, die dann "überlagert" angezeigt (und gespeichert) werden:

    Code:
    action TwoPics() : Nothing
    senses -> snap camera picture
    pic := media -> create picture(senses -> camera picture -> width, senses -> camera picture -> height)
    pic -> blend(senses -> camera picture, 0, 0, 1)
    senses -> snap camera picture
    a := 50 / 100
    pic -> blend(senses -> camera picture, 0, 0, a)
    phone -> sleep(1)
    pic -> post to wall
    phone -> sleep(1)
    pic -> save to library
    Wichtig ist die Zeile "a := 50 / 100": Da weder "0,5" noch "0.5" funktioniert, muss "5 / 10" oder "50 / 100" benutzt werden.

    Das ist dann auch gleich die Lösung für das Setzen der Radiofrequenz, was auch schon als Problem angesprochen wurde.
    4
     

  18. Hallo moroli,
    ...zunächst einmal Herzlich Willkommen hier im Forum.

    Und dann: ENDLICH ein weiterer Teilnehmer, der hier seinen Code präsentiert.
    (...dachte schon, ich sei der einzige, den es interessiere)

    Freue mich schon auf die nächsten Beiträge....

    Der Tip mit dem workaround 50/100 anstelle der 0,5 resp. 0.5 ist SUPER.
    (...hätte ich auch drauf kommen können...)

    Gruß Jörg
    0
     

  19. Den "workaround" von moroli habe ich jetzt folgendermaßen umgesetzt:

    Ich habe zwei kleine actions erstellt, die einen Wert erhalten und dessen Zehntel resp. Hunderstel zurückgeben.
    Diese sind sinnvoll, wenn man(n) öfters Dezimalwerte in seienen Scripten verwenden muß/möchte.
    Da in TouchStudio wohl keine "globalen Variablen" möglich sind, müssen diese beiden actions in jedes Script kopiert werden, in dem Dezimalwerte benötigt werden.

    Code:
    action d(x):Number
       x/10
    Code:
    action h(x):Number
       x/100
    Somit können z.B. Funktionen verwendet werden wie:
    "phone -> sleep(d(2))" anstelle von "phone -> sleep(0,2)"
    "radio -> set frequency(88 + d(9))" anstelle von "radio -> set frequency (88,9)"
    "phone -> vibrate(h(2))" anstelle von "phone -> vibrate(0,02)"
    Geändert von jrahe (15.04.2011 um 23:34 Uhr)
    1
     

  20. 16.04.2011, 22:13
    #40
    Script zur Nutzung der ZDF-Mediathek

    Hintergrund: Die "NoFlash"-Version der ZDF-Mediathek enthält Links zu Videodateien für Windows Media Player und Quicktime. Allerdings werden die mov-Dateien nicht abgespielt mit dem Hinweis, dass von WP7 nicht unterstützt, und bei den asx-Dateien passiert (zumindest bei mir) gar nix. Allerdings enthalten die asx-Dateien einen Link zu einer wmv-Datei, die ja abgespielt werden könnte, wenn man denn nur an den Link rankommt - und hier kommt nun mein Script ins Spiel:

    Code:
    web -> browse("http://www.zdf.de/ZDFmediathek/suche?flash=off")
    L := phone -> string box("URL")
    phone -> sleep(1)
    a := web -> download(L)
    xx := a -> to upper -> index of("< REF HREF", 0)
    x := a -> index of("\"", xx) + 1
    y := a -> index of("\" />", x) - x
    if y < 0 then
       y := a -> index of("\"/>", x) - x
    b := a -> substring(x, y)
    phone -> sleep(1)
    web -> media link(b) -> post to wall
    Anmerkungen zur Eingabe: Der Backslash (\) vor dem Anführungszeichen (") bei den Befehlen "index of(...)" braucht nicht eingegeben zu werden. Ich habe z.B. nur ein Anführungszeichen (") als Text eingegeben und heraus kommt automatisch "\"" (Escape-Zeichen werden also automatisch gesetzt).

    Vorgehensweise:
    (1) Script starten
    (2) es öffnet sich der Webbrowser mit der ZDF-Mediathek
    (3) nun ein Video(!) suchen/auswählen
    (4) Bei den Links zu den Videodateien (unterhalb dem Text "Windows Media Player") längere Zeit auf "Abspielen" drücken, bis sich das Kontextmenü öffnet, dort dann "Link kopieren" wählen
    (5) So oft die Zurück-Taste drücken, bis sich der Browser schließt und das Script wieder fortgesetzt wird (Achtung: nicht zu oft drücken, sonst wird das Script abgebrochen; es dauert evtl. etwas bis das Script wieder anläuft)
    (6) Es öffnet sich ein Eingabefeld "URL": Dort mittels dem "Einfügen-Icon" (Update sei Dank) den zuvor kopierten Link einfügen und mittels Button "done" bestätigen
    (7) Nun sollte das Video auf der "Wall" angezeigt werden und kann mittels Button "play" gestartet werden
    2
     

Seite 2 von 8 ErsteErste ... 23 ... LetzteLetzte

Ähnliche Themen

  1. gekochte ROMs und Microsoft Dienste wie z.B. Microsoft MyPhone
    Von gitarrero im Forum Touch HD ROM Upgrade
    Antworten: 6
    Letzter Beitrag: 02.06.2009, 15:02
  2. Microsoft Research stellt neue Technologien vor
    Von MuvOn im Forum Plauderecke
    Antworten: 2
    Letzter Beitrag: 12.07.2004, 12:16

Besucher haben diese Seite mit folgenden Suchbegriffen gefunden:

touchstudio

wp7 app gps distant

touchstudio wp7

wp7 touch studio

touch studio wp7

touchstudio tutorial

touch studio tutorialmicrosoft research touchstudiotouch studio wp7 tutorialtouchstudio scriptswindows phone 7 touchstudiowp7 touchstudiotouch studio scriptsTouch Studio anleitungmicrosoft touch studio manualwindows phone schwarz kachelnMS touchstudiomicrosoft touch studiowindows-live-for-android-126945touchstudio windows phone 7touchstudio dokumentationtouchStudio hilfenutzung der zdf mediathek wp7windows phone 7 scriptingtouch studio wp7 wall hintergrund

Stichworte