首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从AsyncTask调用SensorManager?

从AsyncTask调用SensorManager?
EN

Stack Overflow用户
提问于 2012-03-13 12:39:27
回答 1查看 1.3K关注 0票数 0

如何从内部调用SensorManager -

代码语言:javascript
复制
protected String doInBackground(String... params) {
.....
}

我必须将加速度计数据记录到一个文件中。此应用程序在后台运行。因此,我使用AsyncTask来实现它。我需要通过按下按钮(onClick)来启动和停止日志。任何指针都会很有帮助!

这是最新消息。写入的文件是empty...How do I start The logging?

代码语言:javascript
复制
public class AsyncTaskActivity extends Activity implements SensorEventListener{
Button btn;
File root = Environment.getExternalStorageDirectory();
StringBuilder builder = new StringBuilder();
File gpxfile = new File(root, "TestFile.txt");
String fileText = "Data";
FileWriter gpxwriter; 
BufferedWriter out;

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

    btn = (Button) findViewById(R.id.button1);
    btn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            new LongOperation(new AsyncTaskActivity()).execute("");
        }
    });
}




private class LongOperation extends AsyncTask<String, Void, String> {
    private AsyncTaskActivity mActivity;
    public LongOperation (AsyncTaskActivity activity) {
        mActivity = activity;
    }
      @Override
      protected String doInBackground(String... params) {
          try {
                gpxwriter = new FileWriter(gpxfile);
                out = new BufferedWriter(gpxwriter);
                if (root.canWrite()){
                    SensorManager manager = (SensorManager)      mActivity.getSystemService(Context.SENSOR_SERVICE);
                    Sensor accelerometer = manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
                    if(!manager.registerListener((SensorEventListener) this, accelerometer, SensorManager.SENSOR_DELAY_GAME)){                              
                            System.out.println("Could not start!!!!!!!!!");
                    }
                    out.write("Start");
                    out.newLine();                                  
                    out.close();
                }
            } catch (IOException e) {
                Log.e("doIn","Could not write file " + e.getMessage());
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }             
            return null;
      }      

      @Override
      protected void onPostExecute(String result) {  
          TextView txt = (TextView) findViewById(R.id.output);
          txt.setText("File written successfully!!!");
      }

      @Override
      protected void onPreExecute() {

      }

      @Override
      protected void onProgressUpdate(Void... values) {
      }
}

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

}

@Override
public void onSensorChanged(SensorEvent event) {
    // TODO Auto-generated method stub
    builder.setLength(0);
    builder.append(event.values[0]+","+event.values[1]+","+event.values[2]);
    try {
        out.append(builder.toString());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-13 12:51:55

将活动实例传递给AsyncTask的构造函数,然后访问Sensor Manager

代码语言:javascript
复制
class MyTask extends AsyncTask<URL, Integer, List> {
    private MainActivity mActivity;
    public MyTask(MainActivity activity) {
        mActivity = activity;
    }

    protected List doInBackground(URL... url) {
        SensorManager mSensorManager = (SensorManager)
                mActivity.getSystemService(SENSOR_SERVICE)
        ....
        return ..;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9678464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档