随着时间的流逝,广播接收器变得迟钝,我的代码还有其他选择吗?

时间:2018-12-24 08:24:14

标签: android-studio

开发人员们,下午好!,我正在为我的论文建立一个项目。我在将数据从服务发送到android中的活动时遇到问题。我正在使用/注册“加速器”和“服务中的方向”之类的内部传感器,并将数据发送到“活动”。沟通还可以,但是当我在“活动”中以加速度计的形式在图表中绘制数据时,就显得比较滞后。我使用广播接收器作为服务和活动之间的通信媒介。如何解决有关延迟应用程序的问题。

我尝试将数据放入TextView中,并且数据处于良好状态,但是我不想将其绘制在图形中。我也尝试过使用HandlerThread,但我不知道如何使用它。我也尝试过在“活动”中注册传感器,它的状态良好,但是当我在“服务”中注册传感器时,状态却没有。

这是我在服务中的代码:

public class Background extends Service implements SensorEventListener{ 
    private SensorManager mSensorManager;
    private Intent = i;
    ...
     @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
    i = new Intent(); 
        mSensorManager = (SensorManager) getSystemService(Activity.SENSOR_SERVICE);
        mSensorManager.registerListener(this,mSensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0), SensorManager.SENSOR_DELAY_GAME);
        mSensorManager.registerListener(this,mSensorManager.getSensorList(Sensor.TYPE_ORIENTATION).get(0), SensorManager.SENSOR_DELAY_GAME);

    ....
    }

    @Override
    public void onSensorChanged(SensorEvent sensorEvent) {
        if(sensorEvent.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
            i.putExtra("valueX",String.valueOf(sensorEvent.values[0]));
            i.putExtra("valueY",String.valueOf(sensorEvent.values[1]));
            i.putExtra("valueZ",String.valueOf(sensorEvent.values[2]));
            i.setAction("FILTER");


        }else if(sensorEvent.sensor.getType() == Sensor.TYPE_ORIENTATION){
            i.putExtra("compass",String.valueOf(sensorEvent.values[0]));
        }
        sendBroadcast(i);

    }
}

这是我的“广播活动”接收器中的代码。

public class RealTime extends Fragment {
BroadcastReceiver br;
...

@Override
public void onResume() {
    super.onResume();

    if(br == null) {
        br = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                float x = Float.parseFloat(intent.getExtras().get("valueX").toString());
                float y = Float.parseFloat(intent.getExtras().get("valueY").toString());
                float z = Float.parseFloat(intent.getExtras().get("valueZ").toString());

                displayRawDataGraph(x,y,z);
            }
        };
    }
    IntentFilter filt = new IntentFilter("FILTER");
    getActivity().registerReceiver(br, filt);
}

我希望输出图像肥皂一样平滑,但是会变得很滞后。

我正在使用GitHub上的MPAndroidChart库来绘制图形。

我希望它可以解决我的问题。

0 个答案:

没有答案