1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Variabler Balken der G-Kraft darstellt.

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von felix123, 18.10.2010.

  1. felix123, 18.10.2010 #1
    felix123

    felix123 Threadstarter Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    18.10.2010
    Servus Leute,

    ich bin leider erst Android Anfänger aber vielleicht könnt ihr mir ja trotzdem helfen.

    Ich habe einen Code der mir immer die aktuell wirkende G-Kraft anzeigt. Das ganze möchte ich jetzt mit einem Balken Visualisieren. Also desto mehr G-Kraft desto größer der Balken.

    Ich habe jetzt in zwei englischen Büchern gestöbert nur finde ich nichts wie ich das in meinen Code einbetten kann. Ein komplett neues Programm mit einem Balken erstellen ist ja nicht so schwierig.

    Vielleicht könnte mir jemand erklären wie ich einen Balken in mein Programm einbinde. Wo der liegt ist eigentlich erstmal relativ egal.

    Hier ist der Code:
    Code:
    package com.paad.forceometer;
    
    import java.util.Timer;
    import java.util.TimerTask;
    
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.Rect;
    import android.hardware.Sensor;
    import android.hardware.SensorEvent;
    import android.hardware.SensorEventListener;
    import android.hardware.SensorManager;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnTouchListener;
    import android.widget.TextView;
    
    public class Forceometer extends Activity {
        SensorManager sensorManager;
        TextView accelerationTextView;
        TextView maxAccelerationTextView;
        float currentAcceleration = 0;
        float maxAcceleration = 0;
        private final Rect  selrect = new Rect();
    
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle icicle) {
            super.onCreate(icicle);
            setContentView(R.layout.main);
    
            accelerationTextView = (TextView) findViewById(R.id.acceleration);
            maxAccelerationTextView = (TextView) findViewById(R.id.maxAcceleration);
            sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    
            Sensor accelerometer = sensorManager
                    .getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
            sensorManager.registerListener(sensorEventListener, accelerometer,
                    SensorManager.SENSOR_DELAY_FASTEST);
    
            Timer updateTimer = new Timer("gForceUpdate");
            updateTimer.scheduleAtFixedRate(new TimerTask() {
                public void run() {
    
                    updateGUI();
                }
            }, 0, 100);
        }
        
    
        private final SensorEventListener sensorEventListener = new SensorEventListener() {
            double calibration = SensorManager.STANDARD_GRAVITY;
    
            public void onAccuracyChanged(Sensor sensor, int accuracy) {
            }
    
            public void onSensorChanged(SensorEvent event) {
                double x = event.values[0];
                double y = event.values[1];
                double z = event.values[2];
    
                double a = Math.round(Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)
                        + Math.pow(z, 2)));
                currentAcceleration = Math.abs((float) (a - calibration));
    
                if (currentAcceleration > maxAcceleration)
                    maxAcceleration = currentAcceleration;
            }
        };
    
        private void updateGUI() {
            runOnUiThread(new Runnable() {
                public void run() {
                    
                    String currentG = currentAcceleration
                            / SensorManager.STANDARD_GRAVITY + "Gs";
                    accelerationTextView.setText(currentG);
                    accelerationTextView.invalidate();
    
                    String maxG = maxAcceleration / SensorManager.STANDARD_GRAVITY
                            + "Gs";
                    maxAccelerationTextView.setText(maxG);
                    maxAccelerationTextView.invalidate();
                }
            });
        };
    
    }
     
  2. felix123, 18.10.2010 #2
    felix123

    felix123 Threadstarter Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    18.10.2010
    Edit:

    Ich hab jetzt hiermit geschafft Rechtecke etc zu zeichnen.
    Nur überschreibt mir der mein setContentView einfach. Ich weiß nicht wie ich das in mein anderes G-Kraft Programm implementieren kann.

    Hab auch beim anderen mal die Panel Klasse einfach drunter eingefügt und oben von setContentView(R.layout.main); auf setContentView(new Panel(this)); geändert aber dann stürzt das Programm immer ab =/

    Code:
    package zeichnen.felix;
    
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.os.Bundle;
    import android.view.View;
    import android.view.Window;
    
    public class Draw2d extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(new Panel(this));
        }
    }
    class Panel extends View{
        public Panel(Context context){
            super(context);
        }
        @Override
        public void onDraw(Canvas canvas) {
            Paint paint = new Paint();
            paint.setColor(Color.WHITE);
            canvas.drawCircle(60, 20, 15, paint);
            
        }
    }
     
  3. ko5tik, 18.10.2010 #3
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    "programm stürzt ab" gibt es nicht - im logcat stehen Stacktraces und Erklärungen
    (meistens sogar brauchbare)
     

Diese Seite empfehlen