Beiträge von schymura

    Hallo Lucas de Vil,

    Zitat

    oder erklärst mir, wie deine IDE auf den Parameter 'coordinate=6:5:60' kommt.

    ich kanns dir nicht erklären.
    Aber deinem Wunsch gemäß setze ich mal die ganze Funktion als Quelltext rein.


    Dazu vorab die Information, dass in Zeile 4 der String in eine Variable gerettet wird, die dann in der 4. letzten Zeile
    Location gegeben wird.

    Zitat

    double einser=Location.convert(halten);

    Verstehet du den Fehler???



    Fragende Grüße, schymura ^^

    Hallo Lucas de Vil
    danke für deine Mühe.

    Zitat

    Wenn ich logCat richtig verstehe, übergibst du als String:
    "coordinate=6:5:60"


    Location.convert(String) erwartet aber ein "6:5:60".

    Leider jedoch ist meine Übergabe ein Sring mit dem Wert "6:5:60".
    Ich weiss das so genau, weil ich diesen String in der weiteren Bearbeitunge, also wenn die Zeile die den Fehler macht ausgeklammert ist,

    Zitat

    //testwert=Location.convert(hilf);

    mit Stingroutinen (indexOf(), lastIndexOf() und substring()) auseinander nehme um dann die einzelnen Teile mit Integer.valueOf() umwandle usw....


    Es ist also wirklich ein String, den ich da übergab.


    Schöne Grüße, schymura ^^

    Hallo Lucas de Vil,

    Zitat

    Wenn du mir jetzt noch sagst welcher Fehler genau das ist...

    das hatte ich "befürchtet".
    Habe jetzt also den Stand mit den Fehler zurückkopiert und ausgeführt.
    Ergebnis:

    Ich kann damit nicht viel anfangen.
    Hier dann noch der andere Auszug aus der LogCat:

    Schöne Grüße, schymura ^^

    Hallo Lucas de Vil,
    danke für deine Antwort.
    Ich hätte vielleicht genauer schreiben sollen, dass die Location entweder über den Dezimalwert( Longitude, Latitude) eingegeben werden kann, als auch über Himmelsrichting Grad Minuten Sekunden.
    Für die letztere Eingabe suchte ich also das Gegenstück von Location.convert().


    Deine Idee

    Zitat

    Wie dem auch sei: Location.convert(String) sollte doch genau das tun...

    habe ich natürlich sofort getestet.


    Code
    double testwert=6.1;
    String hilf=Location.convert(testwert, Location.FORMAT_SECONDS);
    testwert=Location.convert(hilf);


    Es führt jedoch zum Appsturz, dabei tritt der Fehler bei "testwert=Location.convert(hilf)" auf.


    Dass ich die Sekundenwerte nicht als Dezinalwert haben möchte liegt daran, dass man mit so einem Wert auf einer (Wander-)Karte nichts anfangen kann, da ist schon das Finden von Grad Minute und Sekunde die genaueste Art der Orientierung......


    Danke für den Link.
    Schöne Grüße, schymura ^^

    Hallo,
    beim Testen für eine GPS-APP habe ich das Umwandeln der Latitude oder Longitude in das Format "Grad Minuten Sekunden" mit

    Code
    Location.convert(doublewert,Location.FORMAT_SECONDS);


    gemacht und suche nun die Methode, um aus diesem String dann wieder die Latitude oder Longitude als Dezimalwert zu erstellen.
    Kennt jemand diese Methode und kann sie mir nennen?
    Beim Spielen (Testen von Location.convert) sind mir dann noch einige Besonderheiten aufgefallen.
    Beispiel:
    bei Eingabe 6.1 Resultat 6:5:60
    bei Eingabe 6.2 Resultat 6:12:0
    bei Eingabe 6.3 Resultat 6:17:60
    bie Eingabe 6.123 Resultat 6:7:22,8
    Man kann die Daten nicht wirklich so gebrauchen, denn es können durchaus Werte von 60 Sekunden auftreten, was naürlich nicht richtig ist....
    Man muss also die Daten noch nachträglich bearbeiten.
    Zweitens können durchaus auch Werte mit Komma auftreten.
    Da passt mal wieder was nicht richtig zusammen, denn wollte man mit

    Code
    double wert=Double.valueOf(hilf);
    int sekunden=Math.round((float)wert);


    den Wert des Sekundenstrings ändern muss man vorher

    Code
    if (hilf.indexOf(',') > -1)   
    {
    	hilf=hilf.replace(",",".");
    }


    das mögliche Komma ändern.......


    Hoffend auf eine Beantwortung meiner Frage warte ich mit schönen Grüßen, schymura ^^

    Hallo CdWechsler,


    zu deiner ursprünglichen Frage

    Zitat

    eine Zufällige Zahl aus einem int[5] array ohne wiederholung

    würde ich einfach nur mit

    Code
    Collections.shuffle(arrayList);


    den Zufall walten lassen und dann einfach nacheinander abspielen

    Code
    for (int i=0; i < arrayList.size()-1;i++)
    {
    	// Hier abspielen
    }


    Wenn dann weiter gespielt werden sol, einfach nur mit Collections.shuffle neu würfeln lassen.


    Funktioniert bei meiner App MusikZeit sehr gut........


    Schöne Grüße, schymura ^^

    Hallo Tion,
    ich habe es auch schon hin und wieder beobachte, dass ich in einer
    onClick() Methode "seltsame" Ergebnisse hatte, so dass etwas nicht ausgeführt wurde.
    Wenn ich jedoch dann statt einer Aktion darin wie etwa

    Zitat

    active_value.setText(active_et.getText().toString());

    einfach nur eine andere Methode aufrief, etwa

    Zitat

    active_builder.setPositiveButton(getString(R.string.profile_edit_save), new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
    Schreibrein(active_et.getText().toString())
    }
    });

    dann ging es. Dabei könnte dann Schreibrein() in etwa so aussehen:

    Zitat

    void Schreibrein(String ueber)
    {
    active_value.setText(ueber);
    }

    Falls das auch nicht klappen sollte, so musst dus halt in eine globale Variabel schreiben.
    Oder noch besser, das Angebot von Lucas de Vil annehmen.


    Schöne Grüße, schymura ^^

    Hallo Lucas de Vil

    Zitat

    Die pbf von Deutschland sind aber schon mal 10GB, die bekomme ich auf meiner externen Karte nicht unter.

    die 16 pdf-dDateien aller deutschen Bundesländer, die ich am 4.4.13 von geofabrik.de runter geladen habe sind zusammen wirklich 1,52 GB groß, jedoch keine 10 GB.

    Zitat

    Vermutlich wird OsmAnd die Karten on-the-fly durchrendern, da zumindest gemäß Exportlog diverse Informationen mit in dieses Format eingeflossen sind.

    Das vermute ich auch...
    Da OsmAnd jedoch auch ein Opersoure ist werde ich mir mal deren Code genauer anschauen, um zu sehen, was die da so machen....


    Hier dann noch ein Link ftp://ftp.informatik.uni-stutt…_fi/DIP-3328/DIP-3328.pdf zur .osm.pdf Datestruktur.


    Schöne Grüße, schmyura ^^

    Hallo Lucas de Vil,

    Zitat

    Da das betreffende Gelände allerdings
    seit Jahren komplett abgesperrt ist und extrem umgebaut wird bin ich
    mir sicher, dass keinerlei Daten dafür existieren. =)

    ich hatte nicht verstanden, dass du
    Daten von einem ganz bestimmten Gebiet benötigt, um deine App zum
    testen.
    Bedauernde Grüße, schymura :(

    Hallo Lucas de Vil,


    Zitat


    Sehr löblich. Ich habe allerdings
    keine 64GB µSD Karte, auf der ich die Kacheln unterbringen könnte.
    ;)
    Genau genommen habe ich nicht einmal eine 8GB µSD Karte... :-/


    Der Gedanke war mal schneller als die
    Finger bei meiner Aussage:
    "Und ich möchte zumindest auf nem
    Smartphone mit Kacheln abrbeiten, denn die brauche viel zu viel
    Speicherplatz...."
    Ich hatte tatsächlich ein wichtige
    Wort vergessen: NICHT!



    Ich habe bei http://code.google.com/p/osmand/downloads/list alle Germany_........obf.zip
    Dateien heruntergeladen, diese dann entpackt, alle *.obf Dateien auf
    die SD-Karte vom Smartphone ins Verzeichnis OsmAnd kopiert (zusammen
    etwa 2,76 GB) und anschließende dann OSMAND gestartet. Die App
    „indizierte“ dann alle 16 Dateien, dauerte etwa 10 Sekunden).
    Solange es keine neuen obf - Dateien dort gibt entfällt das „indizieren“.


    Das ist dann die Daten der Vektorkarte für ganz Deutschland.........


    OSMAND arbeitet mit diesen Daten ohne
    jeglichen Versuch irgendwas nachzuladen.


    Noch eine Info: Nach Aussage der Leute
    von geofabrik.de sind
    diese obf-Dateien nichts anderes als die .pbf- Dateien, die ein wenig
    angepasst sind.



    Also muss es eine Möglichkeit geben
    aus den Daten (im Fluge) die Karten zu erstellen. Nur wie das geht,
    das weiß ich noch nicht........

    Zitat

    Die einen Tiles sind Graphiken, Images, Bilder... was auch immer. Also
    binäre Datenformate mit Repräsentationen der OSM Daten. Und diese sind
    nicht frei.

    Hier nur kurz der Text bei http://wiki.openstreetmap.org/wiki/DE:OpenStreetMap_License


    Schöne Grüße, schymura ^^

    Hallo Lucas de Vil,
    ich würde in so einem Fall auf Daten fertiger Tracks zurückgreifen.
    Die findest du, auch "als alter Sesselpupser" bei vielen Wandervereinen und auch Wanderverlagen.
    Du kannst aber auch einfach welche von http://heinz-jürgen-schymura.de/ runterladen. Die GPX-Dateien findest du immer unter dem Höhenprofil (wenn vorhanden ganz unten).


    Schöne Grüße, schymura ^^

    Hallo Lucas de Vil und CdWechsler,


    Lucas de Vil:

    Zitat

    Dort sind nur die Geodaten offen, die Karten unterliegen anderen und je nach Hersteller speziellen Bedingungen.

    Ja, die Geodaten sind frei, und die Kacheln (Tiles) snd es auch. Nur wenn man sie irgendwo als Bild veröffentlicht, muss man das Copyrigth reinschreiben.


    Der Link von dir ist gut, die Rechnung funktioniert auch sehr gut! Hatte ich auch 2010 schon so gemacht, nur leider sind das die Kartenteile........
    Und ich möchte zumindest auf nem Smartphone mit Kacheln abrbeiten, denn die brauche viel zu viel Speicherplatz....
    Und online ist auch keine gute Idee für mich, denn ich möchte die App, die mir vorschwebt vor allem im Wald und in Tälern benutzen, allerdings auch in Ortschaften.



    CdWechsler:

    Zitat

    was für berechnungen meinst du?

    ich meine, wie komme ich bei Vektorkarten, die es ja etwa bei http://download.geofabrik.de/ als osm.pbf-Dateien gibt frei und die nur etwa 10% des Speicherplatzes wegnehmen aus der GPS-long, bzw. lat Angabe erstnes zu der betreffeden PBF-Datei und zweitens, wie muss ich mit den Daten dann ev. noch die Karte rendern????


    Wie gesagt, online ist keine Alternative.
    Bisher habe ich mit OSMAND gearbeitet (beim wandern). Gefällt mir auch sehr gut, man kann es wirklich offline benutzen (selbst im Fluzeugmodus), wenn man vorher die Vektorkarten vom PC aus Smartphone geschoben hat. Der GPS-Empfänger verbraucht nicht viel Strom, dumm ist nur, da ja OSMAND ein Navi ist, dass die ganze Zeit der Screen an bleibt, außer man schaltet das Programm ab.


    Dankbare Grüße, schymura ^^

    Hallo CdWechsler,

    Zitat

    Das Resultat hat mich sehr erfreut.

    freut micht auch.


    Im Zusammenhang mit GPS mal eine Frage:
    Was für ein Kartenmaterial sollte man benutzen? Google Map oder OpenStreetMap?
    Wie berechnet man bei Vektorkarten was und wie man den Kartenauschnitt(Tiles) anzeigt?


    Schöne Grüße, schymura ^^

    Hallo CdWechsler,

    Zitat

    wie würde denn diese reagieren, wenn ich in die lochationmanager.requestLocationUpdates(provider, 0, 0, locationlistener) - methode für die erste null 6000 und für zweite 30 eintrage?

    das kann ich dir nicht sagen, denn bisher habe ich noch keine GPS App gemacht, interssiert mich nur, weil ich auch mal eine machen möchte.
    Aber vermutlich würde ich garnicht so einen großen Ansatz machen, sondern einfach vorher eine Long Vaiable setzen,

    Code
    long  ablauf_Millisekunden=System.currentTimeMillis()+10000; // 10 Sekunden


    die ich dann in der onLocationChanged() abfragen würde und nur dann reagieren, wenn die Zeit abgelaufen ist, ansonsten ohne Reaktion zurück.
    Falls die Zeit um ist kann ich dann ja auf räumliche Änderung prüfen wenn ich will usw.
    Aber auf jeden Fall die ablauf_Millisekunden neu setzen.


    Nach dem Lesen von
    http://developer.android.com/r…tion/LocationManager.html

    Zitat

    The minDistance parameter can also be used to control the frequency of location updates. If it is greater than 0 then the location provider will only send your application an update when the location has changed by at least minDistance meters, AND at least minTime milliseconds have passed. However it is more difficult for location providers to save power using the minDistance parameter, so minTime should be the primary tool to conserving battery life.

    meine ich nun, das die Mindestdistanz und die Mindestzeit eingeht.


    Schöne Grüße, schymura ^^

    Hallo CdWechsler,
    vielleicht bin ich ja zu sehr Minimalist, aber als erstes würde ich darauf verzichten darzustellen wie weit der Mediaplayer das Muskstück abgesielt hat. Finde ich nicht gerade intressant, denn wenn ich Musik höre, dann weiss ich ja, wann ein neuer Titel beginnt.
    Zweitens würde ich nicht auf jedes onLocationChanged() reagieren, sondern erst nach einer bestimmten Zeitspanne, das vermindet die CPU-Belastung enorm und auch das erneute Darstellen der Position auf dem Screen bringt Erleichterung.
    Die Internetabfrage fällt da schon nicht mehr so sehr ins Gewicht, wenn sie nicht bei jedem onLocationChanged() erneut gemacht wird......


    Schöne Grüße, schymura ^^

    Hallo CdWechsler,

    Zitat

    Die app nutzt einen Mediaplayer bzw. google maps v2 für eine ortsbestimmung,

    dass du einen Mediaplaver für die Ortsbestimmung nutzt hat mich sehr erstaunt.


    Für die Ortsbestimmung würde ich mit einem LocationProvider nur dann reagieren, wenn sie die GPS Daten ändern, also über onLocationChanged(). Dann könne man darin auch noch einen einfache Zeitspannenabfrage setzen, (keinen Timer) so dass man die Daten nur alle etwa 10 Sekunden überhaupt anschaut un berechnet.


    Hoffe, dir etwa geholfen zu haben, schymura ^^

    Hallo,
    heute, am 2. April, habe ich mal wieder eine ernst gemeinte Frage:
    Nachdem ich in meiner App MusikZeit auch die Möglichkeit zum Löschen von Musiktiteln eingebaut hatte kam es mitunter zu Fehlern.
    Und zwar werden die ausgewählten Titel erst beim Beenden der App gelöscht, die Musikdatei über

    Code
    File zu_loeschen=new File(Zu_Loeschen_Liste.get(i).toString());
    if (zu_loeschen.exists())
    {
    	zu_loeschen.delete();			
    }


    und der Eintrag in der systmeigenen Mediendatenbank über

    Code
    getContentResolver().delete(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,zu_suchen,null);


    Wenn dann die App schnell wieder neu gestartet wurde, dann war die systmeigenen Mediendatenbank noch nicht aktuakisiert, so dass es zu Fehlern bei Zugriff auf nicht mehr vorhandene Dateien gab.
    Weil in der Beschreibung getContentResolver().startSync als veraltet angegeben ist habe ich versucht das Sytem über

    Code
    getContentResolver().requestSync(android.accounts.Account, String, android.os.Bundle);


    dazu zu brigen, die Aktualisierung sofort durchzuführen.
    Aber bereits Eclipse zeigt einen Fehler, da diese Methode nicht auf MediaStore.Audio.Media anwendbar wäre.
    Dann habe ich es mit der veralteten Methode versucht, wo dann zwar ein Fehler auftritt, aber dennoch die systmeigenen Mediendatenbank aktualsiert wird.

    Code
    try
    {
    	getContentResolver().startSync(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null);
    }
    catch (Exception e) 
    {
    //	braucht nicht zu machen, ist ja sowieso zu Ende. Es gibt einen Fehler, 
    //  	aber die Datenbank wird wirklich aktualisiert.
    }


    Meine App läuft ab der Version 2.33.
    Wie ist dieses Verhalten zu erkären? Welchen grundsätzlichen Fehler mache ich dabei?


    Fragende Grüße, schmyura ^^