# Lagesensor eines Handys ansprechen?



## Bastifantasti (30. Mrz 2010)

Hallo,

wie kann ich den Lagesensor eines Handys ansprechen?
Also ich habe zwar (noch) kein Handy mit Lagesensor, aber meine Schwester hat eins, und meine Freundin wird bald eins haben. Naja und da wurde ich halt gefragt, ob ich dann nicht ein Handyspiel programmieren kann, was dann auch mit dem Sensor funktioniert...

Also was muss ich da machen?


----------



## Noctarius (30. Mrz 2010)

android.hardware | Android Developers


----------



## Bastifantasti (30. Mrz 2010)

Hmm... sorry, aber was muss ich da jetzt machen? Also was genau muss ich da importieren, bzw. welche Methoden muss ich nutzen?


----------



## Noctarius (30. Mrz 2010)

Ist halt ein ganz normales Listener / Observer System.

Ergo eine Implementierung von SensorEventListener am SensorManager registrieren und auf die Events reagieren


----------



## Bastifantasti (30. Mrz 2010)

Mhhh... kannst du vielleicht mal ein Beispiel machen?


----------



## Noctarius (30. Mrz 2010)

Ähm ka ich versuch's mal, da ich auch noch Android Dalvik Zeug programmiert hab. Macht also noch keinen Anspruch auf Richtigkeit (sonst musst bis Mitte April warten *g*)

Ich versuch's mal eben im Emulator hinzubekommen. Ich meld mich gleich nomma.


----------



## Noctarius (30. Mrz 2010)

Ich denke so geht es 


```
public class Lagesensor extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		SensorManager manager = (SensorManager) getSystemService(SENSOR_SERVICE);
		Sensor sensor = manager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
		manager.registerListener(new SensorHandler(), sensor,
				SensorManager.SENSOR_DELAY_GAME);
	}

	public static class SensorHandler implements SensorEventListener {

		@Override
		public void onAccuracyChanged(Sensor sensor, int accuracy) {
			System.out.println("onAccuracyChanged::" + sensor.getName() + "::"
					+ accuracy);
		}

		@Override
		public void onSensorChanged(SensorEvent event) {
			System.out.println("onSensorChanged::" + event.sensor.getName()
					+ "::" + event.accuracy);
		}

	}
}
```


----------



## Bastifantasti (30. Mrz 2010)

Also ich kann da so jetzt nichts mit anfangen... ich mein das ist ja nicht alles, oder?
Also irgendwo muss ich doch sicherlich was importieren oder so... also wenn du mal ein komplettes, in sich funktionierendes Beispiel machen könntest, fänd ich das schon sehr gut. Kann von mir aus auch ne Woche oder so dauern, ist jetzt also nicht sooo dermaßen dringend...


----------



## Noctarius (30. Mrz 2010)

Lol Oo Also wenn du damit nichts anfangen kannst, wie willst du dann ein komplettes Spiel machen?

Neues Android Projekt machen, Code in die neue Klasse pasten, Klassen-Imports automatisch generieren, Handler mit Code füllen, fertig.


----------



## Bastifantasti (30. Mrz 2010)

Sagst du so einfach...
Also ich habe ein Spiel fertig gemacht.
Also können, kann ich das quasi schon.

Aber mit sowas komm ich jetzt grade nicht so klar...

Also wie generiere ich denn Imports automatisch und was für einen Handler fülle ich mit Codes???


----------



## eRaaaa (30. Mrz 2010)

Gehts denn hier überhaupt um Android?  Was fürn Handy hattn deine Schwester ?


----------



## Bastifantasti (30. Mrz 2010)

Ok, also meine Schwester hat ein Sony Ericsson C902, meine Freundin wird ein Samsung Jet, oder Pixon bekommen.
Geht das nicht für alle gleich?


----------



## Noctarius (30. Mrz 2010)

Naja kommt halt darauf an was da für ein Betriebssystem drauf läuft


----------



## Bastifantasti (31. Mrz 2010)

Also bei allen 3 Handys ist es jeweils eine Eigenentwicklung...
Also mich würde das im Moment sowieso mehr für das C902 interessieren, da ich das direkt testen könnte...


----------



## Noctarius (31. Mrz 2010)

Dann schau bei Sony was es an Developerkits für das OS gibt, runterladen, vermutlich C++ lernen und weitermachen.


----------



## Bastifantasti (31. Mrz 2010)

Also willst du mir gerade sagen, dass das doch nicht einfach nur mit JAVA geht, so wie du es erst gesagt hattest?


----------



## The_S (31. Mrz 2010)

Bastifantasti hat gesagt.:


> Also willst du mir gerade sagen, dass das doch nicht einfach nur mit JAVA geht, so wie du es erst gesagt hattest?



Es kommt auf das Endgerät an und welche J2ME Bibliotheken das Endgerät unterstützt.


----------



## Bastifantasti (31. Mrz 2010)

Wie gesagt: C902 und Pixon oder Jet.


----------



## The_S (31. Mrz 2010)

Dann Google doch mal, ob und wie du den Lagesensor dieser Geräte kannst. Etwas anderes außer Google fragen kann hier mit hoher Wahrscheinlichkeit auch niemand machen.


----------



## Bastifantasti (31. Mrz 2010)

Wenn du mir erklären kannst, was du mit "ob und wie du den Lagesensor dieser Geräte kannst" meinst, dann kann ich mal googlen... 

Also gegooglet habe ich ja schon, wie man das mit dem Lagesensor machen kann, nur bin ich halt davon ausgegangen, dass das immer gleich ist. Außerdem hatte ich auch nichts gefunden, sodass ich mich hier im Forum angemeldet habe.


----------



## The_S (31. Mrz 2010)

Upps, da fehlt ein "verwendet" an vorletzter Stelle.

Kannst mal hier sehen: http://www.j2meforum.com/viewtopic.php?t=6198 . Ein G-Sensor sollte das sein, was du versuchst anzusprechen.


----------



## Noctarius (31. Mrz 2010)

Nee der Lagesensor müsste das Gyroscope sein. Der G-Sensor ist doch der Beschleunigungsmesser oder bin ich grad auf dem Holzweg (im Halbschlaf?) ^^


----------



## The_S (31. Mrz 2010)

Noctarius hat gesagt.:


> Nee der Lagesensor müsste das Gyroscope sein. Der G-Sensor ist doch der Beschleunigungsmesser oder bin ich grad auf dem Holzweg (im Halbschlaf?) ^^



Ich hab keine Ahnung, gerade das erste Mal damit beschäftigt  .


----------



## Noctarius (31. Mrz 2010)

Ich hab mich damit auch noch nie wirklich auseinander gesetzt, das Desire ist erst ab April bei T-Mobile und dann bei mir


----------



## The_S (1. Apr 2010)

Noctarius hat gesagt.:


> Ich hab mich damit auch noch nie wirklich auseinander gesetzt, das Desire ist erst ab April bei T-Mobile und dann bei mir



Ah, noch jemand der Sehnsüchtig auf das Desire wartet  . Meins wird aber unlocked und nicht von T-Mobile sein  .


----------



## Bastifantasti (1. Apr 2010)

Wo ist der Unterschied zwischen Beschleunigungs- und Lagesensor?
Also ich "brauch" den Sensor, womit man so Spiele wie das mit der Kugel spielen kann. (Also wo die nicht ins Loch fallen darf, ich glaube ihr wisst, was ich da meine...)


----------



## Noctarius (1. Apr 2010)

Das sagt doch der Name wo der Unterschied ist. Der eine misst Beschleunigung der andere die Lage (den gyroskopischen Wert).


----------



## Bastifantasti (10. Apr 2010)

Irgendwie bin ich verwirrt.
Nirgendswo finde ich eine vernünftige Erklärung, was genau jetzt wofür ist, was genau was ist, und was für einen Sensor das Handy braucht, damit ich so ein Spiel mit der Kugel machen kann (So ein Kugellabyrinth halt).

Und ich finde auch nirgendswo, was für einen Sensor das Pixon 12 hat...
Kann mir da denn keiner helfen?


----------



## The_S (12. Apr 2010)

Wir sind hier ein Java-, und kein Handyforum. Evtl. wäre es geschickter in einem Handy/Pixon Forum bzgl. der technischen Details nachzufragen.


----------



## Bastifantasti (12. Apr 2010)

Ok, macht natürlich Sinn, nur da ich mich jetzt nicht extra dafür in ein anderes Forum anmelden wollte, hatte ich gedacht hier mal nach zu fragen.

Eigentlich will ich ja auch nur wissen, wie man solche Sensoren anspricht.
Und dafür bin ich ja wohl hier richtig. 

Wenn ich also ein (am besten) Tutorial für einen Lagesensor und eines für einen Beschleunigungssensor habe, dann denke ich mal bin ich auf der sicheren Seite.

Hat denn niemand vielleicht einen Link zu einer Seite, wo so etwas gut erklärt ist?


----------



## Noctarius (12. Apr 2010)

Schnallst du nicht, dass das darauf ankommt wie das spezifisch auf einer Handyplattform implementiert ist?
Außer auf Android gibt keine allgemeine Implementierung auf J2ME Basis.


----------



## Bastifantasti (12. Apr 2010)

Doch klar schnall ich das.
Nur was willst du mir jetzt damit sagen?
Dass ich aufgeben soll, oder was?

Ich will doch nur wissen, wo ich dann eben diese Information dazu herbekomme.
Und da hatte ich eigentlich gedacht, dass ich in einem J2ME Forum richtig sei...


----------



## Noctarius (12. Apr 2010)

Vom Hersteller des Handys, woher sonst?

Es gibt keine Standard API für diese Sensoren in J2ME. Wenn sie sich überhaupt aus J2ME heraus ansprechen lassen, dann nur durch herstellerspezifische Erweiterungen. Das wurde aber schon erwähnt.

Nur Android bietet in der Standard API (und das ist kein J2ME sondern ein Android-eigener Java Dialekt) direkten Zugriff auf Sensoren dieser Art.


----------



## Bastifantasti (12. Apr 2010)

Ok dann guck ich mal nach "herstellerspezifischen Erweiterungen".
Trotzdem danke für die Hilfe...


----------



## Bastifantasti (2. Mai 2010)

So ich bin fündig geworden.
Allerdings habe ich noch ein Problem.

Hier (Samsung Mobile Innovator - Samsung Developer program for Symbian, Windows Mobile and Java) habe ich ganz unten die Sensor_Demp.zip als jar Datei heruntergeladen und auf dem Pixon 12 ausgeführt.
Funktionierte.

Aber wenn ich den Quellcode der auf der Seite da steht auf meinem Emulator am PC ausführen möchte kommt folgende Fehlermeldung:

package javax.microedition.sensor does not exist 

Also muss ich doch irgendwie dieses Package installieren.
Ich habe dann daraufhin das hier (JSR-000256 Mobile Sensor API 1.0 - Final Release)
heruntergeladen (Ich hoffe, das ist das richtige).
Jedoch weiß ich nicht, wie ich das dann installieren kann, damit mein Emulator das erkennt.
Kann mir jemand da weiterhelfen?


----------



## Noctarius (2. Mai 2010)

Vermutlich in den Buildpath mit aufnehmen


----------



## Tobse (2. Mai 2010)

Ich hatte ein änliches Problem. Das J2ME-Kit von Sun hat das Package javax.microedition.sensor , aber man kann es im Emulator glaub nicht testen, oder ich hab nich gechekt wie. Naja, des Handy frissts auch nicht.


----------



## Bastifantasti (2. Mai 2010)

Also prinzipiell gehts ja.
Also wenn ich die jar Datei in den Emulator lade, kann ich diese auch ausführen.
Nur halt nicht, wenn ich selber Code und es builden lasse.

Was heißt denn in den Buildpath mit aufnehmen?


----------



## Tobse (2. Mai 2010)

Das Java SDK Fürn PC hat auch das javax.microedition nicht, ich wüsste zumindest nicht, wozu es das brauchen sollte. Aber der Emulator braucht es ja, also hat ers.


----------



## Bastifantasti (2. Mai 2010)

Wie gesagt, er hat es eben nicht. Also muss ich es ihm doch geben.
Ich habs doch extra schon heruntergeladen....


----------



## MarderFahrer (5. Mai 2010)

Wenn du es schon runtergeladen hast, musst du deinem Programm aber noch mitteilen, dass es auch vorhanden ist. Woher sollte dein Programm das auch sonst wissen?

Dafür ist wie oben schon erwähnt der Build Path da. Dort können externe Bibliotheken für dein Programm "eingehängt" werden. Dann sind sie dem Programm bekannt und können mittels imports genutzt werden.

Ich weiß jetzt nicht aus dem Kopf wie man einen Build Path konfiguriert. ich nutze als IDE immer Eclipse. Da geht das recht komfortabel mitttels Rechts Klick auf das entsprechende Projekt. Da gibt es eine Konfigurations Seite, wo man externe Bibiltheken direkt von der Festplatte einbinden kann.


----------



## Bastifantasti (5. Mai 2010)

Ja dass downloaden nicht reicht, weiß ich auch.
Deswegen frage ich ja nach, was ich jetzt machen muss.
Ich builde meine Sachen allerdings nicht mit Eclipse sondern mit der Samsung SDK...


----------



## Noctarius (5. Mai 2010)

Wie wäre es wenn du sowas in den Developer-Foren von Samsung nachfragst? Du bist hier tatsächlich der erste der nach dem Samsung SDK fragt seit ich hier bin. Hier wird dir sicher kein Experte über den Weg laufen und sich das Zeug für dich durchlesen wird auch keiner.

Ich bin fast überzeugt, dass das irgendwo in der Dokumentation erklärt ist, wie man externe Bibliotheken einbinden muss.


----------



## Bastifantasti (5. Mai 2010)

Ich hätte ja auch eigentlich gedacht, dass das nichts Samsung-spezifisches ist, sondern allgemein irgendwie installiert werden muss.

Sowas wie java.util oder so, geht ja auch überall ohne, dass ich das Samsung-spezifisch installieren muss.
Deswegen habe ich halt hier gefragt.


----------



## Noctarius (5. Mai 2010)

Das geht überall weil es zum Standard gehört.


----------



## Bastifantasti (5. Mai 2010)

Und genau das wusste ich eben nicht, dass es da unterschiede gibt...


----------



## Noctarius (5. Mai 2010)

Dann solltest du dich vielleicht doch erstmal mit den Basics von Java auseinander setzen, das sind nämlich Grundlagen.


----------



## Bastifantasti (5. Mai 2010)

Was für Basics?
Also ich habe herausgefunden, dass ich jar Dateien beim Samsung SDK als zusätzliche Packages geben kann.
Allerdings ist das was ich heruntergeladen habe keine jar Datei...


----------



## Noctarius (5. Mai 2010)

Dann frag halt im Samsung Forum, da werden das bestimmt schon welche versucht haben und dir erklären können. Ich mach den Thread jetzt zu weil ich der festen Meinung bin, du bist hier falsch.

Bei generellen Java Fragen bist du hier gern gesehen aber aus Faulheit (so kommt es mir vor) nicht im richtigen Forum zu fragen, seh ich nicht ein.

~closed~


----------

