2011-11-29 2 views
3

2.2에서 작동하는 데 사용 된 코드에서 자이로 스코프 데이터를 가져올 수 있었지만 2.3으로 업데이트 한 후 더 이상 작동하지 않습니다. 나는 또한 갤럭시 플레이어에서 휴대 전화의 하드웨어 문제가 아닌지 확인하려고 노력했습니다. 그 중 하나에서 작동하지 않았다. 어떤 제안? 사람들은 Google이 아닌 장치입니다 당신이해야합니다, 그래서2.3.5로 업데이트 한 후 GYROSCOPE가 작동하지 않습니다

:

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(); 


    } 


} 

심지어 여기에 구글에 버그로보고 자신의 반응이다 : 여기 코드는 삼성에 문의하십시오.

+0

자이로 센서에서 얻은 값은 무엇입니까? 절대적으로 0입니까? 아주 작은 값입니까? – NickT

+0

@NickT nothing. 그것은 내 자이로 스코프 센서를 등록하지도 않습니다. 청취자는 전혀 호출되지 않습니다. – theRealWorld

+0

Samsung의 문제인지는 확실하지 않습니다. 나는 LG-P970 전화기에서 똑같은 문제를 관찰했다. Android 2.2에서는 자이로 스코프가 제대로 작동했지만 안드로이드 2.3으로 업데이트 한 후에는 자이로 스코프 판독 값이 항상 0입니다. 가장 심각한 문제는이 문제로 인해 사용자가 응용 프로그램에 대해 부정적인 표를 얻는 것입니다. – jap1968

답변

0

삼성 전자의 문제 일 것 같습니다. Google에 문제를 제기하는 것이 도움이되지 않았습니다. 그들은 나를 삼성으로 회부했다.

1

잘 모르겠지만 문제와 관련이있는 것 같습니다. 자이로 스코프가 깜박 거리지 않는다. 모양 (Galaxy S2 - Gyro & Compass not working)을 가지고 제안 된 테스트를 실행 해보십시오.

관련 문제