Nabend zusammen.
Ich habe zur Übungszwecken ein App geschrieben welches einem die Accelerometer Werte angibt. Da ich kein Android Gerät besitze benutze ich den Sensorsimulator der Firma OpenIntentsUG in Version 1.1.1.
Ich habe die erforderliche library natürlich dem Projekt hinzugefügt. Die Android Version ist 2.3.3.
Es funktioniert alles einwand frei, die app wird in dem AVD gestartet doch sobald ich mir die 3 Werte anzeigen lassen will stürtzt die App ab mit dem Fehler:
NoClassDefFoundError: hapra.sensor.Accelerometer$1
at hapra.sensor.Accelerometer.<init>(Accelerometer.java:35
Wenn ich die App so abändere um sie auf einem realen Device zu installieren funktioniert alles einwandfrei. Ich habe mir dazu mal ein Android Handy ausgeliehen und darauf klapt alles wunder bar, die App läuft. Wie kanndas sein?
Der Code:
SensorsActivity, hier wird ie App gestartet.
Accelerometer
AccelerometerActivity
Ich habe zur Übungszwecken ein App geschrieben welches einem die Accelerometer Werte angibt. Da ich kein Android Gerät besitze benutze ich den Sensorsimulator der Firma OpenIntentsUG in Version 1.1.1.
Ich habe die erforderliche library natürlich dem Projekt hinzugefügt. Die Android Version ist 2.3.3.
Es funktioniert alles einwand frei, die app wird in dem AVD gestartet doch sobald ich mir die 3 Werte anzeigen lassen will stürtzt die App ab mit dem Fehler:
NoClassDefFoundError: hapra.sensor.Accelerometer$1
at hapra.sensor.Accelerometer.<init>(Accelerometer.java:35
Wenn ich die App so abändere um sie auf einem realen Device zu installieren funktioniert alles einwandfrei. Ich habe mir dazu mal ein Android Handy ausgeliehen und darauf klapt alles wunder bar, die App läuft. Wie kanndas sein?
Der Code:
SensorsActivity, hier wird ie App gestartet.
Java:
package hapra.sensor;
import android.app.Activity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.*;
import android.content.*;
import android.app.*;
public class SensorsActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
boolean result = super.onCreateOptionsMenu(menu);
MenuInflater mi =getMenuInflater();
mi.inflate(R.menu.menu, menu);
return result;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()){
case R.id.accel:
Intent accel = new Intent(this, AccelerometerActivity.class);
startActivity(accel);
return true;
case R.id.gps:
Intent gps = new Intent(this, GPSActivity.class);
startActivity(gps);
return true;
case R.id.exit:
new AlertDialog.Builder(this)
.setTitle(R.string.exitConfirmTitle)
.setMessage(R.string.exitConfirmText)
.setPositiveButton("OK",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
finish();
}
}).setNegativeButton("Cancle", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
}).show();
}
return true;
}
}
Accelerometer
Java:
package hapra.sensor;
import org.openintents.sensorsimulator.hardware.SensorManagerSimulator;
import org.openintents.sensorsimulator.hardware.Sensor;
import org.openintents.sensorsimulator.hardware.SensorEvent;
import org.openintents.sensorsimulator.hardware.SensorEventListener;
import android.content.Context;
import android.hardware.SensorManager;
/*import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
*/
public class Accelerometer{
private SensorManagerSimulator sm;
//private SensorManager sm;
private Accelerometer.Callback cb;
public interface Callback{
public void accelerationChanged(float x, float y, float z);
}
public Accelerometer(Context c, Accelerometer.Callback cb){
this.cb = cb;
//sm = (SensorManager) c.getSystemService(Context.SENSOR_SERVICE);
//sm=(SensorManagerSimulator) c.getSystemService(Context.SENSOR_SERVICE);
sm=SensorManagerSimulator.getSystemService(c, Context.SENSOR_SERVICE);
sm.connectSimulator();
sm.registerListener(listener, sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_NORMAL);
}
private SensorEventListener listener = new SensorEventListener(){
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy){
}
@Override
public void onSensorChanged(SensorEvent event){
cb.accelerationChanged(event.values[0], event.values[1], event.values[2]);
}
};
public void close(){
sm.unregisterListener(listener);
}
}
AccelerometerActivity
Java:
package hapra.sensor;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class AccelerometerActivity extends Activity implements Accelerometer.Callback{
private Accelerometer a;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.accel);
a=new Accelerometer(this,this);
}
@Override
public void accelerationChanged(float x, float y, float z){
TextView tx = (TextView) findViewById(R.id.coordX);
tx.setText(x+"");
TextView ty = (TextView) findViewById(R.id.coordY);
ty.setText(y+"");
TextView tz = (TextView) findViewById(R.id.coordZ);
tz.setText(z+"");
}
@Override
public void onDestroy(){
super.onDestroy();
a.close();
}
}