Beiträge von pirate4888

    Hatte gedacht das wäre überflüssig ;)


    Die komplette Main.java


    package de.pirate4888.gleitschirmvario3;



    import android.os.Bundle;
    import android.app.Activity;


    import android.view.Menu;
    import android.widget.TextView;


    public class Main extends Activity {



    TextView error;
    TextView magnetVanzeige;
    TextView gravityVanzeige;
    Sensoren magnetfield = new Sensoren("magnetfield");
    Sensoren gravityfield= new Sensoren("gravityfield");

    float[] magvektor= new float[3];
    float[] gravvektor= new float[3];
    boolean errorflag = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    error=(TextView)findViewById(R.id.error);
    magnetVanzeige=(TextView)findViewById(R.id.magnetVanzeige);
    gravityVanzeige=(TextView)findViewById(R.id.gravityVanzeige);

    errorflag=magnetfield.setUpSensor();
    if (errorflag=true) error.setText("Error: Sensor nicht konfigurierbar");
    magvektor=magnetfield.getVektor();
    magnetfield.setDownSensor();
    magnetVanzeige.setText("Magnetfeld Vektor:"+
    "\nX:"+ magvektor[0]+
    "\nY:"+ magvektor[1]+
    "\nZ:"+ magvektor[2]);

    errorflag=gravityfield.setUpSensor();
    if (errorflag=true) error.setText("Error: Sensor nicht konfigurierbar");
    gravvektor=gravityfield.getVektor();
    gravityfield.setDownSensor();

    gravityVanzeige.setText("Gravitations Vektor:"+
    "\nX:"+ gravvektor[0]+
    "\nY:"+ gravvektor[1]+
    "\nZ:"+ gravvektor[2]);

    return true;
    }


    }




    Die Komplette Sensoren.java


    package de.pirate4888.gleitschirmvario3;



    import android.app.Activity;
    import android.hardware.Sensor;
    import android.hardware.SensorEvent;
    import android.hardware.SensorEventListener;
    import android.hardware.SensorManager;


    public class Sensoren extends Activity implements SensorEventListener {


    SensorManager sensorManager;
    private String type;
    private float vektor[]=new float[3];

    public Sensoren(String t){
    type = t;

    }


    public boolean setUpSensor(){

    if (type=="accelerometer"){
    Sensor gravityfield;
    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    gravityfield=sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    sensorManager.registerListener(this, gravityfield, SensorManager.SENSOR_DELAY_NORMAL);
    return false;
    }
    else if (type=="magnetfield"){
    Sensor magnetfield;
    sensorManager=(SensorManager) getSystemService(SENSOR_SERVICE);
    magnetfield=sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
    sensorManager.registerListener(this, magnetfield, SensorManager.SENSOR_DELAY_NORMAL);
    return false;
    }
    else return true;

    }

    public void setDownSensor(){
    sensorManager.unregisterListener(this);
    }

    public float[] getVektor(){
    return vektor;
    }
    @Override public void onAccuracyChanged(Sensor arg0, int arg1) {
    // TODO Auto-generated method stub

    }


    @Override
    public void onSensorChanged(SensorEvent event) {
    // TODO Auto-generated method stub
    vektor=event.values;
    }
    }

    Leider ist Dein LogCat nicht informativ genug, man sieht nicht, was genau ihm nicht passt.


    02-04 16:50:51.251: E/(4770): Device driver API match
    02-04 16:50:51.251: E/(4770): Device driver API version: 23
    02-04 16:50:51.251: E/(4770): User space API version: 23
    02-04 16:50:51.251: E/(4770): mali: REVISION=Linux-r3p2-01rel3 BUILD_DATE=Wed Oct 9 21:05:57 KST 2013
    02-04 16:50:51.421: E/EnterpriseContainerManager(2358): ContainerPolicy Service is not yet ready!!!
    02-04 16:50:55.431: E/AndroidRuntime(4770): FATAL EXCEPTION: main
    02-04 16:50:55.431: E/AndroidRuntime(4770): java.lang.NullPointerException
    02-04 16:50:55.431: E/AndroidRuntime(4770): at de.pirate4888.gleitschirmvario3.Sensoren.setUpSensor(Sensoren.java:36)
    02-04 16:50:55.431: E/AndroidRuntime(4770): at de.pirate4888.gleitschirmvario3.Main.onCreateOptionsMenu(Main.java:37)
    02-04 16:50:55.431: E/AndroidRuntime(4770): at android.app.Activity.onCreatePanelMenu(Activity.java:2578)
    02-04 16:50:55.431: E/AndroidRuntime(4770): at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:507)
    02-04 16:50:55.431: E/AndroidRuntime(4770): at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:934)
    02-04 16:50:55.431: E/AndroidRuntime(4770): at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:292)
    02-04 16:50:55.431: E/AndroidRuntime(4770): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:791)
    02-04 16:50:55.431: E/AndroidRuntime(4770): at android.view.Choreographer.doCallbacks(Choreographer.java:591)
    02-04 16:50:55.431: E/AndroidRuntime(4770): at android.view.Choreographer.doFrame(Choreographer.java:560)
    02-04 16:50:55.431: E/AndroidRuntime(4770): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777)
    02-04 16:50:55.431: E/AndroidRuntime(4770): at android.os.Handler.handleCallback(Handler.java:730)
    02-04 16:50:55.431: E/AndroidRuntime(4770): at android.os.Handler.dispatchMessage(Handler.java:92)
    02-04 16:50:55.431: E/AndroidRuntime(4770): at android.os.Looper.loop(Looper.java:176)
    02-04 16:50:55.431: E/AndroidRuntime(4770): at android.app.ActivityThread.main(ActivityThread.java:5419)
    02-04 16:50:55.431: E/AndroidRuntime(4770): at java.lang.reflect.Method.invokeNative(Native Method)
    02-04 16:50:55.431: E/AndroidRuntime(4770): at java.lang.reflect.Method.invoke(Method.java:525)
    02-04 16:50:55.431: E/AndroidRuntime(4770): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
    02-04 16:50:55.431: E/AndroidRuntime(4770): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
    02-04 16:50:55.431: E/AndroidRuntime(4770): at dalvik.system.NativeStart.main(Native Method)
    02-04 16:50:56.096: E/android.os.Debug(2358): !@Dumpstate > sdumpstate -k -t -z -d -o /data/log/dumpstate_app_error




    Hoffe da sieht man mehr!


    Hast Du im Manifest die Werte entsprechend Deiner Sensoren eingetragen?
    Link zur Dokumentation

    Hab im Manifest beide Sensoren eingertragen mit dem Namen = android.hardw.......
    und required = True



    Vielen dank schonmal das ihr euch das anschaut.

    Hier noch die LogCat:
    02-04 16:00:01.385: D/BOINC_GUI(4968): PackageReplacedReceiver: other package: package:de.pirate4888.vario3
    02-04 16:00:06.625: E/AndroidRuntime(24438): at de.pirate4888.3.Sensoren.setUpSensor(Sensoren.java:33)
    02-04 16:00:06.625: E/AndroidRuntime(24438): at de.pirate4888.3.Main.onCreateOptionsMenu(Main.java:35)
    02-04 16:00:06.935: D/CrashAnrDetector(2358): processName: de.pirate4888.vario3
    02-04 16:00:06.940: D/CrashAnrDetector(2358): broadcastEvent : de.pirate4888.vario3 data_app_crash

    Hallo erstmal!


    Ich da ein kleines Anfängerproblem. Und zwar bricht meine App immer an einer bestimmten Stelle ab. Über den Debugger und im Catlog habe ich sie ausfindig gemacht.


    Es handelt sich um eine Methode zum Sensor Initalisieren. die Methode ist in der Klasse "Sensoren".
    Ich verstehe nich warum das nicht geht. den selben Code habe ich mal direkt in eine Methode unter Main geschrieben da gings!!! Es gibt keine offensichtlichen Problems oder Hinweise.


    Hier der Code:


    public class Sensoren extends Activity implements SensorEventListener {


    SensorManager sensorManager;
    private String type;
    private float vektor[]=new float[3];


    public Sensoren(String t){
    type = t;
    }


    public boolean setUpSensor(){


    if (type=="accelerometer"){
    Sensor gravityfield;
    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    gravityfield=sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    sensorManager.registerListener(this, gravityfield, SensorManager.SENSOR_DELAY_NORMAL);
    return false;
    }
    else if (type=="magnetfield"){
    Sensor magnetfield;
    sensorManager=(SensorManager) getSystemService(SENSOR_SERVICE);
    magnetfield=sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
    sensorManager.registerListener(this, magnetfield, SensorManager.SENSOR_DELAY_NORMAL);
    return false;
    }
    else return true;

    }


    public float[] getVektor(){
    return vektor;
    }
    @Override public void onAccuracyChanged(Sensor arg0, int arg1) {
    // TODO Auto-generated method stub

    }


    @Override
    public void onSensorChanged(SensorEvent event) {
    // TODO Auto-generated method stub
    vektor=event.values;
    }
    }


    Besagte Stellen hab ich Rot geschrieben. Hoffe ihr findet es schnell ich verzeifle an dem Ding! ;)


    Gruß Pirate