Beiträge von killphil75

    Die Begrenzung der Dateinamen hat was mit der Resourcenverwaltung von Java/Android zu tun.


    Namen bzw Album aus dem Dateinamen zu extrahieren ist aber auch nicht der Königsweg und auch nicht notwendig.
    MP3 sind meistens getaggt und enthalten MetaDaten (Album, Künstler, Tracknummer, ect)



    Android bietet MediaMetadataRetriever zum abrufen solcher infos.


    http://developer.android.com/r…diaMetadataRetriever.html


    Java
    MediaMetadataRetriever mmr = new MediaMetadataRetriever();
    mmr.setDataSource(filePath);
    
    
    String albumName = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM));



    Da ich das selber noch nicht benutzt habe, weiss ich nicht mit welchen Tag-Formaten er so zurecht kommt. zB. in MP3 kann man ja heute auch die Coverdaten als Bild mit einbauen, daher gebe es noch die alternative eine sogenannte TagLibrary zu nutzen


    http://sourceforge.net/projects/javamusictag/


    http://sourceforge.net/projects/jd3lib/
    http://jid3.blinkenlights.org/
    http://www.fightingquaker.com/myid3/

    Zitat

    Wie komme ich an die Daten (Von fussball.de holen)


    Also das Hauptproblem besteht immer im "klauen" von Daten, das ist so eine schwierige Grauzone, laut Rechtssprechung sind Fussballergebnisse nicht geschützt alles was darüber hinausgeht und eine redaktionelle Qualität hat (News,Artikel) ist wiederum vom Urheberrecht betroffen.


    Am besten ist es immer man besitzt das Einverständnis der Seitenbetreiber oder man bekommt die Daten über eine offene Schnittstelle.
    Fussball.de bietet ein Widget für Webseiten an, kann sein das Sie auch eine Schnittstelle bzw. Webservices für XML,JSON anbieten. (weiss ich aber nicht)


    http://www.openligadb.de/ ist eine Communityergebnis dienst und der bietet so etwas. (Für diverse Euro/WM Tippspiele, habe ich mir dort schon die Fussballbegegnungen geholt)



    Zitat

    Gibt es mehrere Wege, oder werden dazu Standards angeboten?


    Siehe Antwort1: wenn du die Ergebnisse direkt von der Fussball.de Seite holen willst musst du die Webseiten parsen.


    -> HTTP Verbindung -> Seite als String runter laden -> Parsen


    Für das Parsen gibt es schöne Hilfsmittel wie den HTML-Cleaner bzw. JSoup.
    Dann suchst du Dir die markanten Stellen in der Webseite und überführst Sie in eine für Dich logische Datenstruktur.


    Wenn wie in Antwort 1 ein Webservice angeboten wird hast du ganz leichtes Spiel.


    -> Verbindung aufbauen -> Daten holen -> Verarbeiten (XML Parser, JSON-Parser) - fertig



    Zitat

    Welche Klassen und Methoden sollte ich in diesem Zusammenhang nutzen?


    Zum aufbauen einer HTPP Verbindung findest du jede Menge Tutorials im Netz, zu beachten ist hierbei, das seit Android 3.0, alle Vorgänge die das Netzwerk betreffen nicht mehr im UI Thread laufen dürfen und in einen eigenen Thread ausgelagert werden müssen um nicht das Programm zu blockieren.
    Stichwort wäre hier bei AsyncTask - das ist eine schhöne komfortable Methode so etwas zu realisieren.


    Wie oben geschrieben die HTML Seite parsen kannst du mit HTML Cleaner, JSoup und und sonstigen Stringmethoden von Android.
    Falls du XML oder JSON bekommen solltest, dann gibt es auch dazu sehr gute Tutorials


    http://www.androidhive.info/20…oid-xml-parsing-tutorial/


    http://www.androidhive.info/20…id-json-parsing-tutorial/


    Die Darstellung erfolgt dann am besten in einem Listview.

    -> na die Sache mit dem Spinner hängt ja immer an einem Adapter, da bekommst du die Position der Auswahl her.
    Den Wert einfach Speichern und in onSaveInstanceState verarbeiten bzw. retten.


    Java
    Dies Sache mit dem ListView statt dem ScrollView scheint interessant zu sein. Bekommst du denn in ein ListView auch alle anderen Objekte (Spinner, Button, ToggelButton, TextViews etwa) hinein?


    Da verstehe ich jetzt die Frage nicht richtig - meinst du in das Layout ?


    Es gibt ja die vorgefertigten Layouts für einen Listvies einzeilig, zweizeilig - wenn du eigene Dinge/ein eigenes Layout in einen Listview packen willst, benötigst du einen Adapter der eigene Views handeln kann.


    Hier ein Tutorial auf deutsch:


    http://www.androidblogger.ch/?p=66&lang=de


    und englisch -> Vogella liefert immer gute Lösungen bzw. Tutorials


    http://www.vogella.com/articles/AndroidListView/article.html

    Hallo und herzlich willkommen im Forum.


    Also das Problem mit dem Listview scrollTo habe ich auch gehabt bzw. klappt das sehr unsicher.
    Ich bin dazu übergegangen mir einfach die Auswahl des Listviews bzw. den zuletzt gewählten Eintrag zu holen
    und per


    listview.setSelection(gewaehltereintrag);


    wieder zu setzen, der Listview scrollt dann selbstständig dahin. (der selectierte Eintrag ist auf dem Bildschirm der erste am oberen Rand).


    Dein Spinnerproblem verstehe ich nicht ganz - mit getPosition bzw setSelection kannst du hier ja auch das letzte gewaehlte Item setzen.
    Wenn es DIr darum geht den Spinner einfach wieder zu öffnen dann.



    Java
    s = (Spinner) findViewById(R.id.spinner);
    
    
            s.performClick();

    Du kannst zb Dir ein Main - Linearlayout erstellen und da drunter dein normales Layout zb auch Linearlayout.


    wenn du jetzt:


    MainLayout.addView(adView,0);


    machst, sollte er die Werbung zwischen deine beiden Layouts packen.


    Du kannst den View aber auch bereits in deinem XML layout definieren


    Java
    <com.google.ads.AdView android:id="@+id/adView"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
                             ads:adUnitId="MY_AD_UNIT_ID"
                             ads:adSize="BANNER"/>


    Und dann wie gewohnt per findViewbyId einbinden



    Beispiel hier


    https://developers.google.com/…/android/banner_xml?hl=de

    Am besten du postest etwas Code, das macht die Sache immer einfacher .... für den Moment bemühe ich meine Glaskugel.


    Ich vermute du benutzt Split zum Trennen des Strings. Im Internet habe ich eben folgenden Artikel dazu gefunden bzw. bestätigt das meine Vermutung


    http://nikolajlindberg.blogspo…s-when-splitting-tab.html


    Split killt alle leeren Strings, und da du im Anschluss sicherlich per festem Raster auf das Array zu greifst, gibt es einen Out of Index


    String tst = "\t\t\t";
    String[] result1 = tst.split("\t"); //result1.length == 0
    String[] result2 = tst.split("\t", -1); //result2.length == 4




    Wenn du also deinem Split den Parameter -1 wie im Beispiel mit auf den weg gibst dann behält er auch die leeren Strings und dein Problem mit dem Array sollte damit gelöst sein.



    PS: Semikolon als Trenner finde ich immer sehr gewagt, da es doch viele Menschen auch in normalen Strings benutzen, nimm lieber etwas exotisches ala


    | oder so



    PS: Hallo und willkommen im Forum, das hatte ich oben noch vergessen

    Dein switch / Case Konstrukt ist fehlerhaft - bei Dir fängt er oben an und durchläuft es bis zum Ende - daher die Mehrfachstarts der Activity



    nach einem fertigen Statement kommt ein break:



    Java
    switch(mItem.getItemId()) {
    		case R.id.menu_newEntry:
    			Intent NewEntryIntent = new Intent(Activity_Main.this, Activity_NewEntry.class);
    			startActivity(NewEntryIntent);
                           break;
    		case R.id.menu_editEntry:
    			Intent EditEntryIntent = new Intent(Activity_Main.this, Activity_EditEntry.class);
    			startActivity(EditEntryIntent);
                           break;
    		}

    Mach dir doch mal ein paar Log Ausgaben über deine rowID , also schau doch mal welche Zahl da übermittelt wird.
    OutofBounds heisst ja, du versuchst auf einen Datensatz zuzugreifen (per ID) den es überhaupt nicht gibt.


    Ich vermute mal das dein Index irgendwo falsch übermittelt wird.

    OK die Sache mit dem Asynctask ist eine der Grundlagen für das Handling von zeitintensiven Prozessen, da hast Du nun genügend Lesestoff. Zurück zu deiner Ausgangsfrage, was möchtest du denn mit dem Quelltext der ausgelesenen Seite machen?


    Auslesen ... Sprich Parsen ?


    Dann solltest du Dir zu unbedingt einmal HtmlCleaner bzw. Noch besser JSoup anschauen, das könnte hilfreich sein.

    Zitat

    Ich möchte für Silvester eine kleine App schreiben. Hoffe das geht auf die schnelle. Die Idee:


    Das könnte knapp werden...ich gehe mal dabon aus das du Silvester in 4 Tagen meintest.


    Zitat

    Ich mache ein Quiz, mit Fragen die über Beamer angezeigt werden.
    Die Fragen gehen an 3 oder 4 Gruppen.
    Wenn eine Dieser Gruppen eine Frage beantworten kann, dann soll sie auf den Buzzer Knopf der App drücken.
    Beim Drücken auf diesen Buzzer soll über Bluetooth auf das "Hauptsmartphone" übetragen werden, dass gedrückt wurde. Auf dem "Hauptsmartphone" wo die App das Signal empfängt, soll der Gruppenname empfangen werden und die Empfangszeit gespeichert werden.


    Es gibt also in der App einen "Server" wo alles ausgewertet wird und die "Clients", die auf den Server senden sollen.


    Schöne Idee,


    Ich glaube die Hauptschwierigkeit wird die Mehrfachverbindung unter BT sein.
    Hier hatte jemand ein ähnliches Problem.


    https://groups.google.com/foru…id-developers/adeBD275u30




    Programmaufbau:


    Serverhandy:


    -> auf jeden Fall an den Strom anschliessen ->
    -> WAKE LOCK permanent aktivieren damit Handy ständig aktiv bleibt (deswegen der Strom)
    -> BT Receiver welcher die ganze Zeit protokolliert


    -> http://stackoverflow.com/quest…ave-while-using-bluetooth



    Clienthandys:


    -> Einfaches Layout -> irgendwo ein ein Eingabefeld um jedem Handy eine ander UiD zu vergeben
    -> Button zum senden
    -> BT Zeugs zum senden ... Siehe Tutorial einen Beitrag drüber

    Oder du blockst alle Policys ab...


    ist aber nur zu Testzwecken empfehlenswert..


    try {
    Class strictModeClass=Class.forName("android.os.StrictMode");
    Class strictModeThreadPolicyClass=Class.forName("android.os.StrictMode$ThreadPolicy");
    Object laxPolicy = strictModeThreadPolicyClass.getField("LAX").get(null);
    Method method_setThreadPolicy = strictModeClass.getMethod(
    "setThreadPolicy", strictModeThreadPolicyClass );
    method_setThreadPolicy.invoke(null,laxPolicy);
    } catch (Exception e) {


    }

    Du kannst per Intent Daten an Activties übermitteln


    Um die Daten zu senden


    Java
    Intent i=new Intent(context, DeineDatepickerActivity);
    i.putExtra("jahr",  meineVariableJhr);
    context.startActivity(i);


    um Sie z.B. im on create auszulesen


    Java
    Intent intent = getIntent();
    int jahr = intent.getIntExtra("jahr");

    ich würde sagen es kommt auf die Daten an...


    Aber die direkte Variante ist sicherlich zu empfehlen, wei: l wenn jetzt jemand mal nicht "den Button" zum speichern drückt, wären alle Veränderungen weg, sicherlich keine gute Usererfahrung. Oder der User verlässt einfach die Activity.


    -> Deine DB ist ja sicherlich eh über einen Datenbankadapter/SQLiteHelper eingebunden und da kannst du Dir sehr leicht/schnell eine Routine schreiben


    -> updateCheckbox(id eintragid, boolean status ) welche nur den Status der der CHeckbox updatet, das hängst du direkt an deinen onChangestatus Listener und alles ist gut

    Herzlich WIllkommen im Forum und viel Spass beim programmieren und umsetzen deiner Ideen.


    Zitat

    Als Einstieg wählte ich das Buch Android 3 von Thomas Künneth.
    Dort sind die Grundzüge und Zusammenhänge von Android hervorragend beschrieben.


    Ich habe selber das Buch hier und für meinen Einstieg genutzt. Gerade in den letzten Tagen haben wir aber wieder mit einigen anderen Nutzern feststellen müssen , das einige Grundlegende Androidsachen kaum, wenig bis gar nicht behandelt werden. (AsyncTask, Fragmente, Comp. Library) ect.


    Also oft ist es auch nicht falsch Fragen nach Konzepten zu stellen, damit man jemand auf den Weg bringen kann. (also ala "Ich würde gerne das und das erreichen, welche Möglichkeiten biueten sich unter Android bzw. hatte jmd schon einmal das selbe Problem? )

    Einfach als Parameter übergeben. Je nach dem wie dein Konstruktor vom AsyncTask ausschaut.


    new DownloadAsyncTask().execute( fileUrls);



    ----


    protected doInBackground(ArrayList<URL>... passing) {
    ArrayList<URL> passed = passing[0]; //get passed arraylist


    //Some calculations...


    return result; //return result
    }




    Noch mal ein Beispiel, wo sich die Übergabedefinition auswirkt...a



    Dann schreib dir doch eine kleine Datenklasse wo du die 10 Integer reinpackst.


    public class meinstruktur{


    int zahl1= 0;
    int zahl2= 0;
    int zahl3= 0;




    public meinstruktur(int zahl1, int zahl2, int zahl3) {


    this.zahl1= zahl1;
    this.zahl1= zahl2;
    this.zahl1= zahl3;
    }


    // hier zb Getter und Setter Methoden um die Integer zu setzen


    und eine Methode für rest



    public reset_all (int wert)
    {
    this.zahl1 = wert;
    this.zahl2 = wert;
    this.zahl3 = wert;



    }




    }

    also wenn du primitive Datentypen nimmst sollte es gehen.


    int zahl1;
    int zahl2;
    int zahl3;
    int zahl4;


    zahl1= zahl2= zahl3= zahl4 = 0;


    Bei Objekten wird so etwas nicht funktionieren. Also auch nicht bei der Klasse Integer.


    Unabhänig davon, was hast du den vor ? wevntl. lässt sich so etwas besser mit einem Array lösen.

    Also du kannst zumindest auf Wifi oder 3G Verbindung testen,




    Java
    <uses-permissionandroid:name="android.permission.INTERNET"/><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>


    hmm um zu ermitteln ob die Geschwindigkeit schnell oder langsam ist, müsstest du einfach die Menge deiner Downloads in einer bestimmten Zeit
    messen und dann entscheiden ob die Connection zu langsam ist um weiterzumachen.