本文介绍了如何使用Android和SensorSimulator的工作就是让传感器值,并将其存储在数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我工作的一个Android应用程序,为了通过将它们存储在数据库中的Web服务消费这些值会从Android手机传感器的值。
我没有真正的设备,用于测试传感器的值,所以我用传感器模拟器[HTTP://$c$c.google.com/p/openintents/wiki/SensorSimulator] [1]
现在的问题是,每次我跑的活动我得到的错误,这里是活动(我使用的是API 15谷歌的API平台:4.0.3)的code

 进口org.openintents.sensorsimulator.hardware.Sensor;
进口org.openintents.sensorsimulator.hardware.SensorEvent;
进口org.openintents.sensorsimulator.hardware.SensorEventListener;
进口org.openintents.sensorsimulator.hardware.SensorManagerSimulator;
公共类SimulationActivity扩展活动实现SensorEventListener {私人SensorManagerSimulator mSensorManager;
私人传感器mTemperature;
私人TextView的mTemperatureLabel;@覆盖
公共无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.main);
    mTemperatureLabel =(的TextView)findViewById(R.id.temperature);    mSensorManager = SensorManagerSimulator.getSystemService(这一点,SENSOR_SERVICE);
    mSensorManager.connectSimulator();}@覆盖
保护无效onResume(){
    super.onResume();
    mSensorManager.registerListener(这一点,
            mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
            SensorManager.SENSOR_DELAY_FASTEST);
    mSensorManager.registerListener(这一点,
            mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD)
            SensorManager.SENSOR_DELAY_FASTEST);
    mSensorManager.registerListener(这一点,
            mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION)
            SensorManager.SENSOR_DELAY_FASTEST);
    mSensorManager.registerListener(这一点,
            mSensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE)
            SensorManager.SENSOR_DELAY_FASTEST);
}@覆盖
保护无效的onStop(){
    mSensorManager.unregisterListener(本);
    super.onStop();
}公共无效onAccuracyChanged(传感器传感器,精度INT){
}
公共无效onSensorChanged(SensorEvent事件){    开关(event.type){
    案例Sensor.TYPE_ORIENTATION:{
        Log.i(传感器改变,方向);
        mTemperatureLabel.setText(方向);    }
        打破;
    案例Sensor.TYPE_LIGHT:{
        Log.i(传感器改变,光);
        mTemperatureLabel.setText(轻);
    }
        打破;
    案例Sensor.TYPE_TEMPERATURE:{
        Log.i(传感器改变,温度);
        mTemperatureLabel.setText(温度);    }
        打破;
    案例Sensor.TYPE_ preSSURE:{
        Log.i(传感器改变,pressure);
        mTemperatureLabel.setText(pressure);    }
        打破;
    }
}
}

和这里是错误的消息

  18 11-14:49:57.123:E / AndroidRuntime(4351):致命异常:主要
11-14 18:49:57.123:E / AndroidRuntime(4351):了java.lang.RuntimeException:无法实例活动ComponentInfo {} com.tunisietelecom.android/com.tunisietelecom.android.SimulationActivity:抛出java.lang.ClassNotFoundException:COM .tunisietelecom.android.SimulationActivity
11-14 18:49:57.123:E / AndroidRuntime(4351):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880)
11-14 18:49:57.123:E / AndroidRuntime(4351):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
11-14 18:49:57.123:E / AndroidRuntime(4351):在android.app.ActivityThread.access $ 600(ActivityThread.java:123)
11-14 18:49:57.123:E / AndroidRuntime(4351):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1147)
11-14 18:49:57.123:E / AndroidRuntime(4351):在android.os.Handler.dispatchMessage(Handler.java:99)
11-14 18:49:57.123:E / AndroidRuntime(4351):在android.os.Looper.loop(Looper.java:137)
11-14 18:49:57.123:E / AndroidRuntime(4351):在android.app.ActivityThread.main(ActivityThread.java:4424)
11-14 18:49:57.123:E / AndroidRuntime(4351):在java.lang.reflect.Method.invokeNative(本机方法)
11-14 18:49:57.123:E / AndroidRuntime(4351):在java.lang.reflect.Method.invoke(Method.java:511)
11-14 18:49:57.123:E / AndroidRuntime(4351):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
11-14 18:49:57.123:E / AndroidRuntime(4351):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-14 18:49:57.123:E / AndroidRuntime(4351):在dalvik.system.NativeStart.main(本机方法)
11-14 18:49:57.123:E / AndroidRuntime(4351):抛出java.lang.ClassNotFoundException:产生的原因com.tunisietelecom.android.SimulationActivity
11-14 18:49:57.123:E / AndroidRuntime(4351):在dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
11-14 18:49:57.123:E / AndroidRuntime(4351):在java.lang.ClassLoader.loadClass(ClassLoader.java:501)
11-14 18:49:57.123:E / AndroidRuntime(4351):在java.lang.ClassLoader.loadClass(ClassLoader.java:461)
11-14 18:49:57.123:E / AndroidRuntime(4351):在android.app.Instrumentation.newActivity(Instrumentation.java:1023)
11-14 18:49:57.123:E / AndroidRuntime(4351):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871)
11-14 18:49:57.123:E / AndroidRuntime(4351):11 ...更多


解决方案

我解决了这个问题。当您添加库到类路径,库不会导出到手机上。你需要去Proyect属性 - > Java构建路径 - >在线订单和导出和滴答你需要的库导出到手机上。如果你不这样做,图书馆将不会在手机上和Android不会找到它!

I'm working on an android application that gets sensor values from android phones in order to consume these values by a web service that stores them in a database .I don't have a real device for testing the sensors values so I used the sensor simulator [http://code.google.com/p/openintents/wiki/SensorSimulator][1]the problem now is that everytime I run the activity I get errors and here is the code of the activity (I'm using the API 15 Google APIs platform : 4.0.3)

import org.openintents.sensorsimulator.hardware.Sensor;
import org.openintents.sensorsimulator.hardware.SensorEvent;
import org.openintents.sensorsimulator.hardware.SensorEventListener;
import org.openintents.sensorsimulator.hardware.SensorManagerSimulator;


public class SimulationActivity extends Activity implements SensorEventListener {

private SensorManagerSimulator mSensorManager;
private Sensor mTemperature;
private TextView mTemperatureLabel;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mTemperatureLabel = (TextView) findViewById(R.id.temperature);

    mSensorManager = SensorManagerSimulator.getSystemService(this,SENSOR_SERVICE);
    mSensorManager.connectSimulator();

}

@Override
protected void onResume() {
    super.onResume();
    mSensorManager.registerListener(this,
            mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
            SensorManager.SENSOR_DELAY_FASTEST);
    mSensorManager.registerListener(this,
            mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
            SensorManager.SENSOR_DELAY_FASTEST);
    mSensorManager.registerListener(this,
            mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
            SensorManager.SENSOR_DELAY_FASTEST);
    mSensorManager.registerListener(this,
            mSensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE),
            SensorManager.SENSOR_DELAY_FASTEST);
}

@Override
protected void onStop() {
    mSensorManager.unregisterListener(this);
    super.onStop();
}

public void onAccuracyChanged(Sensor sensor, int accuracy) {
}


public void onSensorChanged(SensorEvent event) {

    switch (event.type) {
    case Sensor.TYPE_ORIENTATION: {
        Log.i("Sensor changed ", " Orientation ");
        mTemperatureLabel.setText("orientation");

    }
        break;
    case Sensor.TYPE_LIGHT: {
        Log.i("Sensor changed ", " light ");
        mTemperatureLabel.setText("light");
    }
        break;
    case Sensor.TYPE_TEMPERATURE: {
        Log.i("Sensor changed ", " temperature ");
        mTemperatureLabel.setText("temperature");

    }
        break;
    case Sensor.TYPE_PRESSURE: {
        Log.i("Sensor changed ", " pressure ");
        mTemperatureLabel.setText("pressure ");

    }
        break;
    }
} 
}

and here is the errors messages

11-14 18:49:57.123: E/AndroidRuntime(4351): FATAL EXCEPTION: main
11-14 18:49:57.123: E/AndroidRuntime(4351): java.lang.RuntimeException: Unable to instantiate      activity ComponentInfo{com.tunisietelecom.android/com.tunisietelecom.android.SimulationActivity}: java.lang.ClassNotFoundException: com.tunisietelecom.android.SimulationActivity
11-14 18:49:57.123: E/AndroidRuntime(4351):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880)
11-14 18:49:57.123: E/AndroidRuntime(4351):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
11-14 18:49:57.123: E/AndroidRuntime(4351):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
11-14 18:49:57.123: E/AndroidRuntime(4351):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
11-14 18:49:57.123: E/AndroidRuntime(4351):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-14 18:49:57.123: E/AndroidRuntime(4351):     at android.os.Looper.loop(Looper.java:137)
11-14 18:49:57.123: E/AndroidRuntime(4351):     at android.app.ActivityThread.main(ActivityThread.java:4424)
11-14 18:49:57.123: E/AndroidRuntime(4351):     at java.lang.reflect.Method.invokeNative(Native Method)
11-14 18:49:57.123: E/AndroidRuntime(4351):     at java.lang.reflect.Method.invoke(Method.java:511)
11-14 18:49:57.123: E/AndroidRuntime(4351):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
11-14 18:49:57.123: E/AndroidRuntime(4351):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-14 18:49:57.123: E/AndroidRuntime(4351):     at dalvik.system.NativeStart.main(Native Method)
11-14 18:49:57.123: E/AndroidRuntime(4351): Caused by: java.lang.ClassNotFoundException: com.tunisietelecom.android.SimulationActivity
11-14 18:49:57.123: E/AndroidRuntime(4351):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
11-14 18:49:57.123: E/AndroidRuntime(4351):     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
11-14 18:49:57.123: E/AndroidRuntime(4351):     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
11-14 18:49:57.123: E/AndroidRuntime(4351):     at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
11-14 18:49:57.123: E/AndroidRuntime(4351):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871)
11-14 18:49:57.123: E/AndroidRuntime(4351):     ... 11 more
解决方案

I solved this problem. When you add a library to your classpath, the library is not exported to the phone. You need to go to Proyect Properties -> Java Build Path -> Order and Export and "tick" the library you need to be exported to the phone. If you don't do this, the library won’t be on the phone and Android won’t find it!!!

这篇关于如何使用Android和SensorSimulator的工作就是让传感器值,并将其存储在数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 08:00