开发人员们,下午好!,我正在为我的论文建立一个项目。我在将数据从服务发送到android中的活动时遇到问题。我正在使用/注册“加速器”和“服务中的方向”之类的内部传感器,并将数据发送到“活动”。沟通还可以,但是当我在“活动”中以加速度计的形式在图表中绘制数据时,就显得比较滞后。我使用广播接收器作为服务和活动之间的通信媒介。如何解决有关延迟应用程序的问题。
我尝试将数据放入TextView
中,并且数据处于良好状态,但是我不想将其绘制在图形中。我也尝试过使用Handler
和Thread
,但我不知道如何使用它。我也尝试过在“活动”中注册传感器,它的状态良好,但是当我在“服务”中注册传感器时,状态却没有。
这是我在服务中的代码:
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
库来绘制图形。
我希望它可以解决我的问题。