SensorSimulator在连接时抛出错误

时间:2013-11-07 15:26:04

标签: java android sensor

我刚开始使用Android编程,我想尝试使用SensorSimulator。 一旦它到达该点,它想要连接的地方我得到以下错误:

11-07 08:54:45.195: E/AndroidRuntime(1912): FATAL EXCEPTION: main
11-07 08:54:45.195: E/AndroidRuntime(1912): java.lang.RuntimeException: Unable to start activity ComponentInfo{fnt.android1/fnt.android1.ValuesActivity}: android.os.NetworkOnMainThreadException
11-07 08:54:45.195: E/AndroidRuntime(1912):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at android.os.Looper.loop(Looper.java:137)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at android.app.ActivityThread.main(ActivityThread.java:5103)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at java.lang.reflect.Method.invokeNative(Native Method)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at java.lang.reflect.Method.invoke(Method.java:525)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at dalvik.system.NativeStart.main(Native Method)
11-07 08:54:45.195: E/AndroidRuntime(1912): Caused by: android.os.NetworkOnMainThreadException
11-07 08:54:45.195: E/AndroidRuntime(1912):     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1133)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at libcore.io.IoBridge.connect(IoBridge.java:112)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at java.net.Socket.startupSocket(Socket.java:566)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at java.net.Socket.tryAllAddresses(Socket.java:127)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at java.net.Socket.<init>(Socket.java:177)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at java.net.Socket.<init>(Socket.java:149)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at org.openintents.sensorsimulator.hardware.SensorSimulatorClient.connect(SensorSimulatorClient.java:116)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at org.openintents.sensorsimulator.hardware.SensorManagerSimulator.connectSimulator(SensorManagerSimulator.java:220)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at fnt.android1.ValuesActivity.onCreate(ValuesActivity.java:26)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at android.app.Activity.performCreate(Activity.java:5133)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
11-07 08:54:45.195: E/AndroidRuntime(1912):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
11-07 08:54:45.195: E/AndroidRuntime(1912):     ... 11 more

我确定它正在连接到正确的IP并使用正确的端口。 这是我的完整代码:

package fnt.android1;


import android.os.Bundle;
import android.app.Activity;
import android.hardware.SensorManager;
import android.view.Menu;


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 ValuesActivity extends Activity implements SensorEventListener {

    private SensorManagerSimulator mSensorManager;
    private Sensor mLight;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_values);

        mSensorManager = SensorManagerSimulator.getSystemService(this, SENSOR_SERVICE);
        mSensorManager.connectSimulator();
        mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.values, menu);
        return true;
    }


    protected void onResume() {
        super.onResume();
        mSensorManager.registerListener(this, mLight, SensorManager.SENSOR_DELAY_FASTEST);

        System.out.println("Event registered!");
    }

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

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

    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        for(int i = 0; i < event.values.length; i++) {
            System.out.println(event.values[i]);
        }
    }

}

1 个答案:

答案 0 :(得分:0)

logcat表示您正在尝试在主用户界面Thread上运行网络呼叫。您应该将长时间运行的操作移到单独的Thead。您可以使用AsyncTask或常规Thread来执行此操作。