Ergebnis 1 bis 20 von 27
-
Bin neu hier
- 12.06.2010, 15:03
- #1
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
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.
-
Ehrenmitglied
- 14.06.2010, 10:27
- #2
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
-
Bin neu hier
- 14.06.2010, 20:07
- #3
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.
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...
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...
-
Ehrenmitglied
- 14.06.2010, 21:55
- #4
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
-
- 16.06.2010, 21:02
- #5
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);
}
}
}
-
Bin neu hier
- 17.06.2010, 03:26
- #6
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) eine Einstiegshilfe ist.
CU bokieh
-
Fühle mich heimisch
- 17.06.2010, 08:15
- #7
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
-
Bin neu hier
- 17.06.2010, 08:56
- #8
Hi,
Die hab ich getestet, ist aber nicht einzustellen, ab wann die Musik läuft. Ist also nicht wirklich zu gebrauchen.
Danke trotzdem ...
-
- 20.06.2010, 11:50
- #9
Und, hats geklappt?
-
Bin neu hier
- 20.06.2010, 17:30
- #10
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
-
Bin neu hier
- 20.06.2010, 17:42
- #11
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...
-
- 20.06.2010, 18:22
- #12
Code:<activity android:name="<package>.<Klassenname>"
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;
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.
-
Bin neu hier
- 20.06.2010, 19:48
- #13
Hallo,
ich bekomms nicht hin.
Ich geb auf, das alles ist für mich wie Latein rückwärts.
Ich bedanke mich für Eure Hilfe, aber Java hat mich geschafft!
Danke...
-
Bin neu hier
- 22.06.2010, 19:35
- #14
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 -Sorry! The Application Speedmeter has stopped unexpectedly. Please try again. -Force close-
Ich habe das ganze Projekt gezipt und hier angehangen... falls es jemand interessiert
-
- 22.06.2010, 20:07
- #15
Das ist doch irgendwie wie eine Droge.
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" />
Ich hoffe das Hilft dir weiter. Sonst fragen.
Viel Spass
-
Bin neu hier
- 22.06.2010, 21:03
- #16
Hi,
was heißt vergessen, ich weiss nix und kann nix was mit Java zu tun hat
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?
-
- 22.06.2010, 22:15
- #17
Huhu
Die Zeile kommt irgendwo unter /application, aber vor /manifest.
Code:</application> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> </manifest>
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.
-
Bin neu hier
- 23.06.2010, 03:29
- #18
Jipieh!!!
Hey Super ! Es läuft !!!
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
-
Bin neu hier
- 24.06.2010, 19:31
- #19
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!
-
- 24.06.2010, 23:16
- #20
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.
}
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!
Gruss
Ähnliche Themen
-
Suche ein Programm für Profile
Von icebaba2001 im Forum HTC Touch Pro 2Antworten: 4Letzter Beitrag: 06.08.2009, 10:24 -
Suche ein Programm für W-Lan Verwaltung
Von brillos im Forum Software (Touchscreen)Antworten: 1Letzter Beitrag: 23.04.2009, 00:51 -
Suche ein Videoconverter für Touch HD
Von Matala im Forum Touch HD MediaAntworten: 1Letzter Beitrag: 20.02.2009, 23:07 -
Suche für S200 ein...
Von Dheena im Forum PlaudereckeAntworten: 4Letzter Beitrag: 28.05.2006, 20:36 -
HILFE ich suche ein preiswertes Orange SPV C500 Handy!
Von Naira im Forum PlaudereckeAntworten: 3Letzter Beitrag: 22.11.2004, 09:36
Pixel 10 Serie mit Problemen:...