首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >type_linear_acceleration的权限

type_linear_acceleration的权限
EN

Stack Overflow用户
提问于 2016-11-22 10:09:21
回答 1查看 312关注 0票数 1

我正在制作一个应用程序,记录加速度计的读数。当我进入TYPE_ACCELEROMETER时,它可以完美地记录原始加速度计数据。但是,当我输入TYPE_LINEAR_ACCELERATION时,它不能返回任何值。该应用程序不会给我一个错误或退出。我认为我一定是在使用不支持TYPE_LINEAR_ACCELERATION的设备,或者在我的清单中没有所有必要的权限。

代码语言:javascript
复制
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout);

        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION);

        currentX = (TextView) findViewById(R.id.currentX);
        currentY = (TextView) findViewById(R.id.currentY);
        currentZ = (TextView) findViewById(R.id.currentZ);


    }

public void onSensorChanged(SensorEvent event) {

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


            currentX.setText(Float.toString(x));
            currentY.setText(Float.toString(y));
            currentZ.setText(Float.toString(z));

            try {
                writer.write(x + "," + y + "," + z + "\n");
            } catch (IOException e) {
                Log.e(LOG_TAG2, "failed");
            }
        }
    };
public void Recordbutton(View view) {

        if (recordbuttonstatus) {
            playBtn.setEnabled(true);
            recordbuttonstatus = false;
            startBtn.setText(getString(R.string.stoprecording));
            sensorManager.registerListener(accelListener, sensor, SensorManager.SENSOR_DELAY_NORMAL);
    sensorManager.registerListener(accelListener, sensor, SensorManager.SENSOR_DELAY_NORMAL);

            Thread accelerometerrecord = new Thread(new Runnable() {

                @Override
                        public void run(){
                File accoutputFile = new File(Environment.getExternalStorageDirectory(), "accelerometervals.txt");
                try {
                    accoutputFile.createNewFile();
                } catch (IOException e){
                    e.printStackTrace();
                }
                    try {
                        writer = new FileWriter(accoutputFile, false); /*When false, the file is overwritten, when true, the file is appended.*/
                    } catch (IOException e) {
                        Log.e(LOG_TAG2, "failed");
                    }
                }
            });

            accelerometerrecord.start();

} else {
            startBtn.setText(getString(R.string.newrecording));
            recordbuttonstatus = true;
            sensorManager.unregisterListener(accelListener);

        }
    }

 protected void onPause() {
        super.onPause();

        sensorManager.unregisterListener(accelListener);

        if (writer != null) {
            try {
                writer.close();
            } catch (IOException e) {
                Log.e(LOG_TAG2, "failed");
            }
        }
    }

public void onStop() {
        super.onStop();
        sensorManager.unregisterListener(accelListener);

        if (writer != null) {
            try {
                writer.close();
            } catch (IOException e) {
                Log.e(LOG_TAG2, "failed");
            }
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2016-11-22 20:14:58

谢谢大家。原来我的手机没有线加速度传感器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40732718

复制
相关文章

相似问题

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