Question

Mon code utilisé pour travailler sur 2.2, et j'ai pu obtenir les données gyroscopiques, mais après la mise à jour 2.3, il ne fonctionne plus. J'ai aussi essayé sur un lecteur de galaxie pour vous assurer que ce n'est pas un problème matériel avec mon téléphone. Il n'a pas travaillé que l'un ou l'autre. Aucune suggestion? Voici le code:

    package my.acc;

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.PrintWriter;

    import android.app.Activity;

    import android.hardware.Sensor;
    import android.hardware.SensorManager;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.EditText;
    import android.widget.Spinner;
    import android.widget.ToggleButton;

    public class myact extends Activity {

        private SensorManager mSensorManager;
        Sensor myAcc, myAcc2, myAcc3, myAcc4;
        MySensorListener listener, listener2,listener3, listener4;
        EditText mEdit;



        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            final Spinner spinner = (Spinner) findViewById(R.id.spinner);
            ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                    this, R.array.activity_array, android.R.layout.simple_spinner_item);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(adapter);


            // Set up the accelerometer reading
            mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
            myAcc = mSensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION);
            myAcc2 = mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
            myAcc3 = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
            myAcc4 = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);

            final ToggleButton togglebutton = (ToggleButton) findViewById(R.id.togglebutton);
            mEdit   = (EditText)findViewById(R.id.entry);

            togglebutton.setOnClickListener(new OnClickListener() {
                PrintWriter mCurrentFile = null;
                PrintWriter mCurrentFile2 = null;
                PrintWriter mCurrentFile3 = null;
                PrintWriter mCurrentFile4 = null;


                public void onClick(View v) {
                    // Perform action on clicks
                    if (togglebutton.isChecked()) {

                        String strname = spinner.getSelectedItem().toString();
                        if (strname.equals("Select Activity")){
                            strname = mEdit.getText().toString();
                        }
                        String nameStr  = new String("/sdcard/" + strname + "acc" + ".csv");
                        String nameStr2 = new String("/sdcard/" + strname + "gyr" + ".csv");
                        String nameStr3 = new String("/sdcard/" + strname + "ori" + ".csv");
                        String nameStr4 = new String("/sdcard/" + strname + "gra" + ".csv");

                        File outputFile = new File(nameStr);
                        File outputFile2 = new File(nameStr2);
                        File outputFile3 = new File(nameStr3);
                        File outputFile4 = new File(nameStr4);

                        try {
                            mCurrentFile = new PrintWriter(new FileOutputStream(outputFile));
                            mCurrentFile2 = new PrintWriter(new FileOutputStream(outputFile2));
                            mCurrentFile3 = new PrintWriter(new FileOutputStream(outputFile3));
                            mCurrentFile4 = new PrintWriter(new FileOutputStream(outputFile4));

                        } catch (FileNotFoundException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

                        mSensorManager.registerListener(listener = new MySensorListener(mCurrentFile), myAcc , SensorManager.SENSOR_DELAY_UI);
                        mSensorManager.registerListener(listener2 = new MySensorListener(mCurrentFile2), myAcc2 , SensorManager.SENSOR_DELAY_UI);
                        mSensorManager.registerListener(listener3 = new MySensorListener(mCurrentFile3), myAcc3 , SensorManager.SENSOR_DELAY_UI);
                        mSensorManager.registerListener(listener4 = new MySensorListener(mCurrentFile4), myAcc4 , SensorManager.SENSOR_DELAY_UI);

                        //mSensorManager.registerListener(listener, myAcc2 , SensorManager.SENSOR_DELAY_FASTEST);

                    } else {


                        mSensorManager.unregisterListener(listener, myAcc);
                        mSensorManager.unregisterListener(listener2, myAcc2);
                        mSensorManager.unregisterListener(listener3, myAcc3);
                        mSensorManager.unregisterListener(listener4, myAcc4);
                        mCurrentFile.close();
                        mCurrentFile2.close();
                        mCurrentFile3.close();
                        mCurrentFile4.close();




                    }
                }
            });
        }
    }
package my.acc;

import java.io.PrintWriter;

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;

public class MySensorListener implements SensorEventListener {

    String comma = new String(",");
  private PrintWriter mCurrentFile;

    public MySensorListener( PrintWriter mCurrentFile){
      //Creating a file to print the data into

      this.mCurrentFile = mCurrentFile;

    }


    public void onAccuracyChanged(Sensor sensor, int accuracy) {
            // TODO Auto-generated method stub

    }



    public void onSensorChanged(SensorEvent event) {

        StringBuffer buff = new StringBuffer();

        buff.append(String.valueOf(event.sensor.getName()));     
        buff.append(comma);


        buff.append(String.valueOf(event.timestamp));


        buff.append(comma);

          buff.append(String.valueOf(event.values[0]));
          buff.append(comma);
          buff.append(String.valueOf(event.values[1]));
          buff.append(comma);
          buff.append(String.valueOf(event.values[2]));

        mCurrentFile.println(buff.toString());
        mCurrentFile.flush();


    }


}

J'ai même signalé comme un bug à Google voici leur réponse:

ne sont pas des appareils Google, vous devrez parler à Samsung

Était-ce utile?

La solution 2

Il semble être juste un problème Samsung. Le dépôt de la question avec Google n'a pas aidé; ils me renvoyé à Samsung.

Autres conseils

Je ne sais pas si cette aide peut, mais il semble être lié à votre problème: gyroscopique ne fonctionne pas clignotant rom. Vous pouvez jeter un oeil ( Galaxy S2 - Gyro & Compass ne fonctionne pas ) et essayez d'exécuter le test proposé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top