Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 传感器数据刷新_Java_Android_Sockets_Client - Fatal编程技术网

Java 传感器数据刷新

Java 传感器数据刷新,java,android,sockets,client,Java,Android,Sockets,Client,因此,我在这里与socket进行了通信(在Client.java中,Override doInBackground,AsyncTask用法) 然而,我创建了一个从主活动到客户端的构造函数,并从onSensorChanged(方位角、滚动和俯仰)拖动信息,如图所示 public Client(Float a, Float b, Float c) { this.a = a; this.b = b; this.c = c; } 我必须和服务器通信,向他发送来自方位传感器的动

因此,我在这里与socket进行了通信(在Client.java中,Override doInBackground,AsyncTask用法)

然而,我创建了一个从主活动到客户端的构造函数,并从onSensorChanged(方位角、滚动和俯仰)拖动信息,如图所示

public Client(Float a, Float b, Float c) {
    this.a = a;
    this.b = b;
    this.c = c;

}
我必须和服务器通信,向他发送来自方位传感器的动态结果,为了发送,我有一个“sendData()”函数,用于发送我之前制作的缓冲区。 总之,对于我的使用来说,一切都很好,但有一个问题,构造函数之外的数据不会刷新。所以,当我连接时,我正在和服务器通信,但我发送的是相同的(首先是他读到的)方位角,一次又一次地滚动和俯仰。我尝试了很多方法,但仍然不知道如何从主活动-->onSensorChanged中获取这些信息,该活动已更改为客户端,它将实际刷新并发送动态输出。有什么建议或帮助吗? 谢谢

编辑:

气氛发生了变化

public void onSensorChanged(SensorEvent event) {

    Float a = event.values[0];
    BigDecimal result1;
    result1=round(a,2);


    Float b = event.values[2];
    if (b <= 5 && b >=-5){
        b = (float) 0;
    }
    b = (float) (b / 3.4);
    BigDecimal result2;
    result2 = round(b,2);


    Float c = event.values[1];
    if (c <= 5 && c >=-5){
        c = (float) 0;
    }

    c = (float) (c / 3.4);
    BigDecimal result3;
    result3 = round(c,2);

    Client myClient = new Client(a, b, c);
    myClient.execute();

在每个onSensorChange中,您都会创建并启动一个新的异步任务。如果变化不经常发生,这是可以的

在异步任务中,创建一个新的客户端套接字,该套接字连接到te服务器,然后向其发送数据。这也可以。但在那之后,您让该客户机一次又一次地重新发送相同的数据。为什么?因此,异步任务永远不会完成

您启动了许多新的异步任务,但它们永远不会运行。它们将按顺序运行。下一个只有在前一个结束时才开始

因此,在发送数据后关闭客户端,以便doInBackground可以完成异步任务


然后可以运行下一个。

Show sendData()代码。并显示完整的客户端类代码。并显示来自MainActivity的所有呼叫。@greenapps还有一些代码,需要更多吗?我明白你想说什么,我只是无法将你的话转换为所需的代码,尝试了一些事情但没有成功。你能更具体地说我该怎么做吗?谢谢
while(socket.isConnected())
。删除while条件,因为您将只执行该代码一次。添加socket.close();。
public void onSensorChanged(SensorEvent event) {

    Float a = event.values[0];
    BigDecimal result1;
    result1=round(a,2);


    Float b = event.values[2];
    if (b <= 5 && b >=-5){
        b = (float) 0;
    }
    b = (float) (b / 3.4);
    BigDecimal result2;
    result2 = round(b,2);


    Float c = event.values[1];
    if (c <= 5 && c >=-5){
        c = (float) 0;
    }

    c = (float) (c / 3.4);
    BigDecimal result3;
    result3 = round(c,2);

    Client myClient = new Client(a, b, c);
    myClient.execute();
public byte[] sendData (){

byte[] buff = new byte[68];


  byte[] buff1 = intToBytes(1);
    byte[] buff2 = intToBytes(20);  // ** ROLL
    byte[] buff3 = intToBytes(21);  // ** PITCH
    byte[] buff4 = intToBytes(23); // ** AZIMUT
byte[] buff5 = intToBytes(5);
byte[] buff6 = intToBytes(6);
byte[] buff7 = intToBytes(7);
byte[] buff8 = intToBytes(8);
byte[] buff9 = intToBytes(9);
    byte[] buff10 = intToBytes(Math.round(c));
    byte[] buff11 = intToBytes(Math.round(b));
    byte[] buff12 = intToBytes(Math.round(a));
byte[] buff13 = intToBytes(13);
byte[] buff14 = intToBytes(14);
byte[] buff15 = intToBytes(15);
byte[] buff16 = intToBytes(16);
byte[] buff17 = intToBytes(17);


                System.arraycopy(buff1,0,buff,0,buff1.length);
                System.arraycopy(buff2,0,buff, 4,buff2.length);
                System.arraycopy(buff3,0,buff, 8,buff2.length);
                System.arraycopy(buff4,0,buff, 12,buff2.length);
                System.arraycopy(buff5,0,buff, 16,buff2.length);
                System.arraycopy(buff6,0,buff, 20,buff2.length);
                System.arraycopy(buff7,0,buff, 24,buff2.length);
                System.arraycopy(buff8,0,buff, 28,buff2.length);
                System.arraycopy(buff9,0,buff, 32,buff2.length);
                System.arraycopy(buff10,0,buff,36,buff2.length);
                System.arraycopy(buff11,0,buff,40,buff2.length);
                System.arraycopy(buff12,0,buff,44,buff2.length);
                System.arraycopy(buff13,0,buff,48,buff2.length);
                System.arraycopy(buff14,0,buff,52,buff2.length);
                System.arraycopy(buff15,0,buff,56,buff2.length);
                System.arraycopy(buff16,0,buff,60,buff2.length);
                System.arraycopy(buff17,0,buff,64,buff2.length);


    return buff;}