Variabler Balken der G-Kraft darstellt.

F

felix123

Neues Mitglied
0
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();
            }
        });
    };

}
 
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);
        
    }
}
 
"programm stürzt ab" gibt es nicht - im logcat stehen Stacktraces und Erklärungen
(meistens sogar brauchbare)
 

Ähnliche Themen

M
Antworten
3
Aufrufe
160
moin
M
M
Antworten
2
Aufrufe
628
Mozart40
M
S
Antworten
33
Aufrufe
2.666
Sempervivum
S
Zurück
Oben Unten