4

いくつかのセンサーデータを提供する次のコードがあります。

private void computeOrientation() {
        if (SensorManager.getRotationMatrix(m_rotationMatrix, null, m_lastAccels, m_lastMagFields)) {
            SensorManager.getOrientation(m_rotationMatrix, m_orientation);

            /* 1 radian = 57.2957795 degrees */
            /*
             * [0] : yaw, rotation around z axis [1] : pitch, rotation around x
             * axis [2] : roll, rotation around y axis
             */
            float yaw = m_orientation[0] * 57.2957795f;
            float pitch = m_orientation[1] * 57.2957795f;
            float roll = m_orientation[2] * 57.2957795f;

            /* append returns an average of the last 10 values */
            m_lastYaw = m_filters[0].append(yaw);
            m_lastPitch = m_filters[1].append(pitch);
            m_lastRoll = m_filters[2].append(roll);

            yawText.setText("azi z: " + m_lastYaw);
            pitchText.setText("pitch x: " + m_lastPitch);
            rollText.setText("roll y: " + m_lastRoll);

                    //Now I want to send those 3 values over the network
                    //whenever they're calculated
}

この関数は、私が推測する数ミリ秒ごとに呼び出されますonSensorChanged(SensorEvent event)

このデータをインターネットネットワーク経由でリモートデバイスに継続的に送信/ストリーミングし、データストリームを使用してリアルタイムで計算したいと考えています。

どうすればいいですか?ソケットを通して?AsyncTask? 始めるためのソースコードの例は大歓迎です =)

4

1 に答える 1

1

これは、サービスがバックグラウンドでデータを計算するためのジョブです。UI は必要ないため、AsyncTask の代わりに Thread を使用してセンサー データを取得できます。

一般的には、より詳細な情報が必要ですが、特に、電話機とリモート デバイス間の接続のセットアップについては必要です。LAN を使用する場合、電話の ByteArrayriter およびデバイスの ByteArrayReader と組み合わせたソケットが機能します。

于 2013-07-21T23:40:23.473 に答える