CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 4eyes81 con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: elmegio con ben 7 Thanks ricevuti negli ultimi sette giorni
Utente del mese: bluemask con ben 43 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 5 su 5
Discussione:

uso del sensore accellerometro

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano


    Registrato dal
    Apr 2012
    Località
    Lecce
    Messaggi
    68
    Smartphone
    Defy+ & Acer liquid A1

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    uso del sensore accellerometro

    Salve ragazzi,
    stavo provando a fare una piccola app che usi l'accellerometro per avviare un mediaplayer con un audio nella cartella raw. In pratica quando il cell viene scosso parte un audio. Girando un po su google sono riuscito a buttare giù questo codice, ma mi sto trovando con un problema, ogni volta che il cell viene scosso si avvia in continuazione il player sovrapponendo l'audio, vorrei modificare quindi il seguente codice realizzando un button che serva ad iniziare e stoppare l'interfacciamento con l'accellerometro e con il palyer. Sono riuscito per il player ma non so da dove cominciare per l'accellerometro mi sapreste dare una mano?

    public class SensorTestActivity extends Activity implements SensorEventListener {
    private SensorManager sensorManager;
    private View view;
    private long lastUpdate;
    MediaPlayer mMediaPlayer;
    Button button;

    @Override
    public void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FL AG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    view = findViewById(R.id.textView);
    view.setBackgroundColor(Color.BLUE);

    button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(new OnClickListener(){
    public void onClick(View arg0) {

    mMediaPlayer.stop();

    }
    });

    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    sensorManager.registerListener(this,
    sensorManager.getDefaultSensor(Sensor.TYPE_ACCELER OMETER),
    SensorManager.SENSOR_DELAY_NORMAL);
    lastUpdate = System.currentTimeMillis();
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
    getAccelerometer(event);
    }

    }

    private void getAccelerometer(SensorEvent event) {
    float[] values = event.values;
    // Movement
    float x = values[0];
    float y = values[1];
    float z = values[2];

    float accelationSquareRoot = (x * x + y * y + z * z)
    / (SensorManager.GRAVITY_EARTH * SensorManager.GRAVITY_EARTH);
    long actualTime = System.currentTimeMillis();
    if (accelationSquareRoot >= 2) //
    {
    if (actualTime - lastUpdate < 200) {
    return;
    }
    lastUpdate = actualTime;

    try {

    mMediaPlayer = MediaPlayer.create(getBaseContext(), R.raw.mymusic);

    mMediaPlayer.setLooping(false);
    mMediaPlayer.start();
    mMediaPlayer.setOnCompletionListener(new
    OnCompletionListener() {
    public void onCompletion(MediaPlayer arg0) {
    // if (mMediaPlayer != null) {
    // mMediaPlayer.release();
    // mMediaPlayer = null;
    // }
    }
    });
    } catch (Exception e) {
    if (mMediaPlayer != null) {
    mMediaPlayer.release();
    mMediaPlayer = null;
    }
    }
    }
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy){

    }

    @Override
    protected void onResume() {
    super.onResume();
    // register this class as a listener for the orientation and
    // accelerometer sensors
    sensorManager.registerListener(this,
    sensorManager.getDefaultSensor(Sensor.TYPE_ACCELER OMETER),
    SensorManager.SENSOR_DELAY_NORMAL);
    }

    @Override
    protected void onPause() {
    // unregister listener
    super.onPause();
    sensorManager.unregisterListener(this);
    }
    }

  2.  
  3. #2
    Senior Droid L'avatar di freebong


    Registrato dal
    Apr 2011
    Messaggi
    379

    Ringraziamenti
    13
    Ringraziato 28 volte in 27 Posts
    Predefinito

    Quote Originariamente inviato da bisemanu Visualizza il messaggio
    Salve ragazzi,
    stavo provando a fare una piccola app che usi l'accellerometro per avviare un mediaplayer con un audio nella cartella raw. In pratica quando il cell viene scosso parte un audio. Girando un po su google sono riuscito a buttare giù questo codice, ma mi sto trovando con un problema, ogni volta che il cell viene scosso si avvia in continuazione il player sovrapponendo l'audio, vorrei modificare quindi il seguente codice realizzando un button che serva ad iniziare e stoppare l'interfacciamento con l'accellerometro e con il palyer. Sono riuscito per il player ma non so da dove cominciare per l'accellerometro mi sapreste dare una mano?

    public class SensorTestActivity extends Activity implements SensorEventListener {
    private SensorManager sensorManager;
    private View view;
    private long lastUpdate;
    MediaPlayer mMediaPlayer;
    Button button;

    @Override
    public void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FL AG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    view = findViewById(R.id.textView);
    view.setBackgroundColor(Color.BLUE);

    button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(new OnClickListener(){
    public void onClick(View arg0) {

    mMediaPlayer.stop();

    }
    });

    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    sensorManager.registerListener(this,
    sensorManager.getDefaultSensor(Sensor.TYPE_ACCELER OMETER),
    SensorManager.SENSOR_DELAY_NORMAL);
    lastUpdate = System.currentTimeMillis();
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
    getAccelerometer(event);
    }

    }

    private void getAccelerometer(SensorEvent event) {
    float[] values = event.values;
    // Movement
    float x = values[0];
    float y = values[1];
    float z = values[2];

    float accelationSquareRoot = (x * x + y * y + z * z)
    / (SensorManager.GRAVITY_EARTH * SensorManager.GRAVITY_EARTH);
    long actualTime = System.currentTimeMillis();
    if (accelationSquareRoot >= 2) //
    {
    if (actualTime - lastUpdate < 200) {
    return;
    }
    lastUpdate = actualTime;

    try {

    mMediaPlayer = MediaPlayer.create(getBaseContext(), R.raw.mymusic);

    mMediaPlayer.setLooping(false);
    mMediaPlayer.start();
    mMediaPlayer.setOnCompletionListener(new
    OnCompletionListener() {
    public void onCompletion(MediaPlayer arg0) {
    // if (mMediaPlayer != null) {
    // mMediaPlayer.release();
    // mMediaPlayer = null;
    // }
    }
    });
    } catch (Exception e) {
    if (mMediaPlayer != null) {
    mMediaPlayer.release();
    mMediaPlayer = null;
    }
    }
    }
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy){

    }

    @Override
    protected void onResume() {
    super.onResume();
    // register this class as a listener for the orientation and
    // accelerometer sensors
    sensorManager.registerListener(this,
    sensorManager.getDefaultSensor(Sensor.TYPE_ACCELER OMETER),
    SensorManager.SENSOR_DELAY_NORMAL);
    }

    @Override
    protected void onPause() {
    // unregister listener
    super.onPause();
    sensorManager.unregisterListener(this);
    }
    }
    Non è più semplice gestire la cosa tramite un boolean sul quale fare dei controlli al momento dell avvio del player??

  4. #3
    Androidiano


    Registrato dal
    Apr 2012
    Località
    Lecce
    Messaggi
    68
    Smartphone
    Defy+ & Acer liquid A1

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Il problema è che non so come gestire per bene il sensore.. io avevo pensato a due button uno per stoppare il player una volta avviato dall'accelerometro ,ed uno per avviare l'interfacciamento col sensore che cmq si deve disattivare dopo aver avviato il player una volta.
    Il button per la gestione del player sono riuscito a implementarlo per quanto riguarda l'accelerometro ho delle difficolta non essendo un esperto programmatore


    Inviato dal mio MB526 usando Androidiani App

  5. #4
    Senior Droid


    Registrato dal
    Mar 2012
    Messaggi
    326
    Smartphone
    Samsung Galaxy S2

    Ringraziamenti
    0
    Ringraziato 24 volte in 23 Posts
    Predefinito

    ma se all'interno dell'override del metodo onPause stopp il player?

  6. #5
    Androidiano


    Registrato dal
    Apr 2012
    Località
    Lecce
    Messaggi
    68
    Smartphone
    Defy+ & Acer liquid A1

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Si infatti ho risolto quel problema proprio ragionando sul player anzicche sul sensore. :-)


    Inviato dal mio MB526 usando Androidiani App

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy