2012-05-02 4 views
0

나는 기록 된 파일에 가속도계 데이터를 기록해야하는 프로젝트를하고있다. 누구든지 다음 코드를 통해 나를 도울 수 있습니까? 가속도계 데이터를 기록하기 위해 다음 코드에 추가해야하는 안드로이드 코드는 무엇입니까? 나는 매 10 밀리 세컨드마다 데이터를 얻을 수 있기를 희망한다. 어떤 도움이라도 대단히 감사합니다. 당신이 데이터를 수신하는 속도는 데이터가 콜백을 트리거 이벤트에 의해 제공되는 한, 운영 체제의 재량에 의존 될 것입니다 그건밀리 초 단위로 가속도계 데이터를 기록하는 Android 코드는 무엇입니까?

package com.example.helloandroid; 

import android.app.Activity; 
import android.hardware.Sensor; 
import android.hardware.SensorEvent; 
import android.hardware.SensorEventListener; 
import android.hardware.SensorManager; 
import android.os.Bundle; 
import android.widget.TextView; 

public class AccActivity extends Activity implements SensorEventListener { 
private SensorManager sensorManager; 

TextView xCoor; // declare X axis object 
TextView yCoor; // declare Y axis object 
TextView zCoor; // declare Z axis object 

@Override 
public void onCreate(Bundle savedInstanceState){ 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    xCoor=(TextView)findViewById(R.id.xcoor); // create X axis object 
    yCoor=(TextView)findViewById(R.id.ycoor); // create Y axis object 
    zCoor=(TextView)findViewById(R.id.zcoor); // create Z axis object 

    sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE); 
    // add listener. The listener will be HelloAndroid (this) class 
    sensorManager.registerListener(this, 
      sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 
      SensorManager.SENSOR_DELAY_NORMAL); 

    /* More sensor speeds (taken from api docs) 
     SENSOR_DELAY_FASTEST get sensor data as fast as possible 
     SENSOR_DELAY_GAME rate suitable for games 
     SENSOR_DELAY_NORMAL rate (default) suitable for screen  orientation changes 
    */ 
} 

public void onAccuracyChanged(Sensor sensor,int accuracy){ 

} 

public void onSensorChanged(SensorEvent event){ 

    // check sensor type 
    if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){ 

     // assign directions 
     float x=event.values[0]; 
     float y=event.values[1]; 
     float z=event.values[2]; 

     xCoor.setText("X: "+x); 
     yCoor.setText("Y: "+y); 
     zCoor.setText("Z: "+z); 
    } 
} 

}

+0

StackOverflow는 프로그래밍 관련 질문입니다. 이것은 질문이 아닙니다. – CommonsWare

+0

죄송합니다. 주제를 수정하고 질문을 변경했습니다. 매우 감사합니다. – Newbie

답변

1

. 그것은 또한 장치에 의존 할 가능성이 너무 높습니다. 미리 지정된 속도로 센서를 폴링 할 수 없습니다. SensorManager API 문서 상태

public boolean registerListener (SensorEventListener listener, Sensor sensor, int rate) 

속도 센서 이벤트는에서 제공됩니다. 이것은 시스템에 대한 힌트 일뿐입니다. 이벤트가 지정된 속도보다 빠르거나 느릴 수 있습니다. 보통 이벤트는 더 빨리 수신됩니다. 값은 SENSOR_DELAY_NORMAL, SENSOR_DELAY_UI, SENSOR_DELAY_GAME 또는 SENSOR_DELAY_FASTEST 중 하나이거나 이벤트 사이의 원하는 지연 (마이크로 초)이어야합니다.

그래서 당신은 가 단지 그것을 측정하는 실험에 의해 결정될 수 귀하의 onSensorChanged에게 전달 될 것입니다 얼마나 자주, 10,000 마이크로 초 (10ms의)의 지연을 요청할 수 있습니다.

+0

NickT, 센서 지연 (예 : SENSOR_DELAY_FASTEST) 중 하나를 선택하고 OS에서 데이터를 얼마나 빨리받을 수 있는지 확인해야합니까? Android에서 처음입니다. 위에 게시 한 코드를 살펴보고 추가해야하는 코드를 알려주시겠습니까? 가속도계 값을 받고 파일에 저장하고 싶습니다. 귀하의 도움을 크게 주시면 감사하겠습니다. – Newbie

+0

아니요, 10ms 업데이트를 원한다면 3 번째 매개 변수에 10000을 넣은 다음 실제로 도착하는 빈도를 확인하십시오. (그게 내가 '또는 마이크로 초 단위로 이벤트 사이의 원하는 지연을 해석하는 방법입니다. 나는 그것을 직접 시도하지 않았지만 그것을 볼 수있는 방법입니다. 행운을 빌어 요. – NickT

관련 문제