[Hilfe] suche Entwicklungshilfe für ein Geschwindigkeitswarner
Hallo,
ich suche eine app, die über GPS die Geschwindigkeit misst und wenn man unter n km/h kommt einfach piept oder so.
Hintergrund ist, ich will beim Jogging eine gewisse Geschwindigkeit halten, ich nutze Cardio-Trainer, und der sagt auch die Geschwindigkeit hin und wieder an, aber er warnt nicht bei Unterschreitung.
Ich versuche auch (vergeblich) mit Eclipse eine App selbst zu schreiben, komme aber auch nicht weiter. Meine Programmierkenntnisse sind unterer Durchschnitt mit (Visual)-Basic, Visual-C++, HTML und PHP. Das hilft wohl eher weniger :rolleyes:
Also nochmal, ich brauche eine App, die mittels GPS eine einstellbare Geschwindigkeit (von ca.5,0-19,9 km/h) misst und bei Unterschreitung ein einfaches Tonsignal abgibt.
AW: [Hilfe] suche Entwicklungshilfe für ein Geschwindigkeitswarner
Hi bokieh,
wie weit bist denn schon mit den Beispielen durchgekommen?
Hast du bei Google mal die android-API angeschaut? vielleicht gibt es dazu ja schöne beispiele.
Beispiel:
http://developer.android.com/referen.../Location.html
float | getSpeed() |
| Returns the speed of the device over ground in meters/second. |
mfg
Rumbel
AW: [Hilfe] suche Entwicklungshilfe für ein Geschwindigkeitswarner
Zitat:
Zitat von
Rumbel
Hi bokieh,
wie weit bist denn schon mit den Beispielen durchgekommen?
Hast du bei Google mal die android-API angeschaut? vielleicht gibt es dazu ja schöne beispiele.
Die API scheint bestimmt ganz toll zu sein, aber ich habe nicht den geringsten Schimmer wie man mit Java programmiert. Bei PHP oder Basic geht das viel übersichticher und einfacher, leider nützt mir das nichts. Ich brauche einen Anfang, wenn ich den Syntax kapiert habe werde ich es wohl schaffen.
Ich habe da so einige Fragen:
- es gibt wohl mehrere Dateien, die wichtig sind (unter SRC die .java, unter res/values die strings.xml, und res/Layout die main.xml...) welche sind zwingend erforderlich und welche sollte ich links liegen lassen?
- im Kopfbereich der .java-Datei gibt es import. Muss ich da die im Programm benutzten "Programmpakete" einlesen? In etwa so : für GPS-Empfang die Zeile "import android.location.getSpeed();" ?
- und wie frage ich dann die Geschwindigkeit ab? Hier fällt mir nichts mehr ein.
Zitat:
Zitat von
Rumbel
Ich habe bisher immer jemand gehabt, der mir die Grundzüge verständlich erklärt hat, leider finde ich in diesen speziellen Thema niemand in meinem Umfeld, der sich damit auskennt. Die Sachen im Internet sind entweder nur auf Java gemünzt oder in fachenglisch oder schon gleich für Fachmänner (IT/Informatiker), das ist zum Einsteigen zu schwierig.
Ich habe es zwar geschafft ein "HelloWorld" auf virtuelle Display zu zaubern, aber ich habe nur abgeschrieben...:confused:
So ein klitzekleinen Anfängerkurs "Android-Programmieren für SuperDummies" gibt es hier nicht rein zufällig ;)
Ich wills ja lernen, bekomm es aber nicht hin...
AW: [Hilfe] suche Entwicklungshilfe für ein Geschwindigkeitswarner
hm ja generell solles du für java erst mal wissen, was objektorientierung ist.
das ist mal der größe unterschied zu basic ;-)
danach ists dann leicht, die syntax zu lernen.
für das get speed beispiel kann ich morgen nochmal nach code-samlpes suchen, oder vielleicht hat hier jemand im forum was schönes.
ansonsten gibts auch öfters mal videos mit erklärungen, gerade für anfänger.
ich schreib morgen mehr, jetzt bin ich erst mal zu müde :-)
mfg
rumbel
AW: [Hilfe] suche Entwicklungshilfe für ein Geschwindigkeitswarner
Hier, sehr schnell und grausig.
Was jetzt noch fehlt ist:
- Sound ausgeben. Die Methode dazu steht da alert().
- Schauen ob das m/s oder km/h oder was auch immer sein sollten.
PS: Absolut ungetestet & ohne Gewähr. Aber auch wenn was nicht geht, dann sollte es dir sicher eine Starthilfe sein.
Gruss.
package talionis.android.speedmeter;
import java.security.Provider;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener {
private LocationManager locationManager;
private TextView tv,tv2 ;
private LocListener locListener = new LocListener();
private float minSpeed;
private LinearLayout linLay;
private EditText et;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
linLay = new LinearLayout(this);
linLay.setOrientation(LinearLayout.VERTICAL);
et = new EditText(this);
linLay.addView(et);
Button button = new Button (this);
button.setText("Ok");
button.setOnClickListener(this);
linLay.addView(button);
tv= new TextView(this);
tv.setText("MinSpeed: "+minSpeed+"");
linLay.addView(tv);
tv2= new TextView(this);
tv2.setText("Status: Activating GPS...");
linLay.addView(tv2);
setContentView(linLay);
locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
}
public void alert() {
Log.v(this.toString(), "Alert, we're tooo slwo");
//SPEED TO LOW. PLAY A SOUND OR WHATEVER HERE.
}
@Override
public void onPause() {
super.onPause();
locationManager.removeUpdates(locListener);
}
public void onResume() {
super.onResume();
if(locationManager.getProvider("gps")!=null)
locationManager.requestLocationUpdates("gps", 0, 0, locListener);
}
public class LocListener implements LocationListener {
@Override
public void onLocationChanged(Location location) {
float cSpeed=location.getSpeed();
tv.setText("Speed: "+cSpeed);
Log.v(this.toString(),"Updated speed...");
if(cSpeed<minSpeed)
alert();
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}
@Override
public void onClick(View v) {
try {
this.minSpeed=Float.parseFloat(et.getText().toString());
} catch (NumberFormatException nfe) {
this.minSpeed=5;
} finally {
tv.setText("MinSpeed: "+this.minSpeed);
}
}
}
AW: [Hilfe] suche Entwicklungshilfe für ein Geschwindigkeitswarner
Hallo metter,
ich werde es heute abend gleich mal ausprobieren!:)
Ich bedanke mich aber jetzt schon für Deine großartige Hilfe. Wenn die App steht, poste ich hier noch den Quelltext, damit es für andere (wie mich:confused:) eine Einstiegshilfe ist.
CU bokieh
AW: [Hilfe] suche Entwicklungshilfe für ein Geschwindigkeitswarner
Ich hab im Market die App "Music Running Coach" gefunden.
Die spielt nur Musik wenn du schneller als 3 meilen läufst. Also unter 4,8km/h keine Musik.
Gestest hab ich die zwar nicht, aber vielleicht ist das ja ne Hilfe für dich.
Gruss
Michl
AW: [Hilfe] suche Entwicklungshilfe für ein Geschwindigkeitswarner
Hi,
Die hab ich getestet, ist aber nicht einzustellen, ab wann die Musik läuft. Ist also nicht wirklich zu gebrauchen.
Danke trotzdem ...
AW: [Hilfe] suche Entwicklungshilfe für ein Geschwindigkeitswarner
AW: [Hilfe] suche Entwicklungshilfe für ein Geschwindigkeitswarner
Zitat:
Zitat von
metter
Und, hats geklappt?
Hallo,
Eclipse zeigt zwar keine Fehler mehr an, aber wenn ich es im Emulator laufen lassen will kommt die Meldung "Your project contains error(s), please fix them before running your application."
ja und da steh ich wieder mit meinen Problemen :
* kein Schimmer
* kein Fehler
* und keinen den ich fragen kann...
Ich habe mich aber im Herbst schon für einen Java-Kurs der VHS angemeldet...
Ich habs nur über die Hilfemöglicjkeiten von Eclipse angepasst und eingedeutscht...:
package
talionis.android.speedmeter;
import
android.app.Activity;
import
android.content.Context;
import
android.location.Location;
import
android.location.LocationListener;
import
android.location.LocationManager;
import
android.os.Bundle;
import
android.util.Log;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
import
android.widget.EditText;
import
android.widget.LinearLayout;
import
android.widget.TextView;
public
class speedmeter extends Activity implements OnClickListener {
private LocationManager locationManager;
private TextView tv,tv2 ;
private LocListener locListener = new LocListener();
privatefloatminSpeed;
private LinearLayout linLay;
private EditText et;
@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
linLay = new LinearLayout(this);
linLay.setOrientation(LinearLayout.VERTICAL);
et = new EditText(this);
linLay.addView(et);
Button button = new Button (this);
button.setText("Ok");
button.setOnClickListener(this);
linLay.addView(button);
tv= new TextView(this);
tv.setText("MinSpeed: "+minSpeed+"");
linLay.addView(tv);
tv2= new TextView(this);
tv2.setText("Status: aktiviere GPS...");
linLay.addView(tv2);
setContentView(linLay);
locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
}
publicvoid alert() {
Log.v(this.toString(), "Alarm, zu langsam!!!");
//SPEED TO LOW. PLAY A SOUND OR WHATEVER HERE.
}
@Override
publicvoid onPause() {
super.onPause();
locationManager.removeUpdates(locListener);
}
publicvoid onResume() {
super.onResume();
if(locationManager.getProvider("gps")!=null)
locationManager.requestLocationUpdates("gps", 0, 0, locListener);
}
public class LocListener implements LocationListener {
@Override
publicvoid onLocationChanged(Location location) {
float cSpeed=location.getSpeed();
tv.setText("Speed: "+cSpeed);
Log.v(this.toString(),"aktualisiere Geschwindigkeit...");
if(cSpeed<minSpeed)
alert();
}
@Override
publicvoid onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
publicvoid onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
publicvoid onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}
@Override
publicvoid onClick(View v) {
try {
this.minSpeed=Float.parseFloat(et.getText().toString());
} catch (NumberFormatException nfe) {
this.minSpeed=5;
} finally {
tv.setText("MinSpeed: "+this.minSpeed);
}
}
}
Ich weiß halt nicht weiter... sorry
AW: [Hilfe] suche Entwicklungshilfe für ein Geschwindigkeitswarner
Nun hab ich doch noch den fehler gefunden:
in der AndroidManifest.xml ist hakts, der Fehler lautet:
Class talionis.android.speedmeter.talionis.android.speedmeter does not exist
gut, komm ich aber auch nicht weiter...
AW: [Hilfe] suche Entwicklungshilfe für ein Geschwindigkeitswarner
Code:
<activity android:name="<package>.<Klassenname>"
So muss der entsprechende (Teil)Eintrag in der Manifest.xml aussehen.
1. Der letzt Teil dabei ist einfach der Name der Klasse (Die man übrigens nach Konvention immer gross schreibt. Also: "class Speedmeter", bei dir steht "class speedmeter")
2. Ganz oben der Klasse steht bei meinem Code
Code:
package talionis.android.speedmeter;
Das ist das package. Stell dir das als eine Art Ordner vor. Bei mir sieht das Projekt in Eclipse so aus: src->talionis->android->speedmeter->MainActivity
Du brauchst also bloss deine Klasse richtig zu benennen (Grossschreibung), das Package richtig zu nennen (entsprechend deiner Ordnerstruktur. ausgehend von "src", aber ohne den Namen der Klasse) und das auch im Manifest.xml anzupassen.
So, ich hoffe das hilft dir. Sonst frag einfach.
Gruss.
AW: [Hilfe] suche Entwicklungshilfe für ein Geschwindigkeitswarner
Hallo,
ich bekomms nicht hin.
Ich geb auf, das alles ist für mich wie Latein rückwärts.:ertrink:
Ich bedanke mich für Eure Hilfe, aber Java hat mich geschafft!
Danke...
Liste der Anhänge anzeigen (Anzahl: 1)
AW: [Hilfe] suche Entwicklungshilfe für ein Geschwindigkeitswarner
Hi,
ich melde mich zurück...
Das ist doch irgendwie wie eine Droge ;)
Ich hab nochmal alles neu gemacht (angefangen bei -HelloWorld-) und nun hab ichs soweit hinbekommen, daß das Emu-Handy startet und die Standard-Fehlermeldung kommt -
Zitat:
Sorry! The Application Speedmeter has stopped unexpectedly. Please try again. -Force close-
Also Eclipse findet keinen Fehler und übergibt die Datei an das Handy nur dort bricht es ab. Wie kann ich nun einen Fehler finden, damit ich weiter komme?
:confused:
Ich habe das ganze Projekt gezipt und hier angehangen... falls es jemand interessiert :)
AW: [Hilfe] suche Entwicklungshilfe für ein Geschwindigkeitswarner
Zitat:
Das ist doch irgendwie wie eine Droge
Gell ;).
Also, mach folgendes:
Geh in Eclipse auf Window->Show View->Other->Android->LogCat.
Nun click im unteren Teil von Eclipse auf LogCat. Da siehst du den Output von Android, inkl. aufgetretenen Fehlern.
Übrigens, ich tippe jetzt einfach mal darauf, dass du in der Manifest.xml
Code:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
vergessen hast?
Ich hoffe das Hilft dir weiter. Sonst fragen.
Viel Spass :)
AW: [Hilfe] suche Entwicklungshilfe für ein Geschwindigkeitswarner
Hi,
was heißt vergessen, ich weiss nix und kann nix was mit Java zu tun hat:rolleyes:
Ich habe es nun mal ganz unten bei <uses-sdk... eingetragen aber dann kommt nur eine Wust an Fehlermeldungen im Consolenfenster...
War wohl der falsche Ort.
Wo sollte es denn ungefähr rein, und was macht die Codezeile?
AW: [Hilfe] suche Entwicklungshilfe für ein Geschwindigkeitswarner
Huhu
Die Zeile kommt irgendwo unter /application, aber vor /manifest.
Code:
</application>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>
Es geht um folgendes: Mit dem Android SDK kannst du auf eine Fülle an Schnittstellen zugreifen, zB SMS verschicken, SMS lesen, ins Internet gehen, etcetc. Der Benutzer will das aber eventuell nicht. Deshalb gibt es diese Permissions. Wenn nun jemand deine Speedmeter Applikation installieren würde, dann würde da stehen (sinngemäs): Diese Applikation kann Ihren genauen Standort ermitteln. So kann ein wenig verhindert werden, dass Applikationen im verborgenen unerwünschte Aktionen ausführen.
Hier siehst du eine Liste aller Aktionen, für die in der Manifest.xml eine solche Zeile eingefügt werden muss.
Der Fehler kann aber auch an was anderem liegen. Sonst kopier einfach mal den roten LogCat output hier rein.
AW: [Hilfe] suche Entwicklungshilfe für ein Geschwindigkeitswarner
Jipieh!!!
:D Hey Super ! Es läuft !!!:D Nun werde ich mich die nächsten Tage wohl daran machen müssen, die App in mein Handy zu bekommen und noch den Ton einzuschalten, aber es läuft!!!!
Der Fehler war wohl dieser : ich hatte die Manifest.xml geöffnet, als ich auf RUN geklickt habe. Es hat bestimmt gestern Abend schon gelaufen.
Metter Du hast meinen vollen Respekt, daß Du das so gut drauf hast :cool:
AW: [Hilfe] suche Entwicklungshilfe für ein Geschwindigkeitswarner
Hallo,
ich müh mich grad mit der Soundausgabe rum, und habe folgendes eingesetzt:
public void alert() {
Log.v(this.toString(), "Du bist zu langsam!");
MediaPlayer mp = new MediaPlayer();
try {
mp.setDataSource("beep.mp3");
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e)
//SPEED TO LOW. PLAY A SOUND OR WHATEVER HERE.
}
Es kommt immer Syntax-Error on Token...
Die beep.mp3 habe ich direkt unter src importiert, das sollte dann wohl richtig sein, so wie ich das verstanden habe ;)
Wie bekomme ich den Syntax-Fehler weg?
P.S. Ich weiß, ich kann nichts allein machen, aber ich habe die letzten zwei Tage nur versucht und ausprobiert entweder einen Sound oder eine Vibration auszugeben... Ich muß unbedingt einen Kurs mitmachen!
AW: [Hilfe] suche Entwicklungshilfe für ein Geschwindigkeitswarner
Hey.
Das Problem hier ist, dass du nach
} catch (IllegalStateException e)
den Block nicht aufführst.
Es muss so heissen:
} catch (IllegalStateException e) {}
Das ganze korrekt sieht so aus:
public void alert() {
Log.v(this.toString(), "Du bist zu langsam!");
MediaPlayer mp = new MediaPlayer();
try {
mp.setDataSource("beep.mp3");
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
} catch (IOException e) {
}
// SPEED TO LOW. PLAY A SOUND OR WHATEVER HERE.
}
Zitat:
P.S. Ich weiß, ich kann nichts allein machen, aber ich habe die letzten zwei Tage nur versucht und ausprobiert entweder einen Sound oder eine Vibration auszugeben... Ich muß unbedingt einen Kurs mitmachen!
Dafür ist das Forum ja da. :)
Gruss