Autore Topic: acquisizione dati dall'accelerometro: aiuto sono una frana :)  (Letto 1728 volte)

Offline Giuls

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows Xp
acquisizione dati dall'accelerometro: aiuto sono una frana :)
« il: 12 Settembre 2012, 11:50:00 CEST »
0
Salve a tutti, premetto che sono una frana con android sdk avendo iniziato da pochissimo...ma ho urgenza di acquisire dati dall'accelerometro. Ho trovato diversi codici tra cui questo che posto ma sbaglierò a non inserire qualcosa nel modo o nel posto giusto o mi mancano delle classi perchè solo inserendo il codice già mi dà errori e non mi parte l'emulatore.
vi posto il codice.java che ho chiamato MainActivity.java e l'activity_main.xml evidenziando in rosso dove mi dà l'errore. abbiate un po' di pazienza vi prego :)
grazie a tutti


Codice (Java): [Seleziona]
package test.accelerometer.sensor;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.content.Context;
import android.widget.TextView;
//pacchetti per i sensori
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorManager;
import android.hardware.SensorEventListener;
public class MainActivity extends Activity
{
private SensorManager gestore;
private List<Sensor> accelerometri;
private TextView finestra;
[color=red]private TableLayout layout,datiX,datiY,datiZ;[/color]
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
[color=red]setContentView(R.layout.main);[/color]
finestra = (TextView)findViewById(R.id.firstacquisizione);
TextView accelerometer = (TextView)findViewById(R.id.presenza);
TextView nome = (TextView)findViewById(R.id.nome);
[color=red]datiX = (TextView)findViewById(R.id.datiX);
datiY = (TextView)findViewById(R.id.datiY);
datiZ = (TextView)findViewById(R.id.datiZ);[/color]
finestra.setText("Acquisizione Misure");
gestore = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
accelerometri = gestore.getSensorList(Sensor.TYPE_ACCELEROMETER);
if ((accelerometri.size()) != 0 && (accelerometri) != null)
{
accelerometer.setText("\nAccelerometro acquisito correttamente.\n");
for (Sensor accelerometro : accelerometri)
{
accelerometro = gestore.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
nome.setText(accelerometro.getName());
gestore.registerListener(accelerometerListener, accelerometro, SensorManager.SENSOR_DELAY_FASTEST);
}
}
else {
accelerometer.setText("\nAccelerometro non disponibile sul dispositivo.\n");
return;
}
}
@Override
protected void onResume()
{
super.onResume();
Sensor accelerometro = gestore.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
gestore.registerListener(accelerometerListener, accelerometro, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onPause()
{
super.onPause();
gestore.unregisterListener(accelerometerListener);
}
@Override
protected void onDestroy()
{
super.onDestroy();
gestore.unregisterListener(accelerometerListener);
}
SensorEventListener accelerometerListener = new SensorEventListener()
{
@Override
[color=red]public void onAccuracyChanged(Sensor A,int accuracy)[/color]
{
}
@Override
[color=red]public void onSensorChanged(SensorEvent event)[/color]
{
float[] v = new float[3];
v[0] = event.values[0];
v[1] = event.values[1];
v[2] = event.values[2];
[color=red]datiX.setText("X :"+v[0]);
datiY.setText("Y :"+v[1]);
datiZ.setText("Z :"+v[2]); }[/color]
};
}






Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
[color=red]android:text="@string/hello"[/color]
/>
<TextView
android:id="@+id/firstacquisizione"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/presenza"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/nome"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/datiX"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/datiY"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/datiZ"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:acquisizione dati dall'accelerometro: aiuto sono una frana :)
« Risposta #1 il: 12 Settembre 2012, 18:43:29 CEST »
0
Prima di tutto devi cercare di avere un ambiente di sviluppo stabile, per cui poniti l'obiettivo di far girare un HelloWorld su un emulatore. Senza questo minimo step, non c'è modo di investigare gli altri problemi.

Se dicendo "non mi parte l'emulatore" intendi dire che l'app non si avvia perchè da' errore, dovresti riportare quale tipo di errore di segnala eclipse. Se invece l'app viene lanciata, ma si chiude subito per errore, devi aprire in eclipse il pannello del LOGCAT e individuare le righe degli ERROR per capire qual'è la causa.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline FabioZonta

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    emulatore pc
  • Sistema operativo:
    mac os
Re:acquisizione dati dall'accelerometro: aiuto sono una frana :)
« Risposta #2 il: 12 Febbraio 2013, 14:58:22 CET »
0
Ti allego il codice corretto.

Codice (Java): [Seleziona]
public class Accelerometro extends Activity
{
        private SensorManager gestore;
        private List<Sensor> accelerometri;
        private TextView finestra;
        private TableLayout layout;
       
        TextView datiZ;
        TextView datiY;
        TextView datiX;
                        @Override
                        public void onCreate(Bundle savedInstanceState)
        {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_accelerometro);
               
                finestra = (TextView)findViewById(R.id.firstacquisizione);
                TextView accelerometer = (TextView)findViewById(R.id.presenza);
                TextView nome = (TextView)findViewById(R.id.nome);
               
                datiX = (TextView)findViewById(R.id.datiX);
                datiY = (TextView)findViewById(R.id.datiY);
                datiZ = (TextView)findViewById(R.id.datiZ);
                                finestra.setText("Acquisizione Misure");
                gestore = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
                accelerometri = gestore.getSensorList(Sensor.TYPE_ACCELEROMETER);
                if ((accelerometri.size()) != 0 && (accelerometri) != null)
                {
                        accelerometer.setText("\nAccelerometro acquisito correttamente.\n");
                        for (Sensor accelerometro : accelerometri)
                        {
                                accelerometro = gestore.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
                                nome.setText(accelerometro.getName());
                                gestore.registerListener(accelerometerListener, accelerometro, SensorManager.SENSOR_DELAY_FASTEST);
                        }
                }
                else {
                        accelerometer.setText("\nAccelerometro non disponibile sul dispositivo.\n");
                        return;
                }
        }
        @Override
        protected void onResume()
        {
                super.onResume();
                Sensor accelerometro = gestore.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
                gestore.registerListener(accelerometerListener, accelerometro, SensorManager.SENSOR_DELAY_NORMAL);
        }
        @Override
        protected void onPause()
        {
                super.onPause();
                gestore.unregisterListener(accelerometerListener);
        }
        @Override
        protected void onDestroy()
        {
                super.onDestroy();
                gestore.unregisterListener(accelerometerListener);
        }
        SensorEventListener accelerometerListener = new SensorEventListener()
        {
                @Override
                public void onAccuracyChanged(Sensor A,int accuracy)
                                {
                                }
                @Override
                public void onSensorChanged(SensorEvent event)
                                {
                        float[] v = new float[3];
                        v[0] = event.values[0];
                        v[1] = event.values[1];
                        v[2] = event.values[2];
                        datiX.setText("X :"+v[0]);
                        datiY.setText("Y :"+v[1]);
                        datiZ.setText("Z :"+v[2]); }
        };
}

Offline giuCris

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung ace plus
  • Sistema operativo:
    Ubuntu 12.04
Re:acquisizione dati dall'accelerometro: aiuto sono una frana :)
« Risposta #3 il: 14 Marzo 2013, 17:51:06 CET »
0
sull'emulatore l'accelerometro non funziona, tranne se il tuo computer ha l'accelerometro!

Offline felasandroid

  • Utente normale
  • ***
  • Post: 345
  • Respect: +10
    • Github
    • balduzziantonio
    • balduzziantonio.unifi
    • Mostra profilo
  • Dispositivo Android:
    Huawei P8 Lite
  • Play Store ID:
    FelasTech
  • Sistema operativo:
    Windows 10
Re:acquisizione dati dall'accelerometro: aiuto sono una frana :)
« Risposta #4 il: 18 Marzo 2013, 17:32:45 CET »
0
lo devi testare sul dispositivo